I remember a tutorial from a decade ago or longer where you setup a single fluid container using the puffy cloud preset and then apply the fluffy cloud preset to the cloud nParticles. You also use a random rotation per partcle attribute so that they rotate randomly after emitting. I have to do some basic smoke trails and would like to use this old method vs a fluid container. Then I can render the smoke trail in Maya software quickly as a separate render layer.

The rendered texture will now represent the current rotate value on the particle. This rotation will be affected by collisions if compute rotation is on. If there are no collisions you could also set the AngularVelocityPP to make the particle spin. This velocity will damp over time based on the rotation damp value. The angular velocity is defined as a vector where the direction of the vector represents the axis of rotation and the length the velocity of rotation. If you just want to directly set rotation values, and don’t need them computed for you, then you may wish to only have a userVector1PP array and set that directly(leave compute rotation off… no need for the rotationPP array or connection from it)

I can’t remember how to apply the puffy cloud fluid container preset to each nParticle for shading.
This was what made each cloud nParticle shade really nice yet I could get the settings to render them quite fast in the Maya renderer.

You set the fluid box resolution and then let the fluid from puffball fluid preset play out till it looked nice. Then you somehow disconnected it from time and that sample is what would appear on each particle, THOUGH, you then used the particle age to determine how the puffy ball rotated and it looked very organic and random. THough the rotation part that you’ve posted is most of the tutorial.

Though that was what I was looking for. Thank you Duncan, been a while since I’ve seen you post.

You can drive attributes on npThickCloudFluid, like textureTime, with other custom attributes, in the same manner as done for rotate. So you might want to drive that with particle age multiplied by a speed value. As well one might wish to drive things like opacityInputBias and transparency to have the particle fade out. The original technique you describe I think predates the thick cloud setup, which was implemented to facilitate that very workflow. You are also free to assign presets like thickCloudPuff to npThickCloudFluid, but some values may not be as well suited for particle rendering. Also I would avoid dynamic presets, as each particle would get the same dynamic simulation, which would rarely be useful.