Creating a gold shader in V-Ray for Maya with a metalness workflow

We are at that point again when blog posts I’ve written in the past are obsolete again. For a long time, I was happy with my metal shading workflow and didn’t see the need to update. And I was slow to embrace PBR and didn’t see the need to implement it. But after some encouragement from my colleague, I did some long-overdue research and quickly realized that it was time to re-invent my workflows again. So to test this new workflow using Metalness, I created a gold shader and compared the method to my old approach. 

My old method consisted of using the Complex fresnel OSL shader and feeding values from https://refractiveindex.info. So basically you needed to type in values for the n and k coefficients for the different wavelengths of light. It was a little bit tedious, but I only had to do it once and could then save them as presets, so it was okay.  

If you, for some reason, want to read more about the old method you can do that here: http://www.magnus-olsson.se/creating-mastering-v-ray-shaders-in-maya-lesson-02-materials-101/.

But now on the new method. With this, you don’t need any external files at all. All you have to do is punch in values provided in a chart from this article in a standard V-Ray Material: https://www.chaosgroup.com/blog/understanding-metalness#. (Worthwhile reading the rest of it as well). 

As soon as I came to terms with the fact that it was okay to have color in the diffuse slot for metal materials, I quickly grew fond of the approach. It’s quicker and simpler to set up and also takes about half the time to render compared to a gold shader with the OSL method. 

A note is that this workflow is only possible in V-Ray Next since you need the Metalness checkbox in the material. If you haven’t already upgraded, I highly recommend it. 

Showreel Spring 2018

I’ve just published a new showreel with some of my work as a 3D Generalist. A more detailed breakdown of what I’ve done is available under my portfolio and on Vimeo. Check it out!

3D and VFX Showreel Spring 2018 from Magnus Olsson on Vimeo.

Digital Emily skin shader setup using regular V-Ray materials and AlSurface Shader

I’ve been required to do skin shaders in V-Ray from time to time at work and I usually like to start with the data provided by Digital Human League for the Wikihuman Project as a reference. You can find the available data here: http://gl.ict.usc.edu/Research/DigitalEmily2/. It’s a set of textures captured at the ICT Lightstage of an actress named Emily and the data set is referred to as Digital Emily. For Maya users there’s a Maya scene included, prepared with lights and shaders just ready to render. However, if you’re not just using it as it is and perhaps want to use the shaders as a starting point for your own project the setup is not ideal as it relies on plugin materials instead of the regular materials in V-Ray. For example the SSS shader looks like this:

I would much rather have a VRayFastSSS2 material instead and a VRayMtl for the specular components. It’s fairly straight forward to convert these plugin materials to regular materials. I’m happy to share my Maya scene with my already converted shader setup. Just write a comment in the section below. This shader setup is a pixel perfect match with the plugin material setup and the results looks like this:

I think the results are quite nice, but there’s some parts of the SSS I don’t like. The glowing parts around the nose for example. And the shader setup is quite complex with four different materials blended together. The node tree looks like this:

With the release of AlSurface Shader in V-Ray there’s a possibility to get even better result within one single shader using the same textures. Here’s a blog post from Digital Human League about this topic: http://www.wikihuman.org/index.php/off-topic/the-alsurface-shader-on-the-wikihuman-data/. Here they use the Digital Mike data set, but that’s not publicly available as far as I know. They describe briefly how to use the AlSurface shader instead but doesn’t go into detail. It’s fairly straight forward, but there are some potential pitfalls. First of all you need to invert the single scatter map. You can either use an external program, like Nuke, but the easiest way is to use a Reverse node in Maya. Another thing that needs to be inverted is the Reflection Roughness values compared to the Glossiness values in the VrayMtl. For example 0.2 insead of 0.8 and so on. Here’s the settings I ended up with:

Once again, as I’ve already done a conversion and have a prepared Maya scene I’m always happy to share it if someone’s interested. Here’s the result using the AlSurface Shader.

It took a bit longer to render but I like the result more. I think the SSS feels more realistic now and have less of the glowing effect from the other setup.

Mastering CGI shader ball 2016 converted to Maya

I’ve converted the Mastering CGI shader ball (2016) to Maya. It’s a complete Maya scene with lights and shaders (manually converted so not pixel perfect but close enough) so it’s ready to use. If anyone is interested you can contact me (use the Contact Form here on the website or write a comment below). The max version of the shader ball is shared for free on cgtricks (https://cgtricks.com/shader-ball-2016-mastering-cgi/) with the following restrictions: ”You can use the shaderball for personal and commercial use, but you don’t change the base textures or resell the ball. Now, enjoy and share it around.” I assume the same rules would apply here.

Showreel Spring 2016

I’ve created a new showreel that includes work I’ve done over the last two years at Filmgate. Check it out under my portfolio!

 

Creating Mastering V-Ray shaders in Maya: Lesson 02 – Materials 101

A while ago I wrote a blog post called ”Creating Mastering Vray style shaders in Maya”. My goal was to translate some of the techniques Grant Warwick uses in the course Mastering V-Ray in 3ds Max to Maya. A lot of people still contacts me about these techniques and I’ve been feeling more and more bad about how outdated they are. So I thought it was time to update this and show how I would create these shaders today. And with new features like GGX and OSL it’s both faster and simpler to do now!

This post will cover how to create a plastic and a gold shader. Basically what I do is recreate the shaders from Mastering V-Ray: Lesson 02 – Materials 101, but with an updated approach. If this is something that people will find interesting I might continue and cover other Mastering V-Ray lessons in Maya. So please comment or contact me and let me know what you think!

Let’s start with the plastic shader. This is how the node tree looked like with the old setup:

Plastic_Old_NodeTree

It requiered three different V-Ray materials (with different values for Reflection Glossiness) to be blended together. I’ve also used the RemapValue node as an equivalent to the Falloff node in 3ds Max which is not ideal since it is pretty clumsy. V-Ray 3.3 introduces a Falloff node in Maya with a lot of the same features as in 3ds Max.  I’ve only tried it briefly but I was a little bit disappointed by the lack of bezier handles. For this plastic shader I didn’t need any falloff node since I could get the desired result with a simple V-Ray material with GGX as BRDF. Here is the settings I used:

Plastic_GGX_settings

Here is a comparision between the old shader (to the left) and the new (right):

Plastic_comparison

And now on to the gold shader. I’ve used the same approach as with the plastic shader to not blend multiple materials but to rely on a single material with GGX as BRDF.  The other big difference is that I use an OSL texture for the reflection instead of using Remap Value nodes. The OSL texture is called Complex Fresnel and you can read more about it here: http://docs.chaosgroup.com/display/OSLShaders/Complex+Fresnel+shader. The way I use this is that I start by browsing to the right material on http://refractiveindex.info/ and simply type in the right values for n and k based on the wavelength (0.650, 0.510, 0.475 for R, G and B). This is how the page looks like:

Refractive_Index_Gold_red02

There is actually a shelf called ”selected data for 3D artists” and that’s a good place to start. However, I found the values for the gold there made it look to reddish, almost like copper. So I tried a few different other Pages and chose the values from the Babar and Weaver 2015 instead.

And this is how the OSL texture looks in Maya:

All of this is better explained here: http://viscorbel.com/vray-materials-part-3-metals/ so I encourage you to read that as well.

This is how the node tree looks like for the gold shader:

Gold_OSL_Node_Tree

The color correction is for purely artistic reasons to tweak the shader to your own liking. In this setup I tried to make the gold look more like the old shader. This Color Correction node is not a default node but can be created from Create – V-Ray – Create from V-Ray plugin – Texture. By multiplying the reflection with a V-Ray Dirt I make the shader slightly less reflective in occluded areas.

This is the final settings for the shader:

Gold_OSL_settings

And here is a comparision between the old shader (to the left) and the new (right):

As you can see they are not exactly identical but I think they new one is looking better so I didn’t tweak it further to match the old one. Also worth mentioning is the significant dropoff in render time between the old shader and the new.

I have some plans to continue with these blog posts and the next one up would be a Green Metallic Paint shader, which is similar to the one Grant creates in Mastering V-Ray: Lesson 04 – Advanced Material Creation Part 1. But like I said earlier, it depends if someone actually finds this interesting. So please comment and let me know what you think and what you would like to see in the future.

Batch render multiple scenes with Maya

Managing renders is a big part of my job as a 3D generalist. Sometimes I have worked on a couple of different Maya scenes during the day and want to render them all over night on my local machine. Starting a batch render from inside of Maya only allows me to render one scene at a time. A workflow that I have found that suits my needs very well, and doesn’t require any external software or render farm setup, is to create a simple Windows batch script (.bat file). All you need is one line of code for each render. An example could look like this:

So basically all you need to specify is where Maya is installed on you computer, where your project is set and what your scene is named. Of course there is more you can do, but this is all you need in my opinion. For example, you can specify which frames to be rendered in the script. But I prefer to skip that unless I want to override the frames I specified in the render settings.

Renderable Curves in V-Ray for Maya

Something I’ve found myself using a lot lately is making nurbs curves renderable in V-Ray. This is a much faster and more flexible workflow in my opinion compared to the old way of extruding geometry along your curves in order to render them. It’s simply a V-Ray custom attribute that you add to the shapenode of your curve.

When working with lots of curves it can be a bit tedious to add all the attributes manually. One way to speed the process up is with scripting. How I like to work is that if I know that a bunch of curves will have the same shader and attributes, I select them and run my script that will apply the same attributes to all of them. Here is the script I wrote in Python:

 

Python script to change File node names to Image Names

This script will change the name of all the File nodes in a scene to their Image Name.

Python scripts for Subdivision and Texture Input Gamma in Vray for Maya

The first Python script  will apply a Texture Input Gamma from Vray Attributes on selected File nodes.

The second script applies Subdivision from Vray Attributes on selected Shape nodes. The script automatically converts a selected transform node into a shape node, which means that you can select the objects you want to subdivide in the viewport. I also set the script to not Override Global Values in order for you to set the values you want in the Default Displacement and Subdivision tab, instead of typing them in on every object after you flagged the object for Subdivision.