Omar Al Salihi shared his knowledge gained at CGMA class Organic World Building: Alphas & tileable textures in ZBrush, blending nodes in UE4, lighting and more.
Omar Al Salihi kindly shared his experience and knowledge gained during CGMA course Organic World Building in UE4 with Anthony Vaccaro: making an environment from the concept to the final image, creating Alpha images and tileable textures in ZBrush, working with blending nodes and controlling normal map details in UE4, lighting, LUT.
Hi, everyone. My name is Omar Al Salihi, I am a 3D environment artist. For 4 years, I’ve worked as a texture artist at Rubicon Group holding studio in Jordan Amman. Before that, I worked as a concept artist at the information technology group company where I was responsible for creating 2D art library provided with animation.
After the first time, I played on NES, my passion for creating video game levels rose. Working on 3D scenes motivates my artistic imagination to create every tiny detail to enhance the environment and make it very believable and realistic.
I want to thank 80 Level and CGMA, for offering me the great opportunity to present my recent artwork Alkaline River created within Organic World Building course under the supervision of Anthony Vaccaro. The project’s main theme was close to the environments from Horizon Zero Dawn and God of War.
In this article, I will share the work process, some tips I’ve learned during the course on how to create the environment from the concept until the final image, and some other things such as the techniques on how to create blending nodes in Unreal.
Concept Art & Blocking
The first step was creating a concept art based on references, so I started drawing the mountains and a huge robot sitting under the waterfall. After reviewing the concept with Anthony we decided to remove the robot from the concept and focus on the nature part, the mountains, the river, rocks, stones, etc.
The 3rd step was sculpting rocks and big boulders in ZBrush, and in order to help this process, I created many Alphas.
Creating Alpha Images in ZBrush
To create Alpha images in ZBrush follow these simple steps:
Setting the ZBrush document,
- Turn off PRO resolution.
- Set the resolution to 1024×1024.
- Resize the document.
To start sculpting in a flat plane surface, make sure to
- Make Poly mesh 3D
- Have enough topology resolution of the plane, between 1 to 5 m.
Then start sculpting the shapes the way you want.
Go to the alpha panel and select grabDoc under Transfer, but make sure that the sculpted plane is in the center of the document by pressing the F key.
The final step is to export the alpha image so you can use it again.
Now, apply the Alpha to the sculpted rocks and mountains.
And this is all the models that I created in Maya and sculpted in ZBrush used in this project.
During week 5 of the Organic World Building course, we learned how to create tileable textures using ZBrush making materials to blend between textures in the Unreal based on the Height maps and how to create vertex painting. It was very helpful to create vast grounds with many tileable textures without noticing the tiles, so I created 4 tileable textures with ZBrush techniques and Substance Designer: the River Stones, Rocky cliffs, Grassy, and Mossy textures, and finally the snow.
Creating Tileable Textures in ZBrush
Here’s a tip on how to create tileable textures in ZBrush.
- Create a ZBrush document the same way when we created the alpha document.
- Turn off the perspective mode in the viewport panel.
- Create a flat plane, duplicate it, and make it poly mesh 3D.
- Place plane No.1 on the top, and move Plane No.2 to the bottom.
- Go to Deformation in the Tools plane and select plane No.2, then go to the size and make it -5.
- Select Plane No.1 and press F to focus on the top plane.
- Select your sculpting brush, then go to Brush Tab, Curves, and change the wrap mode from 0 to 1. Notice that the wrap mode will be 0 when you select a different brush.
- After finish sculpting, go to Grab the Doc to have your tileable textures.
To illustrate what I’ve said about the tileable textures in ZBrush, here are a few basic results after using the Grab Doc and some adjustment in hue and saturation in Photoshop.
The main texture is the River Stones. I have adjusted it in Unreal material editor to add the feel of wet and moist ground between the stones after snow thawed on the small cracks. All the textures in this project were built on top of the river stones using its height map.
After creating the River Stones, I wanted to add a layer of moss, so I created the Mossy texture on top of the stones using Substance Designer.
Below is the final result of my Mossy texture. The moss intensity was based on the River Stones height map.
Blending Nodes in Unreal
There are very many ways to blend the textures in the Unreal editor, and here are a few samples of creating blending materials in Unreal 4. Using the Lerp node is the simplest way to blend 2 textures, and adding a Height Lerp Blend will give a little bit of sharp edge blend.
Bump Offset mapping gives a surface the illusion of depth by modifying the UV coordinates in a creative way to help further displace the texels from the surface of the object. This illusion gives the surface more details than it really has.
Parallax mapping in Unreal Engine
I have used the parallax shader on the frozen lake just to show the fake depth that can be created under the frosted thin ice surface. The next images show the textures and the material network in Unreal and the final result of the ground texture material in Unreal 4.
Landscape Layer Blend Node
The Landscape Layer Blend node enables you to blend together multiple textures or material networks so that they can be used as Landscape layers. I have used it for my ground on an array of 4 textures based on the height map of the River Stones only. Here is how I did it.
Powering Up Your Normal Map Details in Unreal 4
Now I would like to talk about how to create a sharp normal map material in Unreal. It’s very simple:
First, the Normal Map Power:
- Drag your Normal Map to the Material Editor.
- Create a Component Mask and select only the Green and Red channels from the left side of the screen.
- Connect the Normal map output to the Mask input.
- Create a parameter by holding the S key and left clicking on the editor, and name it Normal Intensity. Add a value of 1 as the default value of the parameter.
- Create a Multiply node by holding the M key and left clicking on the editor, connect the component mask to the A input and the intensity parameter to the B input.
- Create an Append Vector node, connect the Multiply output to the top value and add the Blue channel from the normal map to the bottom value.
Second, the Normal Map Details:
- Create a Texture Coordinate node.
- Create a parameter and name it Texture Tile.
- Create a Multiply Node, connect the Texture Coordinate node on top and the Texture Tile parameter to the bottom.
- Drag and Drop the tileable Normal Map to the material editor and connect the Multiply output to the UV tileable normal map input.
- Create a Component Mask and select only the Green and Red channels.
- Connect the Normal map output to the Mask input.
- Create a parameter and name it Normal Detail with a value of 1.
- Create a Multiply node, connect the component mask to the A input and the Normal Detail to the B input.
- Create an Append Vector node and connect the Multiply output to the top value.
- Create a constant expression by holding the Number 1 key and left clicking on the material editor, with a value of 0.
- Connect the constant expression to the bottom value of the Append Vector node.
The final stage is to blend the Normal Map power with the Normal Details:
- Create an ADD math node by holding the A button and left clicking on the editor.
- Connect the Normal Power Append node output to the Add A Value.
- Connect the Normal Details Append node output to the Add B Value.
- Connect the Append node to the Normal map in the Material Attributes.
- Save your Material and close the editor.
- From the content browser, select your material and left click to create an instance material.
Now you can control the value of your normal details.
Lighting and LUT
For lighting, I created 3 directional lights and positioned them in different Z angles. The first directional light or the Key light determined the main color of the lighting and the time. The second two directional lights are for the shadow color, in my case, it was some kind of purple-to-blue color most of the time. The next one is the backlight which helped to limit the dark shadows. I always try to avoid the black shadows as much as possible. I added a skybox light too, which had a kind of green-to-blue color. For my final lighting based on A Lookup Table used in Unreal Engine 4, it is a 16x16x16 color neutral LUT unwrapped to a 256×16 texture.
This is the original LUT from the Unreal Engine doc.
And here is the version adjusted in Photoshop.
You can’t really see any difference, but here’s how you work on it:
- Grab a screenshot of the environment you created and adjust the colors in Photoshop by using only New Adjustment Layers.
- After you find the color tone you like, just drag and drop all the elements (levels, brightness, hue, saturation, etc.) on top of the LUT document and save it as .png with no compression.
- Import the new LUT to Unreal and open the image to change these properties:
- Mip Gen Settings: NoMipMaps
- Texture Group: Color Lookup Table
- Go to the Post Process Volume, use the Details panel and under the Color Grading > Global section, enable Color Grading LUT and apply your LUT.
If you want to find me on social media, here are the links:
Omar Al Salihi, Environment Artist