Timing Belt Issues
#1
Hi Everyone!

Started using Tyflow Pro  (awesome product btw!)  about two weeks ago- so I'd like to apologize in advance if I missed some solution to my issues or if it's just beginner mistakes. Anyways, here goes:

Use Case:
timing belt animations including the teeth of the belt connecting properly to gears

Issue:
all works fine until I stretch the timing belt to a point where it should be really tense... then I get a lot of warping inbetween the elements, resulting in a completely wobbly spline... (keeping the timing belt "loose" is not an option unfortunately)

   
   

Setup: 
I`m currently using 
- birth spline
- Shape: 2 Shapes in sequence with meshes for the tooth and the part between the teeth and alternatiing by using a filter (AND every nth 2 )
- rotation (spline align)
- physx shape (convex hull)
- physx bind (rigid joint or glue)
- physx collision (mesh) for interactions
- spline paths as output

Things I tried:
I tried with higher tyflow values for the physx solver, tried with more time steps, physx bind set to glue or rigid, tried different very high spring settings versus different proximity bind settings but could never get this issue solved... 


...so I was hoping for some pointers in the right direction! thanks in advance! let me know if you need more info or a file to check
  Reply
#2
I guess my first question would be - does the belt even need to be dynamic? Unless you're simulating it breaking or something, I don't see why it would need to be a simulation at all, instead of a simpler path deform or something like that...

As for the stretching...you can increase PhysX solver values (pos. iterations corresponds directly to bind stability) yes, but if you stretch a network of binds beyond their physical limit you will never get stability because it'll basically be in an impossible configuration (from your screenshot it looks like you're stretching the belt, even if only a little bit).

In other words, if you take a chain of unstretchable binds that is 10 units in circumference, and put it in a scenario where its stretched to 11 units in circumference, you will always get weird stability issues because it's not a physically possible configuration (in reality an unstretchable system like that would simply break).

Now - the key word there is 'unstretchable'. With PhysX joint binds, if you do not enable movement spring, the binds will be treated as physically unstretchable - they can bend but will not be able to stably stretch. If, however, you do enable movement spring, then stretching them will no longer necessitate jittery instabilities. In a situation where you want them to be virtually unstretchable with maybe a little bit of give-and-take, you can enable movement spring but give it an extremely high values (say, 1 million)...that will allow the solver to treat the system more stably as a whole, without the binds being given too much leeway to spread apart. Essentially you'd be simulating a chain of material like thick rubber, rather than what you're doing now which is more like a bicycle chain (that would become unstable and break if stretched beyond its rest length).

Attached is a file for you to examine. Turn movement spring on/off in the PhysX Bind operator to see the difference....disabled it explodes, enabled it's smooth as butter.


Attached Files
.max   belt.max (Size: 756 KB / Downloads: 90)
  Reply
#3
(06-27-2023, 07:19 PM)tyFlow Wrote: Thanks for your feedback! This helped a lot!

Regarding the necessity of using tyflow for this - there are lots of benefits of having this simulated instead of using pathdeform (which I did, previously). Things like not having to hand animate secondary motion (beyond flex) and matching teeth to the belt so that no penetrations occur as well as moving the belt in place or having it snap or folding dozens in a shipping crate, etc...
I'm currently looking at producing tons of animations with this for all kinds of belts and use cases so tyflow is a godsent in that regard!

Thanks for your explanations regarding the Physx solver... I actually did play around with very high movement (and other) spring values (as suggested by the documentation) but for whatever reason I never tried increasing the damping values accordingly. that helped a lot.. Apparently in trying to find a solution I actually made things worse with other bind settings I messed around with - so your clean file helped a lot!

I did some stress testing and found this to work pretty well now: https://imgur.com/a/SSBvyOm   (settled on 10.000.000 for movement and 50.000.000 for swing settings, using 100k and 1mil in damping settings respectively)

Also as a side note: I was fighting against gravity previously (belt should be straight, not hanging but still conform to the shape of the gear (which is an issue with spring settings too high) - to counter that I previously decreased gravity but now I figured that increasing the frame step resolution to 1/4 makes a huge difference in keeping the springs stiff even at realistic gravity values

cheers!
  Reply


Forum Jump: