<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-gb">
	<link rel="self" type="application/atom+xml" href="https://pybullet.org/Bullet/phpBB3/app.php/feed/topic/1984" />

	<title>Real-Time Physics Simulation Forum</title>
	
	<link href="https://pybullet.org/Bullet/phpBB3/index.php" />
	<updated>2009-06-07T09:48:42+00:00</updated>

	<author><name><![CDATA[Real-Time Physics Simulation Forum]]></name></author>
	<id>https://pybullet.org/Bullet/phpBB3/app.php/feed/topic/1984</id>

		<entry>
		<author><name><![CDATA[Dirk Gregorius]]></name></author>
		<updated>2009-06-07T09:48:42+00:00</updated>

		<published>2009-06-07T09:48:42+00:00</published>
		<id>https://pybullet.org/Bullet/phpBB3/viewtopic.php?p=13838#p13838</id>
		<link href="https://pybullet.org/Bullet/phpBB3/viewtopic.php?p=13838#p13838"/>
		<title type="html"><![CDATA[Re: Soft bodies early preview]]></title>

		
		<content type="html" xml:base="https://pybullet.org/Bullet/phpBB3/viewtopic.php?p=13838#p13838"><![CDATA[
I sketch the gradients for you quickly:<br>C(p1, p2, p3, p4) = | (p2 - p1) * [(p3 - p1) x (p4 - p1)] | / 6 - V0<br><br>We can translate the vertices without effecting the gradients. For simplification we move p1 into the origin =&gt;<br>p1' = 0<br>p2' = p2 - p1<br>p3' = p3 - p1<br>p4' = p4 - p1<br><br>The simplified constraint becomes:<br>C'(p2', p3', p4') = | p2' * (p3' x p4') | / 6 - V0<br><br>Now in order to find the gradients we build the time derivative and identify the gradients by inspection. This was suggested e.g. by A. Shabana in "Computational Dynamics" and introduced to the game physic community by Erin Catto (to my knowledge).<br>dC'/dt = [ p2' * (p3' x p4') ] / | p2' * (p3' x p4') | / 6 * [ ( p3' x p4' ) * v2' - ( p2' x p4' ) * v3' + ( p2' x p3' ) * v4' ]<br><br>Define V = p2' * (p3' x p4') we get<br>dC'/dt = V / | V | / 6 * [ ( p3' x p4' ) * v2' - ( p2' x p4' ) * v3' + ( p2' x p3' ) * v4' ]<br><br>The gradients are:<br>dC/dp4 = dC'/dp4' =  sign( V ) * ( p2' x p3' ) / 6 <br>dC/dp3 = dC'/dp3' = -sign( V ) * ( p2' x p4' ) / 6 <br>dC/dp2 = dC'/dp2' =  sign( V ) * ( p3' x p4' ) / 6 <br>dC/dp1 = -dC/dp2 - dC/dp3 - dC/dp4 <br><br><br>Is this different to the gradients in the Muller paper or the gradients discussed in this tread? <br><br><br>HTH,<br>-Dirk<p>Statistics: Posted by <a href="https://pybullet.org/Bullet/phpBB3/memberlist.php?mode=viewprofile&amp;u=14">Dirk Gregorius</a> — Sun Jun 07, 2009 9:48 am</p><hr />
]]></content>
	</entry>
		<entry>
		<author><name><![CDATA[Erwin Coumans]]></name></author>
		<updated>2009-06-05T18:31:23+00:00</updated>

		<published>2009-06-05T18:31:23+00:00</published>
		<id>https://pybullet.org/Bullet/phpBB3/viewtopic.php?p=13822#p13822</id>
		<link href="https://pybullet.org/Bullet/phpBB3/viewtopic.php?p=13822#p13822"/>
		<title type="html"><![CDATA[Re: Soft bodies early preview]]></title>

		
		<content type="html" xml:base="https://pybullet.org/Bullet/phpBB3/viewtopic.php?p=13822#p13822"><![CDATA[
<blockquote class="uncited"><div>Hey guys. Currently i have some problems in computing the gradients for the volume-constraints in the paper "Position Based Dynamics". Has somebody found the the gradients?</div></blockquote>Those gradients are discussed in this thread. Do you have details on what problem you face exactly?<br><br>Thanks,<br>Erwin<p>Statistics: Posted by <a href="https://pybullet.org/Bullet/phpBB3/memberlist.php?mode=viewprofile&amp;u=2">Erwin Coumans</a> — Fri Jun 05, 2009 6:31 pm</p><hr />
]]></content>
	</entry>
		<entry>
		<author><name><![CDATA[Strahlemann]]></name></author>
		<updated>2009-06-01T21:02:22+00:00</updated>

		<published>2009-06-01T21:02:22+00:00</published>
		<id>https://pybullet.org/Bullet/phpBB3/viewtopic.php?p=13791#p13791</id>
		<link href="https://pybullet.org/Bullet/phpBB3/viewtopic.php?p=13791#p13791"/>
		<title type="html"><![CDATA[Re: Soft bodies early preview]]></title>

		
		<content type="html" xml:base="https://pybullet.org/Bullet/phpBB3/viewtopic.php?p=13791#p13791"><![CDATA[
Hey guys. Currently i have some problems in computing the gradients for the volume-constraints in the paper "Position Based Dynamics". Has somebody found the the gradients?<p>Statistics: Posted by <a href="https://pybullet.org/Bullet/phpBB3/memberlist.php?mode=viewprofile&amp;u=5177">Strahlemann</a> — Mon Jun 01, 2009 9:02 pm</p><hr />
]]></content>
	</entry>
		<entry>
		<author><name><![CDATA[Nathanael]]></name></author>
		<updated>2008-08-08T10:22:57+00:00</updated>

		<published>2008-08-08T10:22:57+00:00</published>
		<id>https://pybullet.org/Bullet/phpBB3/viewtopic.php?p=9687#p9687</id>
		<link href="https://pybullet.org/Bullet/phpBB3/viewtopic.php?p=9687#p9687"/>
		<title type="html"><![CDATA[Re: Soft bodies early preview]]></title>

		
		<content type="html" xml:base="https://pybullet.org/Bullet/phpBB3/viewtopic.php?p=9687#p9687"><![CDATA[
That's shape matching, you can take a look at 'Init_BunnyMatch' and 'Init_TorusMatch' methods in SoftDemo.cpp.<br><br>Nathanael.<p>Statistics: Posted by <a href="https://pybullet.org/Bullet/phpBB3/memberlist.php?mode=viewprofile&amp;u=1192">Nathanael</a> — Fri Aug 08, 2008 10:22 am</p><hr />
]]></content>
	</entry>
		<entry>
		<author><name><![CDATA[ngaloppo]]></name></author>
		<updated>2008-07-28T19:47:37+00:00</updated>

		<published>2008-07-28T19:47:37+00:00</published>
		<id>https://pybullet.org/Bullet/phpBB3/viewtopic.php?p=9514#p9514</id>
		<link href="https://pybullet.org/Bullet/phpBB3/viewtopic.php?p=9514#p9514"/>
		<title type="html"><![CDATA[Re: Soft bodies early preview]]></title>

		
		<content type="html" xml:base="https://pybullet.org/Bullet/phpBB3/viewtopic.php?p=9514#p9514"><![CDATA[
I am confused. Which of Matthias' methods is used? Stiffness Warping (aka Virtual Materials) or Shape Matching?<br><br>Stiffness Warping:<br>M. Müller, M. Gross, Interactive Virtual Materials, in Proceedings of Graphics Interface (GI 2004), pp 239-246, London, Ontario, Canada, May 17-19, 2004. (<a href="http://www.matthiasmueller.info/publications/GI2004.pdf" class="postlink">http://www.matthiasmueller.info/publications/GI2004.pdf</a>)<br><br>Shape Matching:<br>M. Müller, B. Heidelberger, M. Teschner, M. Gross, Meshless Deformations Based on Shape Matching, in Proceedings of SIGGRAPH'05, pp 471-478, Los Angeles, USA, July 31 - August 4, 2005 (<a href="http://www.matthiasmueller.info/publications/MeshlessDeformations_SIG05.pdf" class="postlink">http://www.matthiasmueller.info/publica ... _SIG05.pdf</a>)<p>Statistics: Posted by <a href="https://pybullet.org/Bullet/phpBB3/memberlist.php?mode=viewprofile&amp;u=1351">ngaloppo</a> — Mon Jul 28, 2008 7:47 pm</p><hr />
]]></content>
	</entry>
		<entry>
		<author><name><![CDATA[amirishere]]></name></author>
		<updated>2008-03-27T12:04:01+00:00</updated>

		<published>2008-03-27T12:04:01+00:00</published>
		<id>https://pybullet.org/Bullet/phpBB3/viewtopic.php?p=7764#p7764</id>
		<link href="https://pybullet.org/Bullet/phpBB3/viewtopic.php?p=7764#p7764"/>
		<title type="html"><![CDATA[Re: Soft bodies early preview]]></title>

		
		<content type="html" xml:base="https://pybullet.org/Bullet/phpBB3/viewtopic.php?p=7764#p7764"><![CDATA[
Way too cool! <img class="smilies" src="https://pybullet.org/Bullet/phpBB3/images/smilies/icon_eek.gif" width="15" height="15" alt=":shock:" title="Shocked"><p>Statistics: Posted by <a href="https://pybullet.org/Bullet/phpBB3/memberlist.php?mode=viewprofile&amp;u=2347">amirishere</a> — Thu Mar 27, 2008 12:04 pm</p><hr />
]]></content>
	</entry>
		<entry>
		<author><name><![CDATA[Antonio Martini]]></name></author>
		<updated>2008-03-24T17:05:29+00:00</updated>

		<published>2008-03-24T17:05:29+00:00</published>
		<id>https://pybullet.org/Bullet/phpBB3/viewtopic.php?p=7733#p7733</id>
		<link href="https://pybullet.org/Bullet/phpBB3/viewtopic.php?p=7733#p7733"/>
		<title type="html"><![CDATA[Re: Soft bodies early preview]]></title>

		
		<content type="html" xml:base="https://pybullet.org/Bullet/phpBB3/viewtopic.php?p=7733#p7733"><![CDATA[
just to recap as here i get the feeling that far too many methods have been discussed together. For volumes you are basically using shape matching as in:<br><br><a href="http://www.matthiasmueller.info/publications/MeshlessDeformations_SIG05.pdf" class="postlink">http://www.matthiasmueller.info/publica ... _SIG05.pdf</a><br><br>where for now you only have one cluster of vertices right? if so in it's basic formthere is no explicit volume conservation constraint(something is mentioned as a variant at the end of section 4.2) and all the considerations on momentum conservation mentioned in the paper apply.<br><br>you maybe interested in having a look at defcolstudio 1.0.0 where a few methods for deformations were implemented:<br><br><a href="http://cg.informatik.uni-freiburg.de/software.htm" class="postlink">http://cg.informatik.uni-freiburg.de/software.htm</a><br><br>when using tetrahedral meshes typically the artwork is interpolated inside it by the use of barycentric coordinates.<br>See for example the following demo where it is possible to switch between art/simulated mesh: <br><br><a href="http://www.matthiasmueller.info/demos/physicsDemo.zip" class="postlink">http://www.matthiasmueller.info/demos/physicsDemo.zip</a><br><br>so a tetrahedron is playing a similar role to a cluster in the shape matching approach. For example we can have a cube made up of a few tetrahedra and have a very complicated artwork interpolated inside it.<br>im not trying to say that one approach is better than the other just pointing out similarities.<br><br>the main problem i can see with shape matching is deformableVsDeformable collision detection which could be very slow given the lack of extra information. Also fracture seems a bit tricky, on the good side it can handle very stiff bodies.<br> <br>cheers,<br>Antonio<p>Statistics: Posted by <a href="https://pybullet.org/Bullet/phpBB3/memberlist.php?mode=viewprofile&amp;u=145">Antonio Martini</a> — Mon Mar 24, 2008 5:05 pm</p><hr />
]]></content>
	</entry>
		<entry>
		<author><name><![CDATA[Antonio Martini]]></name></author>
		<updated>2008-03-23T04:39:35+00:00</updated>

		<published>2008-03-23T04:39:35+00:00</published>
		<id>https://pybullet.org/Bullet/phpBB3/viewtopic.php?p=7722#p7722</id>
		<link href="https://pybullet.org/Bullet/phpBB3/viewtopic.php?p=7722#p7722"/>
		<title type="html"><![CDATA[Re: Soft bodies early preview]]></title>

		
		<content type="html" xml:base="https://pybullet.org/Bullet/phpBB3/viewtopic.php?p=7722#p7722"><![CDATA[
<blockquote class="uncited"><div><blockquote class="uncited"><div>it happens but some methods seem numerically more robust and can recover gracefully</div></blockquote>I did test it, each application of gradient correction does in fact recover from sign inversion through (graceful:)) rotations, that could be a problem for one element, but usually more than one tetrahedron share a vertex, so its not an issue. I guess it should be possible to setup a configuration where corrections cancel each others and the inverted tetrahedron stay in inverted state, but in real situation i don't see it happening often (if at all), experience will tell.<br><br>Thanks, Nat.</div></blockquote>if you have not read it yet, see also section 4.1 still of:<br><a href="http://www-evasion.imag.fr/Publications/2005/NPF05/NPF05.pdf" class="postlink">http://www-evasion.imag.fr/Publications ... /NPF05.pdf</a><br><br>the requirements for dealing with inversion would be the following:<br><br>- must recover from an inverted state.<br>- must be numerically robust.<br>- the result must be visually plausible.<br><br>i have never detected any visible artifacts with complex meshes. Now it is not perfect, but the method of conserving volume by displacing vertices relative to the mass center doesn't meet any of the above requirements and as you pointed out it is not robust even before inversion happens. This without considering the problem of physical correctness of the constraint enforcement method mentioned in previous posts. <br><br>cheers,<br>Antonio<p>Statistics: Posted by <a href="https://pybullet.org/Bullet/phpBB3/memberlist.php?mode=viewprofile&amp;u=145">Antonio Martini</a> — Sun Mar 23, 2008 4:39 am</p><hr />
]]></content>
	</entry>
		<entry>
		<author><name><![CDATA[Nathanael]]></name></author>
		<updated>2008-03-23T02:46:03+00:00</updated>

		<published>2008-03-23T02:46:03+00:00</published>
		<id>https://pybullet.org/Bullet/phpBB3/viewtopic.php?p=7720#p7720</id>
		<link href="https://pybullet.org/Bullet/phpBB3/viewtopic.php?p=7720#p7720"/>
		<title type="html"><![CDATA[Re: Soft bodies early preview]]></title>

		
		<content type="html" xml:base="https://pybullet.org/Bullet/phpBB3/viewtopic.php?p=7720#p7720"><![CDATA[
<blockquote class="uncited"><div>it happens but some methods seem numerically more robust and can recover gracefully</div></blockquote>I did test it, each application of gradient correction does in fact recover from sign inversion through (graceful:)) rotations, that could be a problem for one element, but usually more than one tetrahedron share a vertex, so its not an issue. I guess it should be possible to setup a configuration where corrections cancel each others and the inverted tetrahedron stay in inverted state, but in real situation i don't see it happening often (if at all), experience will tell.<br><br>Thanks, Nat.<p>Statistics: Posted by <a href="https://pybullet.org/Bullet/phpBB3/memberlist.php?mode=viewprofile&amp;u=1192">Nathanael</a> — Sun Mar 23, 2008 2:46 am</p><hr />
]]></content>
	</entry>
		<entry>
		<author><name><![CDATA[Antonio Martini]]></name></author>
		<updated>2008-04-06T19:43:24+00:00</updated>

		<published>2008-03-22T14:29:41+00:00</published>
		<id>https://pybullet.org/Bullet/phpBB3/viewtopic.php?p=7709#p7709</id>
		<link href="https://pybullet.org/Bullet/phpBB3/viewtopic.php?p=7709#p7709"/>
		<title type="html"><![CDATA[Re: Soft bodies early preview]]></title>

		
		<content type="html" xml:base="https://pybullet.org/Bullet/phpBB3/viewtopic.php?p=7709#p7709"><![CDATA[
<blockquote class="uncited"><div>&gt;Thinking about it, the M matrix is <span style="text-decoration:underline">symmetric</span>, there must exist a better (non iterative) way to extract a polar decomposition. if polar &gt;decomposition ever become a bottleneck, i should get back to it.<br><br>Never mind, that's wrong.<br><br>Nat.</div></blockquote>from the back of my mind the non iterative approach aside from QR which isn't perfect, involves solving a eigenvalue/vector problem and so solving a cubic equation in this case.<br><br>from:<br><a href="http://en.wikipedia.org/wiki/Symmetric_matrix" class="postlink">http://en.wikipedia.org/wiki/Symmetric_matrix</a><br><br>"Every real symmetric matrix is Hermitian, and therefore all its eigenvalues are real"<br><br>"Another way of stating the real spectral theorem is that the eigenvectors of a symmetric matrix are orthogonal. More precisely, a matrix is symmetric if and only if it has an orthonormal basis of eigenvectors."<br><br>see also:<br><a href="http://www.geometrictools.com/Documentation/EigenSymmetric3x3.pdf" class="postlink">http://www.geometrictools.com/Documenta ... ric3x3.pdf</a><br><a href="http://www.geometrictools.com/Documentation/EigenSymmetricNxN.pdf" class="postlink">http://www.geometrictools.com/Documenta ... ricNxN.pdf</a><br><br>cheers,<br>Antonio<p>Statistics: Posted by <a href="https://pybullet.org/Bullet/phpBB3/memberlist.php?mode=viewprofile&amp;u=145">Antonio Martini</a> — Sat Mar 22, 2008 2:29 pm</p><hr />
]]></content>
	</entry>
	</feed>
