Hi all!
I wanted to share something I've been working on, to see if any one else is interested ![smiley smiley]()
I'm trying to bring DAZ content to Houdini - but not as a FBX import. Rather, my goal is to have a full, native parser for a DAZ Studio content library, directly in Houdini, with many of the same features found in DAZ Studio.
The primary reason for tackling this is that DAZ Studio has a huge library of characters and supporting assets, all of which are based on a few core character definitions. Having a way to import these characters into Houdini agent simulations and FX projects seems like it would be super-useful for technical / FX artists. The use of a common base character mesh, with switchable variations, means that procedural adaptation of these characters in Houdini would be very tweakable and portable, and could become a great basis for procedural workflows that can be expanded simply by adding more characters to a library from the DAZ store.
In the current (VERY alpha) version, I have the following features working:
- Parse a DAZ Studio Library folder of DSON files
- Build a library of nodes, materials, geometries, UV sets, and modifiers from these DSON files
- Parse DSX files to discover available characters
- Select a character to load in Houdini as a Houdini Digital Asset (e.g. Victoria 8)
- Parse the DUF scene for that selected character
- Make connections between modifiers, channels, functions, and operators to populate the scene's properties for that selected character
- Create a KineFX skeleton for the selected character, natively in Houdini
- Create a bound, weighted Houdini skin geometry for that KineFX skeleton from the DAZ geometry definitions, natively in Houdini
- Create packed primitive geometries for head and body morphs, pose and joint correction morphs, and any other geometry modifiers
- Apply character shaping morphs and joint offsets to match each character's custom shape and skeleton
- Apply pose and joint correction morphs in response to changes in the character's pose
- Translate Iray materials into Mantra or Redshift materials via Houdini material stylesheets
Of course, there's a lot that isn't supported right now:
- Props
- Clothing
- Hair
- Lights
- Camera
- Multiple geometries in a scene
- Basically, anything that isn't a single skinned character
…and the material support is still a work in progress, with some notable gaps:
- Mantra's subsurface scattering (SSS) implementation leaves a lot to be desired
- DAZ's volume shading for skin is hard to translate into Houdini (or at least, I'm still working on how it might translate)…
…but nonetheless: it's a start!
The current project is a combination of Python (for the library parsing and scene construction), Houdini digital assets (for the library node and character node), and custom Mantra / Redshift shaders.
One thing I've been wondering is whether the "parse a library, build a scene, and resolve formulas and channels" code could be broken out into its own Python module, and possibly open-sourced for the greater good. It strikes me that this could be useful for other projects too, and I know folks on these forums have been working on bringing DAZ content to Blender via Python, as an alternative to the (already very nice) DAZ to Blender Bridge. If there's interest in making this part of the project more widely available, do let me know. Everything in that part of the code is based on a deep read of the DSON documentation, combined with a lot of trial and error, plus spelunking through a variety of real-life DSON files. (I'm immensely grateful to DAZ for making the DSON File Format Specification available - I would never have got this far without those docs as inspiration.)
Anyway: here are a few Redshift / Houdini renders of Victoria 8 to show where things are at. Thoughts, questions, and suggestions much appreciated!
– Dave