Ed Schiffer
edschiffer
About Me
EXPERTISE
Generalist
Houdini Skills
INTERMEDIATE
Procedural Modeling | Character Rigging | Animation | Cloth | Lighting | Pyro FX
BEGINNER
Digital Assets | Hair & Fur | Solaris | Karma | Fluids | Destruction FX | VEX | Python
Availability
I am available for Freelance Work
My Gallery
Recent Forum Posts
Solaris to Unreal Engine - Material Assignment Sept. 2, 2024, 10:51 a.m.
Hi, I've also been trying to get this to work as a way to have a minimum of effort in Unreal and here are some of the gotchas I bumped into.
First I couldn't make an USD with Unreal materials and MaterialX work at the same time, so it seems you need to decide which one you want to use. Changing the USD Stage Editor > Options > Render Context changes which material kind you'll see (click the bulletpoint instead of the text if you want the menu to continue open).
--Unreal Materials
I got the unrealMaterial attribute working, just make sure it's not named as primvars:unrealMaterial, and it's not an Array like it will be if you set it as polygons attribute. You can simply set it in an Attribute Wrangle LOP, or if using SOP Create LOP you can put it in the USD Custom Attributes parameter so it avoids the primvar: prefix. It can be set to subsets.
The path to the Unreal material can either have the Type bits before /Game/ like this "/Script/Engine.Material'/Game/StarterContent/Materials/M_Basic_Floor.M_Basic_Floor'" or shorter like '/Game/StarterContent/Materials/M_Basic_Floor.M_Basic_Floor', it doesn't seem to matter.
--MaterialX
So first thing is that the materials shouldn't come inside of the USD but the .mtlx files referenced in it. So in your USD ROP make sure in your Save Style you are "Preserving References". Flattening the Stage will prevent the materialX's from working in Unreal.
I haven't figured out if there's a way of using relative paths, so I just didn't use any Houdini variables like $HIP and made sure all my paths were absolute.
If you authored your mtlx in Houdini exporting it from a Mtlx Surface Material node works for me, when exporting from Mtlx Standard Surface or Collect nodes it doesn't.
--
So because of having to decide which Render Context to work with, it seems to me that if it's not important for you to have your materials set in Houdini, you should simply set the unrealMaterial primvar and have all your materials in Unreal, even your MaterialXs, as you can import them separately from your USD. This way you can mix them with Bridge's surfaces easily, for intance.
USD Preview Materials also work out of the box but for some reason sometimes the BaseColorScaleTranslation color come with weird values in the alpha that I need to reset for the textures not to be all stretched out.
As a side note, lights and cameras were imported nicely on first try, with even correct area lights colour/sizes and focus length. Also, transform animations and point deformations come for free, so the whole process is looking promising.
I attached a zip with my HIP, USD, MTLX and texture files for you to play with. Just check the paths as they'll be absolute, and here's a preview of Houdini next to Unreal:
Cheers
First I couldn't make an USD with Unreal materials and MaterialX work at the same time, so it seems you need to decide which one you want to use. Changing the USD Stage Editor > Options > Render Context changes which material kind you'll see (click the bulletpoint instead of the text if you want the menu to continue open).
--Unreal Materials
I got the unrealMaterial attribute working, just make sure it's not named as primvars:unrealMaterial, and it's not an Array like it will be if you set it as polygons attribute. You can simply set it in an Attribute Wrangle LOP, or if using SOP Create LOP you can put it in the USD Custom Attributes parameter so it avoids the primvar: prefix. It can be set to subsets.
The path to the Unreal material can either have the Type bits before /Game/ like this "/Script/Engine.Material'/Game/StarterContent/Materials/M_Basic_Floor.M_Basic_Floor'" or shorter like '/Game/StarterContent/Materials/M_Basic_Floor.M_Basic_Floor', it doesn't seem to matter.
--MaterialX
So first thing is that the materials shouldn't come inside of the USD but the .mtlx files referenced in it. So in your USD ROP make sure in your Save Style you are "Preserving References". Flattening the Stage will prevent the materialX's from working in Unreal.
I haven't figured out if there's a way of using relative paths, so I just didn't use any Houdini variables like $HIP and made sure all my paths were absolute.
If you authored your mtlx in Houdini exporting it from a Mtlx Surface Material node works for me, when exporting from Mtlx Standard Surface or Collect nodes it doesn't.
--
So because of having to decide which Render Context to work with, it seems to me that if it's not important for you to have your materials set in Houdini, you should simply set the unrealMaterial primvar and have all your materials in Unreal, even your MaterialXs, as you can import them separately from your USD. This way you can mix them with Bridge's surfaces easily, for intance.
USD Preview Materials also work out of the box but for some reason sometimes the BaseColorScaleTranslation color come with weird values in the alpha that I need to reset for the textures not to be all stretched out.
As a side note, lights and cameras were imported nicely on first try, with even correct area lights colour/sizes and focus length. Also, transform animations and point deformations come for free, so the whole process is looking promising.
I attached a zip with my HIP, USD, MTLX and texture files for you to play with. Just check the paths as they'll be absolute, and here's a preview of Houdini next to Unreal:
Cheers
Image Not Found
Exporting .fbx as object sequence (frame by frame). July 29, 2024, 9:48 a.m.
So, one dirty easy way you can do this is simply use the File SOP set to write *_$F.fbx and play your frame range.
It's missing all the FBX options but it did do the job for me, as I need to import it as "geometry cache" in an old software.
I just wish the ROP FBX Output frame range would work, and I also couldn't make TOPs export this quickly. This dirty method above is much much quicker for my case.
It's missing all the FBX options but it did do the job for me, as I need to import it as "geometry cache" in an old software.
I just wish the ROP FBX Output frame range would work, and I also couldn't make TOPs export this quickly. This dirty method above is much much quicker for my case.
configure joints for ik chain or ik vop Oct. 14, 2023, 12:37 p.m.
I get your point, yeah it's not so straightforward.
One way I managed to get it working here is to delete the root and the mid joints before the rig pose, so only use the tip for the FullBodyIK. If you rotate the joint you get your twist effect. It's not as predictable but maybe it works for you.
Cheers
One way I managed to get it working here is to delete the root and the mid joints before the rig pose, so only use the tip for the FullBodyIK. If you rotate the joint you get your twist effect. It's not as predictable but maybe it works for you.
Cheers