Houdini: Bridge Generator

Work In Progress / 30 September 2019

Note: This post was originally written on September 26th 2019.

Today, I started working on a tool to generate bridges. I went with a simple rope suspended bridge, the kind that we could find in an action adventure game on a remote island. 

The goals were:

  • Be able to control the length, height and width of the bridge

  • Be able to control the bending of the bridge

  • Be able to control the elevation of the bridge

I was able to do the basic logic of the bridge generator, but a lot is still missing. The process went relatively well. What I learned doing my fence tool was very useful in this one too. Unfortunately, I had to redo it twice because Houdini crashed and I didn’t save my work properly. Lesson learnt (until the next time ^_^;).

What I want to improve:

  • Currently, the planks do no follow the orientation of the side cables. It doesn’t look too bad when the bending angle is small, but when the bridge is very bent, it’s quite obvious. To fix this, I think I need to generate the normals for each point on my lines and use that normal to influence the rotation of the planks.

  • The general look of the bridge also needs to be improved. A lot of details are still missing as well as controls. At the moment, the grounding cables and poles aren’t easily modifiable. The knots are just sphere. I would also like to be able to generate random cracks on the planks, maybe add the possibility to have broken ones. I would like to add the support to replace the meshes with production quality meshes.

  • I would also like to add a terrain and see how the tools can be improved when used in a more realistic context.

Book Generator in Houdini

Work In Progress / 30 September 2019

Note: This post was originally written on July 24th 2019.

Today, I tried to make a book generator in Houdini. It didn’t go as planned. 

What I wanted to do:

  • Be able to generate X amount of book

  • The books should have various width and height

  • The book should have some variation in their alignment

  • The book should first be generated next to each others

  • If I have time, the books could have different rotation angles

So I managed to have random outputs of books. But I encountered a major challenge (for me at least) where I struggle to find how to achieve what I want. The books should be placed at the end of the previous one. The problem is I am only able to translate with a global number and not based on the bounding box of the previous book. I am pretty sure the solution is something like the following:

  • For each book, retrieve the bounding box in X axis and that to its translation.

However, I am not sure how to make the copy stamp work with the wrangle node.

It’s disappointing, but I’ll continue to think about it and see how I can address this issue. 

 


Houdini: Improving Fencing Tool

Work In Progress / 30 September 2019

Note: This post was originally written on June 27th 2019.

For this Personal Development time at work, I wanted to improve the fencing tool I started working on last month. It didn’t really change visually unfortunately, but the system itself is more robust and flexible.

  • Fix input system

    • Can now use both curve tool and draw curve input

    • Work with closed curve

  • Added better interface control

    • Can switch between fence tool and other types of inputs

    • Added curved control

  • Can switch between heightfields and curves will adjust themselves to the new terrain

Fix Input System

Previously, editing the curve wasn’t convenient as it was then position with a transform node. I modified that in order to adjust the curve and be able to see the curve being projected right underneath on the terrain.

Can now use both curve tool and draw curve input

I also added another input method. It is now possible to draw the curve on the heightfield. It made the generation very quick and easy, but it’s less precise than the curve tool.

Work with closed curve

By fixing the input system, it now supports open and close curves.

Added better interface control

I added a lot of controls trough a UI panel. The goal is to allow the end user to be able to create what they need from this control panel. 

Can switch between fence tool and other types of inputs

You can now switch between the fence generation tool and any input mesh of your choice. In the example above, I used a test mesh provided by Houdini. 

Added curved control

I also added control over the orientation of that mesh. It can follow the orientation of the curve or follow the world orientation. I also added control over the actual rotation of the object.

Can switch between heightfields and curves will adjust themselves to the new terrain

The images above shows the same curve with two different heightfield. I was able to achieve this by fixing the settings of the raycasting node for the curve tool and by projecting the drawn curve onto the terrain. This adds a lot of flexibility to the tool as it means it can adapt to any changes in the terrain.

Future Improvement and Next Projects

At this point, I simple need more assets to play with. The system is now flexible enough to accommodate a lot of meshes and situations. The last step at this point would be to convert that into a HDA and see how easy it is to use in another project. Exploring more possible usages will influence what features should be added. I will definitely revisit this tool when I have more projects and assets done.

Next, I am tossing between developing a basic biome system or a book generator. The book generator might be a little bit easier to do than doing a biome, but both could be great tools to have to facilitate level art.

Houdini: Creating a Fencing Tool

Work In Progress / 30 September 2019

Note: This post was originally written on May 22th 2019

It has been a few months since the did a project on Houdini. I wanted to go back to it so I do not loose the skills I have and also to improve what I already have. I decided to create a fencing tool since it’s a good starting point and actually a very versatile tool that could help us build levels faster (more on that at the end of the post).

Today’s Goals

  • I wanted to be able to draw a curve and generate a fence from it

  • I wanted the curve to conform to a terrain

  • I wanted to be able to control the fence appearance

What I Did

To achieve this, I had to design two different systems:

  • One to create a portion of the fence itself with a control panel that would later be used for controlling the digital asset.

  • Another one to draw a curve and generate the fence from it.

During today’s Personal Development Time, I was able to create both system, however, I didn’t have time to make the fence look appealing with many controls over its appearance.

I faced some challenge over the control of the normals and the fence orientation when ray casting it to the heightfield. Also, the ray casting created a very noisy result at first, so I had to change my approach to keep the input as simple as possible to make sure it was as clean as possible.

Future Improvement

  • I want to create a great digital asset for fence generation with multiple fence styles and controls

  • I want to add randomization of instances when generating the fence so not all sections look the same

  • I also want to see how I can include texture automation and see if I can integrate substance designer

  • I would like to make it compatible with close curve system and open ones (currently works with open)

Future Usage

This tool is the base of many other potential tools:

  • Replacing the fence with shelves and we can create the interior of shops and libraries very quickly

  • Replacing the mesh with lamppost and we can quickly dress the side of a road

  • Replace the fence mesh with houses and we can easily create streets and neighborhoods

  • This will need more work but I believe I can create from this tool a bridge system

Substance Designer: Finishing Sci-Fi Grid

Work In Progress / 30 September 2019

Note: This post was originally written on April 29th 2019

As part of my goals, I wanted to finish the sci-fi substance this month. I ended my last blog post mentioning the improvements I wanted to do on the sci-fi grid.  

Finishing Touches

During lunch time, I was able to add:

  • Damage to the chevron pattern

    • Making the metal peak through and adjust the roughness so the pattern doesn’t have the same level of roughness than the metal underneath

  • Dirt concentrated between the tiles on the sidewalk

  • Rust on the grid

  • Expose parameters and give the end user control over the colour palette and the amount of dirt and damage.

  • Include multiple details in the roughness map

Some variation. It’s not as diverse as the pebbled forest ground because a lot of the elements need a specific scale to tile properly. I tested a few things and my masks all update appropriately if I change the scale of certain elements, but it would require a little bit more work to control the range of change and ensure the material always looks okay.

Final Thoughts

It was a really fun substance to do and probably the most complex one I’ve done so far. Well planning the substance and the mask really helped creating the various maps. For the future, I would like to see how I can make a complex substance like this even more versatile by giving more controls to the end user. 

Sci-Fi Grid in Substance Designer

Work In Progress / 30 September 2019

Note: This post was originally written on April 24th 2019.

Today, I started working on a sci-fi material. Sci-fi isn’t my strongest suit, but I wanted to try to create something more structured compare to the previous two substances I did. Overall it went very well and I was able to control all the elements very easily and didn’t struggle to create the patterns I wanted. I think I improved drastically from my first wood substance I did couple months ago. 

What was done

Using the new techniques I learned from watching Allegorithmic’s webinar with Javier Perez, I was able to control my height maps and how every elements layered on top of each others.

I was able to reach a level close to completion for:

  • Height map

  • Albedo

  • Emissive

  • Metallic

  • Ambient Occlusion

 

I still want to perfect the normal map and roughness.


For Next Time

I want to add some damage and add colour controls for the end user. I don’t think I will give a ton of controls over many elements as this design doesn’t fit this too much.

Continuing Substance Designer Forest Pebble Ground

Work In Progress / 30 September 2019

Note: This post was original written on March 26th 2019.

Progress

Last Personal Development time at work, I started working on this new material. This time, I was able to advance it to a satisfactory level where I am ready to start working on a new one.

  • Cleaned up graph

    • Added boxes to help navigating trough the graph

  • Added moss

  • Made output for both PBR (spec/metalness) and non PBR (specular/gloss) workflow

    • The material was initially done for PBR. When studying Mark Foreman’s medieval tudor bricks, I saw that Substance Designer have an output converter to transform output maps to non PBR. This is very practical as it allows to make the material even more flexible by being compatible with both pipelines.

  • Added colour palette control

    • Based on Mark Foreman technique, I added colour palette controls for each elements so it’s easier to tweak the colours and more colour varieties are now possible in the base colour map.

  • Exposed parameters

    • I exposed all the parameters needed to control the look of this material, from the size of the pebbles to the spread of the moss.

Below are a few examples of how the material can be adjusted with the exposed parameters.

Final Thoughts

It was a very fun project and I feel that the quality of this substance has drastically improved compare to my first attempt (the wood). I was able to put into practice what I learned from Mark Foreman’s webinar and all those new techniques allowed me to better control my material and make it more flexible. There is a new webinar available from Allegorithmic with Javier Perez showing how he did one of his sci-fi material. I am looking forward to see what new techniques and approaches I will learn and how I can apply them when creating my new substance material.

Substance in Unity and Starting a New Substance

Work In Progress / 30 September 2019

Note: This post was originally written on February 28th 2019

Some more details

At first I wanted to test my wood substance in Unity right away, but I got a little carried away by adding a few more details: long cracks and knots. Both of them are created with the shape nodes which I never used before but I definitely want to play more with it as it allows you create any shapes you want. It is a very powerful node.

Long Cracks

  • I blended a few thorn shapes that were distorted by a directional wrap. 

  • Using transform 2D, I offseted the shapes so their placement would be appealing.

  • I then tiled them across the surface.

Knots

  • By blending multiple disk shape of various size, I was able to create a ripple shape.

  •  I added some distortion with the direction wrap

  • I created a splatter effect to disperse it on the wood texture. 

Input Parameters

By adding those two details, I had to adjust the input parameters so the intensity can be adjusted by the end user. 


Using Substances in Unity

Asset Store

Substance isn’t integrated natively in Unity anymore as Unity decided recently to not have any third party system on a native level. You now need to install an external package from the asset store. It is pretty straight forward but reviews shows that the change from being natively implemented to being a package has created problems for a lot of users.

Import

Substance Designer standard files that contains the full graph are .SBS files. To use substances in Unity, you need to publish your substance as a .SBAR file. Once published as a .SBAR file, you can easily add it to a Unity project. 

Inside Unity

Inside Unity, you get the following:

It automatically creates a material that can be used on any mesh. The graph object is where you access the exposed parameters. You used to have to bake the substance but it seems now that every changes made to parameters will rebake the maps used in the material. 

Something else I noticed was the normal map. It looks yellow, which is obviously a sign that something is wrong with the normal (it should be blue/periwinkle). After some research, it seems to be a consequence from switching to a package instead of being natively supported. Unity simply doesn’t recognize the map as a normal map but the output in the editor looks okay, which suggest some magic under the hood is happening to still make it work.

I was also curious to see the difference in renders between Unity and Substance Designer but it looks quite good. Because I designed this subtance to output a specular map, I switched the shader to Standard Specular, but substances are compatible with Unity’s standard shader as well as Standard Roughness.


  


Multiple Instances

It is quite easy to create multiple versions of a material. In this example, the Wood.sbsar object allows you to add instances of a material. Now you are free to apply them to different objects, adjust the material independently from the first instance and bake the maps.


Improvements

As with many things, there are multiple ways to approach the creation of wooden planks in Subtance Designer. The way I did it doesn’t give me enough control over each plank so having variety and unique details for each of them wasn’t easily doable. I think I need to plan better masks for the future. 

New Substance: Forest Pebble Ground

I wanted to play with the shape node and the tile sampler node and decided to create a pebble ground. This time around, I am way more familiar with the nodes and I was able to be much quicker compare to the wooden planks substance. I created this one during the afternoon.

I also took some advices from the monthly webinar I watched from Allegorithmic (write up coming soon!) in order to add some “randomness” to it. 

My main approach was to create the shapes for each elements then tiles them. Some elements have multiple tile texture like the pebble stone because I needed different type of masks (grayscale variation, soft gradient, hard edges, etc). After that, it was just a matter of blending the right masks together and extract the right data.I didn’t have time to properly expose all the parameters for controlling the material. At the moment, only the amount and size of the pebbles are controllable.


I decided to import to unity quickly at the end. It is the first time I’m working with height maps so I was curious to see how it would look. 


Improvements

I would like to add some leaves, grass and moss. I also need to properly expose the parameters so every elements can be adjusted.