What & How & Why

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录前一修订版
后一修订版
前一修订版
上一修订版两侧同时换到之后的修订记录
vfx:houdini:rendering:mantra [2019/05/12 12:51] – [处理办法] codingharevfx:houdini:rendering:mantra [2019/05/13 02:29] – [Indirect reflections] codinghare
行 327: 行 327:
  
 ===Direct Illumination=== ===Direct Illumination===
 +==Direct reflections==
 +Direct reflections,也就是物体表面直接反射光源产生的图案,通常会产生斑点状的噪点图案。该现象在材质的 roughness 值处于 ''[0.1, 0.3]'' 之间非常明显,尤其是处于 area light 的照明下。
 +\\
 +\\
 +**处理办法:**
 +  - 最好的去除这种类型的噪点是**提高对产生该噪点的光源的采样数**(//Lighting Sample//)。对光源的采样数实际上扮演了<color #ff7f27> Diffuse Rays</color> 的**乘数**。因此,我们需要将该采样数控制在一定的范围内。
 +  - 提高 ''Pixel samples'' 也会有帮助,但就像之前说过的,作为一个提升所有 ray 数量的手段,''Pixel samples'' 可能导致其他区域采样过度。
 +  - 增加 Direct Rays 的数量也可以有效的清除该类型的噪点。
 +{{ :vfx:houdini:rendering:lighting_sample_noise-min.jpg?600 |}}
 +综上,我们自始至终都需要考虑,如何在清除指定光源产生噪点和清除直接光源产生的噪点之间找一个平衡点。
 +\\
 +\\
 +**如何检查噪点:**
 +使用 ''Direct Reflect'' pass 既可以检查 Direct reflections 对场景的贡献。对于复杂的、存在非常多灯光的场景,我们可以将 ''Direct Reflect'' 层用 ''Per light'' 的方式导出。这种方法允许我们将指定的、希望检查噪点情况的灯光分离出来;同时也允许我们只对这样的光源增加采样的数量。
 +==Direct refractions==
 +在渲染中,当光源直接穿过**单个表面**(比如一个 grid)的时候会产生 Direct Refractions;同时,也会产生斑点状的噪点图案。该现象在材质的 roughness 处于 ''[0.1, 0.3]'' 区间时非常明显,特别是在使用 Area / Environment 照明的情况下。
 +<WRAP center round tip 100%>
 +注意:只有**第一次**折射会被考虑为**直接折射**。任何超过一次以上的折射都会视作**间接折射**。
 +</WRAP>
 +**处理办法:**
 +  - 最好的方法是增加对导致噪点光源的采样数。增加光源采样数等于将采样数乘到 Diffuse Rays 的数量上,因此将该值控制在一定范围内比较好。
 +  - 增加 ''Pixel Samples'' 也有帮助,但会导致没有噪点的区域采样过度。
 +  - 增加 Directly Ray 的数量(与 reflection 一样需要找一个平衡点)。
 +{{ :vfx:houdini:rendering:refraction_noise-min.jpg?600 |}}
 +**如何检查噪点:**\\
 +\\
 +开启 ''Direct Refract'' 渲染层检查即可。
 +==Direct shadows==
 +如果场景中有一个点与光源没有直接的路径连接,那么该点处会产生 Direct Shadows。在成阴影的过程中,渲染器会在几何体的边缘产生斑点状的 / 粗糙的噪点图案。该现象在由 area light 产生的 soft shadow 下特别明显。
 +{{ :vfx:houdini:rendering:directshadowperlight-min.jpg?600 |}}
 +**处理办法:**
 +  - 最好的方法是增加对产生噪点光源的采样数。
 +  - 增加 ''Pixel samples'',缺点不再复述。
 +  - 增加 Direct rays 的数量。
 +{{ :vfx:houdini:rendering:d_shadow_noise-min.jpg?600 |}}
 +**如何检查噪点:**
 +\\
 +\\
 +使用 ''Direct Diffuse'' 层即可。如果灯光较多,可以通过 ''Per Light'' 选项分离出指定的灯光。
 +===Indirect illumination===
 +==Indirect diffuse==
 +相比起 Direct diffuse,Indirect diffuse 由场景中其他的渲染对象贡献而来,而这个过程中也会产生噪点。在以下情况同时存在的情况下,该现象会尤其明显:
 +  * 有物理精确光源(//physically accurate light sources//
 +  * 该光源特别靠近其他对象(比如光的相互遮罩、光的交叉)
 +  * 相比直接光源,该光源的贡献特别小。
 +{{ :vfx:houdini:rendering:ind_diff_noise-min.jpg?600 |}}
 +**处理办法:**
 +\\
 +\\
 +  - 最好的方式是增加 Indirect Sample 的数量(在 Mantra 中修改 ''Diffuse Quality'' 参数)。
 +  - 增加 Pixel samples。
 +  - 调整 ''Noise Level'',该方法可以控制噪点低的区域的采样数不会不会暴增。
 +<WRAP center round info 100%>
 +推荐一开始从 Noise Level 入手,并且使用很小的数值进行调整,直到看到某些区域的 Indirect Diffuse 噪点开始被影响以后,再使用 Diffuse Quality 参数调整采样数(Noise Level 有助于筛选出最应该提高采样数的区域)。
 +</WRAP>
 +**如何检查噪点:**\\
 +\\
 +使用 ''Indirect Diffuse'' 层即可查看细节。对于灯光多的场景,使用 ''per light'' 选项查看每个灯光的信息。
 +\\
 +\\
 +<WRAP center round tip 100%>
 +如果只是希望得到一张清晰的图片,那么试图从渲染结果中**完全**去除噪点是没有必要的。在大部分情况下,当直接光与间接光混合在一起的时候,indirect noise 通常是不可见的。我们可以通过 //Combined color// 面板来查看采样对对渲染图精确度的影响。
 +</WRAP>
 +在某些情况下,如果我们想让我们的间接光源得到足够的采样数,那么我们不得不为噪点设一个非常低的阈值(Noise Level)。这种情况下,我们同样可以增加 ''min ray samples''。如果噪点仍然存在,那么增加 ''Pixel samples'' 可能是最好的选择了。
 +<WRAP center round important 100%>
 +增加 Pixel samples 会得到更好的降噪效果,但会令 Noise Level / min & max ray samples 被重新评估。
 +</WRAP>
 +{{ :vfx:houdini:rendering:id_noise_check-min.jpg?400 |}}
 +==Indirect reflections==
 +作为其他物体表面产生的反射, Indirect reflections 可能会贡献场景中大部分的 Noise。当 反射明亮、光滑、有光泽的时候(//Bright & glossy//),噪点会非常明显。同时,因为间接反射会为 pixel 贡献更多的颜色,这通常会导致 ''firefiles'' 类型的噪点(也就是因为)
 ====参考资料==== ====参考资料====
 [[https://www.nvidia.com/object/nvidia_research_pub_016.html|Stochastic Transparency, Eric Enderton, Et Al. SIGGRAPH 2010]] [[https://www.nvidia.com/object/nvidia_research_pub_016.html|Stochastic Transparency, Eric Enderton, Et Al. SIGGRAPH 2010]]