Search - User list
Full Version: WIP: FBX HD & SD importer, Joints to Bones Converter and Morph-Helper (was: DAZ to Houdini converter)
Root » 3rd Party » WIP: FBX HD & SD importer, Joints to Bones Converter and Morph-Helper (was: DAZ to Houdini converter)

a friend suggested I should post this here since it might raise some interest.

I have used this project as a sandbox for learning more about rigging in Houdini (and a bit about creating HDAs). The HDA, as it stands, accepts a DAZ exported FBX, which includes (currently limited to G8 figures) a rig plus a high-res OBJ for the subdivision detail (that does not get exported into FBX from DAZ). Meaning: You get both the rig and the high resolution geometry over.
The system also converts the material paths, fixes the FBX import issue in Houdini (currently, bug filed) to get all the texture paths. It recreates the rig in Houdini, adding arms- and legs-IK for easier animation.
Morphs are being recreated in high resolution, so facial animation using morphs can be used right away (no need for adding a face rig).
Shader nodes for Redshift or Mantra are created, switching between them is possible using a simple renaming script.

I realized that this might be more suited for a DAZ forum, but, after all, it is done in Houdini. So maybe someone finds it as funny a project as I do …

Marc Albrecht
I think this is great!
DAX and other character makers are often dismissed as ‘unprofessional’ but I've never thought so, they're very useful for a range of uses and users. Tons of indie games use these models, at least as a starting point, and since modeling/rigging a character isn't trivial, those who don't have the time/ability they can be a huge time saver.

hope to see more of this.
any thoughts of releasing it one day?
Thanks, Michael, your feedback really means a lot to me!

I would love to create a “course” out of what I learned - the way I did with my “Spider Leg Rig” back in the days. Stumbling into all the pitfalls I encountered and ending up with a (literally) one-click-solution that “does it all” (well, to some extend - it's nowhere near a “production-ready rig”, but you can animate, pose and get simple stuff done with it).
But I fear that is not what you have in mind (it's probably quite “Houdini” to first think “how do I learn how to do this myself”, I guess).
“Publish” the HDA … I don't know, it's a mess because it has grown from experimenting, testing and making-it-work. Besides, I am software-developer, not a Python-user. My Python-code is shit and I am proud of that fact - just not proud enough to let others poke around it and giggle

While I'll continue playing around and improving on it, I'll think about it …


I'd really like us to be able to smoothly import these types of things from anywhere…DAZ, iClone, makehuman etc
maybe donate it to the Labs team? let those guys clean it it up

Working on “eye-import-management” (interestingly, the FBX rig doesn't seem to care about the eyes at all - did anyone say that the DAZ rig is “really good”? :-) ). With some “PI” (programmed intelligence) this is a one-evening-gig.

Also looking at making the script figure-agnostic. I *think* I may have found a way to “traverse” the rig in a way that lets me recreate it in an IK-friendly way, but I have to tinker with that a bit. It would be great being able to not only import the various G*-figures but some of the (quite nice) animals with one and the same “semi-intelligent” script.
(For dragons I have an older Houdini-WIP that I might re-vive one day that procedurally produces “your personal dragon” from scratch )

Will keep posting updates here and let you know when the script is “ready for peeking” …


  • Figure agnostic conversion: Check.
  • Import and conversion test animal: Check.
  • Script cleanup: … well, kind of - does getting from ~1000 lines down to <500 count as “clean up”?

For unknown figures, I have added a “Do IK” switch that can be turned off. Once I figure out how to “auto-detect” the best IK joint points, I will happily introduce that. But manually adding an IK chain really isn't that big a deal with a working skeleton anyway.

Note: Don't kill me for the dog pose, I merely wanted to show that deformation/posing works, not pretend that I know what I'm doing :-)


Edit/P.S.: This version (in your mailbox, Sir Michael) lacks eye-management and automatic capturing. I'm getting back to that tonight. Capturing works fine by simply applying a biharmonic capture “off the shelf”, though.
  • added “master control” material nodes (currently RS only, would be easy to add for Mantra) so that all skin/eye materials can be controlled from one single node
  • added RS material choice “standard shader” versus “skin shader” (using SSS)
  • reworked bone naming scheme to use respective null target names instead of original bone names
  • implemented a first rough eye control
  • stability improvements

I'll stop posting updates for a bit now with interest in the project seeming to be limited - no need to create undesired noise around here.

Small update (about huge updates): I am back at almost 1000 lines of Python code now … with lots of featuritys (German-ish pun on “way too many features”):
Two stupid bugs fixed, naming “beautified”, capture pipeline is created automatically, eye-rigs are added (I don't like the DAZ way of morphing eye directions), last-bone-plus-one patch (to include bones at the ends of chains where the original FBX rig only has a joint that captures the final geometry), animation-rig on low-resolution geometry (switchable to hires-geo for rendering), bone-visibility-switch for rendering, automatically fix for the UDIM-mess DAZ exports on combined geometry (overlaid UV patches that break the morphing) and lots more. Some of the features will only work on “suitable” figures since I couldn't avoid having some hardcoded anchor names, but I made most features switchable on the HDA. I do think that most of this setup should work fine on non-DAZ FBX as well.

I would love to get some real-world feedback on this now. If there's anyone who is interested (and does have the time to do so) in cooperating with me on this, I would love to get in touch and bounce ideas back and fore, test, experiment, improve. If such a someone should exist, please do contact me through PM or my website.


P.S. On my to-do-list is having a closer look at makeHuman's API. Originally I wanted to integrate that package into a “character designer” for Houdini, with what I learned from the DAZ2H project I hope to be able to do that. Looking for cooperation on that one, too.
while I am still learning Houdini and don't really do character work I can appreciate the enormous effort you are putting into this. it is no easy task.
Thank you! While, yes, it isn't easy - it is a fun way of learning new tricks and better understanding the workings of (and especially the horror of cooking that is) Houdini! I can only recommend taking on a project/experiment like this if one wants to “get it” :-)


This is in no way a final demo, just a quick and dirty overview of the general workflow. I am working on a bunch of features (e.g. cloth/props/eyelash/hair integration).

Hello Marc,

Thank you for sharing your knowledge and experience. I do a lot with DAZ and Houdini and after a few initial problems I got some good results (being a Houdini beginner). As I like the HOudini Auto Rig I do not export in FBX but OBJ format. With only little tweaking by Capture layer painting the eyelashes it is possible to get a good character setup using auto rig within 15 minutes - including basic face rig. However based on your posts I will also try the FBX.

Hi, Floran,

thanks for the feedback - very much appreciated!

Unfortunately, you do not get the hires mesh with the FBX workflow, but you do get the morphs exported in there (“blendshapes”), which is huge benefit for there are tons of ready-to-use expressions.
So what you need to do is convert the lo-res morphs to hires morphs (UV based Attrib Transfer on P using Vertex UV). You also need to take care of material conversion, and some overlapping areas. If you can invest the time, as you mention, creating an individual rig definitely beats any automatism. However, if you need to convert a lot of characters in short time, a script comes in handy

The biggest disadvantage of the automatism is that the biharmonic capture doesn't deal very well with shoulders, elbows, neck, feet. You either have to hand-tweak those areas or (which is what I am thinking about right now) convert the original DAZ weights. I wanted to get around that because I had lots of Houdini crashes when trying to work with FBX-embedded point data.

If you want some interest from DAZ users, there is a Houdini+DAZ Studio thread [] at the DAZ forums you could post to as well.

I don't know if you're aware, but if you run into the limitations of the FBX exporter in DAZ Studio, you could skip FBX and read the native DAZ files and import them and the rigging information into Houdini directly. The native DAZ file format is documented here []. There is an open source project that does this native reading of DAZ files and imports them plus the rig into Blender: [] and []
Hi, “Robot”(?),

thanks for the links!
(My experience with the DAZ community was … mixed, put mildly. Not my crowd, I fear. Too much of a “it may not cost anything else it isn't worth my time” mentality. I prefer the Houdini “crowd”, even if it has been heading in the same direction lately :-) )

I don't know if you're aware, but if you run into the limitations of the FBX exporter in DAZ Studio, you could skip FBX and read the native DAZ files and import them and the rigging information into Houdini directly.

I did have a look at that and was considering that in the beginning. My hope was that the HDA could serve as a “more or less general purpose” rig importer (it does, to some extent).
But, yes, issues like shoulders etc. are probably better served using original rigging information. Not that the DAZ rig would be extraordinary good in that respect, in the end an artist ends up putting in manual work anyway … that was what pushed me into “redoing it” in the first place.
For the moment I am concentrating on non-DAZ-specific features, mainly because the whole “blendshape/morph/rig” mix - although it does have its benefits (see above) - feels way too chaotic for my taste. I am thinking about applying a “face rig” that can be driven (and frozen) from imported morphs (blendshapes), so that you could use a “real rig” instead of morphs for facial expressions. But that is a LOT of work … I don't need that myself, really. Just one of a couple of ideas what one COULD do …

Thanks again for the response!

Small update: I have an almost working “FBX-rig-weight-import” set up. I get some random crashes with that, which seem to be related to unpacking the weights “hardcoded” into the bone-capture pipeline that the FBX import sets up and it sometimes doesn't deal correctly with point weights shared across several joints. But … it looks promising as a general “FBX rig import” that basically converts joint-based rigs to bones-based rigs.
Once I have this (separate) HDA working more or less reliably, I'll make it available in one form or another.

Very much looking forward to the public release, looks phenomenal!
Hi Marc - just came across this thread, and wanted to thank you for the tremendous effort you're putting into this. I'm relatively new to Houdini, but have worked through a host of tutorials over the last couple of months and am starting to get my footing. I've used DAZ Studio and Carrara off and on for a number of years, and if you're still looking for someone with DAZ experience to help out with testing, I'd be happy to pitch in where I'm able. Thanks!

Not an update on the “big one”, but the “convert FBX Joints based rig to bones based” node works:

Export FBX with rig.

Import FBX with “bones created” (those will be used for Houdini-animation).

You can now add Houdini IK chains if you want, the bones-based rig is fully functional. It reuses the original Joints (Nulls) - which, for the moment, is a “workaround” that avoids transferring the weights to bones. I am looking into getting rid of the nulls as well, but … I am quite happy with this.

(This HDA does not take care of materials and does not support the additional HD import that the “DAZ2H” HDA takes care of, this is something to further work on. But it's a “quick and dirty all-purpose-fbx-rig-convert”.)


Edit / P.S. The good news is that handling the HD version of DAZ characters is straight forward using the same solution the DAZ2H tool uses, just tried it out. Read: I can re-work that HD-rig into this new one and we can animate lores AND hires “el-cheapo” figures.

HDA attached to this comment. It's a WIP. Be nice :-)


(P.S. updated version in next post, deleted attachment here)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB