How to rotate particles at a constant rate?
I'm not sure if this is a bug, but something is wonky about InitMeshRotationRate. I'm trying to get the particles to inherit the angular velocity of their parent emitter (realistic). I can get them to spawn with the instantaneous correct angular velocity (though the fact that the parameter is in terms of Euler angles is annoying and inconsistent). The problem is that the particles don't rotate at a constant rate after they spawn.
The same thing occurs if you use the MeshRotationRateOverLife module. My question is what's going on? It looks like the mesh is simulating physics -- but not UE's fake rotation physics -- PhysX's actual rotation physics that uses the full inertia tensor in its equations of motion.
I'm inexperienced with Cascade, so maybe I'm doing something wrong.. How can I get a mesh particle to have a constant rotation rate?
EDIT: I figured out what's going on. It's a bug. See posted answer.
Okay I figured out what it's doing, and it's definitely a bug. Here is a better [gif of the particle system]. The particle system spawns a mesh and sets an initial rotation rate via the InitMeshRotationRate module. As you can see, the rotation rate is specified by a vector that represents normalized Euler angles (1 = 360 degrees). This representation is a poor choice in my opinion because it is inconsistent with the angular velocity representation in Blueprint. The vector parameter should correspond to the scaled rotation axis (length = speed). But I digress. The mesh is just a cylinder with a pivot at its base. The rotation rate vector is chosen as [0.1,0.3,0.4].
The problem with Euler angles is that you can't simply add them together, and that is what Cascade is doing to rotate the particle. The following shows on the left the particle (yellow) and on the right a mesh (pink) rotating with the same delta rotation, but using the correct CombineRotators blueprint node. Notice how the pink mesh has a constant rotation rate as it should : [gif of combined rotation]
Now instead of using the correct CombineRotators node for the pink mesh, we simply add the rotators. We see the rotation is exactly the same as the particle. Therein lies the bug. [gif of added rotation]
Here is the blueprint tick function of the rotating pink mesh.
Follow this question
Once you sign in you will be able to subscribe for any updates here