KrisStaber Posted July 16, 2008 Share Posted July 16, 2008 (edited) <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 October 21, 2010 by KrisStaber Quote Link to comment Share on other sites More sharing options...
KrisStaber Posted July 16, 2008 Author Share Posted July 16, 2008 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 Quote Link to comment Share on other sites More sharing options...
symek Posted July 16, 2008 Share Posted July 16, 2008 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. Quote Link to comment Share on other sites More sharing options...
symek Posted July 16, 2008 Share Posted July 16, 2008 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 Quote Link to comment Share on other sites More sharing options...
KrisStaber Posted July 16, 2008 Author Share Posted July 16, 2008 (edited) 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 July 17, 2008 by KrisStaber Quote Link to comment Share on other sites More sharing options...
KrisStaber Posted July 17, 2008 Author Share Posted July 17, 2008 (edited) 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 July 17, 2008 by KrisStaber Quote Link to comment Share on other sites More sharing options...
symek Posted July 17, 2008 Share Posted July 17, 2008 (edited) 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 July 17, 2008 by SYmek Quote Link to comment Share on other sites More sharing options...
KrisStaber Posted July 17, 2008 Author Share Posted July 17, 2008 (edited) thanks mate !!! Edited July 17, 2008 by KrisStaber Quote Link to comment Share on other sites More sharing options...
michael Posted July 17, 2008 Share Posted July 17, 2008 also read up on the 'origin' expressions in a textport type "exhelp origin" and make sure you read the SEE ALSO part... Quote Link to comment Share on other sites More sharing options...
KrisStaber Posted July 17, 2008 Author Share Posted July 17, 2008 (edited) 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 July 17, 2008 by KrisStaber Quote Link to comment Share on other sites More sharing options...
pclaes Posted July 17, 2008 Share Posted July 17, 2008 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. Quote Link to comment Share on other sites More sharing options...
KrisStaber Posted July 18, 2008 Author Share Posted July 18, 2008 (edited) 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 July 30, 2008 by KrisStaber Quote Link to comment Share on other sites More sharing options...
KrisStaber Posted July 18, 2008 Author Share Posted July 18, 2008 basic twisting working (on rotate Y on top controller) that is a very basic halfway usable stretchy spine spine_start06.hip Quote Link to comment Share on other sites More sharing options...
symek Posted July 18, 2008 Share Posted July 18, 2008 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! Quote Link to comment Share on other sites More sharing options...
old school Posted July 18, 2008 Share Posted July 18, 2008 You want to check out Calin's web site Vanilla rigging: http://vanillarigging.blogspot.com/ He covers a stretchy spline in Houdini and Maya. Very cool! Calin is a top flight rigger in Houdini and Maya. -jeff Quote Link to comment Share on other sites More sharing options...
KrisStaber Posted July 18, 2008 Author Share Posted July 18, 2008 (edited) 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 July 18, 2008 by KrisStaber Quote Link to comment Share on other sites More sharing options...
old school Posted July 18, 2008 Share Posted July 18, 2008 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 Quote Link to comment Share on other sites More sharing options...
KrisStaber Posted July 19, 2008 Author Share Posted July 19, 2008 (edited) 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 August 21, 2008 by KrisStaber Quote Link to comment Share on other sites More sharing options...
KrisStaber Posted July 19, 2008 Author Share Posted July 19, 2008 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 Quote Link to comment Share on other sites More sharing options...
KrisStaber Posted July 22, 2008 Author Share Posted July 22, 2008 (edited) 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 July 22, 2008 by KrisStaber Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.