Great breakdown of the process and optimization, thanks for sharing.
This article just not only provides great tools for level design. It's also useful vocabulary to express ideas with our team. https://xbeasts.blogspot.com/2018/12/Remove-Wall-Decals.html
Very well presented article. Thank You http://printingheaven.strikingly.com/blog/standard-movie-poster-size
Ivan Sukhanov showed how he created his fascinating 3D Sci-Fi Module in Modo, Marmoset and Substance Painter.
Hello! my name is Ivan Sukhanov. I am from Ufa, Russia. I’ve been developing games all my life. Mostly they were my own indie projects, and I was a game programmer, engine programmer, and technical artist. Over the last few years I’ve been working with 3D graphics (again, as a programmer), and sometimes I also model 3D content for my projects.
Сharging Module RT-72
I’d been working on the Charging Module RT-72 project in my spare time. When I worked on my own projects I got a solid understanding of the modeling process with various approaches and pipelines. But I had no public artworks that showcased these skills. That’s why (plus just for fun) I wanted to make something nice quickly.
I really love fantasy sci-fi art with hard surface sculpting, so I aimed for this style. I needed a rather small but interesting object that I could complete quickly. It should have had visibly separate materials, with sci-fi functionality and sci-fi purpose. I began with a story and setting, thought up how the object was invented and its purpose. When I was more or less satisfied with the functionality, I defined requirements for the shape and began searching for references. There were a few possible ideas, but the best one was a compact, heavy device comprised of two or three parts, like 23-inch laptops stacked on top of each other. The device needed to have a module with a frequency modulator and a long connector for integration with something like a regular, stationary indoor geothermal generator. Portable military communicators were rather fine for that purpose. I collected them in my reference pack. I used PureRef for it, a great software for reference packs supporting 200-400 pictures.
Why did I choose to do this? It was quite a good option, not to mention the fact that I had been trying to decide for almost an hour, and it was time to make the final decision. I came up with this idea much later, but it was probably a marvelous Simon Fuchs piece that had influenced my choice.
I added it to my reference pack the moment I saw it, and it gave me a few ideas for the next steps. You know, in addition to the artwork there was a link to a video presentation which I had seen several times, and it turned out to be a tutorial. The trailer looked cool and was even more informative than the 2D reference I had already found. So, I considered, why not make a presentation, too? Maybe in Marmoset 3, which is really handy for that. Once I was asked if I had watched the whole tutorial. The answer is no, I never had the chance. But his artwork is really good, and I suppose that the tutorial isn’t bad either.
By the way, Simon Fuchs broke down his tutorial here:
Modeling in Modo
I truly like working in Modo, plus there’s an affordable indie version where I did almost all of the modeling. I didn’t prototype any of the details in the block-out stage at all, but I’d been making notes with ideas for where the main and supporting details would be.
Nearly all high poly was done in Modo. ZBrush helped with some inconveniences, but I’ll get back to that topic later. Almost all cylindrical objects (except very thin and short ones) and a general shape of the front panel were made with Subdivision Surfaces. My main principle that I had been trying to follow was that the completion of current objects in work should reach the same level as other parts of my model. The work should be gradual, with frequent moves from one part to another, without dwelling upon minor aspects.
Now, a few words about almost all minor details. Many of them were made with Subdivision and had pattern geometry. All of them were baked with the Rounded Edge Shader. In the final stage, I added simple floaters for the additional details (for that purpose, I made a small Floater Kit). Basically, it can be done directly in Substance Painter but I prefer to add floaters. Modo allows to do it easily, and it is good for two reasons. Firstly, you are designing the future details. Secondly, you have a chance to change the high poly if you notice bad detail work or come up with a new interesting idea. Convex floaters were baked with the Round Edge Shader as well. The rest of the complex details will be done later in Substance Painter.
When the high poly was ready I made matIDs for it, created a new material, and mask old ones. The new material contained many colors, each with a mask according to the polygon tag. Only the default color did not have a tag. Then I used polygon tags to mark all materials on the meshes. As a result, I had at disposal finished matIDs and could restore any old material whenever I wanted.
Smoothing details in ZBrush
I used ZBrush for additional processing of the finished high poly. It was used to smooth tricky bottlenecks, large shapes, and places where Subdivision did not work well. All of that could be done without ZBrush but I would not recommend it, as my approach is much faster. The smoothed version was then decimated and sent back to Modo for further retopology (where it was needed) and baking. Before decimation, I made a certain refinement aimed at splitting the symmetry, additional smoothing, scuffs, and convexes.
Loosely speaking, this indie project was made just for a beautiful render, so the low poly I made was quick and rough. I planned to make close renders of the front panel planned, that is why it’s highly detailed and simplified the geometry of the latticework just a bit. High poly optimization often takes a lot of time, so I usually model complicated objects from scratch. I used mesh instances for all similar (both low and high poly) objects.
A large number of elements requires a well-organised process of low poly creation. Firstly, I keep in a separate group everything related to low poly, at least one mesh for each texture-set (in my case there were 4 texture sets and about 10 meshes without instances). Secondly, I gradually cache geometry for all non-instances (in a few meshes if there is a lot of geometry). Then I mask originals and assign the red material to a cached version. It allows me to see what I have not done yet. A low poly version is kept on separate levels and marked with another color (green). The work is done when everything is green.
I use layers for unwrapping. One layer is always for an object I’m working on. Other layers contain already unwrapped details (one layer for each texture set). I use a tile checker to control the scale. It is assigned to all finished parts and objects in work to see the relative resolution. This way I can see what parts aren’t ready yet.
All of these methods used together make the unwrap fast and clear. Modo is very unwrap-friendly, usually, you just select the right edges and get a good result. Scaling a UV map to fit an exact rectangle is literally a one-touch feature there. I increase scale for important details and decrease for others. The base of all instances is unwrapped only once. Later all instances will be cached and I’ll be able to move the unwrapped geometry. It’s convenient to place elements of a similar type or location next to each other. I usually bake a few render passes for my newly unwrapped objects. If the objects are quite simple, I bake them together. Given that the setup is ready, it takes about 2-3 minutes (it is enough to do setup just once). After that, I know for sure that my unwrap is fine, and at the end, I usually get very few artifacts and issues. If there are some issues with normals, overlaps or resolution, they can easily be fixed with one more run. In my case, the result was suitable from the first try, and I was too lazy to make it even better.
I bake almost everything in Modo (and use Substance Painter for the rest): AO, Curvature, Thickness, matIDs, Normals, wsNormals. For the first three, I use Driver A/B/C. Modo gives a proper control under the baking. For example, it is very important to bake for Ambient Occlusion only those meshes that affect AO. Intensity and contrast can also be adjusted handily. After that, I did a quick render (within 10-15 minutes) with all maps. AO of the cable was too dim in some places. Physically it was correct, but it didn’t look good. So, I painted the missing parts of the AO by myself.
Texture Sets & Decals
As I said, this asset was made for rendering and I didn’t limit myself in texture sets. There are four of them: for the front panel, case backend, cable, and upper module. I have already touched on the texturing when I was talking about the smoothing. Smoothed angles are distinctly reflected in the curvature mask, and I constantly used it to create a pleasant impression from camera movements by increasing the roughness and decreasing flares. Because I planned all the steps in advance this stage went quickly, and there was nothing to fix. In the early stages of the concept and pre-production, I defined the quality level of future materials and textures. It was going to be a smooth, clean painted model with bright colors and many small barely noticeable details connecting the parts. I made a special reference pack for colors and materials.
All the texturing was made in Substance Painter. There were 7 types of the main materials. I paid great attention to rubber, metal, and plastic, reconstructed from reference and memory. There also were 3 additional types that I started designing them when the 7 main ones had been applied to their matIDs. I made them by modifying ready-made materials from Substance Share Library. Actually, additional materials are of the same types as main ones (iron, for example) but made in a different way.
This approach gives a wide range of different materials and an opportunity to fix bottlenecks. If you look at the upper part of the green module you will see something like galvanization but in a sci-fi setting. I used three materials for that: first was metal, then modified rubber, and finally – case material with paint. Materials and parts of the case were to be distinguishable, that is why I worked more with roughness and specular properties than with colors. I wanted to reach a level of realistic detail work, so I used monotone textures with high frequency (seen in close-ups), and grunge low-frequency noises (seen from afar) for roughness and specularity (in my case it was metal). In addition to other methods, I used a light gradient for color. I had been moving the camera while I kept my references open, and adjusted the materials, paying great attention to the specularity.
When I finished the materials, I started adding decals in normal and height channels. There was no need to draw them from scratch, so I used those from the SP Standard Pack. Small, mild details perfectly create an illusion of size, which was important for close-ups.
Near the end, I realized that there was a lack of details in the back part. I hadn’t thought this through before and had to fix it, so I used a few layers of painted details. It was kind of cheating. I usually change a mesh, but I managed to get a good result from these cheap methods of SP. Thanks to Anchor Points, the back panel looks fine now.
For the painted and glued details, I made a grunge mask in addition to the main texture to make them look old and damaged. I also slightly reduced the alpha channel to make decals look more natural.
As for the elements of the display, here I made a step aside from the realism in favor of stylization. I wanted to make these elements clean but integrated, so I made an illusion of Ambient Occlusion for the emissive channel, while I did not change the color channel. The model is bright, and the display didn’t need to glow too much. However, I wanted to somehow emphasize the small elements. And you know what? I just made the background a bit darker.
The asset had its story and setting long before it was actually made, and I was going to show it clearly. Here it comes, the most interesting stage: final stylization. I started with decals. They would unite two main colors and parts of the asset to make them visually coherent.
Each detail had its own purpose, each was made for a definite purpose in the sci-fi world, – and I had to figure it out and show it. Well, I already had a general concept of how it would work: here is an input data processing panel, a bit below and to the left, there are uranium decomposition processors which are responsible for the magnetic field that protects people standing nearby from the high voltage… But how exactly is it going to work? And how does it influence the front panel? It was high time to bring it to light.
I made a stencil atlas according to the setting and had been using it for all the stylization. That stage was quickly finished, and two hours later all functionality was designed and drawn. To me, it was the most interesting moment of the whole process. I am fond of adding unfamiliar and mysterious elements, something that could be interpreted in different ways. Are these familiar to you? I don’t think so. But do they mean something? Of course! If you are examining them, if you are interested, it means that my work is done well.
I rendered it in Marmoset 3, made a very quick setup, and chose one of the standard environment Cubemaps to create diffused light. The light was white in order to get less texture distortion. I used standard PBR materials. There were three sources of lights (Three Light Portrait Setup), one of them with a slightly changed color. The main purpose of the lighting is to show the materials’ properties, especially specularity. The video presentation was made in Marmoset Toolbag 3. When the lighting was ready, I saved the base file of the project and used it a few times to create camera animation sequences, each animation in a separate file exported individually. All of that was done quickly, and I was satisfied with the result.