# Bird rig

## Recommended Posts

I'm just starting experimenting and since my experience with rigging is pretty low, I would like to make this project as public as possible. So anyone who likes to participate, welcome on board.

I guess the most difficult part is probably the wing, apart from achieving a rig which is convenient to animate.

Right now I stumble across two things mainly.

a) My current dummy feathers use curve points as origins. The curve is "attached" to the bones in a rather clumsy way. As soon as a bone changes its geometry there'll be errors since I import the bones by an OBJECT_MERGE and delete all points except the one I would like to constrain the curve to.

Is there an easier way to do this? In SI I would have thrown all the bones into a group and the get all position values and bone length values in the group to calculate the root and tip positions. Is there a way to do this in H? Or how would you constrain a curve to bones? If the curve consists just out of a few points it can be done manually, but if the curve got loads of points my method is definitely not convenient.

I checked a video in which somebody demonstrates a bird wing. It seems that the elbow joint doesn't work like in my rigging example (rotating in just one plane), but the the ulna/radius rotate around their length at around 90° if the elbow is rotated by 180°. Imagine a door fully opened (180° till it's closed) with just one joint in the middle. If you close the door it starts to rotate also around the joint in such a fashion that the door is in the same plane as the ground when it's totally closed.

Do I need to add another bone on top of the ulna/radius which rotates around this axis or can I rotate the bone by itself? Since it's an IK chain the manually entered rotation values don't have an effect (How can I display the rotation values of the bones? In their node panel there doesn't seem to be a settings which displays it).

Next steps would be to come up with a tendon which connects the wrist and shoulder, find the correct way to apply the feathers (does one need bones?) and shape the primary and secondary feather according to the wing shape.

So any help and participation is welcome.

Cheers
Tom

wing_01_a_032.hiplc

• 1

##### Share on other sites

Nobody an idea how to get the bone position, rotation and bone length? For the curve set up I do need this. My hack with importing the bone "geometry" and delete all but the points at the origin is really an ugly hack. Boneangle() works great to get the angle between two bones. Isn't there a Boneposition(), Bonerotation() and Bonelength() syntax???

Cheers!

##### Share on other sites

Some small updates. There's a helper bone now to rotate the ulna/radius when the angle between humerus and ulna/radius is changing. Feathers look a bit better, too.

The questions I got so far remain. Any help appreciated.

wing_01_a_078.hiplc

##### Share on other sites
Posted (edited)
On 5/13/2017 at 1:24 AM, Pancho said:

Nobody an idea how to get the bone position, rotation and bone length? For the curve set up I do need this. My hack with importing the bone "geometry" and delete all but the points at the origin is really an ugly hack. Boneangle() works great to get the angle between two bones. Isn't there a Boneposition(), Bonerotation() and Bonelength() syntax???

Cheers!

I think the most versatile way is still a bunch optransform functions, with this you'll get global matrices into SOP/VOP network . You save the matrices as detail attribute, later you'll be able to deal with them in similar way as in Softimage ICE kinematics, as you know, inverse of one matrix multiplied by another, so on . For equivalent of Static Kine State probably you'll want to save a 'snapshot' of matrices into external bgeo file or something. So, 'Bone length' is a distance between bones.

How to setup optransform function, I think you'll be able to find somewhere on forums, or download  this thing from there (it could appear a little bit mangled in H 16, because of different working of Blend Object, but VOP structure should behave in same way).

Few tips:

Houdini bone uses a fixed rotation order, I think it's ZYX  and Z is Local Rotation Axis.

Whatever you're doing, take care of keeping the relative paths, to be able to create HDA, later.

HDA creation seems to be allergic to too many linked parameters (or at least it still was in first public version of H 16), so, for a bit longer chain (parameter linked to already linked parameter), perhaps you'll want to build HDA first - while it's generally good idea to avoid any 'chain', if you can.

For best evaluation, you'll want to have SOP/VOP network under the same hierarchy with your rig.

Edited by amm

##### Share on other sites

Look inside the bones (SOP level).Hope it helps you.

PS :What is the purpose of the boxes ??????

wing_01_a_078.hipnc

##### Share on other sites
Posted (edited)
On 5/17/2017 at 1:23 AM, dedeks3000 said:

Look inside the bones (SOP level).Hope it helps you.

Forget me if I misunderstood, you mean 'diving' into bone node, or what. If so, that is giving some info about geometry, more or less in same way as Maya Shape node, but, not that much about transforms.

By the way, in Houdini,  things like Blend or Fetch Object, Look At Constraint , IK solver, they are behaving like parent, local  transform is not affected. While in apps like Softimage or Maya, perhaps Blender too, "constrained transform" is firstly converted to local space of driven object, and modification is finally applied as blend-able override of local transform. In other words, if someone for example wants to read the local orientation of IK driven bone, this is immediately possible in mentioned apps. While in Houdini, this has to be calculated first, somehow, simple because ''local transform'' is not affected by some of mentioned "constraints" . As far as I know, one way is to use some specialized CHOP for that, another is optransform function.

My vote for optransform, together with as much simple Houdini rig, because:

- it allows to use SOP/VOP network, as imho only advantage against Maya or Blender when it comes to rigging.  For any further deformation, distribution of instances, feathers or so.

- Houdini kinematics is not so fast to evaluate, especially with a lot of CHOPs all around (to say politely).

- it makes easier to replace the complete Houdini rig by animated hierarchy imported form another app, even in case when hierarchy does not match (because of global matrices and necessary re-construction of parent-child relationship).

Edited by amm
• 1

##### Share on other sites

Hy Anto ,

The purpose of the file i posted is to show that if you dive into the bone at sop level , you can query some useful info without using any sort of "m4 * invert + local - maya"

If you create a point with an  add sop , at (0,0,0) location  it correspond to the root of the bone , at (0,0,-length), you get the tip.

That's it ! It just act more like a point helper and is limited to position (no orientation)

PS : your posts are always instructives

• 1

##### Share on other sites
56 minutes ago, dedeks3000 said:

Hy Anto ,

The purpose of the file i posted is to show that if you dive into the bone at sop level , you can query some useful info without using any sort of "m4 * invert + local - maya"

If you create a point with an  add sop , at (0,0,0) location  it correspond to the root of the bone , at (0,0,-length), you get the tip.

That's it ! It just act more like a point helper and is limited to position (no orientation)

Thanks. Yeah that's something impossible to imagine by my Softimage - Maya mind. It seems they made me Cylon long time ago....

• 1

##### Share on other sites

Posted a response on the sidefx forum that may help.

Tighe