top of page

Tools: Houdini Procedural UVs!

Jack Kheir

Inspiration

I was working in Houdini the other day when someone who was doing layout (whiteboxing in games) for a scene in Maya, was telling me that it was going to be a nightmare to UV. This suddenly reminded me of the time in which I spent whiteboxing or doing layout for scenes and for the most part we both like UV'ing as we find it therapeutic in some regards. But for geometry heavy scenes it can be a bit of a "nightmare" as my colleague mentioned.


This gave me somewhat of an idea as I was UV'ing some primitives in Houdini for a use case I was working on. I say "somewhat" as I knew that from the get go that my idea wouldn't work with all use cases and would be overkill for others. So, I decided to keep it simple to begin with.



(credit: ArtStation - Environment project, Corey Eastin)


Problem

Now that I had the idea, I needed to make the problem clearer in order to devise a solution for it. So after looking at the layout scenes my colleague mentioned earlier they were in most part interior scenes with reversed face walls, ceiling and floors with some columns.


Tip: When developing tools I always try and keep it simple as much throughout the development I can.





Solution: Basic

In the interest of keeping it simple and after analysing the layout scenes, I decided to start with the columns. I did this as it was the most basic shape and a primitive in the scene and they were uniform in dimensions. After a few attempts you can see the result below, there was some challenges for example with some of the maths not that it was hard but that it needed to work procedurally and not break the flow of the node graph.




Houdini with it's sequential node graph makes complex problems simpler as it breaks them down in to steps, as you would with any problem!

Solution: Intermediate

I decided to step it up to test the extent of the tool, so I chose to apply the same logic to a terrain that has height and noise applied to it, you can see the result below. The 'Grid Size' parameter is defining the axis divisions on the terrain and it's clamped to only accept multiples of 2. On the other hand the 'Terrain Size' is defining as it says the size of the terrain's x & y, this is clamped to multiples of 10. It is worth noting that these clamped values can be changed dynamically if need with another HDA parameter, oh and a 'soften normals' operatation was needed to get rid of the hard-edges on the mesh, you can see the result of that in the second image with the directional light.





Solution: Advanced

I thought it best to create one more use case in which could apply this solution to, so what I decided to do was go back to the column shown earlier. This time I would keep it's dimensions on the grid but add some noise and displacement through some 'attributevops'. Below you will see an okay result I believe, maybe not perfect but with some further tweaks could get closer. The caveat with his at the moment is there are significant draw backs from it being performant as a HDA, those being the 'polyreduce' and 'baker' operations but that is partly because I have used a 4k normal map here.





214 views0 comments

Recent Posts

See All

Comments


bottom of page