Jump to content
KrisStaber

getting into rigging - help highly appreciated

Recommended Posts

<EDIT>

it ended up beeing quite a long thread

that was the end product of my rigging endavours (from page6):

adapting the rig: http://krisstaber.at/posted/krigger/krigger_adapt_HD.mov

quick walkthrough of the rig: http://krisstaber.at/posted/krigger/krigge...kthrough_HD.mov

here is a documentation

http://krisstaber.at/posted/krigger/frameset.htm

</EDIT>

hey there

i am getting into houdini rigging

quite a cool package i must say

but unfortunately not a lot out there to read or watch

i just found the 3d buzz tutorial on rigging

but its very basic and does not go into any depths

also it is houdini 5.5

so every help finding new stuff is greatly apprediated

also i will have to ask a few questions here if thats ok

i know how to do things in XSI and MAYA - just need to find out how to do it in houdini

Edited by KrisStaber

Share this post


Link to post
Share on other sites

already ran into my first problem

how do i measure the length of a curve to then apply it to bone lengh

the measure node seems to do something different

or the distance does not seem to be compatible witht he length of the bone or something

Share this post


Link to post
Share on other sites

There are more and more people here from other packages interested in Houdini or specifically in its character animation tool set. This is great news for all of us, so welcome and feel free to ask as many questions as you'd like. It looks like Houdini's animation is pretty mature though not used very often. The more we will be exploring them the more these tools will be serving for us. So push it as much as you can! ;)

cheers!

sy.

Share this post


Link to post
Share on other sites
already ran into my first problem

how do i measure the length of a curve to then apply it to bone lengh

the measure node seems to do something different

or the distance does not seem to be compatible witht he length of the bone or something

Maybe this can help you start in:

http://vanillarigging.blogspot.com

Share this post


Link to post
Share on other sites

thanks mate

seen that blog before today but files were not downloadable so i sent him a message if he could send me the files

but with that arclen function i managed to get it working

i attached the file in case somebody is interested

its a superbasic stretchy spine - well more the beginning of a stretchy spine

the function is in the first bone in the length attribute

i am just testing stuff so all just default names

spine_start02.hip

Edited by KrisStaber

Share this post


Link to post
Share on other sites

yet some more questions :-)

how do i:

measure the distance between two objects pivots or centres as quick(processing wise) and convenient as possible ?

how does the whole constraints thing work in houdini ?

parent pose orientation and so on ? (hows that stuff called in houdini - havent searched for it tho so it may be straight forward)

Edited by KrisStaber

Share this post


Link to post
Share on other sites
yet some more questions :-)

how do i:

measure the distance between two objects pivots or centres as quick(processing wise) and convenient as possible ?

in CHOPs (they are very fast - almost like VEX):

Add Object CHOP to your CHOP network and set Target and Reference Objects. Change its mode to "Distance". You can reference computed this way distance in any place of Houdini with chop() expression (see also a whole bunch of related expressions in textport: exhelp -k chop)

in Python on object level:

(geo1.origin() - geo2.origin()).length()

so using it in parameter would look like:

(hou.pwd().origin() - hou.node("/obj/somenode").origin()).length()

In hscript:

`distance(x1, y1, z1, x2, y2, z2)`

rather inconvenient because x,y,z you would normally specify with set ch() expressions.

Edited by SYmek

Share this post


Link to post
Share on other sites

also read up on the 'origin' expressions

in a textport type "exhelp origin" and make sure you read the SEE ALSO part...

Share this post


Link to post
Share on other sites

ok i got a basic stretchy leg/arm/limb to work with chops

attached it here in case anybody is interested

thanks for the help

SYmek

how would you use that distance expression ?

would you put something like that into the bone channel ?

distance("../geo1/tx","../geo1/ty","../geo1/tz","../geo2/tx","../geo2/ty","../geo2/tz")`

because i couldnt get this to work

michael

looks like a handy one

its basically like parenting an object to another and then reading the childs values (in maya/xsi) if i understood it correctly

stretchyleg.hip

Edited by KrisStaber

Share this post


Link to post
Share on other sites

it would be more like:

distance(ch("../geo1/tx"),ch("../geo1/ty"),ch("../geo1/tz"),ch("../geo2/tx"),ch("../geo2/ty"),ch("../geo2/tz"))

-> no need for backticks as you are probably evaluating a numeric channel rather than a string channel.

backticks are required to evaluate your expression first, before it is combined with a string for example:

myBone_`abs(-3)`

Glad to see you found your way to odforce :) & welcome.

Share this post


Link to post
Share on other sites

thanks peter

i will give it a go the next time i need a distance

EDIT

that above expression works only for non-parented geo living in world space

if its parented you have to use that following way:

distance(origin("","../foot_root","TX"),origin("","../foot_root","TY"),origin("","../foot_root/","TZ"),origin("","../foot_bone_goal/","TX"),origin("","../foot_bone_goal", "TZ"),origin("","../foot_bone_goal","TZ"))

after a couple of times banging my head against the wall i finally have a stretchy spine with curve controllers sort of working

now need to get them twisting somehow

spine_start05.hip

Edited by KrisStaber

Share this post


Link to post
Share on other sites
basic twisting working (on rotate Y on top controller)

that is a very basic halfway usable stretchy spine

Thanks for doing this. Keep it coming!

Share this post


Link to post
Share on other sites

again any feedback or tipps or whatever highly appreciated

i am a total houdini noob - using it still feels like trying to do a van gogh painting with an old bicycle tire

so i am sure there are tons of things i could make better or faster or more stable

for example

whats faster ?

calculating stuff in chops

or writing the expression into the channel

is there more stuff one could do ?

like scripted operators in xsi

Edited by KrisStaber

Share this post


Link to post
Share on other sites

CHOPs is fast as it caches it's result. But... I don't use CHOPs when the referenced channels will be keyed continually by an animator. Each keyframe added forces the CHOP network referencing it to cook across the entire animation. I like to use it as an additional layer to animation such as jiggle on muscles, lag applied to some channels, etc. Something that the animator can turn on when flipbooking or can tolerate a bit of a hit (we are talking milliseconds here but I don't want the animator to be nickled and dimed to death on basic blocking tasks...).

Expressions in SOPs if used carefully can be quick to evaluate but remember that all dependent operators must evaluate as well. This means move all time dependent operators as far down the chain as possible.

Note that if you MMB (Middle Mouse Button) on any OP's icon, it tells you whether that operator is time dependent or not. Very handy.

Is there more stuff you can do? Absolutely! The Auto Rig tools is one approach to rigging characters. There is a wealth of techniques inside those tools including stretchy spines, referencing other nodes, etc.

One common task that riggers have to deal with is what space do you want the controllers in. With Houdini you can use Blend objects to remove certain transformations in chains.

You can use Fetch Objects to grab any object's transformation and continue on in what ever space is parented to the Fetch.

Then there are the more subtle things like managing select flags, on selected scripts, locking parameters to control what handles are displayed when an object is picked, all the subtle tweaks you can apply when wrapping up a character in to a digital asset.

I haven't explored the use of Python objects as it relates to character rigs in H9.5.

I don't know what XSI scripted operators are.

Currently using nested assets in side of assets does have an overhead (as with the auto rig tools). Building your characters flat (which is what I like to do in general) will give you the fastest performance. The parameter referencing does have an overhead.

Another tip is to keep the number of nulls down and utilize the pre-transforms on your objects. Less dynamic transforms to work with. Recently I have been experimenting with the maya approach where you use nulls as joints and bones to hang off the joints (as our FBX importer does) but I keep coming back to our bones. I really like our bone workflow over joints. Thats one conversation to have over a few beers.

If done carefully, you can use SOPs and geometry to do some parts of the rigging. Of course splines are used as backbones. If you use the Path tool at the object level to draw curves, those nulls and the resulting path are great for buildng a stretchy spine up on. All the attributes for the IK CHOP in spline mode are there by default. If built up correctly you can have a spine twist around 360 and more without flipping.

You can also use SOPs to solve some tricky geometry issues by literally using circles, carve sops, NURBs and Beziers which are nicely parameterized to do things like measure distances, angles, areas, etc. quite quickly. Again you have to manage the geometry dependencies to avoid any recursion.

That seems to be the big issue with me as I tend to push things far too far: recursion. For that you need to become familiar with the Performance Monitor. Check it out in the help. It can clue you in to what operations are taking a long time so you can focus on your optimizations.

There is the View Dependencies... RMB menu option on each and every operator that lists out dependent and referenced operators. Also great for weeding out recursion issues. I have an old school blog on viewing operator dependencies. Worth a read if you are a rigger in Houdini.

http://www.sidefx.com/index.php?option=com...&Itemid=216

Viewing Dependencies - Side Effects Software Inc.

-jeff

Share this post


Link to post
Share on other sites

thanks

that sounds very interesting - thanks oldschool

but i guess i still have to figure out houdini more to understand it :-/

maybe in a few days :-)

i found calins blog already - unfortunately his files wont download - I already wrote him a message but no reply yet

do you know about / or have some simple and good rigs - that i can take apart and see how they have done it

maybe email is better for non public stuff "kris.staber #at gmail.com"

i have one problem that I cant really figure out (uploaded file)

first thing:

when i move the lower controller (ankle) it all works really nicely with the stretch

but when i move the upper controller it does not stretch - even though the values (root controller) change - it does not stipulate down to the bone

second thing:

1 when the auto stretch thing works -

2 i click the root controller to see the values

3 then i click the ankle controller again to test it

4 and it doesnt work (the stretch)

5 i go into the chop network and switch bypass on and off on one or two nodes

6 i go back to grab the ankle controller - everything works again

what could that be ?

hope the file makes sense

btw: the "wtf" in the file name stands for "why this function"

stretchyleg06_wtf.hip

Edited by KrisStaber

Share this post


Link to post
Share on other sites

how do you usually set up the rig calculations ?

chops ?

expressions in the channels ?

object models - hom python scrips ?

hom houdini scripts ?

trying to figure out the best way to do rig calculations

expressions in channels is a bit user unfriendly

Share this post


Link to post
Share on other sites

created a fresh basic stretchy spine

from what i can tell it does everything the way its supposed to

every feedback greatly appreciated

can i build it in a better way

or may i run into problems with the way its built right now ?

things that can still be improved:

two or three curve points per controller to allow for better curve manipulation through rotating the controller

add a FK control ability

stretchyspine02.hipnc

Edited by KrisStaber

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×