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.
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.
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:
# Select curves in the viewport add make them renderable in V-Ray.
import maya.cmds as cmds
import maya.OpenMaya as om
# Convert the selection from transforms to shapes
transforms = cmds.ls(tr=True, sl=True)
shapes = cmds.listRelatives(transforms, s=True)
# Set the values you want for your renderable curves
Tesselation = 2
StartWidht = 0.015
# Enter the name of the shader you like to apply to your curves
shader = "Curve_shd"
for s in shapes:
cmds.vray("addAttributesFromGroup", s, "vray_nurbscurve_renderable", 1)
cmds.connectAttr(shader + ".outColor", ".vrayNurbsCurveMaterial")
om.MGlobal.displayInfo("Renderable Curves added to selection")