Houdini to Maya Particle Converter

Become a Patron!

Particle transferring between 3d softwares has always been an issue for me.

During the last couple of years I used some workarounds. Using realflow, krakatoa and partio plugins to pass the information back and forth were some of them

Recently, I had to transfer some particles from Houdini to Maya. Using Krakatoa or Realflow plugins are nice workarounds but since these solutions are heavily dependent on the plugins, this time I did not prefer to use these.

On the other hand, partio author(s) seems stopped compiling the code since 2014.

To bypass the issue, I have used compiled standalone version of partio and written a python script to convert the bhclassic particles. bhclassic is the former bgeo particles. Starting from Houdini 12, bgeo extension replaced with bgeo.sc and it is not compatible with partio converter.

You need to export the particles from houdini as bhclassic with enough padding. Rest is easy. Run the script, select one of the exported particles and script converts each particle using the partio converter, names it using the “ancient naming convention” of .pdc cache files.

Since the script deals with legacy Houdini formats and legacy Maya particles, it seems there may be no other use for this tool in the future, but who knows.

Installation is easy,

Unrar the rar file into the   \Users\<user>\Documents\maya\scripts folder

Run these lines in python shell from maya:

from particleConverter import PConvertHouToMaya as converter

converter.ParticleImporter().&amp;amp;amp;lt;wbr /&amp;amp;amp;gt;run()

Since I have used it for a specific project, script is not fully fool proofed and missing many possible features. Yet again, I do not see any point working on it since this solution depends deprecated functions of each software.

However, having that as an option is a good thing.


You can also find it in this GitHub Repository


There is a good reason why pdc cache dying. To be honest, I am surprised that it still exists even as a legacy system. 3ds Max users may remember they did not show the same courtesy to havoc powered Reactor tool.

Let me explain;

I was ready to use partio plugin with Maya 2014, convert particles into cache and open it again with Maya 2018 but fortunately realized the truth before attempting

Pdc caches are not only very limited, extremely picky (you cannot put them wherever you want), hard to use, and impractical as it can be, but also are not backward compatible anymore. That’s right. If you cache a particle system with Maya 2014, you cannot open it in Maya 2018. It needs to be cached again for Maya 2018 (and 2017, possibly 2016 too) This is not because the inner structure of pdc file changed. What becomes incompatible is the naming convention. This is probably because of the different ‘smallest unit of time’.

Assuming the project is set to 25fps, in Maya 2014 pdc files are created with this naming convention like tihs:




Notice that the digits increment with a value of 240.  Maya 2014’s smallest unit of time is 1/6000th of a second. 6000/25fps =  240. Easy? Yes. Why? I don’t know.

In Maya 2018 this value is 5,644,800… The real problem begins with limitations of integer values. The maximum value of an integer variable can hold is  2,147,483,647.  With a step size of 240, this is fairly acceptable. It is possible to cache 8,947,848 frames. I think no one exceeded that (I truly wish that no one exceeded that)

However, with a step size of 5,644,800, it only takes 380 frame to reach the limit. Once it reaches the limit, it flips the value negative and continues from there. It was already not making any sense before…

One more thing. If you create a particle system, cache it lets say between 1-200, delete the emitter and as soon as you pass 200, Maya crashes instantly. Every time, everywhere.


Leave a Reply

Your email address will not be published. Required fields are marked *