Stas Rudenok shared an enormous breakdown of the Egypt Theme project and explained how various Egyptian-styled materials were created in Substance and ZBrush.
Hi, my name is Stas Rudenok, I am a 3D Artist and I work remotely at the Cyprus-based studio Apella Games. I've been in the video game industry for two and a half years. Before that, I worked in a completely different field, and my main hobby was music, however, I was interested in video games playing Dandy and Sega consoles while I was a child.
At the age of 26, after nine years of music practice, I left my music band and decided to try myself in something different. My wife advised me to pay attention to the sphere of three-dimensional graphics. This captured me quickly and I am very thankful to my wife for the advice to find my place. I am pleased that the game development industry has become my main profession.
Now I'm 31, and 2 years ago I got my first job as a Prop/Texturing Artist, taking part in the development of top-down battle royale Dominance, powered by Unreal Engine. Besides that, I participated in other projects with realistic and stylized settings.
Now my focus and my favorite area is the development of environments and environmental materials. I like to tell stories of various subjects through their textures, so I try to constantly evolve in this direction, study pipelines for tile creation, texturing and as well work on developing my artistic taste.
This work was inspired by the Assassin's Creed series, specifically Origins and Odyssey. I’m quite an old follower of the development of these games, and I’m really impressed with how expressive their materials are. I’ve chosen an antique theme for my work, and also decided that part of the work would be created in ZBrush to practice sculpting, and materials with organic shapes will be created in Substance Designer. These two software programs daze me with their sledgehammer versatile potential and the combination of these two allows me to achieve fabulous results.
Substance Designer is true magic, which allows you to radically change and recalculate the material on the go, change its properties and design. A non-destructive pipeline in the Substance Designer environment makes it possible to return to any part of the graph and make changes, achieving the result that is most suitable for the current task, and all the details and nuances created earlier will be adjusted to the newly applied idea.
ZBrush, in turn, gives me more specifics in working out the artistic aspects of the material. Yes, it will be more painful and difficult for me to roll back if there is a need to make some edits, but nevertheless, if I clearly understand what result I need upon completion of the work, then the sculpting process is a very meditative and enjoyable activity, where I decide myself where and what kind of detail I want to make.
So, I started with the Egyptian blocks depicting the god Toth. I sculpted the blocks themselves in ZBrush because I had previously completed a wonderful course from Dannie Carlone and wanted to practice the acquired skills.
I collected surface references that told me about the materials' damage nature, shapes, and textures, and then proceeded to sculpting. The first thing I did, before diving into the details, was to frame the edges of the playground with bricks using ArrayMesh, bake the resulting result, and check the correctness of the tile inside the Substance Designer. After that, I got down to the inner area and work on the details. As I said earlier, this is a very enjoyable and meditative process.
In my work, I used a standard set of brushes such as TrimSmoothBorder, Move to adjust the shapes, and also used a third-party OrbFlattenEdge brush to refine the detail.
When the sculpting was finished, I extracted the Height Map, ID Map, Normal and Grayscale Mask from the result and went with these maps to Substance Designer.
The first thing I did inside the SD was intensity reduction of the Normal Map by running it through the Normal Intensity node. Then, to speed up the work with the surface of the stone, I used the procedural sand texture material that I’ve created in advance
As a next step, I complement the surface of the material with a noise map using the Normal Blend and Normal Combine nodes. Usually, I use BnW, White Noise, or Fractal Sum Base, blend them in Copy mode with very low opacity, and at first glance, their influence is not noticeable, but in fact, their presence literally vitalizes the material with micro-details, which are underlined with the lighting.
Then, using Photoshop, I created masks for the hieroglyphs and draw the figure of Toth (for the figure of Toth I made an ID Map which will later be useful to me in Substance Painter. Once done I ran these images through a series of Slope Blur and Directional Warp to distort the contours and achieve natural-looking damage. When the work in Substance Designer was complete, I switched to Substance Painter to clarify the shape of Toth via ID map by creating the paint texture and aging Toth’s shape. I made this because I wanted to handmade the halftones and wear effects
Coins were the second material I worked on. I started with a collection of references to antique coins that were widespread in ancient Egypt, dedicated time to find high-quality images of the profiles depicted on the surface, and made alphas out of them to be applicable in ZBrush.
After the three types of coins were sculpted, I created a Multi Mesh from them, then, using the experience of past work, I made sure that the tiling of the material is correct and, using the amazing NanoMesh tool, I quickly scattered coins over the surface of the plane. I set up a random turn, position, and tilt angle for them. Also, for this task, you can use an amazing plugin created by Lukas Patrus, it makes it easier to create tile materials using ZBrush, but this specific work I managed with the standard functionality of ZBrush.
After I got the needed material cards, I switched to Substance Designer. I used the Height Map as the main map to create the coins and blended it in Copy mode with the BnW noise map to give it a micro-texture. I was not aiming to overload the surface of the coins with excessive chips and scratches, cause in my opinion an acceptable level of details was created during the sculpting stage.
I used Uniform Color as the base color and diluted map effect with the Dirt node. Then, I selected the edges and outlines of the coins using two nodes – Curvature Smooth and Sobel, mixed them in AddSub mode, finetuned the result using levels, and then, using a Gradient Map, mixed in the main color in Overlay mode. As a result, this approach made the outlines of objects and images on them more readable
This part of the work is highly dependent on the right intensity adjustment, otherwise, the image will be overnoised, and details will become too eye-intrusive. And as a finishing touch, I wanted to make accents to revive the material, so I added blood drops using Gaussian Spots heavily changed with tools like Blur, Histogram Scan, and Slope Blur. As a final deformation, I connected tools to MultiDirectional Warp, which, based on Clouds as a driver, created a splashing effect. The achieved result I used as a mask, and the color was set at a low intensity so that the accent is minor and doesn’t attract attention heavily.
Working on the sand material was of the greatest interest to me. Organic materials do not have clearly defined geometric shapes and therefore give more freedom to experiment and help to develop an artistic view. I wanted to make loose sand with a fractured grainy texture and sand dune bends created by the winds.
The first thing I did in both cases was creating large shapes where Tile Sampler came in hand with the Gaussian shape. The result was inverted and connected to the Edge Detected node, after that the forms were processed with the Bevel. Then I finetuned the whole thing with a Curve node and blurred it out to soften the edges on the shape peaks. Also, I stretched the shapes a bit using Transform 2D and connected everything to Make It Tile Photo because stretching the shapes broke the tile.
To make the pattern look more procedural and have a more natural variety of shapes, I used a series of Warp and Directional Warp nodes. During one of the iterations, I distorted the pattern by itself, connecting the blurry result to the lower input as a driver. This shifted the weights a bit and added variety. After all the operations I applied Histogram Range to slightly expand the height range so that I can achieve further detalization.
The middle-sized pattern forms were created with Tile Sampler as well. The forms were inverted and distorted using Directional Warp. Then I enlarged the tile using the Safe Transform node, connected the pattern to Transform 2D, and manually shifted the picture. After that, I blended both results with Max Lighten, resulting in quite a noisy waviness.
Next, I blended the large and middle-sized shapes in the Overlay mode, adjusting the opacity just enough so that I felt it was acceptable. There are no generally accepted rules, it all depends on the occasion and you will know better what intensity is needed while working on the material.
As a result, I got large and middle-sized shapes that created diversity in the drawing. But since I was working on a large and grainy texture, I wanted to create the feeling of sprinkling sand under its own weight by adding a little looseness. And I used a mask in the large and medium shapes blending node so that the deformation created by medium shapes was in the deepenings
For the mask applied to the Blending node, I used the Shadows node since these deepenings were important to me. I made them more intense with Levels and inverted. Then I passed it through the Bevel node to create a fading effect (in this case, the Distance node is also suitable to which only one input is connected, this will also create a fading effect).
As a result, I diversified the shape of the surface in the deepening between the large shapes by adding medium ones there. I liked this result and proceeded further by adding tertiary shapes to my drawing. The approach was as easy as taking the medium shapes and zooming in the tile one time with Transform 2D, then blending that into the large and medium details in MinDarken mode, thus animating the surface and adding diversity to it.
To make the surface even more living thing I tried to interpret a wind effect on the surface of the sand. To do this, I used the Get Slope node, which can be found on Substance Share. I put the pattern through the node and blurred the result out by mixing it in the Overlay mode with an intensity of 0.04. Afterward created a second iteration of the winding trails and connected the entire graph to the Gradient Map. I contained two-color directions inside the Gradient Map in order to use them as a driver in the Vector Warp node, and in the top input, I connected a BnW node with a small drawing. Thus Vector Warp created curly whirls with micro noise for me.
These swirls afterward were connected to the Blur node so that the noise was not aggressive and blend into the overall graphic overlay. I adjusted the transparency to an acceptable result in my opinion. Otherwise, there are no additional hints in my material.
Moving on I added stones of different shapes to the surface and micro-details using noise maps. Here I would like to point out one cool technique that I learned from masters Daniel Thiger and Joshua Lynch, which is basically an imitation of the uneven surface of grains of sand that react to lighting: To do this, I took the White Noise node and converted it into a Normal Map which I processed with the Sharpen node plus combined with the main normal using Normal Combine. The resulted in appearing individual grains of sand in the material, which played great in the light.
Working with color was also nothing supernatural. First of all, I set the main color using the Uniform Color node and added multiplicity with the Gradient Map with connected BnW2 node inside. This node was used as a mask so that the added color complements the base one. The blend mode was set to Copy. Then I highlighted the individual islands of micro-noise by adjusting the maps using Histogram Scan and highlighted the stones. At the very end, I adjusted the entire color using the Contrast Luminosity node and processed it using the Sharpen node.
The approach to working with Roughness was as simple as with the light: here is a graph of the Roughness Map. The main Roughness is set using the Uniform Color node, and the rest of the detail is small glare elements that create the effect of iridescent grains of sand.
The process of creating sand dunes was faster because I already had experience and work from past material. To start I made large and small forms, mixed them, and diversified their heights, based on the experience of past material, then I added stone chips on top of the sand, but this time chips intensity was a bit more than in the previous graph to achieve diversify the shape and size of the stones.
And as a final touch, I added an imitation of small grains of sand using White Noise, which I converted to Normal and mixed with the main Normal Map using Normal Combine, this was mentioned earlier in this article.
When working with color, I started with Uniform Color to which I mixed the Height Map in Overlay mode, which was preliminarily processed through the Gradient Map, and left it in gray shades. I did this in order to add highlights to the peak points of the heights and have a slight accent on them. The main thing here is to avoid painstaking, otherwise, the bright places will make noise and draw a lot of unnecessary attention. Then I began to highlight the stone chips with color: slightly highlighted the deepening between the sand dunes with dark halftones to add depth to the overall look.
The finale to the dune colors work was the Sharpen node, I like to use it at the very end, this helps the detailing crisp and clearly readable. As always, the main thing is not to overdo it with its value: I usually use values between 0.05 and 0.2.
This part of the work was as well interesting to me because I desired to practice work with trim texture. I started the work with references, here it was difficult to decide what I want to see in the end. I came across many cool and curly antique images and frescoes that relate to the culture of Ancient Egypt. The only thing I knew for sure was what I wanted to see scarab on one of the trims, and on the other, something that would have traces of ocher paint. After collecting the visual library and sorting out what I needed, I kicked off the work.
I made the whole trim inside ZBrush. It is important for me to keep myself in good shape and not lose my skill in working with this program. Therefore, the sculpting process always gives me pleasure. The stone block, the scarab, and a plate with a golden image were sculpted, but the symbols were found by me on the Internet in vector format. I treated them in Photoshop, softened the edges, and used them as alpha masks in ZBrush. Unfortunately, I am not an expert in Ancient Egypt and have not submerged deep enough in ancient writing, so I really hope that the symbols do not advertise the sale of soup and do not offend anyone.
After the sculpting work was completed, I created a tile using the Array Mesh tool. In general, there are different ways to create a tile in ZB~rush, however, I like to use the Array Mesh tool. Be sure to check out these free tutorials on the topic:
I am sure that you’ll catch the principle straight away, it is convenient because it clearly shows how your texture will be tiled and it is very difficult to make a mistake. Next, I extracted the standard set of Height Map, Normal Map, ID Map, and black and white masks, and then went to Substance Designer. It didn't take long to work inside Substance Designer because I used the same sand mix tile material that I created earlier. This tile was utilized on the wall with Toth.
I've prepared masks, which were extracted from ZBrush. With Vector Warp Color, randomized the overlay of the tile material using the ID Map. And on some stripes of the texture, I added micro noise using Normal Combine.
The tile material already had color and roughness information, so then I went to Substance painter to work on the elements more locally. In Substance Painter, I used black and white masks that I took from Substance Designer and created a folder for each trim area. Usually, I always try to name each layer and each folder when working inside Substance Painter, this allows me to exclude guessing which layer performs which function, and if after a while I return to the project, I quickly remember what this or that element is responsible for. I also almost always use the anchor system in my work. This is a very convenient and powerful feature.
Thus, I assigned a color to some elements using the ID Map and painted over something manually by adding enlivened accents and scuffs on the surface. This is how a stack of one of the trim strips looks like:
Also, at this stage, my texture was loaded into the Marmoset Toolbag, because quite often, at the stage of working with color and roughness, I check the material in Marmoset. Before exporting textures to Unreal Engine, Marmoset helps me to see the behavior of the highlights, how the color works, and how readable the details on the texture are. I find it is very useful to polish the work in this way.
The last material from the work was a wall with drawings made in ocher paint. And again, this work was interesting for me because the surface does not have a clearly defined pattern, on top I wanted to practice learning how to recreate the organic nature of materials. I looked through a lot of references, noted for myself the elements common to all, which had to be reproduced in my texture, and started the work.
First, I created a general textured base that came as the foundation for all subsequent detailing work. Such materials are always an interesting experiment and creative search for me: plaster, mud, cement and other similar surfaces allow you to experiment with noise maps and try combinations of different nodes. You can spend hours, create crazy mixes and have fun searching for the result you really feel with experiments.
Here I took a Shape node with a Gaussian shape which I ran through a series of changes. I must say that I really like the Multi-Directional Warp node, I often use it, as it allows you to achieve interesting results. In this case, the Multi-Directional Warp node helped me to make changes in the silhouette of Gaussian shape, and the achieved result I multiplied in the Tile Sampler. This created a wall base, on which I subsequently began to add cracks, peeling layers, and microdamage in the form of chips and brush marks.
Here's an example of how the Height Map changed during work:
The catchy thing here in my opinion is the opportunity to highlight the real brush-like effect that I created based on the Gaussian shape.
While creating the surface of the wall, I assembled the composition of antique silhouettes, processed them in Photoshop, created an ID Map for them, and went to Substance Painter to apply the drawing and work out it more in more detail.
Lots of elements in the silhouettes were painted in hand. I was not willing to rely solely on the procedural placement of details and accents. I often work manually, because in this way I can select those elements myself that seem to work best. Again, I checked the result of how the color and roughness behaved by looking at them in the Marmoset Toolbag.
Stack of layers in Substance Painter:
When it comes to the final render, it takes me a lot of time. I select the HDRI map that would best influence my material and then start experimenting with light sources. I normally use 3 or more sources of light in my work. Especially I like the lighting method when the material is illuminated with non-glare sources, as if spreading the light over the surface, and then making accents by adding more Directional Light, emphasizing the advantageous places of texture or roughness.
For the trim as an example, I am using 6 lights. Three of them are of very low intensity and minimal impact on the surface, another three are from different sides, emphasizing, in my opinion, good places on the texture. In general, lighting for me is a whole science and normally I spend a lot of time looking for the best option. Sometimes only after some time, when the work has already been laid out, I understand how it would be possible to expose the light more felicitously.
I use Sharpen, Bloom effect depending on the situation and a small touch of Grain. Also, I load the Ambient Occlusion map into the Diffuse and Cavity slots. This makes the final render more expressive.
For me, this project was a big underlying work, which taught me a lot and helped me to improve my skills. Yes, after some time I will definitely come back and say: “Haha, seriously? Did I do it this way? This could be done faster and more convenient way”. For now, though, I am satisfied, if not with the result, then with the fact that I have completed the work and learned a lot.
I want to say a huge thanks to such wonderful artists as Daniel Thiger, Joshua Lynch, Javier Perez, and many others. These people share their knowledge and help other artists to grow and to be more professional.
As a piece of advice, I can say that it is very important to learn from other artists, to catch how they think while working on this or that surface, what methods do they use to recreate certain elements. You need to experiment a lot, look a lot at the other artists' experiments and not be afraid of making mistakes. Even if the final result may look bad, after a few iterations and attempts it will only get better – the main thing is not to give up.
I try to spend a lot of time in Substance Designer, I am impressed by its power and potential. Many hours of training and meticulous study of the processes are more than paying off with the results I get in the end. Ultimately, I hope that one day I will be able to work as a Texture/Material Artist, being even more immersed in the things I love.
Many thanks to the 80 Level team for having me here and talking about my work! This was a very exciting and new experience for me! Bye Bye!
You may find these articles interesting