Speed Space Rotation with Random Spin - Help


Hi all. I’m a long time lurker here, but this is my first actual post.

I am trying to create a particle simulation in Max similar to the scenes in Hero and 300 where thousands of arrows are fired towards the camera. I’ve got everything working properly, except that the “arrows” are all oriented the same way. I would prefer to give them each a random spin so that the flechettes don’t all line up the same way, but there doesn’t seem to be an easy way to do this when using “Speed Space Follow” for rotation.

Can anyone help?


I would fire the arrows at an angle by turning the emitter about 45°, add a speed event with a low divergence value. Then add a gravity force. That should give each arrow a unique ballistic trajectory.


You could clone your arrow and do a offset rotation on each arrow, then group them and use the group as your instance. That way when the leave the emiter they already have slightly diferent rotations.


Hi guys. Thanks very much for the input. I wound up having to manually pose each projectile (it was for stills, not animation) because I was running out of time to complete the job.

Piflik - Good suggestion. That’s actually similar to what I was using for a setup. Getting a unique trajectory for each projectile wasn’t the problem, it was spinning each projectile by a random amount. Thanks, though!

Grury - What an inventive solution! I think that would actually have worked for me. I’ll certainly keep it in mind for next time.


i did a similar shot for a movie a while ago. mine pierces ice rocks in the ground…but u should be set by replacing the shape instance :slight_smile:

the trick lays in habing a rotation set to speed space followed by a spin set to speed space follow. then u get nice gravity beding AND a nice spin…

check the stripped max9-32 file. u will need the particle flow FREEBIES to get this working. u can download them for free at orbaz.com

kind regards,


Edit: This post was NOT the way to do it :stuck_out_tongue:

For the right way, do what others have posted or read below :smiley:

-Deteled trying to use two constant evaluated Rotation Ops to solve problem to avoid confusion as it does not work.-


hah! we´re are heavenly connected somehow :smiley: same minute same posting (content wise)


I am wrong here. This is what I get for posting something without trying it first. Good to hear you got a solution, but just to set people straight from my erroneous post…

The Speed Space Follow overrides any other Rotational Op (the Spin). It would appear that the best ways to do this would be as Grury says, or to set a rotation animation on your reference Geometry and use a random animation offset (if you do this, you need to apply it using an XForm modifier).


Yep i did bang my head for a while last week and that was the quickest solution I could came up with. Gotta have a look at PsychoSilences’ setup.


I want to thank everybody for all of their helpful input.

PsychoSilence & Charleyc - I, too, thought it would be a simple matter of setting Rotation to Speed Space Follow, and then adding a Spin operator afterwards. Alas, as Charleyc pointed out, they override each other, though.

My next thought was to animate the spin of the instanced object and offset it randomly in the animation, as Charleyc said, but I didn’t know that it had to be done via XForm. I think that would have solved all of my troubles! Oh well, now I know for next time.

PsychoSilence, I haven’t had a chance to look at your file yet. I do appreciate it, though, and I look forward to examining it later this week!


np, ur welcome :slight_smile:

what my scene file does different then charley´s approach is that i dont use two SPIN operators but a RotationOp set to Speed Space and a SpinOp set to Speed Space follow. thats it so u get a nice down going motion with the gravity dragging the arrow down AND a spin.

kind regards,


Hah! I tried the the spin+rotation op a couple of days ago and was having the same issues.

I thought I tried every possible combo to get it to work!

Seems using the Speed Space Follow last and the Rotation divergence are the keys to getting the objects to fly correctly. Cool.:thumbsup:


The Key to Anselm’s approach is that Speed Space does not update continuously like Speed Space Follow. Therefore, the Spin Op will take over and do the continuous rotation. This is a very good place for Box3 :smiley:


I tried a little box#3 love, but not enough to get me there. Still waiting on this book to arrive, hoping it will help me out with box#3 a little or a lot.:slight_smile:

LOL, a quick little screw off render…

PF Arrows QT 2.3mb


Hey John! Looks pretty cool. show the data view :slight_smile:

is it really that much faster with box#3 then with the oldschool trick?


No way Dude…TOP secret:p

Just kidding, I used your technique, I haven’t spent enough time with the box#3 version to get it working correctly.

Where I noticed the biggest speed hit was when using high poly mesh as a collision object. I added a noise+turbosmooth+displace (with smoke map) for the ground and bam collision test came to a grinding halt (somewhat expected of course)


Here is a Box3 method (R9 file). There are other ways to do this in Box3 (perhaps even simpler, but I already had an operator similar to this built).





So that scene you posted Charley helped explain a lot, I was trying to use real numbers to the rotation angle+axis outputs and getting nowhere. I had an idea it might have to do with them but I wasn’t sure how to connect data.

I am curious though where does the randomness come from? I noticed some spin opposite and some spin faster than others. Is it the variation in the scalar sub-op in the multiplier group?


Yeah, I have found that Quaternions work well for ‘local’ particle rotation. The randomness comes in from the Multiplier Scalar SubOp. To avoid a constantly updating random number, I need to connect the Scalar to an Input Standard set to In New Event, but I don’t want that to limit the entire Data Op, so I send that data out as an Output New and then back in as an Input Custom. That way the Multiplier data gets set once, but updates the particles continuously. That is where the random Z spin comes in.