Search - User list
Full Version: Way to automate Baking multiple version of a Digitial Asset
Root » Houdini Engine for Unreal » Way to automate Baking multiple version of a Digitial Asset
Aladin Sane
Lets say I have a digital asset for a wall for unreal. I have a few parameters available for changing the size and stuff.

If I know I need to generate 100 different variations of those parameters for a modular system, is there a way to script baking all of them with one button click. So if I have to change my base asset I do not have to create all my variations one by one in the editor?

Are there existing methods to deal with this type of workflow?

Thanks.
MightyKaziu
use frames and each frame have to be 1 version of wall and bake 100 frames
Aladin Sane
MightyKaziu
use frames and each frame have to be 1 version of wall and bake 100 frames

Thanks. I will try that.
chrisgreb
You could put your asset inside a foreach loop in houdini and have iteration-based expressions on the asset parms. Then you pack so you end up with 100 packed geos. This will show up in unreal as separate meshes.
Aladin Sane
chrisgreb
You could put your asset inside a foreach loop in houdini and have iteration-based expressions on the asset parms. Then you pack so you end up with 100 packed geos. This will show up in unreal as separate meshes.

Would it be possible to see a simple example of this in an hda file? Or is there a good tutorial out there that shows how to accomplish this?

Thanks.
chrisgreb
Here you go. You end up with 10 different messed-up looking meshes, the mountain time parm is an expression
detail("../foreach_count1/","iteration",0)
Aladin Sane
Aladin Sane
chrisgreb
You could put your asset inside a foreach loop in houdini and have iteration-based expressions on the asset parms. Then you pack so you end up with 100 packed geos. This will show up in unreal as separate meshes.

Would it be possible to see a simple example of this in an hda file? Or is there a good tutorial out there that shows how to accomplish this?

Thanks.

ok I have figured out a way to do this. I am attaching a simple project in case anyone else is interested.

It includes a simple manual node tree which works, but it also has a foreach loop with an attribute wrangle to setup all the output values.
Aladin Sane
chrisgreb
Here you go. You end up with 10 different messed-up looking meshes, the mountain time parm is an expression
detail("../foreach_count1/","iteration",0)

thanks Chris. I will explore that and see if it better than what I have come up with. I have posted my attempt in my previous post.

Thanks again. I appreciate the help.
Aladin Sane
chrisgreb
Here you go. You end up with 10 different messed-up looking meshes, the mountain time parm is an expression
detail("../foreach_count1/","iteration",0)

I cannot load variations.hda. Tells me invalid hip file header (probably cause I have indie license).
Aladin Sane
chrisgreb
Here you go. You end up with 10 different messed-up looking meshes, the mountain time parm is an expression
detail("../foreach_count1/","iteration",0)

I have been messing with this some more. It does not seem to honor my collision groups or socket creation. Also UVs are empty and the second lightmaps are not created.

I have tried it with and without the unreal_split_instances.

It is giving me seperate geometry but it is not useable if I cannot get socket and collisions working.

I also tried transfer attributes and transfer groups on the pack node and it did not seem to make any difference.

Any ideas?

I have posted an example that shows the problems with sockets and collision. If someone can point out what I am doing wrong or confirm that there is a problem generating sockets and collision this way?

Thanks.
chrisgreb
There does indeed seem to be a problem. The group information is being lost on the plugin side for packed primitives. I've added a bug to look into this.
Aladin Sane
chrisgreb
There does indeed seem to be a problem. The group information is being lost on the plugin side for packed primitives. I've added a bug to look into this.

Thanks, I appreciate it.
Aladin Sane
chrisgreb
There does indeed seem to be a problem. The group information is being lost on the plugin side for packed primitives. I've added a bug to look into this.

Any progress on this?

Thanks.
Aladin Sane
You know what might be an easy way to accomplish this.

If you updated your Hda asset to take a datatable. We could then create a datatable with the properties we want to to set in each row and the name of the output. Then you add a Bake Datatable button. Then your hda can just loop through the datatable change the properties and output the file with the correct name.

To develop a functional workflow for developing game assets I need a way to rebake all my assets in one shot when I change something in my hda file.

It is a bit silly that I gain all these procedural benefits from using houdini and then if I fix an asset that has 100+ output variations I have to burn an hour or so manually setting parameters and baking each one.

I need a solution where I can tell the HDA what variations to output with a single click.

thanks.
chrisgreb
No news on the packed prim/group bug yet.


other workarounds:
- You could just create a wrapper hda which instantiates your asset hda once for each variation, then you should get a separate mesh for each.

- It's possible to grind out variations like that using the Wedge and FBX ROPs (but then you only have fbx files)
Aladin Sane
chrisgreb
No news on the packed prim/group bug yet.


other workarounds:
- You could just create a wrapper hda which instantiates your asset hda once for each variation, then you should get a separate mesh for each.

- It's possible to grind out variations like that using the Wedge and FBX ROPs (but then you only have fbx files)


I am willing to try the wrapper idea. Could you provide an idea of what this would look like? What nodes would I use to do it this way? Or maybe I will just grab the plugin from github and add my datatable idea to it. Do you accept outside pull requests for stuff like this?

Thanks!
dpernuit
Hi,

The packed primitive bug has been fixed in today's daily build (16.5.392).
Collisions / LOD / sockets should now be available on packed primitives.
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