Improving arch-viz workflow with Substance

Michal Franczak 2018-09-25 08:41 article  > All

Evermotion uses Allegorithmic software to create high quality assets and scenes for many renderering engines.

Substance Painter gives us opportunity to deliver assets for multiple 3d apps with less work, saving our time on materials creation.

Long, long time ago in a galaxy not too far away...

Over 15 years ago, we entered the arch-viz market delivering our first 3d assets collection - Archmodels. Soon enough we started delivering 3d assets for 3ds Max and V-Ray renderer. As time apssed, we expanded our libraries with new formats and rendering engines. Nowadays, apart from V-Ray collections, we create content for Cinema4D, Unreal Engine and even Blender Cycles. We want our assets to be compatible with offline renders (Vray, Corona, Ocatne) but we also want them to be used in growing real-time game engines. So we adapted 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 and any noticeable differences.



Animated GIF: sequence of creation of Substance material for an asset.


Big part of our work is conversion between different applications - our main goal is not only deliver high quality assets (which should have the same look and quality in different engines) but to make them easy to use (so our clients could just paste them into scene and use). Prior to PBR revolution this was a very time consuming process - not only each application has different lighting models but also shaders are individual for each render engine. Watching PBR being incorporated into 3d world and game engines we decided to try to use it for archviz assets. After some tests we found Substance Painter as the clear winner. we like its powerful texturing capabilities and ability to export final maps to many engines.



Animated GIF: sequence of creation of Substance material for an asset


The transtition from 2d texturing software

With adaptation of Substance Painter we had to change our workflow. First change was to unwrap each mesh in 0-1 UV space. Before Substance we mixed overlapping and non-overlapping UVs (used multiple UV channels) and often used standard auto-unwrapping methods provided in 3ds Max. Now we unwrap everything manually, which takes more time, but gives benefits on later stages - during texturing and converting models for different engines. The other thing was to get consistent texel density - we don't tile textures as we used to, and using 4-8k textures for each mesh didn't seem also as 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 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 hit our shop frontpage.



Each asset was textured in Substance Painter.



Animated GIF: We used a custom script based on Clovis Gay work for importing Substance textures to 3ds Max / V-Ray. We just point 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 few clicks in the matter of seconds.


From Substance to Unreal Engine 4

We knew that we want to deliver these scenes also for the rest of our user base that does not use 3ds Max in their daily workflow. So we decided to re-create scenes in Unreal Engine (we split them into two collections: Archinteriors for UE4 vol. 4 and Archinteriors for UE4 vol. 5). Thanks to Substance, it was a pretty simple task.

We exported our models from 3ds Max as a 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.


The most work in Unreal Engine that was required to create these scenes was to create lighting and baking, 3d assets and their materials were ready, Substance allowed us to simply export new textures (base color, normal maps and OcclussionRoughnessMetallic packed maps) and pin them to the instance of our master material.


And here is the result - Archinteriors for UE4 vol. 4 - our first collection for Unreal Engine that was a conversion from 3ds Max / V-Ray collection.



The first scene - a screenshot from Unreal Engine 4.




Archinteriors for UE vol. 5 promo video - another set of five scenes from Archinteriors vol. 48 for 3ds Max that were retextured in Substance for 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 V-ray collection. The collection for C4D will be released in November.





An asset comparison: 3ds Max V-Ray vs Cinema 4D V-Ray. Slight differences are unavoidable.


...and finally - Substance to Blender

The 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 3ds Max / V-Ray version of the asset. It turned out that we don't need to tweak them too much in Cycles renderer, our script pinned them to Blender Cycles Principled Shader and we could 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 need to reduce the size of 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 in-house our two custom plugins: 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.



Small save - just select substance files that you want to compact and wait a while


Another tool we used is "Batch-export" - if was first used with Unreal. Instead of opening each file one at a time (File -> Export Textures -> choosing path -> preset and than Export) we made a plugin which automates these tasks - you can choose to export maps from individual SPP files or whole folder of them. We will share this script in the future with community.

Author: Michal Franczak Editor: Michał Franczak
You may also like...
Unity 2019.1 released

Unity 2019.1 released

New version with improved high definition graphics and more.


You need to be logged in to leave a comment. Don't have account? Register now.
ammarshow18:40:55  |  05-11-2018
thanks can u suggest good course to participate in !!!


  • ul. Przedzalniana 8, 15-688 Bialystok, POLAND