Cinema 4D / 材质

【OC】使用OC制作次表面散射SSS效果

3S效果在C4D默认渲染器中很难渲染出来,渲染速度也会出奇的慢。但是在OC中,3S效果反而很容易渲染,因为OC是基于真实光学物理定律的渲染器,渲染3S效果的时候会少一种光进入到物体中,因此渲染起来反而比渲染纯粹的玻璃之类的要快一些。

在OC的材质中,Diffuse和Specular模式都可以制作3S效果,这里先拿Specular模式举例。

创建一个Specular材质球,其中有三个参数是关于3S效果的,Transmission、Medium和Fake Shadows。

Fake Shadows的作用是使物体,尤其是Specular材质下的物体是否按着真实物体形态去产生阴影。

第一行的对比看得出,在关闭Fake Shadows的情况下,玻璃物体产生的阴影是按着其本身体积产生的,也就是说,虽然这个物体是个玻璃物体,但是产生的阴影其实和一块同样形状的石头产生的阴影没有差别。

第二行中是一块带有颜色的玻璃的对比,可以看作是带有吸收效果的玻璃,开启后同样也会相比不开启更加通透,其实这个对比还不太明显,在使用特色图片中那个人物头像模型的时候会非常明显,如果不开启Fake Shadows,不管怎么调节,最后的效果都会有一种脏脏的感觉。

我的理解是,光进入玻璃中,也就是介质中,在其内部每一个体素都会产生阴影,如果不开启Fake Shadows,这个阴影就会像一个个实体阴影一样保留下来,因此会导致物体整体变暗变灰,而开启后,光就会通过一个个体素,也就更通透了。

虽然这个理论不一定对,但是对我理解这个Fake Shadows很有帮助。

所以在Specular材质中将Fake Shadows勾选上。然后调节Medium参数。

Medium中有两个节点,一个是Absorption介质和Scattering介质,Absorption相当于是Scattering的简化版,渲染起来也更快。当然想要制作更好的3S效果还是需要Scattering Medium,而且Scattering的参数也包括了Absorption。所以这里只说Scattering Medium了。

点击Scattering Medium,材质球就会立刻发生变化,但是渲染之后却和之前默认的Specular没有区别,我觉得这个和之前那个制作雾的时候的情况一样,OC在没有参数调节之前的缺省值有些奇怪,不知道到底是用什么值作为缺省值。不过没关系,我们也不可能就这么什么也不调节就这么结束了。

打开材质节点编辑器,或者直接在材质对话框中调节,给Scattering Medium中的Absorption和Scattering两个选取框分别添加一个Float Texture。现在渲染一下看看效果。

此时已经有次表面散射的效果了。现在来看看我们都做了什么。

Float节点的参数默认是灰色,也就是0.5。也就是说,我们分别给了Absorption和Scattering值一个0.5的值。

现在把Absorption的值调节为1,也就是纯白色。然后调节Scattering的参数,从0到1滑动,在滑动过程中观察OC LV窗口中的变化。这里截取0和1时两个状态的渲染效果。

Scattering的Float节点值为0
Scattering的Float节点值为1

如果把这个过程比喻成一杯水里的牛奶,那么在0的时候就是一杯纯净水,随着值的增加,相当于向杯子里倒奶,当倒到1的时候,杯子里已经是纯牛奶了,水的含量相对于牛奶可以忽略不计了。

也就是说Scattering参数控制着3S效果的“浓度/强度”。有的3S效果强度小,比如一块带颜色的玻璃,很通透,有的物体3S效果比较强,比如一块玉石。

按着这个方法,调节Absorption的Float参数,同样可以得出结论,Absorption参数控制次表面散射的颜色。

那么如果把Absorption的Float节点换成Spectrum Color节点,给Absorption一个颜色,那么就变成了一个带有颜色的次表面散射。

给Absorption一个黄色,再调节一下Scattering,就可以得到上面的效果了。这里顺便说一下Invert Absorption是做什么的。

我们平时看到的叶子是绿色的,不是因为叶子本身是绿色的,而是它吸收了所有的光,除了绿色,绿色被反弹过来了,所以才呈现绿色。同样,如果取消勾选Invert absorption,渲染结果才是符合物理规则的蓝色。也就是说上面的材质吸收的是黄色,除了黄色其他颜色都被反弹回来了,因此应该呈现黄色的相反色,蓝色。

但是这样操作很蹩脚,我调节的吸收是黄色,自然想的是让其表面呈现的也是黄色,所以OC添加了这个参数,反转吸收,使得反弹回来的颜色呈现是我们调节的颜色。

但是可以看到,我们调节的黄色和渲染出来的黄色并不太相同,因为它还同时受到Scattering的影响,甚至还有可能Transmission的影响,所以想到调节到自己想要的颜色,还是需要多试多调节才能得到最满意的效果。

那如果现在给Scattering一个颜色会是怎样呢?比如现在给Scattering一个绿色。

整个材质都发生了变化,我们给了Scattering一个绿色,反应到渲染效果中是整体都发绿了,这是最直观的感受。但是再仔细分析下,其实是受光的一面偏向了绿色,而阴影区域仍然是黄色。再看材质球,也符合这个结果。

其实如果这个时候使用HSV模式调节Scattering颜色的话,调节颜色的V参数,也就是颜色灰度值,仍然会影响3S效果的“浓度”。

在最上面还有一个Density参数,和雾那篇文章说的一样,是一个倍增器。如果说物体模型非常大或小的话,使用Scattering不能很好的调节出想要的效果,就可以考虑调节Density,否则平时一般不需要调节。

现在来看看Transmission参数是用来干什么的。

如果想调节出上面的效果,首先想要的自然是Checks节点,但是不管把Checks放进Absorption还是Scattering节点都不起作用。这时候就需要把Checks节点连接到Transmission节点中,再使用Gradient来调节黑色的颜色,就可以制作出上面的效果了。

我对Transmission的理解是,它控制着光进入物体的程度,白色自然是全部进入,也就是完成的Medium节点的效果,黑色则是一点光都不允许进入,自然渲染效果就是呈现了黑色。但是如果把黑色改为其他的颜色,首先有颜色就不是纯黑了,就有了一些光进入了物体,呈现了3S效果,而颜色是什么,则渲染后那部分就是什么颜色,这个倒是不用反转吸收了。

如果不开启Medium节点,只使用Transmission,就相当于给Specular材质上色了,如果Transmission是红色,那么就是一块红色玻璃,也就是

Specular材质的次表面散射还可以配合Roughness来调节渲染效果。比如把粗糙度调节为0.7.

物体的反射会减少很多,有点Diffuse材质的效果。但是其实我们也可以直接用Diffuse制作3D效果,比如生活中的橡皮、干燥的皮肤就是Diffuse材质的3D效果。

那么新建一个Diffuse材质,把刚才Specular中的Medium节点复制到这个Diffuse材质中,可是结果很奇怪,这个Medium节点并没有生效。渲染效果还是白色。

我在网上找到的解释是,默认的Diffuse的材质是白色,白色会反射所有的光,因此没有光进入到物体中,自然也不会有次表面散射的效果。这个理由并不能解释即使把颜色改为其他的颜色也没有效果。

但是不管怎样,在使用Diffuse材质制作次表面散射的时候,直接把Diffuse通道关闭。

但是关闭后,渲染的效果又变成了纯黑色。

这个怎么解释呢?我的理解是,Specular材质本身是透光的,所以不需要我们调节Transmission来控制光线进入到物体内部,但是Diffuse材质是个实体,不透光,所以需要使用Transmission节点来控制光线进入物体的程度。

所以给Transmission节点一个纯白色,不管是使用RGBSpectrum还是Float texture来制作都可以。

这样,次表面散射的效果就成功的制作出来了。其余的就和Specular一样了。

但是如果不使用Medium,只使用Transmission节点,还可以制作出这种效果。

即把Diffuse改为红色,Transmission改为蓝色,就会有这种在暗部为Transmission颜色的效果。有点类似Specular材质的Transmission,不过好像受光面颜色正好相反了。

(完)

 

打赏

1 thought on “【OC】使用OC制作次表面散射SSS效果

Leave a Reply

Your email address will not be published. Required fields are marked *