Inspiration
During my spare time I love 3D modelling (you can see some of my work here) and this time round I chose to model a wooden crate, as it a very game'y prop/asset to make. You can see the result below. Whilst I was modelling, the more & more evident it came to me that it's the perfect prop to made procedural.
![](https://static.wixstatic.com/media/fe65ab_d6503eb09dba4545be21176cbdd8336f~mv2.jpg/v1/fill/w_980,h_609,al_c,q_85,usm_0.66_1.00_0.01,enc_avif,quality_auto/fe65ab_d6503eb09dba4545be21176cbdd8336f~mv2.jpg)
Blueprint
I mentioned above that the wooden crate was the perfect prop to make procedural, I say that as it's very clearly visible to see that their are multiple components that make up the crate. We have wooden planks for the sides, top and bottom and supporting planks on each corner and each side, below is those components broken down with my nearly illegible scribbles.
Tip: Gather as much real-world reference as you can, as that will then allow you to easily breakdown the steps, thus creating a blueprint, in which you can then apply to your node graph.
![](https://static.wixstatic.com/media/fe65ab_a2fc5d51d9764ad0bbf77a3da6fd5805~mv2.png/v1/fill/w_980,h_609,al_c,q_90,usm_0.66_1.00_0.01,enc_avif,quality_auto/fe65ab_a2fc5d51d9764ad0bbf77a3da6fd5805~mv2.png)
From my scribbles (above) I worked out that there were four components that make the crate and this then provided a more visual representation of the procedural nature of it. Each plank will share a lot of the same attributes, although meaning different actions for each sets of planks, they are:
Width
Height
Depth
Padding
Number of Planks
Now that there are some shared/core attributes that make up the procedural planks lets take a closer look at each of the components. The first component marked as red above is the Top & Bottom Planks, the second & third (blue & yellow) being Supports Planks both horizontal and vertical and finally Front, Back, Left and Right Planks. From the breakdown above, some constants are reveals, take the supports we know what there will always be four support planks both horizontal and vertical. However, there are some unknowns, for example the number of planks top and bottom will vary depending on the width and depth of the crate overall. These are all variables & constants we can bring in to the solution and eventually the HDA.
First Pass
So, as discussed in my previous post it is always recommended to keep as simple as possible by breaking down the steps. As seen below, I started with the core parameters that will drive the procedural components of the wooden crate. The colour of the plank denotes a unique plank out three that will eventually have different details such as veins etc.
![](https://static.wixstatic.com/media/fe65ab_4e8a9116500e49c99cb0c77677ecec7e~mv2.gif/v1/fill/w_980,h_551,al_c,usm_0.66_1.00_0.01,pstr/fe65ab_4e8a9116500e49c99cb0c77677ecec7e~mv2.gif)
Tip: start off with the core procedural parameters you need as they will be your base that you expand on. Also, use common tricks such as colour to help visualise the results.
Second Pass
After tackling the procedural core components as discuss above, I then decided to solve the top and bottom planks, as briefly mentioned in the 'Blueprint' section they are two separate and unique components that make up the wooden crate as a whole. First of all the width and depth will determine the amount of planks needed for the bottom. However, I clamped the min & max width so that there would always be three top planks.
Tip: where you can try and implement some variety in your resulting mesh, as that will help to make it look more organic and natural.
![](https://static.wixstatic.com/media/fe65ab_9daf35b4d90f4c7cb5e520b8c8d57f39~mv2.gif/v1/fill/w_980,h_488,al_c,usm_0.66_1.00_0.01,pstr/fe65ab_9daf35b4d90f4c7cb5e520b8c8d57f39~mv2.gif)
An executive design decision I made for both ease and aesthetic. You will see above, that I play around with both the padding of the top planks and the offset, as I thought maybe the crate could be slightly open or there was enough padding to have a peak inside.
Third Pass
Now that the procedural core functionality was pretty much there, I thought it best to take a step further and treat it as you would a hero prop in a game or film. So I decided to add some noise and displacement through some 'attributevops'. Below you will see a first pass/rushed result just for quickness to demonstrate that it can be done. The video below shows you the same result as the 'Second Pass' but with a nicer aesthetic. The result as you can see isn't as quick or performant as both 'polyreduce' and 'baker' operations are slowing it down, however, I discuss very briefly in the final section 'Next Steps' on how you could tackle this.
Final Pass
Again, for the purposes of this post and demonstration and quickness I decided to combine the resulting reduced mesh then uv and bake the normal map. Below you will see the finished the result, of course there is a lot of room for improvement say in the poly reduction and the uvs but it isn't half bad. Because of the colors, that I assigned to the sets of planks I can easily create a id map to target those uvs as you will see in the second image below and texture accordingly.
![](https://static.wixstatic.com/media/fe65ab_bd20098026df46c2a1951a1a29a24565~mv2.jpg/v1/fill/w_980,h_680,al_c,q_85,usm_0.66_1.00_0.01,enc_avif,quality_auto/fe65ab_bd20098026df46c2a1951a1a29a24565~mv2.jpg)
One final note, you will also see in the above image the targeted polycount and the resulting wireframe in the image below, this too can also be made as a parameter and made to be procedural, say if you were targeting for games. Then in the respective game engines you could higher or lower the tricount accordingly.
![](https://static.wixstatic.com/media/fe65ab_f5f5165bf71c44fa9c14a4d7d04f6244~mv2.png/v1/fill/w_980,h_649,al_c,q_90,usm_0.66_1.00_0.01,enc_avif,quality_auto/fe65ab_f5f5165bf71c44fa9c14a4d7d04f6244~mv2.png)
Next Steps
As mentioned above in the previous paragraphs, there is definitely room for improvement such as the uvs, baked maps, displacement. But because of Houdini's non-destructive workflow they can be easily implemented.
The most notable improvement that can be made, I believe is user feedback. Currently, the way the HDA is setup the changes aren't quick to present themselves as the node graph is having to go through and bevel, voxel, displace and reduce the mesh(es) then finally it bakes the resulting normal map from the high-poly mesh. I think the way in which I would tackle this is by thinking about how a user/artist/developer will use your tool/HDA. So, in this case I would prevent the 'Third' and 'Final' passes until the user is happy with the resulting mesh, at which point there could be a button in the HDA, which then activates the further passes and cooks the mesh allowing them to see the end result as seen in the 'Final Pass'.
Commenti