Way to automate Baking multiple version of a Digitial Asset

   617   16   1
User Avatar
Member
48 posts
Joined: Jan. 2016
Offline
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.
User Avatar
Member
9 posts
Joined: Jan. 2017
Offline
use frames and each frame have to be 1 version of wall and bake 100 frames
User Avatar
Member
48 posts
Joined: Jan. 2016
Offline
MightyKaziu
use frames and each frame have to be 1 version of wall and bake 100 frames

Thanks. I will try that.
User Avatar
Staff
133 posts
Joined: Sept. 2016
Offline
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.
User Avatar
Member
48 posts
Joined: Jan. 2016
Offline
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.
User Avatar
Staff
133 posts
Joined: Sept. 2016
Offline
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)
Edited by chrisgreb - Jan. 11, 2018 15:53:30

Attachments:
variations.hda (11.5 KB)
Capture.PNG (35.4 KB)

User Avatar
Member
48 posts
Joined: Jan. 2016
Offline
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.

Attachments:
multipl_output_testing.hdalc (28.9 KB)

User Avatar
Member
48 posts
Joined: Jan. 2016
Offline
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.
Edited by Aladin Sane - Jan. 11, 2018 18:50:22
User Avatar
Member
48 posts
Joined: Jan. 2016
Offline
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).
User Avatar
Member
48 posts
Joined: Jan. 2016
Offline
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.
Edited by Aladin Sane - Jan. 11, 2018 21:34:46

Attachments:
multiple_output_testing.hdalc (35.5 KB)

User Avatar
Staff
133 posts
Joined: Sept. 2016
Offline
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.
User Avatar
Member
48 posts
Joined: Jan. 2016
Offline
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.
User Avatar
Member
48 posts
Joined: Jan. 2016
Offline
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.
User Avatar
Member
48 posts
Joined: Jan. 2016
Offline
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.
User Avatar
Staff
133 posts
Joined: Sept. 2016
Offline
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)
User Avatar
Member
48 posts
Joined: Jan. 2016
Offline
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!
Edited by Aladin Sane - Jan. 31, 2018 11:56:14
User Avatar
Staff
183 posts
Joined: Sept. 2016
Offline
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.
  • Quick Links