Hwichan Hwang shared the working process behind the stone floor material, talked about working at KRAFTON, and shared advice for beginner artists that want to learn Substance 3D Designer.
Hello everyone! Thank you for having me in this interview. My name is Hwichan Hwang. I was born in the beautiful country of South Korea and have been working in the game industry for five years. Currently, I am engaged in a great project as an Environment Texture and Material Artist here at KRAFTON. Before this, I worked as a 3D Environment Artist at NEXON KOREA, where I enjoyed many splendid opportunities to work with talented colleagues and learned a lot from many great projects such as Ascendant One, Dragon Hound, and Wars of Prasia.
I love and enjoy my work and I am passionate about delivering the storytelling of the game to gamers through 3D environment art. And I enjoy producing materials in a relaxed state, listening to lo-fi music while sipping on rich coffee.
In the Ascendant One project at NEXON KOREA, which was my first project in my first job, I witnessed the lead environment artist, who was stationed next to me, producing great-quality materials at a high speed using Substance 3D Designer, which piqued my interest in the software and instilled in me a passion to learn. I was so surprised to see a software that can skip the 3D baking process and produce textures through procedures, handling almost an infinite number of parameters! I had no reason not to learn it. So, I asked the lead environment artist to teach me Substance 3D Designer, and he became a good mentor. I also gained a lot of inspiration and knowledge through the tutorial videos of Daniel Thiger and Joshua Lynch after work. I am still constantly inspired by analyzing the works and graphs of other talented texture artists.
I have been an avid gamer since I was young. As a student, I saved my pocket money and worked a part-time job to buy a good graphics card, the latest game titles, and the latest models of the PlayStation and Xbox. A key inspiration that made me decide to become a 3D environment artist came from the impression I got when playing Call of Duty 2 (2005) as a middle school student. With this inspiration, I went to a design high school where I could learn color, design, and drawing, and I started my career as an artist by participating in various exhibitions and competitions.
After graduating from high school, I went to Yewon Art University, where I started studying 3D modeling, texturing software, and game development process, and as a bonus, I was able to enjoy the privilege of conducting a few joint game development projects with my classmates. Of course, I was able to learn a lot from the projects.
I am currently working as an Environment Texture and Material Artist at KRAFTON. I joined the project from the very beginning and worked primarily with the lead artists, environment and level artists. As my main job, I am performing the following tasks: material creation using Substance 3D Designer, construction of the material and scanned data library, creating custom nodes for Substance 3D Designer, setting rules such as texel density, writing documents related to texture production rules and creating tutorials for fellow artists, working with technical artists to prepare shaders, and collaborating with lighting artists to create the material GYM level. I also work in seamless cooperation with concept artists, character artists, and VFX artists.
The reason why I joined KRAFTON is that the current background lead artist offered me a job opportunity. Thankfully, he highly appreciated my material portfolio and said that he believes that I am “a necessary person for the current project.” At the time, I was very satisfied with my job as an artist at NEXON KOREA, but as a texture artist, I feel that it is very interesting in that the game is of a genre that I have never participated in development before and I can further develop my expertise. So I moved to my current workplace, KRAFTON, and I have been enjoying working with wonderful and creative colleagues while learning every day.
The Stone Floor Material
Following texel density rules is very important for the perfection of the visual art of a game. For example, if the resolution of the character’s texture map is clear, but the environment asset’s texture resolution is blurry or the pebble's size may appear larger than the character's hand or head, there will be a very strange game scene. To prevent these problems, I always put the character mesh on the floor mesh of the viewport in Substance 3D Designer when I make textures. It is also helpful to determine the size of the texture resolution based on the length of one card mesh.
The height of the character mesh in my stone floor material production example was based on 180cm, with the size of the floor mesh set to 300cm x 300cm. As the standard of this size varies depending on the features of the projects, such as first-person game, third-person game, or the angle of the camera, you can follow the size standards specified in the project.
When I collect references, I mainly use Google, Shutterstock, Pinterest, and Alamy. When I collect reference photos, I group items in terms of albedo, roughness, cracks, damage, size, and shape. Collecting reference photos of various lighting environments and other environments is very helpful in understanding the material, shape, and characteristics of the material to be produced. Understanding these details is essential for accurate material representation and storytelling. These collected reference photos are placed using PureRef. You can arrange your photos quickly and navigate easily.
This is a pattern texture created using the “Tile Sampler” node. In this example, we will use this as our basic pattern texture.
After creating a basic pattern texture, I made a texture of tiles randomly broken in a random pattern. The most important thing in this step is to create patterns of broken tiles in various sizes, from large to small. I created a mask texture using the “Flood Fill to Gradient” node and the “Histogram Scan” node and added the expression representing that the closer the tile is to the corner, the smaller the tile is broken using this mask texture.
I created a mask texture for each corner of each tile using the “Flood Fill to Gradient” node and the “Histogram Scan” node. If all sides of the tile are destroyed, it will look too complicated and messy. Adding a partially destroyed representation only to the corners of the tile will make it seem more realistic.
I added randomness using the “Flood Fill to Random Grayscale” node and the “Histogram Scan” node. Partial damage seems more realistic than all tiles breaking. I think that utilizing randomness this way is an important factor in creating a natural texture map. I like this randomization aspect the most in using Substance 3D Designer.
I blended the textures created in the previous step.
The most important thing I consider in the process of creating a height texture is to make sure that the size and type of damage are not the same on all tiles. Destroyed tiles are completely broken down into small pieces, and relatively undamaged tiles are only slightly chipped at the corners. This will give the material a more realistic feel and come up with a high-quality material that does not give a messy or complicated feel.
This is a timelapse showing the sculpting process in the height texture production stage.
This is the process of creating the height texture of concrete exposed between tiles. My main goal in building the concrete was to convey a damaged and disorganized feel. I wanted to express a very old floor that has not been touched or maintained by people. So, rather than the concrete feel of the thin-and-neatly-stretched city floor, I expressed the feel of concrete untouched by people like the Chernobyl nuclear power plant.
I combined the height texture of the tile with the height texture of the concrete using the “Height Blend” node. The height texture of the concrete was made thicker than the concrete in the real world to enhance the readability as game data. In addition, the contrast coming from the thin and sharp edge of the tile facing the thick thickness of the concrete created a height texture that gives off a subtle but colorful feel. If all objects on the texture have a similar thickness to each other, a texture that gives an awkward and simple feel is more likely to be born.
This is the timelapse showing the creation of the albedo texture. For the albedo texture map, using the “Directional Warp” node helped to add individual colors to each tile. For leaves and branches, scan data from the Megascans Atlases tab was used. Using the “Atlas Scatter” node helped a lot in scattering the branches and leaves in a random pattern. When I'm spraying leaves like this, I pay attention not to make the size of the leaves too large compared to the size of the character.
As a final step, I created a roughness texture. I base it on a height texture or albedo texture. The “Histogram Range” node or the “Level” node is used to lower the contrast. I adjusted the roughness of the tile to be less rough than it actually is so it's easier to read as game data. The “Dust” node is very effective in expressing the roughness of the dust caught in the gaps in detail. Although not used in this example, the “Shadow” node and “Light” node are also recommended when adding dust details like this.
Using Substance 3D Designer brings the benefits of procedural texture creation, dynamic textures that change in real time, editing, mixing, and adding effects. The software has now been in place as an indispensable industry-standard tool for the gaming industry due to its tremendous productivity. I think that a good use of Substance 3D Designer serves as a very powerful tool for being able to work with and assist environment artists as well as character, VFX, technical, and lighting artists.
A powerful feature I recently discovered is the Hair & Fur plug-in, built by writing a simple scripting language and exposing parameters. With that plug-in, I was able to create a texture with minimal effort. As I said before, you can obtain the great experience of working with technical artists and character artists as well as background artists depending on how you use Substance 3D Designer in this way.
Tips for Beginners
The hardest thing for me in working with Substance 3D Designer is finding nodes that haven't reached their full potential yet. Once you've been getting used to a node, you only use similar or identical nodes. To break this habit, I check the newly updated nodes. Also, after work, I have R&D time for finding nodes I haven't used and trying to make a simple prototype material using those nodes.
Here are some tips on the most common mistakes beginners make: I recommend keeping the graph as simple and optimized as possible through parameter exposure and the Frame function. You can easily explore the graph you have written, but for graphs written by others, you may get lost in the process of navigating. Keeping the graph as neat and optimized as possible to make it easier for other team members to read your graph is an important attitude to be considerate of and cooperate with other artists as a team player.
Don't create too many duplicated grunge map nodes and too many parameters unnecessarily. For example, the “Cloud 2” and the “Dirt” nodes are very commonly used when creating materials. If you create new nodes each time you need them, the software's memory is overloaded, causing the speed to slow down. Therefore, the already-created nodes should be reused as much as possible.
Unnecessarily high resolution is wasteful. Especially for a single color, 16px is sufficient.
Always check whether the local path of nodes is properly set through the Dependency Manager function. If nodes are not stored in the correct path, it’s highly likely that your graph won’t open up normally on another computer.
When sharing graphs with colleagues, actively utilize the “Export with dependencies” function. Files used for the graph are saved together. Because the node or FBX files saved on my local computer are not on other colleagues' computers, if you save and share through this function, the resources stored on your local computer are automatically saved with the graph.
If you are new to Substance 3D Designer, which uses a node-based procedural texture production method, you may give up or are afraid of learning it due to it being an approach you’ve never experienced. But you don't have to feel this way.
I recommend that, when initially creating a material using Substance 3D Designer, you start with simple tasks and continue to feel a sense of accomplishment and motivation. Repetition from motivation becomes a habit as well as making materials. Once you get used to handling the tools, you'll be able to magnificently craft any complex organism.
If you are new to Substance 3D Designer, I highly recommend you, without hesitation, to use some great tutorials like Daniel Thiger’s video tutorial and Vincent Derosier’s survival kit. The tutorial will be of great help in learning the basic principles of procedural texture production methods.
I also recommend you check out the graphs of other artists. I am also passionate about downloading and analyzing graphs that other artists are releasing or selling. You can get to know their approach by analyzing their graphs and you can discover new node combinations that you did not know about.
Finally, I want to tell you to “love and enjoy your work,” which is the most important of all!
If you love your job, you will study on your own even if no one asks you to. And you will become a great employee who self-motivates and performs on your own without direct supervision from a supervisor.
You may find these articles interesting