Best of Week 27/2016 by Time Machine was about self learning of both architecture design and new 3d visualization techniques. Victoria and Gaston took Allegorithmic’s Substance Designer and Painter for a spin along with ZBrush as well. Looking ahead we all should explore these tools more. Besides these, they also used 3dsmax, corona renderer and maxtree foliage. Dive into this detailed making of their Garden Loft. Enjoy!
First thing first, I’m very happy and honored to have the chance to write an article for this prestigious blog, which I’ve been reading from the very beginning. For me it is a great source of knowledge and inspiration. Being able to give backf is an awesome opportunity.
The Garden Loft
Garden Loft is an in-house project that my partner Victoria and I started some time ago and was intended as a sandbox, to learn new techniques and workflows, but mainly to learn and introduce to our pipeline the Allegorithmic suite – Substance Designer and Substance Painter.
These are the images.
Luckily the implementation was very successful for us and we are really happy with what we have achieved in such short time of learning the software.
The things that work for us about this software is that material creation is intuitive, fast, and in real time. We can now recreate pretty much every material our clients ask us with great accuracy. It’s an everyday struggle when clients send us a 100px by 100px reference for the material they want/need and we can’t find any texture on the web or product manufacturer, even the ones that don’t exist anymore because they’re no longer being produced… we are frequently asked to do that too. At the end, it is faster to create these textures from scratch than invest time looking for them whenever they don’t pop up in the first run.
The hard work is handled by substance software, you don’t have to end up in 3dsmax with a super complex shader network. So there is no need, for example, of the expensive blend materials, just a couple of bitmaps and you are good to go. On top of that, it’s super fun.
We thought of this place as a place we would like to live in (apart from being partners with Victoria we’re also a couple). Both of us like old refurbished buildings so we thought of a warehouse loft straight away.
After we decided what we wanted to do we started collecting references and ended up with a huge amount of photos of many lofts of different styles. At that point, we were ready to design our very own loft. We did sketches with traditional media, floor plans, elevations, sections, perspectives and all the things regarding architecture stuff.
When we knew exactly what we wanted, we dived into 3dsmax.
Modeling, for what was done inside 3ds max, is just simple box modeling so there’s not much to say about that but we do most of our assets, regarding furniture and environment, within Zbrush. This is because it is an incredibly powerful sculpting software and we really like the idea of “scalability” when we build our assets. So we can create super-detailed models (to build up our library) and then decide very easily the resolution of that model regarding our needs or how the project evolves.
So this was the case, for instance, of the brick walls. I sculpted a few bricks which then were converted to insert multimesh (http://pixologic.com/zclassroom/lesson/brush-creation-insert-mesh) brushes. These are brushes that contain different meshes associated with it and you can use it to insert them onto other meshes.
Then they were scattered, through a base mesh, I brought from 3ds max, using nanomeshes (http://pixologic.com/zclassroom/lesson/nanomesh-functionality) inside of Zbrush (Kind of the Zbrush’s Forest Pack Pro). Then everything was baked into a single mesh and sculpted over.
After that I decimated (http://pixologic.com/zclassroom/lesson/creating-a-picatinny-rail-part-3) the high poly mesh, merged that into 3ds max and turned it into a corona proxy and set in place as individual assets, mirrored, rotated and so on to give the impression they are unique. The whole process took about one hour from start to finish. It is really fast and you always have the high detailed version to go back and make changes or if you decide you need more detail on your final mesh.
Wisteria flowers were also made with Zbrush because it is easier and faster to move points around and deform the mesh with pen pressure sensitivity and the move brushes. Also, unwrapping of these simple models is automatic with UV Master, the unwrap tool of Zbrush.
If you want to learn Zbrush a great starting point is the Zclassroom at Pixologic website which is awesome and free and the tutorials on hard surface modeling from Mike Jensen.
Another thing where we experimented a bit was with the metal structure. It was done in 3ds max with box modeling and we thought of it as different pieces/assets that formed the whole thing. The experimentation came with a new feature of 3ds max 2017 (which is really cool), called multitile unwrapping. It is well known on other software packages but it’s cool to have it now on max.
So basically we unwrapped every piece of the structure, then merged it into one piece and rearranged the UV clusters into different tiles or UV sets.
This is great because the latest version of Painter supports UDIM format so whenever you import a multitile unwrapped mesh, painter will automatically separate those pieces of geometry and create different UV sets for you. With this, there is no need to have the same texel density throughout the whole mesh since you can adjust texture scale inside of Substance Painter. Then via the multitile node inside 3ds max you can plug in all your texture sets for your asset.
We are using this method now, to texturize big pieces of geometry in real-time with painters, like streets and walkways.
Here is a sample of another project of a big piece of street textured in one go :
It consists of 3 different Forest objects. Nested within each other as exclusion zones. Also, we used clusters option to avoid noisy an unnatural look of the plant distribution.
Base small layer of plants and their settings.
Bigger “monstera” plants :
Medium size and color plants to give and accent to the overall green :
Wisterias were also scattered with Forest Pack Pro over the ivy’s we made with Ivy Generator.
Finally, there are the deck and fence of the balcony that were created with Rail Clone Pro but there is nothing fancy about that. Just made with simple steps you can see here (http://www.itoosoft.com/tutorials/tutorial_parquet_floor.php?back=page%3D2%26tag%3Drc)
That’s all about modeling.
This is the simplest topic in term of technical aspects. Since we use Corona Renderer, in the first place, there are no settings to mess with. Just hit render and everything will run smoothly. This is one of the things we like the most about Corona after so many years of using Vray. We feel unshackled.
We used simple exposure settings till we reach the exposure we like and then fix it with a corona cameramod.
The denoise feature is really neat an does a really great job once you reach a reasonable noise level. We never go past 0.7 though, to avoid textures being blurred.
So about lighting, we tested based on references till we got something that we liked. Everything was lit with an HDR image on a Corona bitmap on the environment. Sometimes we adjust the curves to get a little bit more contrast and that’s pretty much all there is to it.
We used Peter Guthrie’s HDR’s.
This was the interesting part of our process in this particular project. First, I would like to talk about our workflow between Substance and when and where we use it.
It was very important to identify which parts of the scene were going to go through Substance and which ones not in order to successfully implement the software in our pipeline.
The criteria were as follows :
- Importance of the material in the scene
- Complexity or the material
- Availability of textures
- Complexity of the model
The other aspect of deciding about implementation was in which cases utilize what piece of software. Substance Designer and Substance Painter are meant to work together and they complement each other but at the same time, they offer very different toolsets so you have a lot of flexibility to decide in which way to work.
So, after a bit of experimentation and trial and error, our workflow came up to be using Substance Painter for small assets like furniture or any kind of gadgets and Substance Designer to generate procedural tileable textures for any kind of surfaces and environments. We also use the substance directly within 3ds max which gives you and an infinite amount of variations for your textures and you can modify it directly in 3ds max. Also, we do our baking process inside of Substance Designer even though you can do it with Painter as well.
We’ll go through a couple of materials, the most important ones, and try to explain the process as best as we can but we strongly recommend you to take a look at the Allegorithmic’s YouTube channel since there you will find pretty much everything you need to get up and running with Substance suite.
The metal structure material on Substance Painter
The one thing you will always want to have when working with Substance is properly unwrapped geometry. So after the preparation of the model as described in the modeling section we brought the model to Painter and baked the model information to different maps as normal, occlusion, curvature, world space normal and position.
You will need this maps because the procedural mask generators use this information to “know” how the mesh is like so they can create, edge damages based on curvature maps, dust based on world space normal or position and so on. You usually bake a high poly model to a low poly model but in this case, we baked the model onto itself in order to get these maps.
Here is a screenshot of the painter project with all the material layers and then the asset rendered in 3ds max with corona renderer :
Simple concrete floor material in Substance Designer :
Substance Designer might be a bit more complicated than Substance Painter since it has a node based nonlinear workflow, so basically you will be plugging nodes back and forth and reusing already placed nodes to create the effect you need.
You can set up the project for both metal/roughness or specular/glossiness models and work in a nondestructive way; the same as Painter. You can work in low resolutions and when you are ready to export the textures change the output size and Designer will “redraw” all your textures in higher res without losing detail. In fact, the opposite – increasing it.
This is the graph for the concrete material. At first it can be a bit daunting but in fact, this is a really simple material and once you get familiar with what each node does your graphs will grow exponentially as well as the complexity of your materials. The workflow is pretty much the same as creating a material in the slate material editor in 3ds max.
As you can see, the part in which the material is broken down let you understand more clearly how it works. It is always good practice to comment your graph sections. Otherwise, it will be extremely difficult to track down what a specific node is doing.
This part of the graph is driving the big bumps of the surface with a little bit of break up in the transition areas. Basically, two different noises combined and ran through a levels correction to make it more contrasted.
This part generates the surface detail. It is divided into two sections. The detail in the elevated areas (white) and on low areas (black). Again, procedural noises mixed by a blend node which mixes to nodes together. The placement of the different surface details is driven by the mask created in the previous step.
In this section, we create normal, specular and glossiness maps as well as height.
The normal map is created by blending both surface textures by and Add (linear dodge) transfer mode and then plugged into a normal node which basically transforms any height map type to a normal format either DirectX or OpenGL. Here you can set the intensity as well.
Specular and Glossiness are created by blending the surface details maps and multiplying them by a color which in a whole is driven by the main mask. With the authoring of these maps, I strongly recommend you to stick to the PBR workflow and your textures will work almost straight forward with your renderer. With this, I am talking about specular range and F0 value for dielectrics and the specular range for metals as well as PBR values for the glossiness maps.
You can read the Allegorithmic guide which is very clear and comprehensive. Then you have your outputs which will be the maps to be exported.
The diffuse creation is simply a layering of subtle variations of shades mixed on top of slightly different noise patterns. They key when building procedural materials is layering, since it is the only way to break up the CG look of your textures. When creating surface textures keep in mind that variations need to be subtle otherwise, even though your texture is seamless, you will end up with a strongly noticeable pattern.
Finally, there is the ambient occlusion generation which is both exported as a map and baked into the diffuse map. In SD there is a node to generate AO, you need to feed it a Heightmap which is created from a normal map. That is basically the flow in the graph. When creating textures be sure to always create an AO pass for your diffuse information since the normal map will do the job when the surface is being hit by a light source and the AO will help to still read the details when only affected by diffuse lighting.
To sum up texturing consider that your Diffuse, Specular, and AO have to be loaded into your Corona Renderer / V-Ray material in SRGB mode and all the rest in Linear grayscale. This is very important, otherwise, your textures won’t look as in SD/Painter.
We like to do the post on After Effects because of 3 main reasons. We try to do our best and most of the work in 3d so there is not much to do in post besides color grading, it is really easy to iterate in the post with AE and you always work in a nondestructive way. You can do really cool stuff with the awesome plugins available.
Here is the RAW plus the composition of all the passes. In this case, direct, indirect, translucency and reflect and you can see there the transfer modes mainly to give more contrast.
Here is the final touch with Magic Bullet Suite. We use it for color grading as well as other subtle effects like diffusion and film prints.
That is all.
I hope this will help someone in someway. I encourage you try Substance, it is a really awesome software and with all the hype there is around real time arch viz the use of real time engines like UE4, texturing is a really important matter to take into consideration since you will need to deal with two different shading models. Having a texturing solution which can be neutral to both ends is a really nice way of working and keeping things simple.
Thanks for reading and thanks Ronen for giving us the opportunity to show our work here.