Skip to main content

Deforming RBDs again!

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.

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.

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!

anyway, here is the video:




and the .hip file is here!

Comments

  1. I should leave a comment as I am thankfully downloading your hipfile!

    Graet job and thank you for sharing your file!

    -Jangwhoan Choi-

    ReplyDelete
  2. For the geometry after an impact occurs, do you rebuild the SDF? I have to say your displacements look fantastic. The blue cylinder that lands near the beginning is my favorite.

    Fantastic work!

    ReplyDelete
  3. If the geometry changes, houdini recalculates the SDF :)

    ReplyDelete
  4. I am confused as to why you have to move the objects post solve then.

    ReplyDelete
  5. If an object has downward velocity, and hits the ground, it stops. On that same frame I am deforming the object away from impact point. So the object ends up with a lot less velocity and not contacting the object it collided with. For objects falling onto the ground it was a bit wierd since they would hit and then not be contacting the ground.

    I tried to move the object in DOPs to compensate but that was always a frame delayed. I still move the object in DOPs but also move it in SOPs on just the contact frame... hope that makes sense :S

    ReplyDelete
  6. Also if you check out the .hip file and bypass the modify data stuff in DOPs and the stuff in sops it should be more obvious.

    ReplyDelete
  7. Ah, now I see! I haven't actually had time to open the .hip file, sadly. That makes perfect sense, for whatever reason I was imagining the objects just hanging out in the air indefinitely, which in hindsight makes even less sense!

    Again, wonderful system!

    ReplyDelete
  8. absolutely love this! Hopefully you see this comment- but how would you go about deforming a larger, more complete piece of geometry (say, a car)? I'm having some issues working it out, even with the new soft constraint node

    ReplyDelete

Post a Comment

Popular posts from this blog

Cloth tear geometry and shading detail

Been adding geo detail to the torn cloth and shading the additional geo. Shading sure is fun! :) Thickness added to the cloth geo Extrude sides are extruded out again  The second extrusion is done twice, once for the U direction, and once for the V direction. Polyframe is used to get the UV gradient to extrude along, vopsops are used to move the extrudeFront points after extrusion as you can't control the extrusion per point with just a polyExtrude node... The extrusion is done twice so that the two different surfaces represent the opposing thread directions. since my geometry (and therefore tears) are in line with the U and V direction, the effect is not obvious in this case. The extra geo after shading The .hip file below has a slightly newer shader than in the video and the image above, I removed the part of the shader that created the soft ramp for the alpha edge and used just the thread noise instead; it now looks more like: Slightly newer shader than...

Wire to RBD feedback in DOPs

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... For multiple attachment points, I think a copy data node could be used to copy the point force data for each constrained point ... hip file here Wire to RBD feedback forces from Sam Hancock on Vimeo .

Worm locomotion with FEM

I have always wanted to do a dynamic locomotion setup, I have tried in the past with wire and sop solver with .... interesting results ;) With FEM in Houdini 13, the rest attribute is stored on vertices which allows a tetra to change its rest state independently of the surrounding tetras. With this, parts can be expanded and shrunk to get a muscle type action. I have started with a worm since it is quite simple, the contractions and expansions move back along the worm in a wave, opposing the travel direction. It took quite a bit of tweaking to get him moving at all. One major element of a real worm's action that's missing is the little hairs that grip the ground. I couldn't find a way to change the friction per point so I have gone a bit hacky and multed down v wherever I didn't want the worm to move. I would love to hear if there is a per point friction control! Here is the video Houdini 13 FEM Worm locomotion from Sam Hancock on Vimeo . ...and the .hip is...