Jump to content

How do you create procedural geometry with bones for export? [Unsolved

Recommended Posts


This is may be a bit less complicated than it sounds, but I am reasonably certain that I am not the only one who would love examples and clarifications on this topic.


As far as I understand, the current Houdini workflow requires you to create (or import) a mesh and then to rig it in a seperate (and fairly manual) work-step. I would like to find out about techniques that would allow me to create a mesh with a rig in one procedural step. The rig would have to be working in other software packages such as Maya and Unreal Engine. Note: The logic which would ultimately control the bones in the rig does not have to be included in the export (although that would be an interesting follow-up problem). I "just" need the right amount of bones with the right names in the right places and with the right skinning.

1.:As far as I understand, I would have to script the usage of shelf tools driven by values from within the mesh-generation procedure. I would create a button to generate the rig via script and a button to delete the rig so that one can make last-minute adjustments before export. Does anybody have an example of something like this?


2.: I have a big procedurally generated object with many complex interdependencies. This object can have a varying amount (anywhere from 2 to 60 and more is possible) of wheels of different types and other moving parts. I usually use the copy node to put the wheels on specific point groups. I would like to create the wheels skinned and with bones so that I can export the entire object to something like the Unreal Engine and move all wheels independently in the engine.


3.: A variation on this problem: How would one create a procedural rig in Houdini for an object with a randomly varying number of "limbs"?

Imagine you have a procedural caterpillar. You can change the amount of body-segments and with that you also change the amount of legs.

The desired workflow for the user of the procedure would be something like: Select the length of your caterpillar and then export it at the press of a button. The exported file contains a hierarchy of skinned bones and the caterpillar mesh is skinned to it. When the file is put into a modern 3D engine, the animation of the caterpillar could be driven by a script of some sort.

How could you expand a mesh-generation procedure so that it would automatically generate all required bones and all skinning (assuming simple geometry where skinning is very simple and can be automatized)?


4.: Assuming the mesh is symmetrical: Would there be an efficient way to mirror the rig? (For the purpose of saving on scripting amount and or performance).


5.: How would you create and export a procedural animation for such a procedural rig?

For the example in question 3 this could be a time-shifted leg up and down - a few simple roations controlled by a sinus wave with an offset equal to the leg number - from the first to the last leg on a side. I would love (a very simple) example-file.


Thank you and sorry for the wall of text.


[Edit:] To give a basis to work from, I created a very (very) simple procedural Caterpillar (as described in example 3). I hope this encourages the creation of some practical examples for exportable procedural rig solutions. Control parameters are on the object-level of the node.


Edited by DASD
Link to comment
Share on other sites

hi dasd,


i wondered about how to create bones and skin characters in a procedural manner, as well. its really disappointing to see even houdini tutors rigging their characters manually with shelf tools.


is there really no way to convert curves to bone chains procedurally ?

no way to connect bones to meshes without statically applying them ?

Link to comment
Share on other sites

Have you looked into any of the example based rigging and skinning solutions? It's an area with pretty active research. I used a system about 6-7 years ago based Building efficient, accurate character skins from example From what little I know about Houdini as I am just venturing into it, it looks like all the really hard parts of that paper are already in Houdini (getting a best fit cluster for each point and skeletal pose). That was a really old system though and a lot of research has been done since, with an exciting solution being presented this year, Robust and accurate skeletal rigging from mesh sequences. Feed it posed meshes, get back a rigged character with a skeleton that a human can make sense of. It's downfalls being it does not currently allow for an experienced character TD to provide a skeleton to be fitted and skinned, and it relies on the old linear blend skinning algorithm. That last one is more of a trade off as it makes the proposed system more widely compatible at the expense of suffering from the well known artifacts that all linear blend systems do.


 You'd probably want some method of deformation transfer to compliment the example based tools and get more mileage out of example shapes.

Link to comment
Share on other sites

AaronAb, thank you for your input. This is a very interesting and related topic, but I am more concerned with practical aspects of implementing automitc rigging in Houdini. The procedure I have would provide proper bone-locations and even correct skinning parameters, but I don't know how to best script/implement these things. I don't know how to best translate the data I have into an exportable rig.

It's more a question about how to best use existing tools and scripts.


- I don't want to derail my own topic with a discussion about this, but just to reply to your input: It's certainly an interesting subject and I have seen at least one example of the implementation of one of these papers... Didn't work too well though. It's probably not going to work for something as complex and random as a face... I guess it could be a good starting point for a manual rigging process, but I don't think it's going to produce production ready rigs without human input anytime soon. At least not for highly detailed objects. As I tried to explain before: My problem is that I have a procedure that generates a mesh and that I want to use the same data as I used to create the mesh in the first place to drive my rigging.


[Edit:] Initial post is updated with an example-file.

Edited by DASD
Link to comment
Share on other sites

Thanks I'll look into it... And hopefully come back with answers...


Essentially the tutorial answers only question 5.

I now think that all I would need to make things truly procedural would be to use the instance node, but I am still unclear on how I would make that exportable (to FBX).

Edited by DASD
Link to comment
Share on other sites

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.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Create New...