Ageia paper on position based physics

Dirk Gregorius
Posts: 861
Joined: Sun Jul 03, 2005 4:06 pm
Location: Kirkland, WA

Post by Dirk Gregorius »

You can look for this paper which compares quite some different approaches and should be fairly easy to implement (you will this paper using the link I will provide below):

M?ller - A Versatile and Robust Model for Geometrically Complex Deformable Solids

however if for example we want to parametrize realistic materials in terms of poisson ratio and young modulus that way of preserving the volume wouldn't do it. There is also some coupling between the edge preservation constraints and the volume preservation constraints. So it maybe a good choice for many cases but i would not exclude the other options.
Yes, I agree on this. I find it personally quite hard to model different materials using sequentiel projections. On the other side this method is unconditionally stable. There is another method based on shape matching to model deformable objects which might be used in Ageia 2.6 (I am guessing here). You find a 2D example implementation on M. Muller side:

http://www.matthiasmueller.info/

HTH,
-Dirk
bone
Posts: 231
Joined: Tue Feb 20, 2007 4:56 pm

Post by bone »

Thank you very much for the guidance. Sorry, yes I said force but I was really looking at implementing it as a constraint.
Dirk Gregorius
Posts: 861
Joined: Sun Jul 03, 2005 4:06 pm
Location: Kirkland, WA

Post by Dirk Gregorius »

Your welcome. Let me know if you need help with the gradients.
bone
Posts: 231
Joined: Tue Feb 20, 2007 4:56 pm

Post by bone »

AntonioMartini wrote:There is also some coupling between the edge preservation constraints and the volume preservation constraints.
Follow-up question on this method: if you scaled the edge lengths in your edge preservation constraint by, say, the ratio of the current-to-original volume, it seems that would help decouple the two constraints. Right or wrong?

Of course, since the edge is likely shared between several tetrahedrons, I suppose you would need to come up with a combined volume ratio (perhaps the average current-to-original volume ratio), so maybe it's less than practical.
Antonio Martini
Posts: 126
Joined: Wed Jul 27, 2005 10:28 am
Location: SCEE London

Post by Antonio Martini »

bone wrote:
AntonioMartini wrote:There is also some coupling between the edge preservation constraints and the volume preservation constraints.
Follow-up question on this method: if you scaled the edge lengths in your edge preservation constraint by, say, the ratio of the current-to-original volume, it seems that would help decouple the two constraints. Right or wrong?

Of course, since the edge is likely shared between several tetrahedrons, I suppose you would need to come up with a combined volume ratio (perhaps the average current-to-original volume ratio), so maybe it's less than practical.
one way to go about this could be to create a constraint that does everything in one go, something like for example:

C(p0,p1,p2,p3) = 1/2*C0(p0,p1,p2,p3)^2 + 1/2*C1(p0,p1)^2 +
1/2*C2(p0,p2)^2 + 1/2*C3(p0,p3)^2 + 1/2*C4(p1,p2)^2 + 1/2*C5(p2,p3)^2 + 1/2*C6(p3, p0)^2

where the C0 is the volume conservation constraint and the others Ci are the edge length preservation constraints. Whatever form of C we choose the following properties seem to follow:

1. One stiffness value for each tetrahedron. so its easier to switch material between tetrahedra belonging to the same volume.
2. iteration is over tetrahedra
3. at each iteration each edge is resized n times, where n is the number of incident tetrahedra

in the end we may even realise that the extra parameter adds some desired flexibility.

cheers,
Antonio
Last edited by Antonio Martini on Thu Feb 22, 2007 10:33 pm, edited 3 times in total.
Antonio Martini
Posts: 126
Joined: Wed Jul 27, 2005 10:28 am
Location: SCEE London

Post by Antonio Martini »

Dirk Gregorius wrote:On the other side this method is unconditionally stable.
implicit FEM are as well but of course they are a totally different beast:)
Dirk Gregorius wrote: There is another method based on shape matching to model deformable objects which might be used in Ageia 2.6 (I am guessing here). You find a 2D example implementation on M. Muller side:
to me the problems of shape matching are the following:

1. inferior quality if compared to other methods
2. collision detection becomes far more complicated. If we have a tetrahedral mesh it's very easy to tell if a point is inside a mesh.
3. cannot have different materials in a single mesh. See also the skin layer example i made earlier.

now it could well be that

1. The quality is sufficient for the purposes of our application.
2. we dont have collision detection between deformable bodies.
3. we dont have the need of switching materials in a single body.
4. we want to minimize the storage requirements.

So thats why like i said in my previous post every method has its own place depending on our objectives and constraints.

regarding collision detection and shape matching the paper:

http://graphics.ethz.ch/~mattmuel/publi ... _SIG05.pdf

states(section 6) that they have used

http://graphics.ethz.ch/~mattmuel/publi ... _vmv04.pdf

which requires a tetrahedral mesh. i Actually thought they used:

http://graphics.ethz.ch/~mattmuel/publi ... _pba04.pdf

of course we can keep the tetrahedral mesh and "shape match" clusters of vertices belonging to the volume, then we can use the connectivity only for collision detection purposes. However doing so we would loose one of the main benefits of shape matching.

cheers,
Antonio
Last edited by Antonio Martini on Thu Feb 22, 2007 8:20 am, edited 2 times in total.
bone
Posts: 231
Joined: Tue Feb 20, 2007 4:56 pm

Post by bone »

Thanks again Antonio and Dirk. I'll chew on that for awhile.
raigan2
Posts: 197
Joined: Sat Aug 19, 2006 11:52 pm

Post by raigan2 »

Dirk Gregorius wrote:Your welcome. Let me know if you need help with the gradients.
An easier (but lazy) solution is to use a math program to derive the gradients for you. I can recommend http://www.livemath.com/, but I'm sure Matlab or Maple could do the same thing.
stbuzer
Posts: 23
Joined: Fri Dec 08, 2006 10:16 am

Post by stbuzer »

I have implemented this method and I should say that I expected something more :)

First, the method suffers from "super-elastic" effect. (I tried to fix this by using semi-rigid approach proposed by X.Provot, but it took no effect). 8 meter cloth behaves pretty good, super-elastic effect appears with size of 1.5 meter(I tested 37x37 cloth grid with 9.8 gravity, 5 solver iterations). Increasing number of iterations helps, but I dont want to use about 15 iterations since it hurts performance.

Second, it's hard to get stable self-collision - "testing continuous collisions is insufficient if cloth gets into a tangled state, so methods like ones proposed in "Untangling cloth"(David Baraff et al.)".
By the way, has anyone implemented self-collisions with this or any other approach except implicit Euler("Large steps in cloth simulation")? :)

Now I think it would be good to me to take a look at the methods used by Bridson
(are they suitable for the realtime simulation?, any links are greatly appreciated :))
Antonio Martini
Posts: 126
Joined: Wed Jul 27, 2005 10:28 am
Location: SCEE London

Post by Antonio Martini »

stbuzer wrote:I have implemented this method and I should say that I expected something more :)

First, the method suffers from "super-elastic" effect. (I tried to fix this by using semi-rigid approach proposed by X.Provot, but it took no effect). 8 meter cloth behaves pretty good, super-elastic effect appears with size of 1.5 meter(I tested 37x37 cloth grid with 9.8 gravity, 5 solver iterations). Increasing number of iterations helps, but I dont want to use about 15 iterations since it hurts performance.

Second, it's hard to get stable self-collision - "testing continuous collisions is insufficient if cloth gets into a tangled state, so methods like ones proposed in "Untangling cloth"(David Baraff et al.)".
By the way, has anyone implemented self-collisions with this or any other approach except implicit Euler("Large steps in cloth simulation")? :)

Now I think it would be good to me to take a look at the methods used by Bridson
(are they suitable for the realtime simulation?, any links are greatly appreciated :))
5 iterations for a 37x37 cloth is definitely too low for any iterative method. If you cannot have more than 5 iterations, it's very likely that you cannot have any of the much more expensive things like self collision detection.

cheers,
Antonio
stbuzer
Posts: 23
Joined: Fri Dec 08, 2006 10:16 am

Post by stbuzer »

I planned to use self-collision feature only for some very important clothes, where self-intersections are clearly visible. But for a simple clothes it is too expensive to have 6-7 ms per cloth piece.
Anyway, this method one of the best I have ever seen for realtime applications.(BTW, pity, but I have only seen many Verlet and some implicit Euler solvers, what other approaches exist(velocity based?)?)
clanzotti
Posts: 15
Joined: Tue Jul 26, 2005 10:11 am

Post by clanzotti »

Hi,
stbuzer wrote:
...

Now I think it would be good to me to take a look at the methods used by Bridson
(are they suitable for the realtime simulation?, any links are greatly appreciated :))
Definitely not, forgot about realtime simulation with complex piece of cloths/garments, especially with self collisions.

Regards,

Carlo Lanzotti
Antonio Martini
Posts: 126
Joined: Wed Jul 27, 2005 10:28 am
Location: SCEE London

Post by Antonio Martini »

stbuzer wrote:I planned to use self-collision feature only for some very important clothes, where self-intersections are clearly visible. But for a simple clothes it is too expensive to have 6-7 ms per cloth piece.
Anyway, this method one of the best I have ever seen for realtime applications.(BTW, pity, but I have only seen many Verlet and some implicit Euler solvers, what other approaches exist(velocity based?)?)
you may want to consider something like the following:

http://www.cg.ces.kyutech.ac.jp/paper/ca01.pdf

a coarser grid will have faster convergence, however this will worsen the collision detection problem, especially if done at vertexVsFace level as you would have longer edges.

cheers,
Antonio
Last edited by Antonio Martini on Thu Feb 22, 2007 6:25 pm, edited 1 time in total.
Dirk Gregorius
Posts: 861
Joined: Sun Jul 03, 2005 4:06 pm
Location: Kirkland, WA

Post by Dirk Gregorius »

You can really forget about the Bridson stuff. It is really to slow. You can try to use a coarser mesh as Antonio suggested and then either use this to deform a render mesh (something I like to try next since this solves the problem the cloth is always thin like silk) or you subdivide (e.g. Butterfly). For the later see S. Melax post here on the forum
stbuzer
Posts: 23
Joined: Fri Dec 08, 2006 10:16 am

Post by stbuzer »

Thank you. I'll take a look at these methods.
Post Reply