how to add blendshapes from fbx to Autorig captured character?

   5191   13   6
User Avatar
Member
61 posts
Joined: May 2017
Offline
Hello everyone

I designed this character in DAZ studio and exported the fbx
with all blendshapes for facial expressions such as eyes open, smile etcc
its all inside the fbx file that i attached

Because of the way DAZ works, it creates separate meshes for the body,
clothes and shoes are all separate meshes

So, in houdini, I merged all parts using the merge node
so that when i use Autorig, it will capture all parts of the meshes
as a single (one) mesh object

I then used Houdini's built in autorig to capture the weights

Now the problem is, i do not know how to load all the blendshapes that must affect
the face/body that came from daz3d on top of the captured geometry

I have attached all files including the fbx from daz(i removed all internal
bones that came from daz so that i could use houdini's bones from Autorig)

You can download the file at this link: http://www.henrythejedi.com/freelance/boy_autorig_blendshapes.zip
[www.henrythejedi.com]
I also attached the starting file where i just have the character without
any autorig just in case you may want to work on it from scratch

Thank you
Edited by henrythejedi - Aug. 10, 2019 04:02:46
User Avatar
Member
806 posts
Joined: Oct. 2016
Offline
Moin, Henry,

when you import the FBX from DAZ into Houdini (and choose to “import blend deformers as blend sops”), you get a mesh-deforming node that has “dials” for each morph (aka “blendshape”). You could write a script that exposes those dials to your own control UI - or apply surface-controllers so that you can “click-and-morph” on the face directly.
BTW, technically speaking you can convert a DAZ rig to Houdini without having to recapture. However, in my experiments I found a recapture in Houdini, using the original rig (just converted to Houdini's bone system instead of the Joints-system), more convincing (people say that DAZ' weighting is so good, I don't subscribe to that).


Marc
Edited by malbrecht - Aug. 10, 2019 04:18:45

Attachments:
1.JPG (54.1 KB)
2.JPG (144.8 KB)

---
Out of here. Being called a dick after having supported Houdini users for years is over my paygrade.
I will work for money, but NOT for "you have to provide people with free products" Indie-artists.
Good bye.
https://www.marc-albrecht.de [www.marc-albrecht.de]
User Avatar
Member
61 posts
Joined: May 2017
Offline
malbrecht
Moin, Henry,

when you import the FBX from DAZ into Houdini (and choose to “import blend deformers as blend sops”), you get a mesh-deforming node that has “dials” for each morph (aka “blendshape”). You could write a script that exposes those dials to your own control UI - or apply surface-controllers so that you can “click-and-morph” on the face directly.
BTW, technically speaking you can convert a DAZ rig to Houdini without having to recapture. However, in my experiments I found a recapture in Houdini, using the original rig (just converted to Houdini's bone system instead of the Joints-system), more convincing (people say that DAZ' weighting is so good, I don't subscribe to that).


Marc

Hello, malbrecht

Thanks a lot for your input

I think I already have what you are mentioning here: I do have all those blendshapes as inputs when i import the DAZ fbx into houdini

The problem is after i do the autorig capture, the connection between the captured mesh and the blendshapes are completely broken

When I try going back to the original mesh and tweak setting on the blendshape nodes, nothing happens on the new Autorigged mesh

Thank you for your input once again malbrecht
User Avatar
Member
806 posts
Joined: Oct. 2016
Offline
Hi,

if you use a morph on the DAZ imported version, that deformation will, obviously, not make it into an autorigged new deformation setup (sorry, can't download your file atm). You either need to re-apply the morphs in your new deformation pipeline or use the deformed output from the DAZ import (the *_shape node in the FBX folder) as the input to your auto-rig (that, obviously, does not make any sense performance-wise, but maybe you get the idea: You have to transport the point-movement from one setup to the other, else your deformation overrides the point-changes/morphs).

Apologies if this is too convoluted. I hope I can get the point across (pun intended)

Marc
---
Out of here. Being called a dick after having supported Houdini users for years is over my paygrade.
I will work for money, but NOT for "you have to provide people with free products" Indie-artists.
Good bye.
https://www.marc-albrecht.de [www.marc-albrecht.de]
User Avatar
Member
61 posts
Joined: May 2017
Offline
malbrecht
Hi,

if you use a morph on the DAZ imported version, that deformation will, obviously, not make it into an autorigged new deformation setup (sorry, can't download your file atm). You either need to re-apply the morphs in your new deformation pipeline or use the deformed output from the DAZ import (the *_shape node in the FBX folder) as the input to your auto-rig (that, obviously, does not make any sense performance-wise, but maybe you get the idea: You have to transport the point-movement from one setup to the other, else your deformation overrides the point-changes/morphs).

Apologies if this is too convoluted. I hope I can get the point across (pun intended)

Marc

Hi malbrecht

Thanks again for your very prompt reply

You mentioned “You either need to re-apply the morphs in your new deformation pipeline or use the deformed output from the DAZ import”

Where excatly do i do this in the autorig? could you point me at the exact location in the autorig where this has to be placed

Is it possible if you could send me a sample example file of an autorig setup you did with any of daz's characters so i can folow along

Thank you
User Avatar
Member
806 posts
Joined: Oct. 2016
Offline
I use the rig from the DAZ FBX import, convert it to a Houdini rig (bones instead of joints) and recapture. This is much faster (a few seconds for conversion through a script) and usually doesn't need any manual adjustments (like for the Autorig), so I apologize for being unable to help with the Autorig.

I cannot open or create sample scene files (I'm working). In general, the idea is: If you “rig” a geometry (a mesh), at the end you apply a deformer that defines all the points' positions at render time (or call it “final”). Somewhere before that final stage you want to apply the morphs (blend shapes), which are simply defined offsets for points, relative to their original position.
You need to make sure that the applied offsets either get captured by applying the morph before the capture process (slow), which basically means “edit the mesh before it gets captured” (bad) OR you apply the offsets after capturing has been done (even if you have to “recreate” the morphs converting them into native Houdini “morphs” - I am not familiar with Houdini's terminology, sorry, I'm using too many different tools).
What I would to in order to understand what's happening, is: Take the rigged, deformable “final” mesh and manually apply a “morph deformer” / blend-shape / whatever. Understand HOW that works and how you can control it. Once you understood how you can use/animate a morph in Houdini, it's straight forward to extract the offset-information from the node shown above and (if necessary) put it into a VEX node (or convert the weightmap/pointlist from the input nodes and their offset values on the fly).

I'm sure someone savvier in Houdini will chime in and demonstrate how to do it using your file!

Marc
---
Out of here. Being called a dick after having supported Houdini users for years is over my paygrade.
I will work for money, but NOT for "you have to provide people with free products" Indie-artists.
Good bye.
https://www.marc-albrecht.de [www.marc-albrecht.de]
User Avatar
Member
61 posts
Joined: May 2017
Offline
malbrecht
I use the rig from the DAZ FBX import, convert it to a Houdini rig (bones instead of joints) and recapture. This is much faster (a few seconds for conversion through a script) and usually doesn't need any manual adjustments (like for the Autorig), so I apologize for being unable to help with the Autorig.

I cannot open or create sample scene files (I'm working). In general, the idea is: If you “rig” a geometry (a mesh), at the end you apply a deformer that defines all the points' positions at render time (or call it “final”). Somewhere before that final stage you want to apply the morphs (blend shapes), which are simply defined offsets for points, relative to their original position.
You need to make sure that the applied offsets either get captured by applying the morph before the capture process (slow), which basically means “edit the mesh before it gets captured” (bad) OR you apply the offsets after capturing has been done (even if you have to “recreate” the morphs converting them into native Houdini “morphs” - I am not familiar with Houdini's terminology, sorry, I'm using too many different tools).
What I would to in order to understand what's happening, is: Take the rigged, deformable “final” mesh and manually apply a “morph deformer” / blend-shape / whatever. Understand HOW that works and how you can control it. Once you understood how you can use/animate a morph in Houdini, it's straight forward to extract the offset-information from the node shown above and (if necessary) put it into a VEX node (or convert the weightmap/pointlist from the input nodes and their offset values on the fly).

I'm sure someone savvier in Houdini will chime in and demonstrate how to do it using your file!

Marc
Hi Marc

I greatly appreciate the lengths you have gone to help me on this

I will try and see how far i can get with your susystion(im also still new to houdini). These are things im able to do using Daztomaya script. I thought a similar solution was available for houdini

Thank you once again Marc
User Avatar
Staff
3455 posts
Joined: July 2005
Online
try this

I've made a number of changes - mostly to reduce the file size
see notes in the HDA
the workflow is basically this:

copy the blendshapes from the FBX into the geometry level of the character
add a blendshapes node and blend ONLY the original blend geometry - in this case the head and hands, like in the FBX
then use the lattice SOP, in point mode with a very small radius to capture just one point per point, to deform the full geometry
this is very messy and in Houdini you don't need (and shouldn't) have duplicate meshes to represent your shapes - you can just use very efficient Edit SOPs
you can use the hscript command ‘sopcreateedit’ to create an edit SOP that holds the difference between two SOPs
I've done this in the HDA
after the stash SOP I saved out the mesh with the capture attributes to disk
then saved it into the Extra Files section of the HDA
read that into sops with a file SOP
wire that into a blendshape SOP, then all of the new edit SOPs
then that goes into the deform SOP…

hope that helps
Edited by goldfarb - Aug. 12, 2019 14:32:53

Attachments:
boy_autorigged.hda.zip (9.6 MB)

Michael Goldfarb | www.odforce.net
Training Lead
SideFX
www.sidefx.com
User Avatar
Member
61 posts
Joined: May 2017
Offline
goldfarb
try this

I've made a number of changes - mostly to reduce the file size
see notes in the HDA
the workflow is basically this:

copy the blendshapes from the FBX into the geometry level of the character
add a blendshapes node and blend ONLY the original blend geometry - in this case the head and hands, like in the FBX
then use the lattice SOP, in point mode with a very small radius to capture just one point per point, to deform the full geometry
this is very messy and in Houdini you don't need (and shouldn't) have duplicate meshes to represent your shapes - you can just use very efficient Edit SOPs
you can use the hscript command ‘sopcreateedit’ to create an edit SOP that holds the difference between two SOPs
I've done this in the HDA
after the stash SOP I saved out the mesh with the capture attributes to disk
then saved it into the Extra Files section of the HDA
read that into sops with a file SOP
wire that into a blendshape SOP, then all of the new edit SOPs
then that goes into the deform SOP…

hope that helps

Oh wow. Thank you so very very much goldfarb, this is the very supportive houdini community I have come to know where people go out of their ways to help each other

I am testing it now and will give you feedback on how it goes

Thank you so much once again
User Avatar
Member
61 posts
Joined: May 2017
Offline
goldfarb
goldfarb
Hi goldfarb

Thanks again for your help

Being still a learner in houdini, im am stuck at the beginning because i notice you converted the file to a .bgeo.sc format
I tried using file cache to export the file to this exact format but it gives error

So i ended up merging the body, clothes, and shoes into a merge node and exporting the file as a .bgeo and then opened a new file

I deleted all groups and all attributes before the export
I then did autorig on this new .bgeo file, but when i do autorig, it rigs the cloths separately from the body, basically it treats them as separate meshes. I have attached the pictures

I do not know if they are being treated as separate because I used the merge nodes to export

Is it possible if at all to record a small tutorial to show how you completed the file you sent me because i think it will make it clear what you did on each step

Thank you once again for everything
Edited by henrythejedi - Aug. 14, 2019 10:06:19

Attachments:
14.PNG (33.1 KB)
15.PNG (73.6 KB)
Screenshot (50).png (595.7 KB)
Screenshot (51).png (787.1 KB)

User Avatar
Staff
3455 posts
Joined: July 2005
Online
the Solid Conform SOP can sometimes fail to produce a good result,
you can either try the Solid Embed SOP
or use the Solid Conform SOP on each piece of geometry separately, then merge the results, then into the biharmonic capture

I'll try to do a quick vid…
Michael Goldfarb | www.odforce.net
Training Lead
SideFX
www.sidefx.com
User Avatar
Member
61 posts
Joined: May 2017
Offline
goldfarb
the Solid Conform SOP can sometimes fail to produce a good result,
you can either try the Solid Embed SOP
or use the Solid Conform SOP on each piece of geometry separately, then merge the results, then into the biharmonic capture

I'll try to do a quick vid…
goldfarb
the Solid Conform SOP can sometimes fail to produce a good result,
you can either try the Solid Embed SOP
or use the Solid Conform SOP on each piece of geometry separately, then merge the results, then into the biharmonic capture

I'll try to do a quick vid…

Hi goldfarb

I managed to get the hole mesh exported as .bgeo.sc file thank you

Im trying to follow along what you did inside the file you sent me. Its proving quiet hard to follow for a newbie like me. Yes a video showing how you hooked up the blend shapes after applying autorig will definitely be so autorig

Thank you so much
User Avatar
Member
61 posts
Joined: May 2017
Offline
goldfarb
the Solid Conform SOP can sometimes fail to produce a good result,
you can either try the Solid Embed SOP
or use the Solid Conform SOP on each piece of geometry separately, then merge the results, then into the biharmonic capture

I'll try to do a quick vid…

Hello, goldfarb
How are you. Just wanted to know if you had the chance to make a little video tutorial showing how you added blendshapes as in the example file you were kind to share

Thank you goldfarb
User Avatar
Member
61 posts
Joined: May 2017
Offline
goldfarb
the Solid Conform SOP can sometimes fail to produce a good result,
you can either try the Solid Embed SOP
or use the Solid Conform SOP on each piece of geometry separately, then merge the results, then into the biharmonic capture

I'll try to do a quick vid…
Hello, Goldfrab

I think you are the only one who knows how to make this happen
Will you still get the chance to make a quck video on how you did it please please

Thank you once again for the file you sent
  • Quick Links