My name is Ciro Cardoso, I grew up in Lisbon, Portugal, and currently, I live in London, UK.
I know that this may sound like a cliché, but I have been involved in arts from an early age. I have to thank my parents for providing the support that I needed to explore drawing, watercolor, and oil painting. However, despite having my parents’ support, Portugal at that time didn’t provide many, if any, opportunities in arts. So instead of trying to find work using a more traditional art form, I started to explore computers to create art. This learning stage was 20 years ago, and it wasn’t an easy process, as there was no YouTube, the use of the internet was minimal, and no courses were available compared to what we have today. Despite the challenges, I cherish those times and how they shaped me as a person and artist.
A friend that had his studio introduced me to Maya 8 and 3ds Max 8, and I learned Maya using a book called Learning Maya 8: Foundation and the manual that would come with Autodesk Maya installation files. This manual would contain step-by-step exercises, and I fondly remember that my first model ever was a bike helmet. What I learned in a couple of months allowed me to get an opportunity to work in a studio called Big Storm Studios. Initially, I worked as a Lighting Artist, and some years later, I became a Lighting TD creating light rigs, MEL scripts, troubleshooting complex scenes, and coding plugins to improve the workflow.
Being a self-taught person, I love to explore new tools and keep learning. So while on my day job, I was working with Maya; after work, I learned 3ds Max and other tools that helped me get some freelance work as a visualization artist. Eventually, I moved to the United Kingdom.
I value the time I worked as a freelancer because it kept forcing me to learn and improve, which has stayed with me until today. I also appreciate the opportunities to work in different industries, which allowed me to get the best of each industry to develop my workflow and work ethic.
Working at Hayes Davidson
Hayes Davidson is an Architectural Visualisation studio based in Paddington, London. We are a multi-disciplinary studio that produces work for planning, marketing, real estate, and architectural competitions. We were founded in 1989 by Alan Davidson, who pioneered the use of technology from the film industry to visualize architecture. Since then we have worked with some of the top architects and designers on some of the most iconic schemes in the world. We are constantly innovating and discovering new technologies to ensure we are always communicating the design in the best and most appropriate way for the intended audience, with no limitations.
I am one of the Senior Artists and responsible for some of the R&D and innovation in the studio. My work involves producing visualizations and researching, testing, developing, and implementing new techniques, workflows, and software. I mentor junior artists teaching the fundamentals of 3D, like PBR workflows, lighting, texturing, rendering, and the more technical aspects of working with a multitude of tools, like 3ds Max, Substance 3D Designer, Painter, and Sampler.
I try to use the best tool for the task at hand, but I have a specific set of tools that I use daily. My core tools are 3ds Max for modeling, scene assembling, and look development, Arnold for rendering, Substance 3D for material authoring and texturing, Speedtree for vegetation modeling, Nuke\Fusion for compositing and some grading, and Houdini as a toolbox for procedural work. Recently I got a license for Clarisse, and it is something I am playing with and exploring, and hopefully, it can be another tool for more complex projects.
I discovered Substance around 2015. Since then, I have been integrating it in my workflow to a point where the materials I use for a project are almost 90% Substance materials. Despite being labeled as PBR, many of the textures available don’t have the quality you need. Albedo values aren’t correct, edges are blurry, you can see compression artifacts, maps that require some extra info like height and normal maps, usually are just a .jpg instead of .exr or even a .png, and roughness maps tend to be just a grayscale version of the albedo.
Using Substance 3D Designer eliminates all of these issues, and on top of that is a procedural tool. It feels like having a secret weapon that significantly impacts the quality of the work you produce. But using Substance Designer doesn’t limit creating materials, as I also make grunge, dirt, and mask maps for other purposes.
Another tool I use daily is Substance 3D Sampler. This tool has proven invaluable in adjusting and tweaking textures clients provide for their projects. And more recently, I started exploring the use of Substance 3D Painter for more custom-made and hero assets and working with UDIMs.
The Benson project
Hayes Davidson was approached to produce an extensive set of visualizations as a marketing tool for The Benson, on 1045 Madison Avenue, in New York City, right next to Central Park. This project required multiple visualizations for each amenity, and the client provided detailed information regarding the materiality to be used. We received documents with all the specifications and references to help us use the exact material.
While producing these materials, we constantly used the multiple references provided and constant feedback from the client who had access to the physical materials. If possible, I prefer to have the physical samples of the materials I need to produce to see how they are made and how they react to the light in different conditions. Hence, these conversations with the client helped get what they wanted and match the references.
Choosing the right tool for the right material
For this project, I used Designer to create some materials from scratch based on the references supplied. I used Sampler when I had high res textures that needed some adjustments and to produce the normal, height, and roughness maps and materials from Substance 3D Assets as my main library for more generic materials. Visualization projects tend to be very fast-paced, and this project wasn’t an exception. I try as much as I can to create materials in Designer as I believe that is an excellent investment in the long term.
It is true that you need time and multiple interactions to produce great materials. But the time you spend is worth it because you will end up with a procedural material that can provide infinite variations. This ability for each texture to be different is another key point to creating realistic renders. For me, the small details are the ones that sell the realism, and for that reason, I introduce those subtle nuances in the materials I create, being patina, wear, dirt, and other elements to break the CGI look, but they have to be very subtle. As you can imagine, architects don’t want materials that look dirty or old.
When time is short, I look at the massive 3D Assets library to see if there is something that we can use straight out of the box or something I could quickly adapt to my needs. Sometimes you find a material that is 90% there and, with some minor adjustments, is what the client wants. It is also an excellent opportunity to learn how the Substance 3D artist did certain elements of the material. I use these opportunities to build a library of nodes that I keep in a database and use it as a reference when creating a material from scratch. Life is short, and there is no point in reinventing the wheel.
Although I like the flexibility and power you get with Designer, sometimes the client wants a specific texture to be used. This request can be a challenge, as the texture in question isn’t necessarily ready to be used in production, and you may not have the time to create that material in Designer. That is when I use Substance 3D Sampler to clean the texture, remote light information, sharpen, and produce the basic maps I need like the normal and roughness map. As I mentioned before, only recently did I start using Painter. This tool may not be one you constantly use in Archviz due to time constraints, but I see the need to use it when creating a hero asset. UDIMs are extremely useful to deal with large surfaces and complex materials.
Substance 3D Designer breakdown
When creating a material in Designer, one of the most critical aspects is using references. Usually, the client provides one or two references or even points to a supplier to find more information. These tend to be low-resolution images that tell you how the material looks but do not necessarily show you the different details. So, even before I open Designer, I spend a reasonable amount of time looking for references, trying to understand first what kind of material it is, the characteristics, how it reacts with light, and if possible, get a close up so I can see the micro details. I use PureRef to gather those references, organize them and add notes related to the material. The next step is studying the material and identifying the big, medium, and small elements that make the material look the way it looks.
Then in Designer, I focus my attention on the roughness map or the height map depending on the material’s complexity. I always start with some of the available noises as a base for these two maps. The material below is a synthetic material used in some of the walls in this building, and you can see how I used some of the noise maps to create the detail you see in the references. The material you see is a very simple material that I could quickly do in 3ds Max with some of the OSL Noises. Still, I used this as an example to show my colleagues that creating materials in Substance doesn’t need to look like a spaghetti bowl.
Substance material graph in Designer:
Shader graph in 3ds Max:
Sometimes, even when the material is quite simple, it is easier to create it in Designer instead of spending time looking for a texture that works. A good example was when a client requested that the basketball ball be black. We knew that there would be some close-up shots, so I created this material in less than 15 minutes instead of simply using black color for the diffuse.
Now let’s have a look at something more complex. This granite dune material required an understanding of the different minerals that made this material. Granite is composed mainly of quartz, alkali feldspar, and plagioclase. These three elements reflect and absorb light in different ways, so I need to create those layers in Designer and export masks to control these elements in 3ds Max better when rebuilding the shader.
Being able to export the masks for each layer was super helpful. For example, I used a mask for the quartz crystals for the transmission in the shader so that only tiny crystals would refract light. Feldspar would require me to use SSS, so again another mask was needed to control the SSS when creating the shader in 3ds Max. And this is my workflow when working with a Substance 3D Designer. I make 90% of the material using Designer, and then the last 10% are done in 3ds Max, where I add more detail to the roughness map, work with sheen, the coating layer, and so on.
This workflow is something I find essential to produce the best material possible. After the first pass, I like to see how the material looks on a shader ball and then a quick preview of this material on a real asset if possible. This process helps me adjust the roughness and normal map and see if there is a need to adjust the big, medium, and small shapes. An excellent example of that is this Limestone Indiana that I created in Designer. This material had small details like dents, scratches and grain that needed to work well on small and large areas. This Limestone Indiana was one of the key materials for this project, as the entire facade and other more minor elements are made of this material, so I spent some extra time refining this material and trying to find the right balance.
When doing these tests, I like to add the material to a real object and do a 360 render to see how the light reacts with the material and if I need to either adjust the material in Substance or expose some of the parameters to provide the flexibility I need to create multiple variations.
Sometimes I have to create extra maps that, although they aren’t visible in Designer, I need them to build the shader in 3ds Max. An excellent example is the coating roughness map I did for this walnut material. I used this material in multiple assets, and some surfaces were polished, while others had a more natural look. So, to have that flexibility in 3ds Max, I used a coating layer and created a coat roughness map that I could use when necessary. And although you can add details like scratches in Designer, in this instance, I used an OSL shader to help me with that so that again I could have the flexibility I needed.
Substance 3D Sampler process
Sampler is a time saver and a powerful tool. Sometimes the client requests that we use a specific texture. This request presents different challenges. The texture provided sometimes doesn’t have the quality we need; resolution tends to be relatively low, the texture can have some blur, some light information, and albedo values can be off. All of these impact when creating realistic materials, so having a tool like Sampler is a lifesaver. Usually, the clients provide a thumbnail or a quick screengrab and send us that, so I first try to get a high resolution for the reference provided. We had several requests to use specific marble textures for this particular project. Here are some of them.
My basic workflow when using Sampler is loading the texture, and then after the Image to Material Layer does its magic, I start to adjust the Geometry details. For this Nestos Marble, I just wanted some of the micro details as the final surface is supposed to be polished and almost perfect. I also take the time to adjust the Roughness to get a base to tweak it later in 3ds Max. The Image to Material Layer removes lighting information like highlights and shadows by default. However, with darker textures, it can make it lighter. So, if it needs some extra help, I use the Equalize Layer to get a more neutral result. The Clone Stamp Layer is another valuable tool to remove unwanted details and help clean some bits.
Another tool I use when working with Sampler is the Crop Layer, especially when the texture provided isn’t square. If you drag the Crop Layer before the Image to Material Layer, you have the opportunity to adjust and crop the texture, avoiding that stretched look. Having a texture that tiles is always super helpful, so the Make Tile layer is another excellent addition. To get a perfect tillable texture, you need a mix of the Make it Tile and the Clone Stamp Layer to make sure you have a smooth transition and clean any visible seams.
The final step in this entire process is using the PBR Validate Layer that allows you to check that the PBR values of your material are correct. The workflow with this tool is similar to what I do with Designer, where I usually do one or two passes to see if the material needs any adjustments.
Substance 3D Assets platform
A third way I use Substance is by using the more than 7000 materials available. This resource is an invaluable aid that can help you in many ways. First it is a learning tool. It isn’t the first time I downloaded a material to check how a particular shape was created. Seeing how other professionals tackle a problem and the procedural solution used can give me an idea of how I could implement something similar when creating materials in Designer.
The second way I use these materials is when I don’t necessarily have time to make materials from scratch, and there is something quite close to what I need. I download the Designer file, create a copy and adjust what I need. I remember a colleague was playing with a Substance material in the Substance Player, but she needed to change the gap between the tiles. In a few minutes, I opened the material in Substance Designer, exposed the parameter required.
The final way I use these materials is by using them as placeholders and or as a final material. The same happened for this project; we needed some generic materials, like the gold material below.
For this particular material, I used an OSL Complex Fresnel that I coded previously to get the correct color, but then I used the roughness and normal map to get those subtle details you have with these metals. Using the Substance Player, you can adjust the settings and save your own presets to be used later or load it back in 3ds Max. That is what I like about the materials available in the library and how easily you can tweak them to suit your needs. For example, we needed a floor that was a mix of dirt and pebbles, and although the material available wasn’t quite right, I managed to get what I needed in a couple of minutes.
The specificities of working in the archviz industry
Working in this industry requires that you understand and have some basic knowledge of the different stages of production, or in other words, you need to be a generalist. It is normal to feel overwhelmed with everything you need to know when you start, but this is a journey where you learn something new every day. Although initially, you may not want to focus so much on the technical side of the job, I believe that it is essential that you keep an open mind and explore how you can be better at your job.
What I like about this job is that there is a new challenge each day. I am involved in all the production stages, from the initial brief to the post-production stage. So, one week I may be doing materials with Designer; next week, I am modeling and animating trees with Speedtree; the week after that, I am doing compositing with Nuke and so on. Another aspect I like about my job is finding solutions for problems and understanding the best way to approach a project or solve an issue. And it is interesting how these skills can be translated between DCCs because the thought process I used to solve a problem in Designer is the same I can use in 3ds Max and OSL to solve a similar issue.
When you are coding, you can add comments to sections of your code, and the goal is that later when you revisit the code, you can easily understand what you did and why. Trust me, after one week; you have no idea what you did and why. I apply the same principle when working with Designer. I always leave notes to myself so that later, I can easily pick up the principal elements in the graph, and it is handy when you expose parameters.
Try to work on multiple materials at the same time. When I worked on this project, I did these materials simultaneously. I would work on one material until I reached a certain level of quality, and then I would move to another one and work it to the same level. I would then learn lessons and techniques that I could apply on my second pass to the previous materials. Working this way also helps get the materials to the same level of quality. You don’t want to finish the week with one material finished and super polished, but then you have another ten that are very basic.
Watch as many tutorials as you can and create a knowledge database. I use Notion for this. Sometimes while adjusting nodes, you will come across happy accidents that may not be useful at the moment but can be used later for a different material. I have a substance file containing a lot of graphs snippets with some explanations that I constantly check to pick up new ideas.
I want to add that if you’re going to get better at creating materials, one thing that would help tremendously is you doing a personal project. This personal project can be creating an environment, a simple scene, or a material challenge. I did something similar to improve my understanding of the PBR workflow, what makes a good material, and explore the use of the Substance 3D tools. That led me to create a 365 material challenge, where each day, I would make a material during an entire year. These materials could be done using the Substance 3D Assets platform, Substance 3D Designer, and Substance 3D Sampler to work my textures. That is my final tip, do a personal project that will help you grow as an artist, and it will provide the perfect environment for you to test new techniques and workflows.
I’m very active on Twitter, follow me there!