<?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/11665" />

	<title>Real-Time Physics Simulation Forum</title>
	
	<link href="https://pybullet.org/Bullet/phpBB3/index.php" />
	<updated>2017-04-23T19:02:04+00:00</updated>

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

		<entry>
		<author><name><![CDATA[GeorgeJennings]]></name></author>
		<updated>2017-04-23T19:02:04+00:00</updated>

		<published>2017-04-23T19:02:04+00:00</published>
		<id>https://pybullet.org/Bullet/phpBB3/viewtopic.php?p=39221#p39221</id>
		<link href="https://pybullet.org/Bullet/phpBB3/viewtopic.php?p=39221#p39221"/>
		<title type="html"><![CDATA[Can I use this energy in Projective Dynamics?]]></title>

		
		<content type="html" xml:base="https://pybullet.org/Bullet/phpBB3/viewtopic.php?p=39221#p39221"><![CDATA[
Hi<br><br>recently I was thinking about the energies used in <a href="http://www.projectivedynamics.org/" class="postlink">Projective Dynamics</a> and I wonder<br>why didn't the authors mention any constraints based on the classical material models (like the Neo-Hookean model).<br><br>The only FEM-like model mentioned was the as-rigid-as-possible model (section 5.1 in <a href="http://www.projectivedynamics.org/projectivedynamics.pdf" class="postlink">the paper</a>).<br><br><strong class="text-strong">I got an idea how to simulate e.g. the Neo-Hookean model in Projective Dynamics, but I'm not really sure if it would work.<br>Could you please write if the idea has some flaws or if looks like it could work (i.e. <span style="text-decoration:underline">would the material behave like the Neo-Hookean model</span>)?<br></strong><br><br><strong class="text-strong"><span style="text-decoration:underline">TLDR:</span></strong><br>    <span style="text-decoration:underline">In the local step:</span> use energy density function argmin_(p_i) Ψ(F(p_i)) of Neo-Hookean model as constraint to minimize to obtain projected auxiliary variables p_i.<br>    <span style="text-decoration:underline">In the global step:</span> use the simplest quadratic energy possible; W_i(q) = || S_i*q - p_i ||^2<br><br><br><strong class="text-strong"><span style="text-decoration:underline">The detailed version:</span></strong><br>    PD uses local and global steps to solve constrained physical system.<br>    <br>    <span style="text-decoration:underline">The local step:</span><br>        For each constraint I compute the auxiliary projection variables p_i for which E_i(p_i) = 0. There's 1 constraint for each tetrahedron.<br>        I imagined I could minimize the energy density function Ψ(F) of the Neo-Hookean model (<span style="font-size:55%;line-height:116%">which takes deformation gradient of an element (say a tetrahedron) and produces energy density (a scalar)</span>).<br>        <br>        And because the deformation gradient of a tetrahedron can be calculated based on its vertices, I could rewrite the constraint function as: E_i(p_i) := Ψ(F(p_i))<br>        <br>        I'd then do argmin_(p_i) E_i(p_i), which I'd solve by either a simple gradient descent or by the Newton method.<br>        I'd then use the current (deformed) vertices of the tetrahedron as the initial guess of the minimization (to ensure p_i is the closest point on the constraint manifold).<br>        <br>        This minimization produces the auxiliary projected variable p_i, which represents the stacked vector of all 4 (projected) vertices of the tetrahedron.<br>    <br>    <br>    <span style="text-decoration:underline">The global step:</span><br>        I'd use the simplest quadratic energy possible; W_i(q) = || S_i*q - p_i ||^2 for each of my tetrahedral constraints.<br>        <br>        Where q is the vector of all vertices in the system.<br>        S_i is the selector matrix that selects the 4 vertices of the current tetrahedron i.<br>        And p_i is the stacked vector from the local step containing the projected positions of S_i*q.<br>        <br>        (Just a note: S_i*q is used as the initial guess for the minimization in the local step, as was written above.)<br><br>Thank you for any suggestion!  <p>Statistics: Posted by <a href="https://pybullet.org/Bullet/phpBB3/memberlist.php?mode=viewprofile&amp;u=12146">GeorgeJennings</a> — Sun Apr 23, 2017 7:02 pm</p><hr />
]]></content>
	</entry>
	</feed>
