Custom bone geometry in Bone objects and spline bone Q?

   9497   4   1
User Avatar
Member
436 posts
Joined: July 2005
Offline
Hi everyone.

First let me thank SideFX personnell and especcially Robert McGee at SESI for selecting me as Apprentice user profile. I am honored and humbled. The model featured in screen shots will shortly be available for free to all Houdini users as promised. I have recently completed a complex custom model for a TV spot, directed by Andrew Hardaway (formerly CGI supervisor and TD at ILM), and created at RADIUM (www.radium.com). The model of was of a creature that is a cross between tumbleweed and defidil flower head. It had 74 appendages, ending with.. Well you just have to wait and see the spot. I modeled the sub-division model and created UV in Houdini. The geometry was passed on to animators at RADIUM who used Maya to rig and animated it. I beleive they used PRMAN and MentalRay to render the animation. Although I modeled the geometry in Houdini. The geometry was delivered in Maya format. Maya and Houdini work flawlessly together.

http://www.sidefx.com/products/apprentice/profile/david_rindner/index.html [sidefx.com]

The topic at hand. Custom bones.

I noticed that bones are just geometry with somne special SOPs attached to them, and not fixed representations. However I am not sure what are ‘critical’ sops that define bone geometry as bone. What I would like is to have my own bone geometry that is representative and is scaled like actual anatomical bones. Basically I would like to know which SOPs in Bone objects I can replace with my own SOPs, or which special SOPs I can append to existing geometry.

Spline IK question. I find that its very easy to create Spline IK chain (Follow Curve IK). But one thing that is vexing.
Lets assume a NURB curve that represents the spine of an animal from tip of tail to base of neck. Some intermediate point, towards the middle, is the ‘hip’ point. That CV stradles the fulcrum of the animal. The upper spine, and tail chain both eminate from that point. THe curve is arcing slightly. The CVs as placed where the bones start/end.
The first chain I created was tail chain. I selected the IK Follow Curve and started drawing bones, starting at fulcrum CV and ending at end CV of the curve. Then I selected the curve, and chain snapped to it. That woked great.
Next was upper spine chain, and here I encountered some troubles. As with tail chain, I selected draw bones with Follow Curve IK. Once again started at fulcrum CV, but this time drew bones in opposite direction towards the beggining of the curve. The chain drew fine, but when I selected the curve, Houdini re-oriented the chain 180 degrees and overlayed it on top of tail chain. Houdini would also not let me re-position the bone points to their proper CV's. It kept snapping them back.
Why did this happen? Is it becouse Follow Curve IK is dependent of direction of the spine curve? THat would mean that chain has to follow not only the curvature of the spine curve but its direction as well.
I already have a workaround, that I rather not use. I create two curves going in opposite directions, with starting CV's of both curves at hip location.

Is this how Houdini's spline IK suppoused to work, or did I not do some small thing that would make a difference.
Thank you

David Rindner
User Avatar
Member
7743 posts
Joined: July 2005
Offline
Hi David,

The SOPs inside a bone object that define its geometry are: linkseg1, linkseg2, link_merge, and link. You can replace these with whatever geometry you wish.

Having said that, there's an easier way if you simply want to use custom geometry for all your bones. First model your anatomical bone in a geometry object (say named bone_geo). Make sure that it's bounding box is roughly the same as the regular bone geometry for best results. This should be something like (-0.05 to +0.05) for X, (-0.1 to 0.1) for Y, and (0 to -1) for Z. Now, within the Bones operation, before you start to draw your bone chain, hit the lowercase ‘p’ key with your mouse inside the viewer. This will bring up the operation parameters dialog. Under Link Geometry, change it to bone_geo. Now you can close that operation parameters pop up window. Now go ahead and draw your bones as usual. Since the bone chain is not yet created, you will still see it draw the bones using the standard geometry. However, when you right-click to finish drawing, it will create the bone chain using your custom geometry object. What it simply does is replace the sops mentioned above with an Object Merge SOP that merges in your custom bone geometry. Now you can even go back and make modifications to your custom bone geometry and it will be reflected in your created bone chain.

As for the Follow Curve question, yes, the solver is also dependent on the direction of the curve as well. The best way is to bind the two followcurve bone chains to two separate objects containing the curves. To keep things procedural, create your second curve object by Object Merge'ing the first one (choose your object for Source 1 parameter and then use Display SOP for the SOP parameter) and then append a Reverse sop. This way, you only need to animate one curve.

Cheers,
-Edward
User Avatar
Member
436 posts
Joined: July 2005
Offline
Thank you Edward. Nice information.
What I am really after is turning an existing geometric skeleton model into a rig skeleton.
For example. Though I have not show it, that centaur beast I modeled has somewhat odd skeletal structure that I am modeling wth simple nurbs.
It has two spines, two rib cages, main rear hip, and four shoulder joints.
The primary spine starts at tail tip and ends where upper torso blends into lower torso. Primary ribcage is attached to that spine. The hip/shoulder joint for front legs is attached to primary spine. The secondary spine, suppourts the upper body, shoulders, and neck.

During the design of the skeletal structure I don't want to be concerened with actual rigging bones themselves. I want to model the skeleton as if I were modeling a skeleton for rendering. After I am done modeling the geometric bones, I then want to parent them accordingly, ans set their pivots, constraints, and angle limits. Once done with that, then I would add rigging and enveloping SOPs to the geometry. Each bone is its own geometry object, and each one is slightly different in appearance.
The one thing I cannot really stick to is the bounding box ideal that you presented. For example, the head bone, is a simplified skull. It is shaped and proportioned as a real skull would be on that creature. Femur bone is geometrically different then ulna. Thats why I cannot use your approach in its entirety. But yours is a great approach for more generic rigs. I thank you for that.

David Rindner
User Avatar
Member
7743 posts
Joined: July 2005
Offline
If you need to precisely control the geometric length of your bone, then you could remove the link_scale node inside a bone as well. However, this will mean that your pivot points will be harder to control. You will need to manually ensure that your bone length at the object level parameter is in synch with your modelled geometry.

You're welcome. Have fun!
User Avatar
Member
18 posts
Joined: July 2005
Offline
David on I am not sure if this will help but under the render tab of the bone object the fourth and fifth parameters will allow you to enter a geometry file that over ride the default geometry.

Hope this helps
  • Quick Links