关于面法线和删除隐藏面

有几个常用步骤可用来加快渲染过程。

为了尽量缩短渲染模型的时间,最常用的方法是删除隐藏曲面或隐藏位于相机之外的对象。

每一个建模曲面均由面组成。这些面为三角形或四边形,并且每个面都有向内和向外的侧面。面指向的方向由称为法线的矢量定义。法线的方向指示面的前表面或外表面。

面法线确定光线反射(反弹)和弯曲(折射率)的方向。如果相机位于面的后方,面对于相机将不可见,但是渲染器仍会处理它以反射光线并投射阴影。

在观察到孔的实例中,通常表示模型中本来就缺少该面,或者面背离相机。

如果缺少面,则需要手动重新构造面。对于使用 3DFACE 绘制的对象,法线的方向由右手坐标系中绘制面的方式确定:如果以逆时针方向绘制面,则法线向外;如果以顺时针方向绘制面,则法线向内。应该以固定不变的方式绘制面。

注: 实体对象上的法线通常具有正确的方向,这有助于创建模型以供渲染。

渲染时,渲染器将搜索所有指向远离视点方向的法线,并从场景中删除相关的面。此删除步骤称为“后向面剔除”

删除后向面之后,渲染器用一个 Z 缓冲区比较对象沿 Z 轴的相对距离。如果 Z 缓冲区指明一个面遮挡了另一个面,则渲染器会消除隐藏的面。消除的面在总面数中占的比例越大,节省的时间越多。

渲染器将对场景中的每个对象进行处理,即使那些位于相机之外并且不会出现在渲染视图中的对象。良好的图层管理对于为渲染目的而建立的模型有益。通过关闭包含不在当前视图中的对象的图层,可以显著提高渲染速度。