Tutorial: Creating fabric with VRscans
My name is Luca Veronese, and I'm Lead 3D Artist at ScanLAB Projects, a small studio based in London. We specialize in 3D scanning and pointcloud data visualization for exhibitions and Broadcasts. I've had to render 3D geometry very rarely in the past two years, but I've used personal projects to learn and implement many different workflows.
Soon after I started using VRscans materials, and saw how incredibly accurate and detailed the shaders are, it became clear to me that I needed a realistic looking geometry to match such high quality. This was the perfect opportunity for me to learn Marvelous Designer, which I'd always wanted to try. My idea was to simulate a piece of fabric falling on top of character, creating a shape with lots of folds, similar to sculptures you might find in a museum.
With this tutorial I will try to guide you through my workflow and show you how to render fabrics in a few simple steps. I'll show you how you can significantly reduce the amount of time spent shading with the right tools and software, and how I rendered within 3ds Max with the power of V-Ray and the VRscans material library.
Step 1: Scene set up in 3ds Max
I'd previously created a suit model, and used Marvelous Designer and ZBrush to create the fabric geometry. I imported both into 3ds Max. When I have all my assets in the scene I make sure the texture scale is consistent across all objects. To do this I have use a script called "advanced_uv_normalizer", which copies and pastes the UV map scale from one object to another. This is really helpful, because you can quickly test different materials without too many tiling adjustments.
To render my scene I created a background plane. This is a simple extruded spline, three V-Ray target lights, and a dome light. A dome light with an HDRI texture is usually enough to light a scene, but in this case I wanted more control over the shadows.
With a single subject in the scene, a three light set up is a robust solution that I can quickly adjust to create different moods. This was another key factor in keeping the feedback from the software active. With three lights around the character and very few adjustments, I could simply move my camera around the scene to understand what would work best with my shape, instead of locking the camera angle to a composition that could have required a more complex light set up.
Step 2: V-Ray settings
This was the moment when V-Ray for 3ds Max really made a difference, especially version 3.5, which comes heavily optimized and ready to render. I used the default settings, and only adjusted few parameters to better suit my workflow.
First, I deleted the denoiser from the render elements list. I like to keep some noise in my final image - it helps to keep the details sharp. Next I lowered the max ray intensity from 20 to 10, to remove the occasional fireflies. It's not always necessary, but I've found myself having to change the value so many times that I tend to do it by default.
Because I work in IPR (Interactive Production Rendering) mode, it's important to change global illumination to brute force in both the primary and secondary engine. This helps speed up the frame buffer, so it becomes pretty much instant. It is also very important to set the render time from 1 to 0, or the software will stop rendering after 1 minute.
Working in real time is not a new feature for V-Ray, but the real difference of the IPR mode is that I can work in real time with the full power of the production render engine. I can adjust the settings until I'm happy with the result, and then let the render go. At any point I can stop it to save the image, or make changes.
Another important value to consider is the noise threshold, which controls the amount of noise in the final image. It can be adjusted after a few tests depending on the scene, but I tend to work with a default of 0.001.
Step 3: V-Ray frame buffer and physical camera
Before I go into VRscans materials, I would like to show some of the adjustments I've made to the cameras and the V-Ray frame buffer. For the camera I always stick to the same rules that I follow with a regular DSLR, and the physical camera in 3ds Max is perfect for this. I keep the f/stop below 22, which is the maximum aperture that I have in my real lenses. The ISO is between 100 and 400 to help reduce noise, and the shutter type is set to 1/seconds. Depth of field is always enabled, but I might turn it off to speed up the rendering if I need to quickly test something.
Then I enable vignetting, lens distortion and the number of blades in the aperture shape. These are subtle effects - but they are also present in a real camera. I avoid retouching, and I do my colour corrections directly inside the V-Ray frame buffer. I've learnt this trick, and many others, from CGI master Grant Warwick, who I need to thank for all the knowledge he's shared.
I always use LUTs (Look Up Tables), as they help give depth and vibrance to the image. Although they are a great way to achieve many different looks and moods, I like to use always the same two. By using the same LUTs I'm able to keep a certain level of consistency between projects, and I always know what to expect.
Depending on the LUT, I adjust contrast, saturation, and white balance. Generally, I increase both contrast and saturation, and shift the white balance towards higher values to bring back the warmer tones removed by the LUT. I also like to introduce a little bit of blue colour in the shadows, and adjust the lower end of the curve to make them brighter.
I do not change the exposure and highlight burn until I start rendering. I adjust them depending on the type and the amount of lights in the scene. I also adjust bloom and glare in real time.
Step 4: VRscans material library
VRscans is a library of real life scanned materials. There are already more than 500 materials available and, unlike other material libraries, the quality is impeccable across all shaders.
This is one of the many reasons I'm so excited about it. When shading and texturing it's impossible to rely only on one source, and I often have to combine many of them, and use many different tools, just to create a material or a single texture map. Now I can simply pick one from the Chaos Group website, download it, and apply it to the mesh.
The VRscans material library is having a huge impact in my workflow. For this project, over the course of a weekend, I created 12 still images at high resolution, with so many details that I was able to put together a 9 minute video just by zooming and panning into the images. The following weekend, I tried to create a transparent plastic material of my own and use it on the same fabric mesh. It took me one full day just to create the shader, and eight hours of rendering to have an image that still wasn't what I wanted.
Admittedly, this is a bit of an unfair comparison, as transparent materials takes longer to render, and a more powerful machine or a more experienced artist could have saved some time. But, thanks to VRscans materials, I was able model and render 12 stills and a video in less than two days, compared to more than one day to create a single image that I can only describe as a test render.
Step 5: VRScans material
In a VRayScannedMtl there are only two inputs available. To explain why, I will quote the official document available online:
"The scanned material simply stores information about the way a physical material responds to light at individual points on the surface; it has no notion of components that extend across the surface such as diffuse or reflection qualities, or normal or bump maps. The scanned material is simply a faithful representation of how each point on the object responds to light."
I can't really ask for more, but the team at Chaos Group has taken it further with a series of tools that manipulate the information captured without losing realism.
Thanks to the paintmap and the filtermap, I was able to customize the material colour and tint in the same way I adjust the diffuse color in a regular material. It is possible to select a colour directly in the VRayScannedMtl node, or input a texture, but I found that with fabric materials using a simple paint colour gives better results.
There is also the standard 3ds Max coordinates tab that adjusts tiling and UV mapping projections. When the scale of the mesh is correct and matches real life objects, it is possible to use the "adjust UV tiling to an object" feature. This function finds the correct tiling values for the selected object, and sets the tiling to match the sample size of the scanned material.
The material offers a few more options to adjust the IOR and the bump intensity, but the correct value is set when loading the material. It's better and easier to use a different material, instead of drastically changing, which risks breaking the realism.
There are more advanced tools to optimize the render time and quality, but I'm happy to say that I used the default settings, like almost everywhere else in V-Ray. I can't stress enough how important this was for this project and all the other projects I'm working on - I can focus on my ideas instead of dealing with the technical problems.
Step 6 Title : Rendering the final stills
This was not the first time I worked with VRscans materials, and I knew that all the models in the scene needed to be as good as possible before I could render the final stills.
At this stage I was still experimenting with different ideas, camera angles and materials. I tried shaders like wood and paints, trying to make the geometry look like a modern sculpture, but the sharp reflections of these materials did not play well with some of the issues left in the mesh. On the other hand, the fabric materials on the other hand gave me even better results with fewer geometry issues.
I would like to tell you all the secrets that went into making this images, but the truth is the shaders simply work. Each one of the final images took about five minutes to set up, and 30 minutes to render.
I cycled through all my cameras every time I was testing a new material, adjusting the light position and intensity to have strong shadows and enough light to show all the details. Not everything I tried worked, but it was nothing like using standard materials. I didn't have to tweak hundreds of parameters simply because I changed my camera position and it felt like I was taking pictures with my camera. I was interacting with the software instead of struggling with it.
I would like to thank Chaos Group for giving me this opportunity to share my workflow. This is my very first tutorial, so I hope you find it useful! And if you want to give VRscans a test, you can download a fully functional 30-day trial, free of charge.