individual particle transform (was rotation)

hi list,

monkeying around with particles lately and while I have the gist of it down, Im looking to figure out how to rotate particles individually. I tried with the copySOP, but Im only able to rotate the primitive emitter, Im not sure how to reference individual particles and then apply a transformation.

I guess this is impossible since no one has any ideas…

How about getting the particle’s ID and sending that to a texture and only transforming it? here though I am lost as to how to accomplish that…simple enough to apply a transformation to a texture as a whole, but how to select individual particles is the question…any tips at all?

Not sure what you mean? You want to rotate each individual particle? How many do you have?

I’m guessing here (maybe send a project file for a more detailed answer), but particles are essentially one primitive and a bunch of points. So your only way to rotate them is using or particle tools, or point tools.
One thing you could do (no idea if this is what you want) is put a Point SOP after the Particle SOP and then in the Standard Tab > Add Normals
Just for fun, add something like rand($ID)*$F*0.01
This has to be in Tscript mode. If you put this in each channel and just change that last multiplier, you should see the normals rotating.
Whatever objects you copy to these particles should now have that specific rotation…

Hi rurik,

thanks for getting back, I’m sorry if my question was a bit unclear. I think a good description might be to imagine a particle system where I am re-creating snowfall, so rather than each particle looking identical, I’d like to have each one rotate individually from the rest…maybe a particle system isn’t the best way to do this?

here is a small, super fast example with your t-script in there…it doesn’t seem to rotate each individual particle independently - they rotate together…hope that helps. It seems there should be a way to accomplish it.

Particle_rotation.1.toe (7.12 KB)

Yes, messing with the normals is not the right approach here.
In the Copy node, you can use the $PT variable to achieve what you want. See the attached modified file.
What you want to do is use an expression of this type :

rand($PT)*$F

What this will do is take each point, and give it a random rotation based on its point number. I multiply this by $F so that it changes over time, as $F is the variable for Frame number.

You could get fancier with this, but at least it gets you started?

Oh and make sure you are in Tscript mode, not sure what the equivalent would be in Python

Alex
Particle_rotation_AC.toe (7.23 KB)

1 Like

beautiful. thanks so much - I knew there had to be a way, and I figured it was some expression, but just had no idea where to put it! thanks again rurik!

Hi,
can these random values also be exported via a sopto → and used on instanced object to provide rotations? I tried but it was beyond me.

Ian

I don’t think they can, since they are being generated on the fly by the expression…
There might be a way to do this with a script though…I’ll give it a think

so if it goes like this :

sphere → particle → sopto > instance on GeoComp should rotation be on point Sop ? or is copy the only option…

Like how do you achieve this without the Copy SOP ?

10 years later and you just saved me on a project!