Blender 3D:菜鸟到高手/法线和着色
适用于 Blender 版本:2.63。 |
打开一个新的 Blender 文档。删除默认的立方体,并添加一个“UV 球体”网格。在工具架(如果工具架不可见,请按 T 使其可见)左下角出现的“添加 UV 球体”面板中,将“段数”和“环数”都设置为一个较小的数字,例如 8。结果将非常有棱角,如右图所示,而不是像你期望的那样圆润。
按 F12 进行快速渲染。3D 视图将被 UV/图像编辑器 视图替换,显示渲染的图像,如右图所示。按 Esc 返回 3D 视图 。
选择球体物体( RMB )。现在在工具架中查找着色按钮:,然后点击“平滑”。现在使用 F12 尝试新的渲染。
如你所见,物体的表面看起来更平滑和圆润,即使轮廓或剪影与之前一样有棱角。
使用 Esc 返回 3D 视图。确保 UV 球体物体被选中,并且你处于编辑模式。如果属性架在 3D 视图右侧不可见,请按 N 将其调出。查找“网格显示”面板,并找到“法线”设置。 。如果你勾选了两个图标框,UV 球体的显示应该会改变,看起来有点像右边的图像。
这些小尖刺线是法线;每个面的中间的绿色线条是面法线,从每个顶点突出的蓝色线条是顶点法线。
在光的物理理论中,法线是垂直于物体表面的一条线,光线照射到物体表面时,光线会打到这个点。当你的眼睛(或相机)C 位于通过特定表面法线的平面上,观察由共面光源L 照亮的某个表面点P 时,会根据表面的物理特性反射特定数量的光,并因此被相机记录下来。当C-P-L 角被法线分成两半时,观察到的反射光的强度最大。
在现实世界中,许多表面是弯曲的或不是平坦的。但是网格只能由直线边和平面组成。那么它如何表示具有曲面的物体呢?
当你将 UV 球体添加到场景时,你可以选择指定它是由多少段和多少环组成的。越多,几何体越接近曲线。但是,越多,渲染所需的时间越长,模型将占用更多的内存来保存所有额外顶点、边和面的信息。
这就是你点击的“平滑”着色按钮的作用。它使用了一种叫做Phong 着色 的技巧。它不是根据物理理论中所说的每个面的法线进行光照计算,而是从分配给每个顶点的法线开始,根据每个点到角点的距离,从角点的顶点法线插值每个点上的法线。结果使眼睛误以为是弯曲的、圆润的表面,而实际上并没有。
这完全违反了物理定律。首先,你怎么能定义一个垂直于点的“法线”?但如你所见,结果看起来相当不错,而且涉及的额外计算相对较少,远少于实际生成所有额外的几何体。
随着你对计算机图形学了解越来越多,你会遇到更多这样的技巧。即使使用现代计算机,物理上准确的建模仍然非常困难,而且结果可能看起来并不那么好。但通过采用一点完全违反物理定律的横向思维,我们往往能得出更逼真的结果,这颇具讽刺意味。
如果你在网格中添加了许多顶点、边和面,你可能会在平滑着色中遇到不连续性,导致难看的斑点,如右图所示。
假设你的网格构建正确(例如,没有边和面以物理上不可能的方式交叉),出现这种情况最可能的原因是新添加的顶点和面的法线指向错误的方向。要解决这个问题,在编辑模式下选择网格的麻烦部分(或选择整个网格),然后按 CTRL + N 重新计算所有法线。重新渲染场景以确认着色不连续性已消失。
请注意 CTRL + N 在编辑模式中的不同含义。在所有其他模式下,它将打开一个新的默认 Blender 文档! |