《Papervision3D Essentials》 翻译 chapter 9

来源:互联网 发布:itc网络广播终端调试 编辑:程序博客网 时间:2024/05/16 06:30

图片不能显示:

 

 

 

第九章 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

 

原创粉丝点击