《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 :
- 《Papervision3D Essentials》 翻译 chapter 9
- Papervision3D essentials 第九章基本翻译之结束篇
- Papervision3D Essentials 第九章翻译 的下载地址
- Papervision3D Essentials 要点整理
- 推荐一本Papervision3D书籍:Papervision3D Essentials
- Papervision3D Essentials 第九章[续]
- Xen Virtualization Essentials翻译(1)
- [译]Xen Virtualization Essentials翻译(1)
- 对RxJava Essentials的翻译-Chapter2
- pthreads programming Chapter 3: Synchronizing Pthreads 翻译
- chapter 9
- 书写高质量JavaScript代码的要义(The Essentials of Writing High Quality JavaScript)翻译
- 书写高质量JavaScript代码的要义(The Essentials of Writing High Quality JavaScript)翻译
- 书写高质量JavaScript代码的要义(The Essentials of Writing High Quality JavaScript)翻译
- Shared Source CLI Essentials翻译(二):1.2 Rotor:一个CLI的共享源代码实现
- Shared Source CLI Essentials翻译(一):1.1 CLI虚拟执行环境
- [翻译] Effective C++, 3rd Edition, Chapter 1. 习惯于 C++
- [翻译] Effective C++, 3rd Edition, Chapter 5. 实现
- 基于MDM的数据整合的研究背景
- jsp页面实现打印
- Effective STL - 为指针的关联容器指定比较函数
- C# 开发和使用中的23个技巧(常用)
- 面试两个人应届生的经验
- 《Papervision3D Essentials》 翻译 chapter 9
- 跳槽,获取新生
- 我是88年的还在上大学,我是不是选择在大学多蹲几年呢??
- 谈谈循环不变量
- 数据整合基础知识介绍
- vc中error LNK2001:unresolved external symbol _WinMain@16的解决方法
- 生活之美
- 我与Broncho A1的成长
- ASP字符串转换函数用法