Rotation from Particle to Copy sop
Copy Sop doesn't get angler velocity information. It just converts moment velocity to copied objects.
This work flow allow you to calculate angler velocity with moment velocity when using copy sop from particle or any point.
at Particle
Prepare Attributes on Particles
- pCenter(get from just Position"P")
- rotSpeed(float)
- rotAxis(vector3)
Set Rot(from quaternion vop) Attribute for Rotation
- Angle <- rotSpeed * frame($FF or age * $FPS)
- Axis <-normalize<- rotAxis
Make sure check Use Template point Attribute at copy sop
At Copied Object
- Offset to Center and arrange axis to Y up <offsetedObj = (Position - pCenter) * inverted Align(from[0,1,0]torotAxis and invert)>
- We don't need height <XZdistancedObj = multiply [1,0,1]>
- Calculate Cross by Y axis <crossedOBJ = cross product (vector1 = [0,1,0], vector2 = XZdistancedObj)>
- Calculate rotation speed <radianVelocityOBJ = multiply rotSpeed>
- Multiply Pi * fps / 180 (in case length of radianVelocityOBJ(vector) is radius. See *1
- Restore axis <result = Align(from[0,1,0]torotAxis)
- to Velocity <v = v + result>
tips
Probably you need to change the name v attribute to (storeV or something) before copy sop.
And then rename the storeV to v.
(This is for objects are not orienting velocity direction.)
(*1
2 * Pi * r= (360 / fps) * angleVel
angleVel = 2 * Pi * r * fps / 360
Links