|
|
"David Buck" <dav### [at] simberoncom> wrote in message
news:3BFF20E8.F99D6608@simberon.com...
> > My cohesion algorithm is basically: if the particles touch each other,
then
> > they attract each other a bit, but they're repelled if they're too
close.
> > There's a big set of particles at the end of the animation that seem to
be
> > experimenting this effect, but I don't really see the effect on the rest
of
> > the system...
>
> How are the particles repelled if they're too close? Are they repelled
more
> strongly if they get even closer? The reason I ask is that I think I see
some
> effects of increased energy in the middle of the animation (particles
flying in
> all directions). This can happen if you use Euler and have strong forces.
> Particles that are very close together can create immense forces to push
them
> apart.
>
> An alternative (but more complicated) is to use a technique called
Adaptive
> Runge Kutta instead of Euler. Adaptive Runge Kutta is much more stable
and is
> much less likely to give increases in energy during the animation.
> Unfortunately, it will probably slow down the calculation of the physics.
If
> you're stepping your particle system once for every frame with the Euler
method,
> Adaptive Runge Kutta will (at best) be 4 times slower. I can provide
references
> if you like.
>
> David Buck
> Simberon Inc.
> www.simberon.com
It seems that I have solved the problem. I'm using Euler's method, but I
believe that the problem of the increased energy was caused by my "cohesion"
subroutine... I rewrote it using an approximate Newton's method and it seems
that it gives much better results!!! I waiting for the final frames to
render so I can post the new animation soon.
I think I will try now with different surfaces before changing the physics'
simulation. As you may have seen, I have been using lathe surfaces, so I
will have to change some code in order to use more complex surfaces.
Later, if I decide to use Runge Kutta, I'll be glad to use your kind offer.
Thanks again,
Fernando.
Post a reply to this message
|
|