View Full Version : Reactor collides boxes through each other
Maikel
19-06-2006, 07:14 PM
Hello people, I've got a question about reactor in 3DS Max 8.
I am still VERY new to reactor so this is probably nothing. Here is a picture of the problem:
http://aycu01.webshots.com/image/1080/1729719459324023228_th.jpg (http://allyoucanupload.webshots.com/viewimage?imageID=1729719459324023228)
When creating an animation (or a preview, for that matter) using reactor to calculate collisions of falling boxes, the stack of still boxes collide with each other fairly well. Until I drop a box from a ramp on the side. It crashes into the stack sideways, causing it to collapse. So far, so good. BUT... then the top box rolls right through the bottom ones! Now I know about collision tolerance in the World rollout, but that hasn't solved the problem.
Buzzy
19-06-2006, 08:31 PM
This is caused when one object is allowed to get within the collision tolerance of another object. Reactor then causes both objects to ignore each other from then on.
This generally occurs in one of two situations. Either the two objects started the simulation too close to each other (like when boxes are stacked on top of each other), or one of the objects is moving too fast for the current settings. For example, if your collision tolerance is very small, and your subsampling rate very low, its very easy for an object to move past the collision tolerance inbetween subsamples, so reactor doesn't catch the collision. More than likely you have the second problem.
Try increasing the simulation sampling rate perhaps. It defaults to 10substeps/keyframe which is pretty low, especially if you lowered the collision tolerance. Try 50 or 60.
Also, any colliding objects should be in the same RBCollection (I'm assuming you already did this but we all make dumb mistakes once in a while)
Maikel
20-06-2006, 12:52 PM
Buzzy,
Thanks for the help! yeah they're all in the same RBCollection :)
I've tried setting the substeps to 50, but it still happened. After that I set substeps to over 200 which I believe should be more than enough, but then it occured to me nothing has changed exept for the path the boxes travel! Caused I guess because now reactor can calculate when the inbound box hits the stack much more acurately, but still the problem of "non-intercolliding boxes" persists...
nathaniliov
23-06-2006, 09:35 AM
Default colision tol is like 3.333, try 1 or .05 it should work fine arounf that area.
also....lol...to add to this...sometimes when i do some reactor things my balls or boxes or what not dont land on the ground plane? they like....float....lol....wierd eh? i no theres a really simple solution but meh....not enough time to search the web! so can ya guys tell me? :p
Buzzy
03-07-2006, 08:46 PM
plane objects have to be calculated as a concave mesh....not a regular convex mesh
and your point been...lol..nah....coz 3dm warns you about that before you go INTO reactor...so thats not the problem...ijust tried it again.....still aint work....got a box and plane, sam RB, box weight is 3(just random number) and is "bounding box" plane is0 and is a concave mesh (as max and you told me to do) and it still works PERFECTLY but floats...it acts as if there is an invisible plane a few cm's from the real one....
Buzzy
04-07-2006, 08:32 AM
then your collision tolerance is too high for the scale of your scene. It defaults to 3.9ish with a scene scale of 39ish (number of inches in a meter)... or collision tolerance = 10% of scene scale. Generally, in all but the most forgiving simulations, this is way to high. I generally have great success with a col. tolerance that's 1-2% of the world scale.... try 0.5 or 0.6.
If anyone cares, here's a quick synopsis of how I understand rigid bodies to function in reactor. Hopefully it helps someone:
I believe, and correct me if I'm wrong, that the collision tolerance is the distance at which a collision can be detected...meaning, if reactor generates a subsample where two objects are anywhere within that distance from each other, reactor calls it a collision. Think of the collision tolerance as an invisible "force field" around every object.
Ok, here's some examples- suppose your col. tol. is 3.9 and your subsample rate is 10samples per frame (a rather low sample rate). On one subsample, two objects are 4.2 cm apart. No collision is detected and the objects keep moving as normal. On the next sample (1/10th of a frame later...1/300th of a second), reactor determines these objects to be 3.6cm apart (they moved 0.6 cm closer at a speed of 6cm per frame or 180cm per second....pretty darn fast). They are within the col.tol. distance, so it will then flag that as a collision, and cause the objects act accordingly.
Now suppose your subsample rate is really high, like 60, with a col. tol still at 3.9. Reactor is generating 6x as many samples. So, using the same example as before, on one sample the objects are 4.2cm apart. On the next sample (1/60th of a frame or 1/1800th of a second later) the objects are 4.1 cm apart. This continues, until, after several subsamples, the objects are 3.9cm apart and a collision is generated. The objects never made it to 3.6cm like in the last example. Reactor is now taking samples so often that it will almost ALWAYS catch collisions at or very near to 3.9cm.
Lastly, say your subsample rate is low again...like 6. And your col.tol. is now very much lower, at 0.15. On sample one, the objects are again 4.2cm apart. Next sample (1/6th of a frame or 180th of a second) the objects are 3.2cm apart,etc. etc until eventually there's a sample where the objects are 0.2cm apart. No collision is generated because they are still outside the col.tol. The next sample, however, puts the objects at a distance of negative 0.8 -- interpenetrating. Reactor sees this and basically kills any and all collisions between these two objects for the rest of the simulation. The col. tolerance is so small, that with only 6 samples per frame, its VERY likely that an object will move entirely through the col. distance before reactor takes a sample.
AHMEN! :P lol...thanks.....i think i should do a few tutorials with reactor...coz i didnt know anything about it, just that an object that weights 0 will not move! rofl....so yeah....good explanation :D i guess thats why my plane's DO have an invisible forcefield round' em'....coz the col.tol. is too high:P ill try again soon see what 'appens
DeadlyFreeze
04-07-2006, 11:15 AM
Buzzy is kind of skewing it, sub-steps dont effect the collision tollerance rather they are for refining the physics simulation. So say you set the substep to 5 that means every 1 sec (30 frames) the physics will update. Pictures will probably be better then me rambling...
What you see is just a box falling on a 'seasaw' launching the other box in the air. The red dotted line indicates the trajectory of the box. In the first pic the substeps are to low so the box dosent fallow the true path, when the substeps are increased it comes closer to the objects true path.
http://home.comcast.net/~dfart/traj.jpg
In this pic you just see the ground and the boxes hovering at the same heights, both taken at frame 40...
http://home.comcast.net/~dfart/subs.jpg
vBulletin® v3.7.4, Copyright ©2000-2013, Jelsoft Enterprises Ltd.