设为首页  
联系我们  
加入收藏  
网页制作 冲浪宝典 图形图像 操作系统 软件教学 编程开发 认证考试 安全技术 站长专区 文学驿站 娱乐天地 游戏天地 办公软件
文章搜索
您的位置: 首页 >> 文章首页 >> 编程开发 >> 游戏开发 >> 基于LOD的大规模真实感室外场景实时渲染技术的初步研究 part II&III
精品推荐
游戏开发点击TOP10
·DirectX5.0最新游戏编程指南 DirectDraw教程篇 二、第一个DirectDraw实例
·用Excel编写小游戏
·五子棋的原代码
·游戏开发方面相关的电子书下载
·游戏文件系统的解决方案
·基于LOD的大规模真实感室外场景实时渲染技术的初步研究 part II&III
·用MFC构造DirectX应用框架
·游戏开发开门
·《Windows游戏编程大师技巧》(第二版)第11章
·DirectX8.1的DirectDraw7研究手记(三)
编程开发点击TOP10
·数字小键盘指法练习
·ASP.NET 程序中常用的三十三种代码
·用C语言编通讯录程序(初学者级别的)
·我写的Java学生成绩管理系统源代码
·CHK文件恢复工具
·Modem 常用AT指令集
·java笔试题
·异常java.sql.SQLException: Io exception:The Network Adapter could not establish connection
·单片机模拟I2C总线及24C02(I2C EEPROM)读写实例(源代码)
·C++经典电子书下载
精选专题

基于LOD的大规模真实感室外场景实时渲染技术的初步研究 part II&III

作者: 来源:网络文章 时间:2005-12-17 22:39:12

基于LOD的大规模真实感室外场景实时渲染技术的初步研究 part II&III(4)  

第五章:裁剪

通常,3D API都会提供内置的裁剪系统,但是这些裁剪系统都是在经过视图、投影变换以后的。即裁剪是投影空间中进行的。因此我们需要建立一种方法,在顶点进行矩阵变换之前就进行裁剪,同时我们的裁剪系统还必须要有能力裁剪一个四叉树的节点。

在投影过程中,有一个投影体,只有当物体处于这个投影体中的时候,我们才能看到这个物体,否则物体将被裁剪掉。因此这个投影体也通常被称为视见体(View Frustum)。在进行正交投影的时候,投影体为一个长方体,在进行透视投影的时候,投影体则为一个平头锥体。下面我们以平头锥体为例子来导出我们的裁剪系统。

如图5.1,一个投影体由六个面组成,一个平面的方程可以表示为  。我们规定朝投影体内部的方向为平面的正方向,判断一个顶点是否在投影体内部时,我们只要把顶点坐标代入到六个面的方程中,通过检查结果的符号就可以判断点是不是在投影体内部(所有的符号都为正)。下面我们推导世界空间中的投影体的六个面的方程。

 

图5.1投影体,左图为世界空间中的投影体。右图为经过投影变换后的投影体。

 

 

图5.2变换后的投影范体的尺寸。

世界空间的投影体在经过投影变换后,会成为一个范体,如图5.1右图所示。这个范体的尺寸见图5.2。我们很容易得到这个范体的六个面的方程,它们是 。

我们假设这六个平面中某个平面上有一个点(x0,y0,z0,1),在进行投影变换之前的坐标为(  )。

这个平面的方程为 。

 

投影变换前,在世界空间中的方程为 。

 

则点必须满足 和 。

      

如果变换矩阵为T。则

 。

结合这三个等式,我们立即就可以得到 。

 

结合投影空间中范体的六个面的方程,我们现在可以很容易的得到世界空间中的投影体的六个面的方程。

我们已经有了裁剪体的方程,当我们需要裁剪一个顶点的时候,这六个方程已经足够了。但是我们要判断一个区域的可见性时,我们进行一些额外的计算。如图5.3所示,一个物体和投影体的关系大致可以分为:包围、被包围、相交和相离四种情况。图中最大的浅蓝色的矩形包围了整个投影体。深绿色的小矩形则完全被投影体包围。浅绿色的矩形和投影体相交。这三种情况下物体都是可以被看到的。剩下红色的矩形则和投影体相离、只有它完全不可见。

 

图5.3物体和投影体的关系。

 

当处理节点的可见性的时候,由于节点的不规则性。我们还需要引入包围体的概念。所谓的包围体,就是用一个比较简单的几何体去度量另外一个比较复杂的几何体,让它刚好能包围另外一个几何体。比较合适的包围体外形有矩形、正方形和球体。其中球体处理最为简单,但是近似度也最差。我们为每一个节点都建立一个包围体,只要测试这个包围体,我们就可以决定一个节点的可见性,由于包围体肯定大于这个节点,因此我们可以保证不会有任何可见的节点被裁剪在投影体之外。

 

第六章:性能测试

1.           内存消耗量:本文的LOD算法的内存消耗量只和地形的大小有关,而且这种关系是线性的。对于地形中的每一个顶点,我们需要的信息如下:高度信息(1字节),粗糙度信息(浮点型,4字节)。四叉树信息(1字节)。因此每个顶点需要6个字节来保存。对于一个4097×4097的地图,我们需要96M的存储空间,这在连PC机的RAM大小都几乎要以GB来计算的今天,应该不是很大的问题。同时考虑到本文采用的都是静态的数据结构,在内存消耗方面应该还存在着很多的优化余地。

2.           速度和图像质量:本文的算法既没有在进行恒定的速度控制,也没有进行恒定三角形数量的控制。生成三角形的数量除了和C,C2的大小有关以外,还和地形本身的起伏程度有关。本文的演示程序在一般情况下,C=3,C2=30左右就能达到比较好的效果。当C=4.5时候,就基本不存在几何形变的问题。而且FPS均在120以上(使用了细节纹理),速度完全达到要求。

3.          实例测试:我选择的测试地图大小为2049×2049和4097×4097。地图使用Photoshop的分层云彩功能制作,用本文演示程序的地图工具进行修改加工。纹理为区域地貌纹理加亮度图调制混合得到。细节纹理被关闭(即只进行了一遍纹理映射)。测试平台为Intel赛扬II 1.2G,nVidia GForce 2/MX400,128M RAM。操作系统为Windows 2000sp2。显卡驱动版本为4345官方发布版。注意驱动程序必须安装正确,Windows2000提供的驱动并不能很好的支持OpenGL。

 

  表6.1:2049×2049地图的渲染结果。

 

共6页 9 7 [1] [2] [3] [4] [5] [68 :>

基于LOD的大规模真实感室外场景实时渲染技术的初步研究 part II&III 相关文章:
基于LOD的大规模真实感室外场景实时渲染技术的初步研究 part II&III 相关软件:
特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
转载请注明来源:http://www.xgdown.com