Create an atmospheric sci-fi city – part 3: texture, light & composite


This tutorial will be behind the scenes look in my latest project Oris City. This is part 3 of a 3 part tutorial series. In this one, we will look at the texturing and shading, lighting, and compositing.

final render sci-fi cyberpunk cityscape render model

Final render in native 10K resolution

Preparing for texturing in Substance Painter

Substance Painter was my main texture package for this project. So, before I jump to Painter, I took my time to arrange my UVs into UDIM format so that I can maximize the texture resolution. I made sure that all my UDIM tiles are the same texel density, which helps keep things consistent while texturing.

substance painter render model udims uv's 3d sculpting

Setting up Substance Painter

Once my UVs are done, I export everything as an OBJ file and I go to Substance Painter. First thing I do is I make sure my project is set to use UDIM tiles, I load my mesh and I start doing test bakes to get the result I want. Since I have so many UDIMs, I usually turn off all but one, and I start by baking the normal map. I disable all the maps at the beginning until I get the normal map to look good. After that I bake the rest.

substance painter building render model architecture 3d

Texturing: painted metals

I had quite a few painted metals in this scene, and all of them were done in a similar way. To start things off, I pick a base metal that comes from Painter like the Steel Smart Material, then I add Fill layers to add the paint, dirt, oily stains, and leaking, and rust and rusty leaking. Sometimes, to save time, I browse through Substance Source, to see if I can find a material that is similar to what I need to use as a starting point.

painted metal texturing rendering lighting roughens 3d

Texturing the painted concrete building

For texturing the painted concrete, I wanted to try and use some of the material found on Substance Source that resembled a building façade. I set the mode to tri planner projection, and adjusted it to fit my building, and I started to layer effects on top like leaking, cracks, dirt, chipped concret, and so on. At the end, it was looking quite decent and it took less than an hour to set it up.

building window substance painting render texturing materials

Back to Maya for look dev

Once I was done texturing all the assets of the building, I exported everything with the V-Ray Next (Metallic Roughness) pre-set. Back in Maya, I started assigning simple V-Ray materials to my objects and loading the maps for it. One thing that I had to keep in mind was setting the right IDT (Input Display Transform) for each map because I was using ACES CG as my color space. The color maps were set to Utility-Srgb Texture, and the Utility BW maps were set to Utility Raw. I also like to disable the filter, because we will use AA filter at render time.

maya look dev modelling rendering lighting maya

Procedural shading overview

Even though I used Substance Painter for some of the hero building and props, texturing all of them this way would have taken me way too long. So, instead, I relied heavily on procedural shading. The way I like to approach my procedural shading is similar to the way I texture in Substance Painter. I like to create materials for my base metal, the paint, the rust, the dirt, and then I go in and use V-Ray Blend shaders to combine them. For my blending map, I use either V-Ray dirt, curvature map, or a BW grunge texture.

Procedural shading overview v-ray dirt materials textures models

Procedural shading – creating a material

To build the base metal, I start by collecting, or creating a series of tillable textures, that I can use in the shader network. After that, I connect them to my shader using V-Ray TriPlanner node, which allows me to texture without any UV coordinates on the model. Then, I use series of utility nodes such as color correct and remap nodes to get the desired color and roughness value for my base metal.

shading lighting material 3d model rendering projection

Procedural shading – projections

Some effects like the leaking needed special treatment, because I wanted them to be placed only on specific places. That meant that I needed a way to position the map where I want to. Lucky for us, in Maya, there is Place3Dtexture node that I used to position these maps. The way I achieved that is when going to the blend color of the VrayBlendMtl and selecting file, I right-click and chose “As projection.” Then, I set up the type to be planar, and I position the node in the viewport, over the area of the model I like the texture to show.

procedural lighting shading model place3dtexture setup

Procedural shading – Final Shader Graph

Slowly but surely, the shader graph will start to grow with each layer you add to your network. It’s important that you name and keep your graphs organized, so that you can come back to it later and tweak it if needed. One very powerful thing about shading like this is you can reuse the same shader graphs over and over, and just change the input textures, and you will get totally different results.

shader graph lighting 3d model layering rust texture


The lighting for this scene was quite simple. I ended up with a lot of lights in the final scene, but the concept behind them is very simple. I used Skydome Light with HDRI image for my main light, then I created several Area lights, and placed them around the scene to create pockets of sunlight. Last but not least, I placed lots of tiny Area lights behind the windows of the buildings, as well as next to neon signs and billboards.

lighting effects buildings signs lamps natural lighting


The compositing was fairly straight forward. I did everything in Nuke. First, I rebuilt the beauty render using the AOVs, then I did series of glows using the cryptomattes to isolate neon lights and billboards. After that, I added the atmosphere volume, Motion blur using the Vector blur node, DOF using the ZDefocus node, and a simple grade to finish it off. Last but not least, I went to Photoshop, applied my final LUT and the project was done.

compositing 3d model effects rendering arnold texture light

Top tip 1 - Use UDIM textures

If you like to maximize the texture resolution and the look of your assets, I highly advise you use the UDIM workflow. It’s fast, efficient, and industry standard.

Top tip 2 - Use procedural shading

V-Ray and Maya have amazing tool set for procedural shading. It is fast, saves time on making UVs and it’s highly reusable.

Fetching comments...

Post a comment