Evermotion: Improving Archviz Workflows with Substance
The team behind the 3D community and content creation website Evermotion tell us how they use Substance Painter to texture their archviz asset packs, and how their PBR workflow allows them to create the same scene in both real-time and offline renderers.
"Substance Painter gives us the opportunity to deliver assets for multiple 3D apps with less work, saving time on material creation."
A Long, Long Time Ago, in a Galaxy Not Too Far Away...
Over 15 years ago, we entered the archviz market delivering our first 3D asset collection - Archmodels. Soon enough we started delivering 3D assets for 3ds Max and V-Ray renderer. As time passed, we expanded our libraries with new formats and rendering engines. Nowadays, as well as V-Ray collections, we create content for Cinema4D, Unreal Engine, and even Blender Cycles.
We want our assets to be compatible with offline renderers (V-Ray, Corona, Octane) but we also want them to be used in growing real-time game engines. So we adopted a PBR workflow and switched to Substance, which now acts as a central hub for all our materials - it is used for distributing final textures to all required 3D applications, without hassle or any noticeable differences.
A big part of our work is the conversion between different applications - our main goal is not only to deliver high-quality assets (which should have the same look and quality in different engines) but to make them easy to use (so that our clients can just paste them into a scene for use). Prior to the PBR revolution, this was a very time-consuming process - not only would each application have different lighting models, but shaders were also specific to each render engine. Watching PBR being incorporated into the 3D world and into game engines, we decided to try using it for archviz assets. After some tests, we found Substance Painter to be the clear winner. We like its powerful texturing capabilities, and its ability to export final maps to many engines.
The transition from 2D texturing software
With the adoption of Substance Painter, we had to change our workflow. The first change was to unwrap each mesh in 0-1 UV space. Before Substance, we mixed overlapping and non-overlapping UVs (using multiple UV channels) and often used the standard auto-unwrapping methods provided in 3ds Max. Now we unwrap everything manually, which takes more time, but gives benefits at later stages - during texturing, and when converting models for different engines. The other thing was to get consistent texel density - we don't tile textures the way we used to, and using 4-8k textures for each mesh also didn't seem a good idea.
From Substance to 3ds Max and V-Ray
One of our latest and best-selling collections is Archinteriors vol. 48. It consists of ten interior scenes made with the PBR workflow. They were textured entirely in Substance Painter, which helped us to deliver quality output for V-Ray materials.
This collection, consisting of 10 Scandinavian interiors, became an instant hit when it appeared on our shop’s frontpage.
Each asset was textured in Substance Painter.
Animated GIF: We used a custom script based on Clovis Gay’s work for importing Substance textures to 3ds Max / V-Ray. We just indicate a path for a script, select all texture sets we need, and they are automatically imported to 3ds Max and assigned to materials and meshes that share the same name. In this case, our table is divided into two meshes using two different texture sets. With our script, we can import all textures, create two V-Ray materials and assign them to meshes in a matter of seconds.
From Substance to Unreal Engine 4
We knew that we also wanted to deliver these scenes for the rest of our user base that does not use 3ds Max in their daily workflow. So we decided to recreate these scenes in Unreal Engine, splitting them into two collections: Archinteriors for UE4 vol. 4 and Archinteriors for UE4 vol. 5. Thanks to Substance, this was a pretty simple task.
We exported our models from 3ds Max as separate FBX files, then imported all meshes to UE4. We didn't use DataSmith, because after initial tests it seemed too generic for our needs - we wanted to achieve optimized materials (using masks on different color channels), so we used our own script.
An instance of a material created in Unreal Engine 4.
A simple master material in Unreal Engine 4 that was used for the most of assets.
When it came to crafting these scenes in Unreal Engine, the largest part of the work was to create lighting, and baking. The 3D assets and their materials were ready, and Substance allowed us to simply export new textures (base color, normal maps, and Occlusion/Roughness/Metallic packed maps) and pin them to the instance of our master material.
And here’s the result - Archinteriors for UE4 vol. 4 - our first collection for Unreal Engine that was a conversion from the 3ds Max/V-Ray collection.
Archinteriors for UE vol. 5: another set of five scenes from Archinteriors vol. 48 for 3ds Max that were retextured in Substance and exported to Unreal Engine 4
From Substance to Cinema 4D R19
Our Unreal Engine 4 collection was warmly welcomed by our customers, so we decided to convert this collection to Cinema 4D and V-Ray 3.6. We used the same maps that were used for the V-ray collection. The collection for C4D will be released in November.
...and finally - Substance to Blender
A similar workflow was also used when exporting to Blender - we used V-Ray maps and a script that connected them to Principled shader.
We used maps generated by Substance Painter for the 3ds Max/V-Ray version of the asset. It turned out that we didn't need to tweak them too much in Cycles renderer - our script pinned them to the Blender Cycles Principled shader, allowing us to focus on the scene lighting.
Substance connects all our 3D packages, and we are happy with the results. Below you can find another example of one of our assets textured in Substance Painter.
Improve even Further - Using Custom Scripts
Soon enough we realized that we needed to reduce the size of our Substance files - they grow pretty quickly and exporting 50 or more .spp files takes a huge amount of time. We decided to automate some tasks. We wrote our two custom plugins in-house: one was used to decrease file size for archiving purposes, and the other to export maps to different applications.
"Small_save" is very simple. This script just opens the file, bakes all mesh maps as small as possible (eg. 128px), clears unused maps and then saves files. That way for some of the .spp files we could decrease files size 90% - and if we want to bring back the quality, we just need to rebake maps.
Another tool we used is "Batch-export" - it was first used with Unreal. Instead of opening each file one at a time (File -> Export Textures -> choose path -> preset and then Export) we made a plugin which automates these tasks - you can choose to export maps from individual .spp files, or from a whole folder of them. We will share this script with the community in the future.
To see more, visit evermotion.org
All images courtesy of Evermotion