In this lesson, you will learn how to create a procedural Sci Fi Crate Generator in Houdini that can be used to create custom props for game engines such as Unity and Unreal. You will start by modeling the crate using procedural techniques that can be updated and adjusted using high level controls. You will then build a Houdini Digital Asset which can then be loaded into Unity using the Houdini Engine plug-in.
You will then create texture maps by baking a high res crate to low res geometry then you will output a variety of masks to be used as part of a Unity shader. Finally, you will learn how to add decal sheets to the asset to create fine details on the crate.
INTRODUCTION
Explore the final asset and its key features. Learn about the techniques being covered in this tutorial series and how they are being applied to the crate. You can also download the finished asset from the project files above and test it in the Unity editor using the Houdini Engine plug-in.
Length: 05:54
PART 1 | MODEL THE CRATE
Starting from a simple box, learn how to model the crate using bevels, extrusions and booleans. Learn how to build each part of the crate while referencing other parts so that changes made to the original box cascade to all of the details.
Length: 22:50
PART 2 | CREATE THE DIGITAL ASSET
Once the crate is ready, encapsulate the network nodes into a single digital asset which can be stored on disk and shared with other apps such as Unity. You will then build a high level user interface by promoting parameters and organizing them using folders. As you make changes, you will rebuild the asset in Unity to test the new controls to make sure they work properly.
Length: 30:00
PART 3 | BAKE THE TEXTURE MAPS
Starting with a high-resolution version of the crate you will then use a low res version to bake out normal maps. You will also use curvature and other features of the crate to generate masks which can be used to construct a Unity material. When you make adjustments to the crate, you can then update the maps using built-in baking options.
Length: 31:30
PART 4 | ADD DECALS
Using a decal sheet, you will add secondary details to the crate. You will set up the network to accommodate the decals and promote parameters to the asset to help you control their placement. You can then easily switch to other decal sheets to give each of your crates a unique look.
Length: 18:44
COMMENTS
teotigraphixllc 5 years ago |
High quality, thanks!
dothanhphongla 5 years ago |
It is so clear, thanks fro sharing. please post more videos , my tutor
harryabreu 5 years ago |
You are a very fine teacher!
I loved all your explanation congratulation!!!
BlissettDMB 5 years ago |
Perfection, Perfection, Perfection. Knowledge has never been so much appreciated. Thank you SideFX and thank you Simon...
MORE!!!
That being said, I've got a question about using this workflow via PDG's.
The technique for getting the top and bottom of the Crate works perfectly... except... when trying to use the same HDA via the HDAProcessor, only one part of the Geometry gets into Houdini.
Is there a method to make this work through PDG's?
See https://youtu.be/hPb0Owt4T8s
Simon_V 5 years ago |
Thanks! Great to see you like the tutorials.
It seems HDA with multiple objects is not working great with PDG.
I did a small test, I created a HDA with 2 objects a sphere and a box (on object level not SOP level). The result is only showing the box and not the sphere.
So solutions here could be making the full crate in one SOP HDA or adding an option in the current HDA to switch between showing the crate or the top panel, then run the HDA twice in the PDG. One is running the Crate showing the bottom part and the other one is running the top part.
You could also submit this issue and see if they know more: https://www.sidefx.com/bugs/submit/
bobc4d 4 years, 10 months ago |
really enjoyable and informative tutorial. I am having one issue, at 8 minutes into video where you bring two node stacks into a boolean, the crate come out black. I added a color node (red) and the only thing red is the cut out shapes. I am running H18.0.325. I have tried all the other boolean nodes, nothing helps
bobc4d 4 years, 10 months ago |
additional information and above. it seem the crate box is turned inside out, the red is inside crate box.
Simon_V 4 years, 10 months ago |
Thanks!
It seems that the boolean operation is not done properly. This could mean that one of the input models in the boolean have issue. Boolean works best with closed shapes and also no flipped polygons.
If polygons are turned inside out (or flipped) use a reverse node or a polydoctor (with correct winding of polygons enabled).
Hope this helps.
Arvan 4 years, 8 months ago |
Unless it's a versioning issue (I'm using H18.0.287), I do not get the same results when following the tutorials - after comparing files side-by-side I am finding changes that weren't discussed (aside from the H17 vs H18 nodes I have to fix). Were the recordings being paused and changes performed that were missed in the commentary? It's an interesting series, but if I'll have to compare files node-by-node for every setup to make them work, then I'll have to skip them.
Simon_V 4 years, 8 months ago |
Hey, opening the file in Houdini 18 seems to work with no problems for me. Which parts are not working for you?
gabhpe 4 years, 8 months ago |
Hello SImon congrats on the tutorials, I am learning a lot.
One question. I can´t make the bake of the masks works inside unity. Normal map bakes just fine but the mask doesn´t work. Is there another way to bake it? I´ve tried the simple baker too, but I have the same problem.
Inside Houdini everything works just fine, but inside Unity the mask baking doesn´t.
I am using houdini indie 18.0.391 with sidefx labs v.401 and Unity 2019.3.0f5
Best Regards,
Gabriel
Simon_V 4 years, 8 months ago |
Hey Gabriel,
That is strange, I will test it out as well.
Maybe updating the Labs tools or Houdini could work but not sure.
Kind regards,
Simon
gabhpe 4 years, 8 months ago |
Yes it is really odd. I can bake the other maps, but when I try to bake the mask i doesn´t work.
Thanks anyway Simon
KieranLatham 4 years, 2 months ago |
Hi Gabhpe/Siver.
Was a solution ever found to this?
I am having the same issue and am unable to generate the mask map inside unreal/unity.
It is possible within Houdini, so I could export adapt the hda to export fbx from within houdini with the maps generated based off it, but defeates the purpose of an in engine HDA.
KieranLatham 4 years, 2 months ago |
Okay I found a solution.
In type properties for the HDA, I exposed the baker as an editable node.
and have now generated the 3 maps inside Unreal.
Cheers.
dj2freesoul 3 years, 5 months ago |
Hi Simon,I`m Daniel, Sorry to disturb you suddenly,I`m new for your amazing tutorials about houdini,I started the Sci Fi Crate tutorial,and I really had three tense problems with HDA now,The first one is why the finaly procedural modeling`s UV is always different from Houdini in Unity and Unreal.The second one is why The baker parameter about bake and Outpath alway doesn`t work in Unreal.The last one is why the baker parameter only can baker normal map in Unity.Really thanks for everything,I really like your great tutorials and projects so much,they are always so wonderful.
bugajskimaciek 2 years, 3 months ago |
Hi Simon, im Using Houdini 19.5 and unity 2022.1.12f1 im using HDA attached from your files, but the bake button isnt working and its not generating any textures. Ive changed Lab::mas_baker:: to 5.0 (newest) but it didnt helped(although now my unity is taking some time to think before producing an errror, while in previous node version :3 it was producing an error instantly, dont know if its a progression or a regression tho)
Im attaching the Unity error
Houdini Engine: Failed to cook asset Crate_Generator5!
===================================
Node Errors, Warnings, and Messages
===================================
/obj/Crate_Generator5/Crate_part1/sop_maps_baker1/cops_baking/rop_Nt:
Error: Cook error in input: scale7.
/obj/Crate_Generator5/Crate_part1/sop_maps_baker1/cops_baking/rop_Color:
Error: Cook error in input: background_color1.
/obj/Crate_Generator5/Crate_part1/sop_maps_baker1/cops_baking/Position:
No such file or directory
UnityEngine.Debug:LogWarningFormat (string,object[])
HoudiniEngineUnity.HEU_Logger:LogWarningFormat (string,object[]) (at Assets/Plugins/HoudiniEngineUnity/Scripts/Utility/HEU_Logger.cs:56)
HoudiniEngineUnity.HEU_HoudiniAsset:ProcessPoskCook () (at Assets/Plugins/HoudiniEngineUnity/Scripts/Asset/HEU_HoudiniAsset.cs:2728)
HoudiniEngineUnity.HEU_HoudiniAsset:ProcessHoudiniCookStatus (bool) (at Assets/Plugins/HoudiniEngineUnity/Scripts/Asset/HEU_HoudiniAsset.cs:2891)
HoudiniEngineUnity.HEU_HoudiniAsset:RecookBlocking (bool,bool,bool,bool,bool,bool) (at Assets/Plugins/HoudiniEngineUnity/Scripts/Asset/HEU_HoudiniAsset.cs:2312)
HoudiniEngineUnity.HEU_HoudiniAsset:RequestCook (bool,bool,bool,bool) (at Assets/Plugins/HoudiniEngineUnity/Scripts/Asset/HEU_HoudiniAsset.cs:678)
HoudiniEngineUnity.HEU_HoudiniAssetUI:OnInspectorGUI () (at Assets/Plugins/HoudiniEngineUnity/Editor/UI/HEU_HoudiniAssetUI.cs:288)
UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&)
Aleks_OSS 2 years, 2 months ago |
The selected subnet has references to nodes outside
the subnet, or has references that use absolute paths
to operators inside the subnet. These references
should be converted to relative internal references
or this operator type may not work properly in other
Hip files.
/obj/subnet1/Crate_part_01/maps_baker1/cops_baking/rop_MatID/coppath: /obj/geo1/gaussian_bake/cops_baking/scale11
Unable to resolve node.
/obj/subnet1/Crate_part_01/maps_baker1/cops_baking/rop_Thickness/coppath: /obj/geo1/gaussian_bake/cops_baking/scale10
Unable to resolve node.
/obj/subnet1/Crate_part_01/maps_baker1/cops_baking/rop_Curvature/coppath: /obj/geo1/gaussian_bake/cops_baking/scale9
Unable to resolve node.
/obj/subnet1/Crate_part_01/maps_baker1/cops_baking/rop_PBRMaps/coppath: /obj/geo1/gaussian_bake/cops_baking/scale2
Unable to resolve node.
/obj/subnet1/Crate_part_01/maps_baker1/cops_baking/rop_CustomAttributes/coppath: /obj/geo1/gaussian_bake/cops_baking/scale1
Unable to resolve node.
/obj/subnet1/Crate_part_01/maps_baker1/cops_baking/rop_Color/coppath: /obj/geo1/gaussian_bake/cops_baking/scale4
Unable to resolve node.
/obj/subnet1/Crate_part_01/maps_baker1/cops_baking/rop_Nt/coppath: /obj/geo1/gaussian_bake/cops_baking/scale7
Unable to resolve node.
/obj/subnet1/Crate_part_01/maps_baker1/cops_baking/rop_AO/coppath: /obj/geo1/gaussian_bake/cops_baking/scale6
Unable to resolve node.
/obj/subnet1/Crate_part_01/maps_baker1/cops_baking/rop_WorldNormal/coppath: /obj/geo1/gaussian_bake/cops_baking/scale5
Unable to resolve node.
/obj/subnet1/Crate_part_01/maps_baker1/cops_baking/rop_Height/coppath: /obj/geo1/gaussian_bake/cops_baking/scale8
Unable to resolve node.
/obj/subnet1/Crate_part_01/maps_baker1/cops_baking/rop_Pos/coppath: /obj/geo1/gaussian_bake/cops_baking/scale12
Unable to resolve node.
Do you wish to save anyway?
Gherregan 7 months, 4 weeks ago |
HI, thank you for posting this amazing tutorial.
But anyway, I have some issues with the node " SOP_Axis_Align " and the code of it.
Can you reply the creation of the node or the expression, or where I can find it please.
Thank you.
Please log in to leave a comment.