<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6229419970286329265</id><updated>2011-11-27T16:04:29.687-08:00</updated><category term='rbd'/><category term='sop solver'/><category term='dops'/><category term='occlusion'/><category term='shader'/><category term='pointcloud'/><category term='pops'/><category term='plants'/><category term='wedge rop'/><category term='pops vopsop'/><category term='shading'/><category term='linear'/><category term='lsystem'/><category term='vopsop'/><category term='curvature'/><category term='PBR'/><category term='point cloud'/><category term='sops'/><category term='HDRI'/><category term='cloth'/><title type='text'>I, Houdini</title><subtitle type='html'>There is no doubt that Houdini is a most unusual creature, for this is a hamster with an advanced vocabulary and a terribly immodest opinion of his own superior brain power. Houdini believes without question that hamsters are a higher form of life than humans. He is, however, a kindhearted creature (generally speaking) and tolerates the bumbling ways of humans well enough.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://ihoudini.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6229419970286329265/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://ihoudini.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Sam</name><uri>http://www.blogger.com/profile/10698234127018406883</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_FzvBVqxfH40/SiMhu9TkQhI/AAAAAAAAAEw/b3PP8V_NcQg/S220/51RBE2V357L._SL500_AA240_.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>20</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6229419970286329265.post-6809118097493737163</id><published>2011-10-29T16:07:00.000-07:00</published><updated>2011-10-29T19:17:33.453-07:00</updated><title type='text'>Wire to RBD feedback in DOPs</title><content type='html'>&lt;div&gt;&lt;br /&gt;Normally if a wire is constrained to an RBD, the rbd isn't affected by the wire at all. Which is annoying ... but I had an idea to get it to work. the wire solver can store the internal forces on the geometry. In DOPs I made a point force, the position is set to the position of the constraint and the force is the wire's internal (linear) force. I have put a sopnet in the dopnet to get the wire and the constrained point so I can reference them in the point force. It could be simpler with a python expression to get the position and force directly without going through the sopnet, but this is just a little test...&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;For multiple attachment points, I think a copy data node could be uses to copy the point force data for each constrained point ...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;hip file &lt;a href="http://users.on.net/~tmsmsa/wireRbdFeedback.hipnc"&gt;here&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;iframe src="http://player.vimeo.com/video/31314814?title=0&amp;amp;byline=0&amp;amp;portrait=0&amp;amp;loop=1" width="400" height="249" frameborder="0" webkitAllowFullScreen allowFullScreen&gt;&lt;/iframe&gt;&lt;p&gt;&lt;a href="http://vimeo.com/31314814"&gt;Wire to RBD feedback forces&lt;/a&gt; from &lt;a href="http://vimeo.com/user2221800"&gt;Sam Hancock&lt;/a&gt; on &lt;a href="http://vimeo.com"&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6229419970286329265-6809118097493737163?l=ihoudini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ihoudini.blogspot.com/feeds/6809118097493737163/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ihoudini.blogspot.com/2011/10/wire-to-rbd-feedback-in-dops.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6229419970286329265/posts/default/6809118097493737163'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6229419970286329265/posts/default/6809118097493737163'/><link rel='alternate' type='text/html' href='http://ihoudini.blogspot.com/2011/10/wire-to-rbd-feedback-in-dops.html' title='Wire to RBD feedback in DOPs'/><author><name>Sam</name><uri>http://www.blogger.com/profile/10698234127018406883</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_FzvBVqxfH40/SiMhu9TkQhI/AAAAAAAAAEw/b3PP8V_NcQg/S220/51RBE2V357L._SL500_AA240_.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6229419970286329265.post-4503730551557267403</id><published>2011-10-29T04:15:00.000-07:00</published><updated>2011-10-29T07:14:14.272-07:00</updated><title type='text'>Snapping Wires</title><content type='html'>Here is a setup that does snapping wires...&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Wires are pre-cut and the cuts get constrained together, in DOPs a sop solver removes points from the constraint groups based on how much the edge length is stretched. The tricky part about this is that the groups have to correspond exactly so that the edges get constrained together properly...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In SOPs before the sim, each line gets cut in two with a carve SOP. One side of each cut is put into a group, and the other side in another group. I use these groups in the constraint in DOPs to constrain the cuts together. Also, the points in side 1 of the cuts has a 'partnerPoint' attribute which stores the point number of the point on the other side of the cut. This is so that the groups can be rebuilt later.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In DOPs there is a SOP solver to remove points from the groups. For one side of the cut, the edge length is compared to the rest edge length, if it is longer than a threshold the point is removed from the group. The second group is rebuilt using the first (now modified) group and the partnerPoint attribute.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The hipnc file is &lt;a href="http://users.on.net/~tmsmsa/tearingWire3.hipnc"&gt;here&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;iframe src="http://player.vimeo.com/video/31293004?title=0&amp;amp;byline=0&amp;amp;portrait=0&amp;amp;loop=1" width="400" height="225" frameborder="0" webkitAllowFullScreen allowFullScreen&gt;&lt;/iframe&gt;&lt;p&gt;&lt;a href="http://vimeo.com/31293004"&gt;Snapping wires&lt;/a&gt; from &lt;a href="http://vimeo.com/user2221800"&gt;Sam Hancock&lt;/a&gt; on &lt;a href="http://vimeo.com"&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6229419970286329265-4503730551557267403?l=ihoudini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ihoudini.blogspot.com/feeds/4503730551557267403/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ihoudini.blogspot.com/2011/10/snapping-wires.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6229419970286329265/posts/default/4503730551557267403'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6229419970286329265/posts/default/4503730551557267403'/><link rel='alternate' type='text/html' href='http://ihoudini.blogspot.com/2011/10/snapping-wires.html' title='Snapping Wires'/><author><name>Sam</name><uri>http://www.blogger.com/profile/10698234127018406883</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_FzvBVqxfH40/SiMhu9TkQhI/AAAAAAAAAEw/b3PP8V_NcQg/S220/51RBE2V357L._SL500_AA240_.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6229419970286329265.post-2890360696349646439</id><published>2011-07-16T02:22:00.000-07:00</published><updated>2011-10-29T07:16:36.877-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sops'/><category scheme='http://www.blogger.com/atom/ns#' term='sop solver'/><category scheme='http://www.blogger.com/atom/ns#' term='dops'/><title type='text'>Deforming RBDs again!</title><content type='html'>In this one I have changed to adding up all of the impacts rather than the mixing that was going on with the attribute transfer in the last one. It is just a vopsop which loops through the impact points and adds up the deformation.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;One problem I was having was when I deformed the object, the centre of mass was in the wrong spot. I couldn't figure out a good way to modify that in DOPs... so i ended up moving it in the sop solver, to get it centred again. Another problem was that the object wouldn't be in contact with the ground after it was deformed, so it would end up in mid air with no velocity.. so I added a move attribute in the sop solver, then in DOPs I used a modify data node to move the rbds. The problem with this is that for one step of the sim it would be hanging out in mid air, and then snap to the ground. I ended up just adding the move to P in SOPs after the simulation.... not great because the object isn't solved at that position. At least it doesn't snap into position... To make this less obvious I have done a few substeps on the dopnet.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Also added some displacements to add detail to the deformation. I had no idea how to do that for a while but I found a way which is pretty good. In the sop solver i have recorded the impact direction and impact amount, this gets accumulated. After the simulation I also added a compression attribute by comparing the rest edge length to the current edge length. In the shader I am getting P for the noise by doing ( rest + (impactDir * impactAmount)) so the noise compresses radially around the impact point, this is multed by the compression attribute. This worked better than I expected!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;anyway, here is the video:&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;iframe src="http://player.vimeo.com/video/26510298?title=0&amp;amp;byline=0&amp;amp;portrait=0&amp;amp;loop=1" width="400" height="225" frameborder="0"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;and the .hip file is &lt;a href="http://www.users.on.net/~tmsmsa/rbdDent_8.hipnc"&gt;here!&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6229419970286329265-2890360696349646439?l=ihoudini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ihoudini.blogspot.com/feeds/2890360696349646439/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ihoudini.blogspot.com/2011/07/deforming-rbds-2-again.html#comment-form' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6229419970286329265/posts/default/2890360696349646439'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6229419970286329265/posts/default/2890360696349646439'/><link rel='alternate' type='text/html' href='http://ihoudini.blogspot.com/2011/07/deforming-rbds-2-again.html' title='Deforming RBDs again!'/><author><name>Sam</name><uri>http://www.blogger.com/profile/10698234127018406883</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_FzvBVqxfH40/SiMhu9TkQhI/AAAAAAAAAEw/b3PP8V_NcQg/S220/51RBE2V357L._SL500_AA240_.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6229419970286329265.post-6402301213040847373</id><published>2011-07-09T07:30:00.000-07:00</published><updated>2011-07-09T08:10:02.969-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rbd'/><category scheme='http://www.blogger.com/atom/ns#' term='sop solver'/><category scheme='http://www.blogger.com/atom/ns#' term='dops'/><title type='text'>Deforming RBDs</title><content type='html'>Simple setup that uses a SOP solver and deforms the geo at points of impact. The impact data is already available in the SOP solver, the normal is the impact direction and there is a pscale attribute for the magnitude of the impact.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In this setup I just used attributeTransfer to get the impact data onto the mesh, then a vopsop to deform the mesh. There is a minimum impact so that resting objects don't get deformed. Also I divide the impact magnitude by the mass... the heavy box was denting itself from just resting there.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;iframe src="http://player.vimeo.com/video/26199798?title=0&amp;amp;byline=0&amp;amp;portrait=0" width="400" height="300" frameborder="0"&gt;&lt;/iframe&gt;&lt;p&gt;&lt;a href="http://vimeo.com/26199798"&gt;Houdini - Impact deformation for RBDs&lt;/a&gt; from &lt;a href="http://vimeo.com/user2221800"&gt;Sam Hancock&lt;/a&gt; on &lt;a href="http://vimeo.com/"&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;Might be better to have an additive effect for getting the impact data onto the mesh, rather than the averaging that goes on with the attribute transfer ... might try it later.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Also going to try getting some volume preservation going on!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;.hip is &lt;a href="http://www.users.on.net/~tmsmsa/rbdDent_4.hipnc"&gt;here&lt;/a&gt;! (H11)&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6229419970286329265-6402301213040847373?l=ihoudini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ihoudini.blogspot.com/feeds/6402301213040847373/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ihoudini.blogspot.com/2011/07/deforming-rbds.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6229419970286329265/posts/default/6402301213040847373'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6229419970286329265/posts/default/6402301213040847373'/><link rel='alternate' type='text/html' href='http://ihoudini.blogspot.com/2011/07/deforming-rbds.html' title='Deforming RBDs'/><author><name>Sam</name><uri>http://www.blogger.com/profile/10698234127018406883</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_FzvBVqxfH40/SiMhu9TkQhI/AAAAAAAAAEw/b3PP8V_NcQg/S220/51RBE2V357L._SL500_AA240_.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6229419970286329265.post-5657107995353013877</id><published>2011-06-11T05:28:00.000-07:00</published><updated>2011-06-11T06:13:53.223-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sop solver'/><category scheme='http://www.blogger.com/atom/ns#' term='dops'/><category scheme='http://www.blogger.com/atom/ns#' term='wedge rop'/><category scheme='http://www.blogger.com/atom/ns#' term='cloth'/><title type='text'>New paper sim</title><content type='html'>More paper stuff! Updated it, now using a SOP solver to modify the velocity. The last one was a field force which wasn't great.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Also this one projects the velocity vector onto the surface rather than just applying an opposing force like I was doing before. The velocity ends up perpendicular to the normal, with this: cross( nV, cross( nV, nN ) ). That is mixed with the original velocity to get more or less of the effect ...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In the linked .hip file there is a VIS_PROJECTION null that you can view to see what I mean...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;iframe src="http://player.vimeo.com/video/24957858?title=0&amp;amp;byline=0&amp;amp;portrait=0" width="400" height="300" frameborder="0"&gt;&lt;/iframe&gt;&lt;p&gt;&lt;a href="http://vimeo.com/24957858"&gt;Houdini - New cloth paper thingy!&lt;/a&gt; from &lt;a href="http://vimeo.com/user2221800"&gt;Sam Hancock&lt;/a&gt; on &lt;a href="http://vimeo.com/"&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;You can get the hip file from &lt;a href="http://www.users.on.net/~tmsmsa/clothTest_paper_v006.hipnc"&gt;here&lt;/a&gt; (H11)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6229419970286329265-5657107995353013877?l=ihoudini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ihoudini.blogspot.com/feeds/5657107995353013877/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ihoudini.blogspot.com/2011/06/new-paper-sim.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6229419970286329265/posts/default/5657107995353013877'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6229419970286329265/posts/default/5657107995353013877'/><link rel='alternate' type='text/html' href='http://ihoudini.blogspot.com/2011/06/new-paper-sim.html' title='New paper sim'/><author><name>Sam</name><uri>http://www.blogger.com/profile/10698234127018406883</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_FzvBVqxfH40/SiMhu9TkQhI/AAAAAAAAAEw/b3PP8V_NcQg/S220/51RBE2V357L._SL500_AA240_.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6229419970286329265.post-723413307529496000</id><published>2011-06-09T07:37:00.000-07:00</published><updated>2011-06-09T08:05:10.143-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dops'/><category scheme='http://www.blogger.com/atom/ns#' term='wedge rop'/><category scheme='http://www.blogger.com/atom/ns#' term='cloth'/><title type='text'>More old cloth wind resistance stuff.</title><content type='html'>Haven't posted in a long time, easing back into it with something I was playing with about a year ago ... it uses the same wind resistance stuff that I was using earlier.&lt;br /&gt;&lt;br /&gt;Going to update it in the next few days with a much better way of doing it with a SOP solver!&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;iframe src="http://player.vimeo.com/video/24875009?title=0&amp;amp;byline=0&amp;amp;portrait=0" width="400" height="300" frameborder="0"&gt;&lt;/iframe&gt;&lt;p&gt;&lt;a href="http://vimeo.com/24875009"&gt;Houdini - Cloth paper thingy&lt;/a&gt; from &lt;a href="http://vimeo.com/user2221800"&gt;Sam Hancock&lt;/a&gt; on &lt;a href="http://vimeo.com/"&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;div&gt;Each piece of cloth is simmed individually, a wedge ROP is used to write out a geo sequence for each piece and they are brought back in using a file SOP and a copy SOP. The pieces don't collide .. but it doesn't matter so much with these .....&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6229419970286329265-723413307529496000?l=ihoudini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ihoudini.blogspot.com/feeds/723413307529496000/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ihoudini.blogspot.com/2011/06/more-old-cloth-wind-resistance-stuff.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6229419970286329265/posts/default/723413307529496000'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6229419970286329265/posts/default/723413307529496000'/><link rel='alternate' type='text/html' href='http://ihoudini.blogspot.com/2011/06/more-old-cloth-wind-resistance-stuff.html' title='More old cloth wind resistance stuff.'/><author><name>Sam</name><uri>http://www.blogger.com/profile/10698234127018406883</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_FzvBVqxfH40/SiMhu9TkQhI/AAAAAAAAAEw/b3PP8V_NcQg/S220/51RBE2V357L._SL500_AA240_.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6229419970286329265.post-6319588350072848028</id><published>2010-02-06T17:58:00.000-08:00</published><updated>2011-06-03T08:06:01.291-07:00</updated><title type='text'>Wormie wire solver things.</title><content type='html'>Just another random thing.&lt;br /&gt;&lt;br /&gt;&lt;object width="400" height="300"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=9227567&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1"&gt;&lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=9227567&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;p&gt;&lt;a href="http://vimeo.com/9227567"&gt;Houdini - Wire solver worms&lt;/a&gt; from &lt;a href="http://vimeo.com/user2221800"&gt;Sam Hancock&lt;/a&gt; on &lt;a href="http://vimeo.com/"&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;This starts as some vertcal lines in SOPs that are animating upwards. The 'constraintoanimation' attribute is switched to 0 when the points go above the ground plane. This goes into the wire solver and thats about it ....&lt;br /&gt;&lt;br /&gt;hipnc is &lt;a href="http://www.users.on.net/~tmsmsa/noodlerExtroodler_v010.hipnc"&gt;here.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6229419970286329265-6319588350072848028?l=ihoudini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ihoudini.blogspot.com/feeds/6319588350072848028/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ihoudini.blogspot.com/2010/02/wormie-wire-solver-things.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6229419970286329265/posts/default/6319588350072848028'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6229419970286329265/posts/default/6319588350072848028'/><link rel='alternate' type='text/html' href='http://ihoudini.blogspot.com/2010/02/wormie-wire-solver-things.html' title='Wormie wire solver things.'/><author><name>Sam</name><uri>http://www.blogger.com/profile/10698234127018406883</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_FzvBVqxfH40/SiMhu9TkQhI/AAAAAAAAAEw/b3PP8V_NcQg/S220/51RBE2V357L._SL500_AA240_.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6229419970286329265.post-7516248979502744314</id><published>2010-02-05T02:59:00.000-08:00</published><updated>2011-06-03T08:05:48.926-07:00</updated><title type='text'>Dijkstra pathfinding with python.</title><content type='html'>&lt;span style="font-family:verdana;"&gt;I have a lot of half finished things floating around, here is one of them...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Been seeing the dijkstra algorithm around a bit lately, so I had a go at implementing it in Houdini.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm"&gt;&lt;span style="font-family:verdana;"&gt;http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Most of it is in python. ~2000 points and it cooks in about 1.2s so it isn't super slow...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Could probably be faster if I made it A* instead, but I have nothing to use it for so, meh!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_FzvBVqxfH40/S2v7Emz1D3I/AAAAAAAAAJ0/wML7_9WFqsw/s1600-h/pathfinding.jpg"&gt;&lt;img style="cursor: pointer; width: 320px; height: 245px;" src="http://1.bp.blogspot.com/_FzvBVqxfH40/S2v7Emz1D3I/AAAAAAAAAJ0/wML7_9WFqsw/s320/pathfinding.jpg" alt="" id="BLOGGER_PHOTO_ID_5434713431908618098" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;hipnc is &lt;/span&gt;&lt;a style="font-family: verdana;" href="http://www.users.on.net/~tmsmsa/pathfinding_v003.hipnc"&gt;here.&lt;/a&gt;&lt;br /&gt;you will need the otl &lt;a href="http://www.users.on.net/~tmsmsa/setDijkstraDistance.otl"&gt;here&lt;/a&gt; too&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6229419970286329265-7516248979502744314?l=ihoudini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ihoudini.blogspot.com/feeds/7516248979502744314/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ihoudini.blogspot.com/2010/02/dijkstra-pathfinding-with-python.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6229419970286329265/posts/default/7516248979502744314'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6229419970286329265/posts/default/7516248979502744314'/><link rel='alternate' type='text/html' href='http://ihoudini.blogspot.com/2010/02/dijkstra-pathfinding-with-python.html' title='Dijkstra pathfinding with python.'/><author><name>Sam</name><uri>http://www.blogger.com/profile/10698234127018406883</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_FzvBVqxfH40/SiMhu9TkQhI/AAAAAAAAAEw/b3PP8V_NcQg/S220/51RBE2V357L._SL500_AA240_.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_FzvBVqxfH40/S2v7Emz1D3I/AAAAAAAAAJ0/wML7_9WFqsw/s72-c/pathfinding.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6229419970286329265.post-3748160247569854503</id><published>2009-09-05T05:55:00.001-07:00</published><updated>2011-06-03T08:05:26.973-07:00</updated><title type='text'>Wire solver and wire deformer.</title><content type='html'>Just playing around with the wire solver and deforming wires onto wires...&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_FzvBVqxfH40/SqJgBCSqNsI/AAAAAAAAAI4/IbucMeqyJQE/s1600-h/wireSplode.0006.jpg"&gt;&lt;img style="cursor: pointer; width: 320px; height: 243px;" src="http://3.bp.blogspot.com/_FzvBVqxfH40/SqJgBCSqNsI/AAAAAAAAAI4/IbucMeqyJQE/s320/wireSplode.0006.jpg" alt="" id="BLOGGER_PHOTO_ID_5377966475945064130" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;rendered as tube primitives, 2 area lights and an env light, took about an hour to render 2K :/&lt;br /&gt;&lt;br /&gt;hipnc is &lt;a href="http://www.users.on.net/~tmsmsa/noodlerExtroodlerVortex_v001.hipnc"&gt;here&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6229419970286329265-3748160247569854503?l=ihoudini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ihoudini.blogspot.com/feeds/3748160247569854503/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ihoudini.blogspot.com/2009/09/wire-solver-and-wire-deformer.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6229419970286329265/posts/default/3748160247569854503'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6229419970286329265/posts/default/3748160247569854503'/><link rel='alternate' type='text/html' href='http://ihoudini.blogspot.com/2009/09/wire-solver-and-wire-deformer.html' title='Wire solver and wire deformer.'/><author><name>Sam</name><uri>http://www.blogger.com/profile/10698234127018406883</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_FzvBVqxfH40/SiMhu9TkQhI/AAAAAAAAAEw/b3PP8V_NcQg/S220/51RBE2V357L._SL500_AA240_.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_FzvBVqxfH40/SqJgBCSqNsI/AAAAAAAAAI4/IbucMeqyJQE/s72-c/wireSplode.0006.jpg' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6229419970286329265.post-4436792454642121566</id><published>2009-08-26T04:20:00.000-07:00</published><updated>2009-08-26T04:22:41.475-07:00</updated><title type='text'>Wear Shader #2</title><content type='html'>Just messing about with the shader ...&lt;br /&gt;&lt;br /&gt;Did a few things like darkening the paint where it is worn, darkening the reflection, adding displacements to the steel etc. ......&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_FzvBVqxfH40/SpUa8-JIvTI/AAAAAAAAAIY/IJoQstgaDlQ/s1600-h/paint_chip_2.jpg"&gt;&lt;img style="cursor: pointer; width: 320px; height: 180px;" src="http://3.bp.blogspot.com/_FzvBVqxfH40/SpUa8-JIvTI/AAAAAAAAAIY/IJoQstgaDlQ/s320/paint_chip_2.jpg" alt="" id="BLOGGER_PHOTO_ID_5374231365112347954" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6229419970286329265-4436792454642121566?l=ihoudini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ihoudini.blogspot.com/feeds/4436792454642121566/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ihoudini.blogspot.com/2009/08/wear-shader-2.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6229419970286329265/posts/default/4436792454642121566'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6229419970286329265/posts/default/4436792454642121566'/><link rel='alternate' type='text/html' href='http://ihoudini.blogspot.com/2009/08/wear-shader-2.html' title='Wear Shader #2'/><author><name>Sam</name><uri>http://www.blogger.com/profile/10698234127018406883</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_FzvBVqxfH40/SiMhu9TkQhI/AAAAAAAAAEw/b3PP8V_NcQg/S220/51RBE2V357L._SL500_AA240_.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_FzvBVqxfH40/SpUa8-JIvTI/AAAAAAAAAIY/IJoQstgaDlQ/s72-c/paint_chip_2.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6229419970286329265.post-7050157427625392708</id><published>2009-08-25T03:20:00.000-07:00</published><updated>2011-06-03T08:04:41.375-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PBR'/><category scheme='http://www.blogger.com/atom/ns#' term='curvature'/><category scheme='http://www.blogger.com/atom/ns#' term='sops'/><category scheme='http://www.blogger.com/atom/ns#' term='shader'/><category scheme='http://www.blogger.com/atom/ns#' term='occlusion'/><category scheme='http://www.blogger.com/atom/ns#' term='vopsop'/><title type='text'>Wear Shader</title><content type='html'>Just playing around with shaders - curvature and occlusion in SOPs to make a wear shader.&lt;br /&gt;&lt;br /&gt;In SOPs, made a little curvature vopsop. It is a vopsop to do curvature since the curvature SOP doesn't give a normalised result.&lt;br /&gt;&lt;br /&gt;Inside the vopsop, the neighbors of a point are looped through and the dot product of the direction to a neighbor and N is averaged for all neighbors.&lt;br /&gt;&lt;br /&gt;I shamelessly copied the idea from Dan:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_FzvBVqxfH40/SpO76VfmklI/AAAAAAAAAH4/ggcq2r72yqY/s1600-h/curvature.jpg"&gt;&lt;img style="cursor: pointer; width: 316px; height: 335px;" src="http://1.bp.blogspot.com/_FzvBVqxfH40/SpO76VfmklI/AAAAAAAAAH4/ggcq2r72yqY/s320/curvature.jpg" alt="" id="BLOGGER_PHOTO_ID_5373845391259636306" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And some occlusion in SOPs, done in SOPs so that it only needs to be done once for all frames&lt;br /&gt;&lt;br /&gt;This is mashed a bit to get the result I want:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_FzvBVqxfH40/SpO762V_OGI/AAAAAAAAAIA/T1xaG4lGXOI/s1600-h/occlusion.jpg"&gt;&lt;img style="cursor: pointer; width: 320px; height: 300px;" src="http://4.bp.blogspot.com/_FzvBVqxfH40/SpO762V_OGI/AAAAAAAAAIA/T1xaG4lGXOI/s320/occlusion.jpg" alt="" id="BLOGGER_PHOTO_ID_5373845400077678690" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Mult the two together:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_FzvBVqxfH40/SpO77JCZkcI/AAAAAAAAAII/GsFjpSy7Fiw/s1600-h/occ_and_cur.jpg"&gt;&lt;img style="cursor: pointer; width: 320px; height: 292px;" src="http://3.bp.blogspot.com/_FzvBVqxfH40/SpO77JCZkcI/AAAAAAAAAII/GsFjpSy7Fiw/s320/occ_and_cur.jpg" alt="" id="BLOGGER_PHOTO_ID_5373845405095793090" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This is to represent where the surface is likely to get worn or chipped.&lt;br /&gt;&lt;br /&gt;I started with the default reflective shader and added a displacement shader  that gets the wear attribute, mults it with noise, then that goes through a contrast function to give a sharp edge. That 'matte' is exported to the surface shader to control a few things in there like reflections, colour etc.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_FzvBVqxfH40/SpO9UeLl-TI/AAAAAAAAAIQ/b6EXtFBEfzY/s1600-h/paint_chip.jpg"&gt;&lt;img style="cursor: pointer; width: 320px; height: 180px;" src="http://4.bp.blogspot.com/_FzvBVqxfH40/SpO9UeLl-TI/AAAAAAAAAIQ/b6EXtFBEfzY/s320/paint_chip.jpg" alt="" id="BLOGGER_PHOTO_ID_5373846939779856690" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;hipnc file is &lt;a href="http://www.users.on.net/~tmsmsa/wear_shader.hipnc"&gt;here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;took about 16 minutes to render that 720P frame (just a HDRI and PBR).&lt;br /&gt;&lt;br /&gt;Here it is with the contrast centre animated in the shader:&lt;br /&gt;&lt;br /&gt;&lt;object width="320" height="266" class="BLOG_video_class" id="BLOG_video-60760b88136e60d8" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"&gt;&lt;param name="movie" value="http://www.youtube.com/get_player"&gt;&lt;param name="bgcolor" value="#FFFFFF"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;param name="flashvars" value="flvurl=http://v23.nonxt1.googlevideo.com/videoplayback?id%3D60760b88136e60d8%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1330380798%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D1B46D912FCCBE72C9C2751D84596BDB34CEF7F60.3249C64960640456DD5DB091594D3C62801BF0C5%26key%3Dck1&amp;amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D60760b88136e60d8%26offsetms%3D5000%26itag%3Dw160%26sigh%3DZJukYKnjfwbQjCm147pjSuVJfvk&amp;amp;autoplay=0&amp;amp;ps=blogger"&gt;&lt;embed src="http://www.youtube.com/get_player" type="application/x-shockwave-flash"width="320" height="266" bgcolor="#FFFFFF"flashvars="flvurl=http://v23.nonxt1.googlevideo.com/videoplayback?id%3D60760b88136e60d8%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1330380798%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D1B46D912FCCBE72C9C2751D84596BDB34CEF7F60.3249C64960640456DD5DB091594D3C62801BF0C5%26key%3Dck1&amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D60760b88136e60d8%26offsetms%3D5000%26itag%3Dw160%26sigh%3DZJukYKnjfwbQjCm147pjSuVJfvk&amp;autoplay=0&amp;ps=blogger"allowFullScreen="true" /&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6229419970286329265-7050157427625392708?l=ihoudini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='enclosure' type='video/mp4' href='http://www.blogger.com/video-play.mp4?contentId=60760b88136e60d8&amp;type=video%2Fmp4' length='0'/><link rel='replies' type='application/atom+xml' href='http://ihoudini.blogspot.com/feeds/7050157427625392708/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ihoudini.blogspot.com/2009/08/wear-shader.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6229419970286329265/posts/default/7050157427625392708'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6229419970286329265/posts/default/7050157427625392708'/><link rel='alternate' type='text/html' href='http://ihoudini.blogspot.com/2009/08/wear-shader.html' title='Wear Shader'/><author><name>Sam</name><uri>http://www.blogger.com/profile/10698234127018406883</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_FzvBVqxfH40/SiMhu9TkQhI/AAAAAAAAAEw/b3PP8V_NcQg/S220/51RBE2V357L._SL500_AA240_.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_FzvBVqxfH40/SpO76VfmklI/AAAAAAAAAH4/ggcq2r72yqY/s72-c/curvature.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6229419970286329265.post-8835124368596637886</id><published>2009-08-24T06:37:00.000-07:00</published><updated>2009-08-24T06:40:52.455-07:00</updated><title type='text'>Random #1</title><content type='html'>Was throwing together a wood shader and came across a happy accident :D&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_FzvBVqxfH40/SpKX6DP2KfI/AAAAAAAAAHw/NdXNmO5JO4A/s1600-h/noiseSinDisplace.jpg"&gt;&lt;img style="cursor: pointer; width: 320px; height: 180px;" src="http://3.bp.blogspot.com/_FzvBVqxfH40/SpKX6DP2KfI/AAAAAAAAAHw/NdXNmO5JO4A/s320/noiseSinDisplace.jpg" alt="" id="BLOGGER_PHOTO_ID_5373524328966400498" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6229419970286329265-8835124368596637886?l=ihoudini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ihoudini.blogspot.com/feeds/8835124368596637886/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ihoudini.blogspot.com/2009/08/random.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6229419970286329265/posts/default/8835124368596637886'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6229419970286329265/posts/default/8835124368596637886'/><link rel='alternate' type='text/html' href='http://ihoudini.blogspot.com/2009/08/random.html' title='Random #1'/><author><name>Sam</name><uri>http://www.blogger.com/profile/10698234127018406883</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_FzvBVqxfH40/SiMhu9TkQhI/AAAAAAAAAEw/b3PP8V_NcQg/S220/51RBE2V357L._SL500_AA240_.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_FzvBVqxfH40/SpKX6DP2KfI/AAAAAAAAAHw/NdXNmO5JO4A/s72-c/noiseSinDisplace.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6229419970286329265.post-4693002649001551932</id><published>2009-08-16T06:45:00.000-07:00</published><updated>2011-06-03T08:04:08.406-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pops'/><category scheme='http://www.blogger.com/atom/ns#' term='vopsop'/><category scheme='http://www.blogger.com/atom/ns#' term='shading'/><category scheme='http://www.blogger.com/atom/ns#' term='pointcloud'/><title type='text'>Particle motion blur again and some point cloud lighting</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_FzvBVqxfH40/SogT0h8fdzI/AAAAAAAAAHQ/D-x3TOewdxM/s1600-h/particle_mo_blur2.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_FzvBVqxfH40/SogT0h8fdzI/AAAAAAAAAHQ/D-x3TOewdxM/s320/particle_mo_blur2.jpg" alt="" id="BLOGGER_PHOTO_ID_5370564348825532210" border="0" /&gt;&lt;/a&gt;Fixed a few things with the particle motion blur stuff. Mostly it was just to get rid of an issue where you could see the particles when rendered zipping back to 0,0,0 when they died. I changed the popnet so that the particles always die when the camera shutter is closed...  I think this was because the surface shader is only evaluated once, so when a particle died (alpha set to 0) the surface shader wasn't used again so the alpha wasn't updated from the sim... The only problem with the fix is that you can't have any particles that live for less than the shutter time...&lt;br /&gt;&lt;br /&gt;This is useful for sparks (you can see some particles colliding in the image above), I also made a little point cloud shader that is also useful for sparks :D&lt;br /&gt;&lt;br /&gt;&lt;object width="400" height="300"&gt;&lt;param name="allowfullscreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=9226872&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" /&gt;&lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=9226872&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;p&gt;&lt;a href="http://vimeo.com/9226872"&gt;Houdini - particle deformation blur and point cloud lighting&lt;/a&gt; from &lt;a href="http://vimeo.com/user2221800"&gt;Sam Hancock&lt;/a&gt; on &lt;a href="http://vimeo.com"&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;The shader on the spheres and ground plane just loop through the particles and does diffuse, attenuation and shadows.&lt;br /&gt;&lt;br /&gt;A single frame took about 6.5 minutes to render on my  laptop ( Core 2 Duo 2.5GHz ) compared to about 1.5 hours for the equivalent PBR render.&lt;br /&gt;&lt;br /&gt;hipnc is &lt;a href="http://www.users.on.net/~tmsmsa/multiSegParticles_v003.hipnc"&gt;here.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6229419970286329265-4693002649001551932?l=ihoudini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ihoudini.blogspot.com/feeds/4693002649001551932/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ihoudini.blogspot.com/2009/08/particle-motion-blur-again-and-some.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6229419970286329265/posts/default/4693002649001551932'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6229419970286329265/posts/default/4693002649001551932'/><link rel='alternate' type='text/html' href='http://ihoudini.blogspot.com/2009/08/particle-motion-blur-again-and-some.html' title='Particle motion blur again and some point cloud lighting'/><author><name>Sam</name><uri>http://www.blogger.com/profile/10698234127018406883</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_FzvBVqxfH40/SiMhu9TkQhI/AAAAAAAAAEw/b3PP8V_NcQg/S220/51RBE2V357L._SL500_AA240_.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_FzvBVqxfH40/SogT0h8fdzI/AAAAAAAAAHQ/D-x3TOewdxM/s72-c/particle_mo_blur2.jpg' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6229419970286329265.post-5742476977258036614</id><published>2009-08-04T09:03:00.000-07:00</published><updated>2011-06-03T08:03:52.166-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pops vopsop'/><title type='text'>Multi segement motion blur with particles</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_FzvBVqxfH40/SnhcNPxlcRI/AAAAAAAAAGg/bxdsNYZpojA/s1600-h/particle_mo_blur.jpg"&gt;&lt;img style="cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_FzvBVqxfH40/SnhcNPxlcRI/AAAAAAAAAGg/bxdsNYZpojA/s320/particle_mo_blur.jpg" alt="" id="BLOGGER_PHOTO_ID_5366140338654507282" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Was trying to find a clean solution to rendering particles with multi segment motion blur, found a way that is quite quick...&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_FzvBVqxfH40/SnhhwuoVvcI/AAAAAAAAAGo/qJyKqCxIR04/s1600-h/particle_mo_blur_SOPs.jpg"&gt;&lt;img style="cursor: pointer; width: 252px; height: 320px;" src="http://2.bp.blogspot.com/_FzvBVqxfH40/SnhhwuoVvcI/AAAAAAAAAGo/qJyKqCxIR04/s320/particle_mo_blur_SOPs.jpg" alt="" id="BLOGGER_PHOTO_ID_5366146445790789058" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;A bunch of points are created at 0,0,0. The number of points is equal to the largest ID at the end of the particle sim. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;A VOP SOP loops through the particle sim and tries to find a particle with the same ID as the current point number. The position is copied onto the point, and a matchedPt attribute is created that stores the point number of the particle in the sim. This is so that the point() expression can be used later to copy attributes from the sim.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;The point count is constant so deformation blur will work with this setup. The alpha is set to hide the points when the particle dies and before it is born, with 1 frame buffer at either end of the particles life so that you don't see it streaking back to 0,0,0. That could be set to a 1 frame / oversamples buffer, I just haven't tried that yet...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Oversampling of the popnet is 30 and geo time samples is 5 for the render. I wish popnets would interpolate between oversamples .... cache node might do it but I don't think so...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;hipnc is &lt;/span&gt;&lt;a style="font-family: verdana;" href="http://www.users.on.net/~tmsmsa/multiSegParticles.hipnc"&gt;here&lt;/a&gt;&lt;span style="font-family:verdana;"&gt; - created with build 10.0.346&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6229419970286329265-5742476977258036614?l=ihoudini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ihoudini.blogspot.com/feeds/5742476977258036614/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ihoudini.blogspot.com/2009/08/multi-segement-motion-blur-with.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6229419970286329265/posts/default/5742476977258036614'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6229419970286329265/posts/default/5742476977258036614'/><link rel='alternate' type='text/html' href='http://ihoudini.blogspot.com/2009/08/multi-segement-motion-blur-with.html' title='Multi segement motion blur with particles'/><author><name>Sam</name><uri>http://www.blogger.com/profile/10698234127018406883</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_FzvBVqxfH40/SiMhu9TkQhI/AAAAAAAAAEw/b3PP8V_NcQg/S220/51RBE2V357L._SL500_AA240_.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_FzvBVqxfH40/SnhcNPxlcRI/AAAAAAAAAGg/bxdsNYZpojA/s72-c/particle_mo_blur.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6229419970286329265.post-6371595613403858303</id><published>2009-06-16T07:05:00.000-07:00</published><updated>2011-06-03T08:03:32.963-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sops'/><category scheme='http://www.blogger.com/atom/ns#' term='plants'/><category scheme='http://www.blogger.com/atom/ns#' term='lsystem'/><title type='text'>Growth and L-Systems</title><content type='html'>&lt;span style="font-family:verdana;"&gt;Have been reading about l-systems, mostly papers from &lt;/span&gt;&lt;a style="font-family: verdana;" href="http://algorithmicbotany.org/papers/"&gt;here&lt;/a&gt;&lt;span style="font-family:verdana;"&gt;. Trying to get segment growth working as described in the growth functions section (1.9) of &lt;/span&gt;&lt;a style="font-family: verdana;" href="http://algorithmicbotany.org/papers/abop/abop.pdf"&gt;The Algorithmic Beauty of Plants&lt;/a&gt;&lt;span style="font-family:verdana;"&gt;. I don't understand a lot of it but I think I got the basic idea :D.&lt;/span&gt; &lt;span style="font-family:verdana;"&gt;It was really confusing after a certain point when reading about l-systems, they started making a lot more sense when I actually started trying to implement stuff!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;object width="320" height="266" class="BLOG_video_class" id="BLOG_video-ee1daa39273ac7f2" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"&gt;&lt;param name="movie" value="http://www.youtube.com/get_player"&gt;&lt;param name="bgcolor" value="#FFFFFF"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;param name="flashvars" value="flvurl=http://v3.nonxt6.googlevideo.com/videoplayback?id%3Dee1daa39273ac7f2%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1330380798%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D3961AAD9B7787FAA20569B52F51CB8F2B95C77AD.6185E9F1A737D790999C910B091A1ABD1AC05711%26key%3Dck1&amp;amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3Dee1daa39273ac7f2%26offsetms%3D5000%26itag%3Dw160%26sigh%3DiFuvIm1cesmQvi3M7PegOw2ZKHw&amp;amp;autoplay=0&amp;amp;ps=blogger"&gt;&lt;embed src="http://www.youtube.com/get_player" type="application/x-shockwave-flash"width="320" height="266" bgcolor="#FFFFFF"flashvars="flvurl=http://v3.nonxt6.googlevideo.com/videoplayback?id%3Dee1daa39273ac7f2%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1330380798%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D3961AAD9B7787FAA20569B52F51CB8F2B95C77AD.6185E9F1A737D790999C910B091A1ABD1AC05711%26key%3Dck1&amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3Dee1daa39273ac7f2%26offsetms%3D5000%26itag%3Dw160%26sigh%3DiFuvIm1cesmQvi3M7PegOw2ZKHw&amp;autoplay=0&amp;ps=blogger"allowFullScreen="true" /&gt;&lt;/object&gt;&lt;span style="font-family:verdana;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_FzvBVqxfH40/SjeoT8VL_eI/AAAAAAAAAGA/pEV5OChBByg/s1600-h/lsys_rules.jpg"&gt;&lt;img style="cursor: pointer; width: 320px; height: 106px;" src="http://4.bp.blogspot.com/_FzvBVqxfH40/SjeoT8VL_eI/AAAAAAAAAGA/pEV5OChBByg/s320/lsys_rules.jpg" alt="" id="BLOGGER_PHOTO_ID_5347928143091727842" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;The important part is that F is getting rewritten. The g parameter is incremented each time to act as an age attribute, so g is the linear growth, and then length is set by using g in a funky smooth step type function thingy ((-2*g^3)+(3*g^2)) to get a kinda sigmoidal growth.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;The b variable is used to control the speed of the growth.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;The rest is just for controlling the branching so that the l-system came to some kind of end state. Like the m parameter in A(m) which decays over generations so that it stops getting replaced eventually.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;The generation parameter is just set to $F so that every frame is another full generation.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;This is the same l-system without rewriting F:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;object width="320" height="266" class="BLOG_video_class" id="BLOG_video-33b6f7baa7cf88fb" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"&gt;&lt;param name="movie" value="http://www.youtube.com/get_player"&gt;&lt;param name="bgcolor" value="#FFFFFF"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;param name="flashvars" value="flvurl=http://v15.nonxt5.googlevideo.com/videoplayback?id%3D33b6f7baa7cf88fb%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1330380798%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D404B1A972FE7A53AE24001449BD73066DF0A238E.2639C2CE4602705A03A9356C321550F44392A5E5%26key%3Dck1&amp;amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D33b6f7baa7cf88fb%26offsetms%3D5000%26itag%3Dw160%26sigh%3D69l-RV34NUnwez-6MCq_wHaGrbY&amp;amp;autoplay=0&amp;amp;ps=blogger"&gt;&lt;embed src="http://www.youtube.com/get_player" type="application/x-shockwave-flash"width="320" height="266" bgcolor="#FFFFFF"flashvars="flvurl=http://v15.nonxt5.googlevideo.com/videoplayback?id%3D33b6f7baa7cf88fb%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1330380798%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D404B1A972FE7A53AE24001449BD73066DF0A238E.2639C2CE4602705A03A9356C321550F44392A5E5%26key%3Dck1&amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D33b6f7baa7cf88fb%26offsetms%3D5000%26itag%3Dw160%26sigh%3D69l-RV34NUnwez-6MCq_wHaGrbY&amp;autoplay=0&amp;ps=blogger"allowFullScreen="true" /&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;hipnc is &lt;/span&gt;&lt;a style="font-family: verdana;" href="http://www.users.on.net/~tmsmsa/lsys_non-linear_growth.hipnc"&gt;here.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6229419970286329265-6371595613403858303?l=ihoudini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='enclosure' type='video/mp4' href='http://www.blogger.com/video-play.mp4?contentId=33b6f7baa7cf88fb&amp;type=video%2Fmp4' length='0'/><link rel='enclosure' type='video/mp4' href='http://www.blogger.com/video-play.mp4?contentId=ee1daa39273ac7f2&amp;type=video%2Fmp4' length='0'/><link rel='replies' type='application/atom+xml' href='http://ihoudini.blogspot.com/feeds/6371595613403858303/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ihoudini.blogspot.com/2009/06/growth-and-l-systems.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6229419970286329265/posts/default/6371595613403858303'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6229419970286329265/posts/default/6371595613403858303'/><link rel='alternate' type='text/html' href='http://ihoudini.blogspot.com/2009/06/growth-and-l-systems.html' title='Growth and L-Systems'/><author><name>Sam</name><uri>http://www.blogger.com/profile/10698234127018406883</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_FzvBVqxfH40/SiMhu9TkQhI/AAAAAAAAAEw/b3PP8V_NcQg/S220/51RBE2V357L._SL500_AA240_.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_FzvBVqxfH40/SjeoT8VL_eI/AAAAAAAAAGA/pEV5OChBByg/s72-c/lsys_rules.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6229419970286329265.post-2307345613546684166</id><published>2009-06-01T06:00:00.000-07:00</published><updated>2011-06-03T08:03:16.252-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dops'/><category scheme='http://www.blogger.com/atom/ns#' term='cloth'/><title type='text'>Cloth self shadowing</title><content type='html'>&lt;span style="font-family:verdana;"&gt;This is why Houdini is awesome, one node ignored and changed the bias on the ray SOP, and self shadowing just works :D&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;object width="320" height="266" class="BLOG_video_class" id="BLOG_video-78437c42d0a965b5" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"&gt;&lt;param name="movie" value="http://www.youtube.com/get_player"&gt;&lt;param name="bgcolor" value="#FFFFFF"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;param name="flashvars" value="flvurl=http://v4.nonxt6.googlevideo.com/videoplayback?id%3D78437c42d0a965b5%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1330380798%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D228C2B7CBEE7C40F1D01E694DA165935471E072E.A4D04983BAF66B5DDDCF8CAE8725E7B677F89B4%26key%3Dck1&amp;amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D78437c42d0a965b5%26offsetms%3D5000%26itag%3Dw160%26sigh%3DGvH9jwTJxto1p-K9cP1TziEDWjM&amp;amp;autoplay=0&amp;amp;ps=blogger"&gt;&lt;embed src="http://www.youtube.com/get_player" type="application/x-shockwave-flash"width="320" height="266" bgcolor="#FFFFFF"flashvars="flvurl=http://v4.nonxt6.googlevideo.com/videoplayback?id%3D78437c42d0a965b5%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1330380798%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D228C2B7CBEE7C40F1D01E694DA165935471E072E.A4D04983BAF66B5DDDCF8CAE8725E7B677F89B4%26key%3Dck1&amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D78437c42d0a965b5%26offsetms%3D5000%26itag%3Dw160%26sigh%3DGvH9jwTJxto1p-K9cP1TziEDWjM&amp;autoplay=0&amp;ps=blogger"allowFullScreen="true" /&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;It probably needs a wind location specified so I can timeshift the occluding objects depending on the distance from the wind 'emitter'. meh.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;hipnc is &lt;/span&gt;&lt;a style="font-family: verdana;" href="http://www.users.on.net/~tmsmsa/clothTest4.hipnc"&gt;here&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6229419970286329265-2307345613546684166?l=ihoudini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='enclosure' type='video/mp4' href='http://www.blogger.com/video-play.mp4?contentId=78437c42d0a965b5&amp;type=video%2Fmp4' length='0'/><link rel='replies' type='application/atom+xml' href='http://ihoudini.blogspot.com/feeds/2307345613546684166/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ihoudini.blogspot.com/2009/06/cloth-self-shadowing.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6229419970286329265/posts/default/2307345613546684166'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6229419970286329265/posts/default/2307345613546684166'/><link rel='alternate' type='text/html' href='http://ihoudini.blogspot.com/2009/06/cloth-self-shadowing.html' title='Cloth self shadowing'/><author><name>Sam</name><uri>http://www.blogger.com/profile/10698234127018406883</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_FzvBVqxfH40/SiMhu9TkQhI/AAAAAAAAAEw/b3PP8V_NcQg/S220/51RBE2V357L._SL500_AA240_.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6229419970286329265.post-2091411960591824409</id><published>2009-05-31T07:17:00.000-07:00</published><updated>2011-06-03T08:02:56.505-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dops'/><category scheme='http://www.blogger.com/atom/ns#' term='cloth'/><title type='text'>Cloth wind shadowing</title><content type='html'>&lt;span style="font-family:verdana;"&gt;More cloth!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Got some wind shadowing working using the same &lt;/span&gt;&lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_0"  style="font-family:verdana;"&gt;technique&lt;/span&gt;&lt;span style="font-family:verdana;"&gt; as the wind resistance thing, just with a ray SOP to block the wind.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Currently the wind gets blocked by any other objects in the dopnet. Might add self shadowing next!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;object width="320" height="266" class="BLOG_video_class" id="BLOG_video-37099c85e599e614" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"&gt;&lt;param name="movie" value="http://www.youtube.com/get_player"&gt;&lt;param name="bgcolor" value="#FFFFFF"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;param name="flashvars" value="flvurl=http://v6.nonxt1.googlevideo.com/videoplayback?id%3D37099c85e599e614%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1330380798%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D83883990F2C053CC361F77A23B11C630250B95EC.2FD7F137938B967A69CDEC3D1D05037730C8C165%26key%3Dck1&amp;amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D37099c85e599e614%26offsetms%3D5000%26itag%3Dw160%26sigh%3D8FCOoji4IfItpUSzfiePHyZ4Zqk&amp;amp;autoplay=0&amp;amp;ps=blogger"&gt;&lt;embed src="http://www.youtube.com/get_player" type="application/x-shockwave-flash"width="320" height="266" bgcolor="#FFFFFF"flashvars="flvurl=http://v6.nonxt1.googlevideo.com/videoplayback?id%3D37099c85e599e614%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1330380798%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D83883990F2C053CC361F77A23B11C630250B95EC.2FD7F137938B967A69CDEC3D1D05037730C8C165%26key%3Dck1&amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D37099c85e599e614%26offsetms%3D5000%26itag%3Dw160%26sigh%3D8FCOoji4IfItpUSzfiePHyZ4Zqk&amp;autoplay=0&amp;ps=blogger"allowFullScreen="true" /&gt;&lt;/object&gt;&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;This is with wind resistance from earlier, just adds some damping.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;object width="320" height="266" class="BLOG_video_class" id="BLOG_video-fa209d82563269cd" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"&gt;&lt;param name="movie" value="http://www.youtube.com/get_player"&gt;&lt;param name="bgcolor" value="#FFFFFF"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;param name="flashvars" value="flvurl=http://v13.nonxt7.googlevideo.com/videoplayback?id%3Dfa209d82563269cd%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1330380798%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D1D92C1BF8125EDB59816451A833EE02996290F3E.323F37C48473DA5EB21B9DFFE063F7AD77516FE4%26key%3Dck1&amp;amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3Dfa209d82563269cd%26offsetms%3D5000%26itag%3Dw160%26sigh%3DxX3K0fbXvNxhlLjHuzJWbeuY3yE&amp;amp;autoplay=0&amp;amp;ps=blogger"&gt;&lt;embed src="http://www.youtube.com/get_player" type="application/x-shockwave-flash"width="320" height="266" bgcolor="#FFFFFF"flashvars="flvurl=http://v13.nonxt7.googlevideo.com/videoplayback?id%3Dfa209d82563269cd%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1330380798%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D1D92C1BF8125EDB59816451A833EE02996290F3E.323F37C48473DA5EB21B9DFFE063F7AD77516FE4%26key%3Dck1&amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3Dfa209d82563269cd%26offsetms%3D5000%26itag%3Dw160%26sigh%3DxX3K0fbXvNxhlLjHuzJWbeuY3yE&amp;autoplay=0&amp;ps=blogger"allowFullScreen="true" /&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;hipnc is &lt;/span&gt;&lt;a style="font-family: verdana;" href="http://www.users.on.net/~tmsmsa/clothTest3.hipnc"&gt;here.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6229419970286329265-2091411960591824409?l=ihoudini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='enclosure' type='video/mp4' href='http://www.blogger.com/video-play.mp4?contentId=37099c85e599e614&amp;type=video%2Fmp4' length='0'/><link rel='enclosure' type='video/mp4' href='http://www.blogger.com/video-play.mp4?contentId=fa209d82563269cd&amp;type=video%2Fmp4' length='0'/><link rel='replies' type='application/atom+xml' href='http://ihoudini.blogspot.com/feeds/2091411960591824409/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ihoudini.blogspot.com/2009/05/cloth-wind-shadowing.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6229419970286329265/posts/default/2091411960591824409'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6229419970286329265/posts/default/2091411960591824409'/><link rel='alternate' type='text/html' href='http://ihoudini.blogspot.com/2009/05/cloth-wind-shadowing.html' title='Cloth wind shadowing'/><author><name>Sam</name><uri>http://www.blogger.com/profile/10698234127018406883</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_FzvBVqxfH40/SiMhu9TkQhI/AAAAAAAAAEw/b3PP8V_NcQg/S220/51RBE2V357L._SL500_AA240_.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6229419970286329265.post-5399505591406580039</id><published>2009-05-29T20:36:00.000-07:00</published><updated>2011-06-03T08:02:39.164-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dops'/><category scheme='http://www.blogger.com/atom/ns#' term='cloth'/><title type='text'>Cloth and wind resistance</title><content type='html'>&lt;span style="font-family:verdana;"&gt;Normally a cloth like this:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_FzvBVqxfH40/SiCqnYsvDGI/AAAAAAAAAD8/OMKFw3_9ysI/s1600-h/cloth+object.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 282px;" src="http://3.bp.blogspot.com/_FzvBVqxfH40/SiCqnYsvDGI/AAAAAAAAAD8/OMKFw3_9ysI/s320/cloth+object.JPG" alt="" id="BLOGGER_PHOTO_ID_5341456751683112034" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;would just fall and retain this exact shape... I put together a little force using the field force DOP and a little sopnet to get a basic simulation of wind resistance as it falls.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;The force is applied along the normal, opposing the velocity. It is also scaled by velocity.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Here is an example:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_FzvBVqxfH40/SiCriHL82fI/AAAAAAAAAEE/yu4A2aDNccM/s1600-h/resistance_force.JPG"&gt;&lt;img style="cursor: pointer; width: 316px; height: 320px;" src="http://3.bp.blogspot.com/_FzvBVqxfH40/SiCriHL82fI/AAAAAAAAAEE/yu4A2aDNccM/s320/resistance_force.JPG" alt="" id="BLOGGER_PHOTO_ID_5341457760594483698" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Blue is the point normal, green is the velocity and red is the force to be applied.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;This is far from correct but it works alright in practice.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;This cloth is 2m x 1m and low density (less than a kg total I think)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;object width="320" height="266" class="BLOG_video_class" id="BLOG_video-2e8ee3e05b4100b" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"&gt;&lt;param name="movie" value="http://www.youtube.com/get_player"&gt;&lt;param name="bgcolor" value="#FFFFFF"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;param name="flashvars" value="flvurl=http://v21.nonxt3.googlevideo.com/videoplayback?id%3D02e8ee3e05b4100b%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1330380798%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D3211393D20B70B31BB14E459F50ECE5C8B0D1CD0.62D20B6A41B1180854F79B2398410B5B8D4BDF11%26key%3Dck1&amp;amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D2e8ee3e05b4100b%26offsetms%3D5000%26itag%3Dw160%26sigh%3DGLqEwGrz_IKeC97Q5LbMFfAWNBU&amp;amp;autoplay=0&amp;amp;ps=blogger"&gt;&lt;embed src="http://www.youtube.com/get_player" type="application/x-shockwave-flash"width="320" height="266" bgcolor="#FFFFFF"flashvars="flvurl=http://v21.nonxt3.googlevideo.com/videoplayback?id%3D02e8ee3e05b4100b%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1330380798%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D3211393D20B70B31BB14E459F50ECE5C8B0D1CD0.62D20B6A41B1180854F79B2398410B5B8D4BDF11%26key%3Dck1&amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D2e8ee3e05b4100b%26offsetms%3D5000%26itag%3Dw160%26sigh%3DGLqEwGrz_IKeC97Q5LbMFfAWNBU&amp;autoplay=0&amp;ps=blogger"allowFullScreen="true" /&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;hipnc file is &lt;/span&gt;&lt;a style="font-family: verdana;" href="http://www.users.on.net/~tmsmsa/clothTest2.hipnc"&gt;here!&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6229419970286329265-5399505591406580039?l=ihoudini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='enclosure' type='video/mp4' href='http://www.blogger.com/video-play.mp4?contentId=2e8ee3e05b4100b&amp;type=video%2Fmp4' length='0'/><link rel='replies' type='application/atom+xml' href='http://ihoudini.blogspot.com/feeds/5399505591406580039/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ihoudini.blogspot.com/2009/05/cloth-and-wind-resistance.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6229419970286329265/posts/default/5399505591406580039'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6229419970286329265/posts/default/5399505591406580039'/><link rel='alternate' type='text/html' href='http://ihoudini.blogspot.com/2009/05/cloth-and-wind-resistance.html' title='Cloth and wind resistance'/><author><name>Sam</name><uri>http://www.blogger.com/profile/10698234127018406883</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_FzvBVqxfH40/SiMhu9TkQhI/AAAAAAAAAEw/b3PP8V_NcQg/S220/51RBE2V357L._SL500_AA240_.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_FzvBVqxfH40/SiCqnYsvDGI/AAAAAAAAAD8/OMKFw3_9ysI/s72-c/cloth+object.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6229419970286329265.post-3773656894026208786</id><published>2009-05-28T09:07:00.000-07:00</published><updated>2011-06-03T08:02:23.826-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PBR'/><category scheme='http://www.blogger.com/atom/ns#' term='linear'/><category scheme='http://www.blogger.com/atom/ns#' term='HDRI'/><title type='text'>PBR fun</title><content type='html'>Just playing around with PBR, also was reading about linear colour space so I was also experimenting with doing a sRGB &gt; linear coversion to the textures -- before .rat creation as the mipping is wrong in sRGB. A 2.2 gamma is applied when viewing the render in mplay and also applied when saving a .jpg. I understand it all a little bit better now, that workflow seems to work alright.&lt;br /&gt;&lt;br /&gt;Just used the Galileo's Tomb HDRI from &lt;a href="http://www.debevec.org/"&gt;http://www.debevec.org/&lt;/a&gt; with no other lights.&lt;br /&gt;&lt;br /&gt;hipnc file is &lt;a href="http://www.users.on.net/~tmsmsa/balls.hipnc"&gt;here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_FzvBVqxfH40/Sh64OJbhMtI/AAAAAAAAAD0/yAFRWUvhrbA/s1600-h/balls.jpg"&gt;&lt;img style="cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_FzvBVqxfH40/Sh64OJbhMtI/AAAAAAAAAD0/yAFRWUvhrbA/s320/balls.jpg" alt="" id="BLOGGER_PHOTO_ID_5340908761297007314" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6229419970286329265-3773656894026208786?l=ihoudini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ihoudini.blogspot.com/feeds/3773656894026208786/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ihoudini.blogspot.com/2009/05/pbr-fun.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6229419970286329265/posts/default/3773656894026208786'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6229419970286329265/posts/default/3773656894026208786'/><link rel='alternate' type='text/html' href='http://ihoudini.blogspot.com/2009/05/pbr-fun.html' title='PBR fun'/><author><name>Sam</name><uri>http://www.blogger.com/profile/10698234127018406883</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_FzvBVqxfH40/SiMhu9TkQhI/AAAAAAAAAEw/b3PP8V_NcQg/S220/51RBE2V357L._SL500_AA240_.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_FzvBVqxfH40/Sh64OJbhMtI/AAAAAAAAAD0/yAFRWUvhrbA/s72-c/balls.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6229419970286329265.post-7620719009444372772</id><published>2009-05-26T03:00:00.000-07:00</published><updated>2011-06-03T08:01:50.181-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dops'/><category scheme='http://www.blogger.com/atom/ns#' term='point cloud'/><title type='text'>Growing Objects</title><content type='html'>&lt;span style="font-family:verdana;"&gt;I saw &lt;a href="http://forums.odforce.net/index.php?showtopic=9111&amp;amp;st=0&amp;amp;p=60107&amp;amp;#entry60107"&gt;this post&lt;/a&gt; over at odforce and have been playing with growing objects in a dynamic way ...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;object width="320" height="266" class="BLOG_video_class" id="BLOG_video-9133ef2cd9f45490" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"&gt;&lt;param name="movie" value="http://www.youtube.com/get_player"&gt;&lt;param name="bgcolor" value="#FFFFFF"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;param name="flashvars" value="flvurl=http://v10.nonxt3.googlevideo.com/videoplayback?id%3D9133ef2cd9f45490%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1330380798%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D1030C0749310D06E98FE82DB8D861DB1E1E4EBBD.50F1110A5A6E3F5DF85830A35795A28B2415FE88%26key%3Dck1&amp;amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D9133ef2cd9f45490%26offsetms%3D5000%26itag%3Dw160%26sigh%3D5gqWorEUftm7dgTb6KVYMuoeQ2I&amp;amp;autoplay=0&amp;amp;ps=blogger"&gt;&lt;embed src="http://www.youtube.com/get_player" type="application/x-shockwave-flash"width="320" height="266" bgcolor="#FFFFFF"flashvars="flvurl=http://v10.nonxt3.googlevideo.com/videoplayback?id%3D9133ef2cd9f45490%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1330380798%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D1030C0749310D06E98FE82DB8D861DB1E1E4EBBD.50F1110A5A6E3F5DF85830A35795A28B2415FE88%26key%3Dck1&amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D9133ef2cd9f45490%26offsetms%3D5000%26itag%3Dw160%26sigh%3D5gqWorEUftm7dgTb6KVYMuoeQ2I&amp;autoplay=0&amp;ps=blogger"allowFullScreen="true" /&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;It is basically just points scattered in the volume of an object, then a SOP solver is used to increase a points pscale if it is colliding with another point. Metaballs are copied onto the points, converted to polys, then cookied with the original geo (not in the video above though...)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;This is the source geo and with the scattered points:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_FzvBVqxfH40/Shv1Pkl8w1I/AAAAAAAAACg/nAIozoFdcDM/s1600-h/starting_object.JPG" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor: pointer; width: 320px; height: 299px;" src="http://4.bp.blogspot.com/_FzvBVqxfH40/Shv1Pkl8w1I/AAAAAAAAACg/nAIozoFdcDM/s320/starting_object.JPG" alt="" id="BLOGGER_PHOTO_ID_5340131431047545682" border="0" /&gt;&lt;/a&gt;&lt;a href="http://2.bp.blogspot.com/_FzvBVqxfH40/Shv2cniqAhI/AAAAAAAAACw/-CubecsjRz4/s1600-h/points.JPG" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor: pointer; width: 320px; height: 295px;" src="http://2.bp.blogspot.com/_FzvBVqxfH40/Shv2cniqAhI/AAAAAAAAACw/-CubecsjRz4/s320/points.JPG" alt="" id="BLOGGER_PHOTO_ID_5340132754688967186" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Some attributes are added for the sim:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_FzvBVqxfH40/Shv9uVjcnJI/AAAAAAAAADA/YO4Cfn4ryEA/s1600-h/add_attributes.JPG" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor: pointer; width: 224px; height: 238px;" src="http://3.bp.blogspot.com/_FzvBVqxfH40/Shv9uVjcnJI/AAAAAAAAADA/YO4Cfn4ryEA/s320/add_attributes.JPG" alt="" id="BLOGGER_PHOTO_ID_5340140755679485074" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The pscale attribute is set to 0 except for one which is set to &lt;span style="font-style: italic;"&gt;maxSize &lt;/span&gt;to start the sim going. Roughness starts at 1 and decays when a point has stopped growing, this later is fed into the shader to increase the cone angle on the reflections and refractions...&lt;br /&gt;&lt;br /&gt;These points get loaded into a DOP network and then into this SOP solver:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_FzvBVqxfH40/Shv_JeulUqI/AAAAAAAAADQ/n-neKS-Xko0/s1600-h/sopsolver.JPG" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor: pointer; width: 320px; height: 183px;" src="http://4.bp.blogspot.com/_FzvBVqxfH40/Shv_JeulUqI/AAAAAAAAADQ/n-neKS-Xko0/s320/sopsolver.JPG" alt="" id="BLOGGER_PHOTO_ID_5340142321510208162" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;The pointCloudSop is a little VEX script that tests for collisions between points:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;#pragma hint filename oppath&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;#pragma hint pscale hidden&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;#pragma hint maxSize hidden&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;sop&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;pointCloudSop(string filename="/obj/geo1/PC";&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;            float pscale = 1;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;            float radius = 1;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;            float maxSize = 1;)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    if ( pscale &amp;lt;&amp;gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        string file = concat("op:", filename);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        float isColliding = 0;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        int numpoints = npoints(0)+10;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        int pointcloud = pcopen(file, "P", P, radius, numpoints);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        while(pciterate(pointcloud))&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;            float dist;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;            float otherPscale;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;            pcimport(pointcloud, "point.distance", dist);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;            pcimport(pointcloud, "pscale", otherPscale);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;            if ((pscale + otherPscale) &amp;gt; dist) isColliding += 1;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        addattribute("isColliding",isColliding);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-family:verdana;"&gt;vopsop1 adds growRate to pscale if it is colliding, vopsop2 just maintains roughness if the point is growing and decays it otherwise.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;After that, the rest of the SOP network just copies metaballs onto the points. I was using the cookie SOP to get the intersection between the original mesh and the metaballs but the cookie sop was a bit unreliable :/&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;hipnc file is &lt;/span&gt;&lt;a style="font-family: verdana;" href="http://www.users.on.net/~tmsmsa/test1_3.hipnc"&gt;here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6229419970286329265-7620719009444372772?l=ihoudini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='enclosure' type='video/mp4' href='http://www.blogger.com/video-play.mp4?contentId=9133ef2cd9f45490&amp;type=video%2Fmp4' length='0'/><link rel='replies' type='application/atom+xml' href='http://ihoudini.blogspot.com/feeds/7620719009444372772/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ihoudini.blogspot.com/2009/05/growing-objects.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6229419970286329265/posts/default/7620719009444372772'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6229419970286329265/posts/default/7620719009444372772'/><link rel='alternate' type='text/html' href='http://ihoudini.blogspot.com/2009/05/growing-objects.html' title='Growing Objects'/><author><name>Sam</name><uri>http://www.blogger.com/profile/10698234127018406883</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_FzvBVqxfH40/SiMhu9TkQhI/AAAAAAAAAEw/b3PP8V_NcQg/S220/51RBE2V357L._SL500_AA240_.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_FzvBVqxfH40/Shv1Pkl8w1I/AAAAAAAAACg/nAIozoFdcDM/s72-c/starting_object.JPG' height='72' width='72'/><thr:total>4</thr:total></entry></feed>
