Goal
I'm trying to 'morph' one moving mesh into another moving mesh using particles. The 'morph' is working well when the meshes don't move, but moving causes trouble.
What I've done
Here's my .blend file:
In the gif below, a sphere is breaking into particles, and those particles are moving to different meshes in a water molecule. The particles doing the "morphing" belong to a separate 'controller' object (not in view). The controller object has several particle systems with keyed physics, each of which has the sphere as its first key target and a part of the water molecule as its second key target.
As you can see from the gif, the particle systems in the water molecules (the targets) stay put while the molecule itself keeps rotating. What I want is for them to rotate along with the molecule. The current (undesired) result is that the particles morph to where the molecule used to be, and then the actual molecule mesh appears rotated ahead of the particles.
I've also tweaked a few things for the sake of the gif.
- The molecule usually doesn't show until the particles arrive. For the gif, I show it the whole time so you can see where it emits the particles.
- The 'target' particle systems usually don't show either, but I'm showing them in the gif.
- I've enlarged some of the 'controller' object's particles to make the morphing easier to see.
Question
How can I give particle systems a moving target?
I've tried setting the parent of the target particle systems, which did cause the systems to move, but particle systems don't have the matrix_parent_inverse property, so the scale and rotation were offset anyway. Also, despite seeing the target systems move, the keyed "morphing" particle systems seemed to still be aiming at a single spot. (Hopefully that made sense, but if not, suffice it to say that I can't get parenting to work with particle systems.)
I'm doing this with python, so I'm considering manipulating the individual particle positions based on the movement of the emitter, but it seems like there must be a better way than re-implementing parenting myself.
Finally, I have to morph with particles rather than shape keys, unless someone can tell me an algorithm/feature that can make the topology of two meshes equivalent while keeping the same resulting shape. :)