图片不能显示:
第九章 : Z-sorting (深度排列)
简介:
本章主要介绍下面三个方面:
a : 什么是Z-sorting(深度排序)
b : layering scene renders (分层渲染场景)
c : 用四叉树进行复杂的渲染的渲染
Z-sorting的解释 :
在前面的章节中你一定碰到过Z-sorting(深度排序)的问题,你用的3D模型(model)越复杂,如果Z-sorting控制不准确,导致的问题也将会越来越明显 。
下面两幅图显示了两个茶壶,它清楚的显示了什么是Z-sorting(深度排序).
上面的图显示有一部分平面不可见,喷口后面的平面由于排在茶壶身体所在面的后面(即就是排在后面,我们不可见的一面),因而不可见,这就是利用了Z-sorting 。
The painter's algorithm (排序算法)
Z-sorting(深度排序)方法将决定每个平面在scene里的显示深度,其深度位置是按照scene里的平面(即3D对象的某一面)距camera的距离来决定的 。在排序时判断哪个平面应该在前面是非常耗cpu的(The process of determining which triangle should be in front is CPU intensive.)。默认的,papervision3d 用一种非常快速但不是很精确的算法来为scene里的每个平面排序。该算法就是The painter's algorithm ,它的主旨是:远处的物体应在近处的物体之前被显示出来(即先显示远处的物体,再显示近处的物体)
该算法的流程如下 :
第一:所有在camera视图里的平面(3D对象的某一面)是按照距camera的距离,由远到近进行排序的。
第二:所有的平面(3D对象的某一面)是按照已排好的顺序依次显示在scene上
即:最先开始显示最远处的的对象 然后由远及近依次显示各个对象。最近的对象最后显示。
上面 最左边的图里的山是离camera最远的,所以它最先显示出来,然后显示中间那张图里的草型区域,最后显示右图里的树林。
Sorting triangles ——对平面进行排序
为了更好的理解和深度排序有关的问题,我们需要更好的理解深度排序,下面是一幅标有注解的图 。注:triangle :平面 。
按照The painter's algorithm排序算法,则最先显示的是最远处的平面对象。所以先显示平面B,然后显示平面A 。
下面的两幅图,左边是按由近及远顺序显示的图(图Expected),右边是按照深度排序的方法显示的图(图painter's algorithm)
有一个很有效的方法去解决上面显示不明了的问题,即对B平面进行再分 。
下图是对平面细分的指导 :
上面的平面B被再细分成平面B和平面C 。渲染scene时,将会首先显示平面C然后是平面A, 最后是平面B 。
下图是再分后的结果:
如果换一个视角,将会导致重新排序,平面显示的顺序依旧是由远到近 ,只是此时各个平面距camera的距离发生了改变。如下图:
这时,平面A将会最先显示,然后是B 最后是C 。但是这里将会导致一个Z-sorting问题:即平面A将会和B重叠 。
Layering your renders :