Skip to main content

这篇笔记献给最后一次使用mantra做作品的我,从此以后再也不用了!太慢了!

提高精度是唯一减少噪点的方式,当然我们不应该一股脑的提高Pixel Sample,根据不同的噪点产生原因相对应的提高采样。

首先我们要在mantra设置中开启Direct Lighting(per-component)和Indirect Lighting(per-component)。

首先关于什么是Direct Lighting和Indirect Lighting,houdini自己的帮助文档里竟然给了两种不同的结论,我更偏向于Direct Lighting是所有光源照射物体材质上的采样层,而Indirect Lighting是所有环境对这个物体材质产生影响的采样层。

houdini的帮助文档中解释mantra的渲染原理时候说mantra会首先发射primary sample来采样物体的形状和颜色,然后发射second sample,分为Direct和Indirect,来做为反射折射等其他属性的采样,但是转眼在另一篇章节中则说发射的两次采样第一次是Direct,第二次是Indirect。

不管怎么说,我们开启了这两个通道,就可以分别查看每个层的渲染结果,以此来确定噪点是出现在哪个层中。

一般来说玻璃的噪点出现在两个层中,一个是Direct Lighting的reflect层,一个是Indirect Lighting的refract层。

Direct Lighting则一般是因为用了hdri做灯光导致的,我们可以通过增加环境灯光的采样来减少噪点。在Environment Light的RenderOptions里有Sampling Quality可以提高,默认是1,给到10能明显改善噪点,而且增加的渲染时长并不明显。

最难的则是Indirect Lightiing中的refract层噪点,一般会出现在标题图片中的车玻璃上,这种蒙住内部空间的玻璃,导致内部空间采样不多,玻璃折射后还要看到内部的物体,所带来的噪点额外的难以去除。

这个噪点可以提高mantra渲染参数中的Refraction Quality来减少,标题图片中的车玻璃需要提高到50才能有效减少噪点,得到一个还算干净的玻璃,但是也会极大极大的减慢渲染速度,是我不能接受的速度。

其实对应哪个层的噪点应该怎么去除,但houdini的帮助文档中,rendering章节有一篇专门讲解的文章,叫removing noise,没事的时候可以看看。有一些噪点只能通过直接提高Pixel Samples来解决,比如景深或者运动模糊等。

另外我们渲染玻璃材质的时候,一定要勾选这个Fake Caustics,这样玻璃内部才会透光,当这个参数的Shadow Opacity改为1的时候,就跟没有开启这个参数的效果一样了。默认开启就行了。

另外在做物体表面水珠的时候,一定要和物体表面有穿插,这样渲染的才是正确的效果,一旦没有穿插,哪怕离的很近,这个玻璃材质好像也不会再受到周围材质的影响了,看上去两者毫无关系,尤其是使用vdb做物体表面滑落的水珠,一定要和物体有穿插,不然会异常的亮。

(完)

2 Comments

Leave a Reply