`
hereson3
  • 浏览: 162174 次
  • 性别: Icon_minigender_2
  • 来自: 广州
社区版块
存档分类
最新评论

LOD地形设计(四)

阅读更多
(一)世界坐标系向观察坐标系的转换 假如任何形体都放在世界坐标系中,那么计算是相当复杂的,为了简化计算,我们需要把形体从世界坐标系转到观察坐标系中。观察坐标系的原点在是世界坐标系的位置为Eye,Z轴与观察方向一致(从Eye出发到At点的向量)如图4-1所示: 图4-1 假设观察坐标系的坐标轴分别以单位向量xaxis,yaxis,zaxis,则: xaxis= normal (At-Eye); yaxis= normal (cross(Up,zaxis)); zaxis= normal (zaxis,xaxis); 假设世界坐标系中任意一点P的坐标(x,y,z),在观察坐标系中的坐标(x',y',z')。 x' = (P-Eye)* xaxis = x*xaxis.x + y* xaxis.y + z * xaxis.z - xaxis*Eye y' = (P- Eye)*yaxis = x*yaxis.x + y* yaxis.y + z * yaxis.z - yaxis*Eye z'= (P- Eye)*zaxis = x*zaxis.x + y* zaxis.y + z * zaxis.z - zaxis*Eye (x',y',z',1) = (x,y,z,1)* 所以从世界坐标系向观察坐标系变换的矩阵为 (二)齐次裁剪透视投影变换 真实的物体是三维的,但是计算机屏幕是二维的,必须把三维物体投影到屏幕平面上,而且还要保存深度信息,这个变换过程称为投影变换,如图4-2所示 图4-2 假设视截体Y方向的张角fov,近平面Zn,远平面的Zf,近平面的宽高比aspect,现在可以直到近平面的方程z=Zn,远平面 z=Zf。 图4-3 由图4-3可以看出,视截体的顶面方程为y=z*tan(fov/2);底面方程=-z*tan(fov/2);视截体的右侧面x=cot(fov/2)*aspect*z. 左侧面方程x=-cot(fov/2)*aspect*z. 首先寻求把顶面y = z*tan(fov/2) 转换为y'=1,y'=k*y ,k=cot(fov/2)*y/z就是满足条件的变换,底面变换也是这个表达式。 右侧面x = cot(fov/2)*aspect*z,转换为x'=1, x'=p*x, 从而p=(tan(fov/2)/aspect)/z(左侧面表达式相同). 最后寻求把近平面Zn转换为z'=0;Zf转换为z'=1. z'= r*z + s.于是r* Zn + s =0,r*Zf + s =1,由此求出 r= /(Zf-Zn), s= -Zn/(Af-Zn). 透视投影变换矩阵= (三)视截体平面的计算 根据模型变换矩阵和投影变换矩阵,可以计算出视截体的6个平面。世界坐标系中的视截体在模型变换和透视投影变换后,成为观察坐标系中的[-1,1]*[-1,1]*[0,1]。设模型变换A,投影变换B,M=A*B,视截体的方程:ax+by+cz+d=0。该平面在观察坐标系中的形式为a'x'+b'y'+c'z'+d'=0. (x',y',z',1) = (x,y,z,1)M (x,y,z,1)(a,b,c,d)(转置)=0 (x',y',z',1)(a',b',c',d')(转置) = 0 可得:(x,y,z,1)M(a',b',c',d')(转置) = 0 (a,b,c,d)(转置)= M (a',b',c',d')(转置) a=M11a'+M12b'+M13c'+M14d' b=M21a'+M22b'+M23c'+M24d' c=M31a'+M32b'+M33c'+M34d' d=M41a'+M42b'+M43c'+M44d' 视截体的6个平面的法向量均指向视截体内部,视截体的左侧面leftplane 观察坐标系中的左侧面x+1=0 ,代入上式可得视截体左侧面的系数 a=M11+M14 b=M21+M24 c=M31+M34 d=M41+M44 右侧面的方程1-x=0;系数 a=M14-M11 b=M24-M21 c=M34-M31 d=M44-M41 同理:顶面系数 a=M14-M12 b=M24-M22 c=M24-M32 d=M44-M42 底面系数 a=M12+M14 b=M22+M24 c=M32+M34 d=M42+M44 近平面系数: a=M13 b=M23 c=M33 d=M43 远平面系数: a=M14-M13 b=M24-M23 c=M34-M33 d=M44-M43 上述内容是涉及视截体计算的数学基础,下一节实战视截体编程!
分享到:
评论

相关推荐

    基于四叉树算法的LOD地形漫游程序

    "基于四叉树算法的LOD地形漫游程序"是一个利用四叉树数据结构实现的Level of Detail (LOD)技术,用于优化大规模地形的显示效果。这个程序是用C++编译器VC(Visual C++)实现的。 四叉树是一种扩展自二叉树的数据...

    静态LOD地形网格索引计算 V1 0 修复了前一版的Bug

    "GenLODGridIndex"工具正是为了实现这种静态LOD地形而设计的,它负责计算地形网格的索引,生成不同LOD级别的Chunk。索引计算是关键步骤,因为它决定了哪些多边形在特定LOD级别下应该被显示或忽略。GenLODGridIndex v...

    地形渲染的动态LOD四叉树算法

    地形渲染的动态LOD四叉树算法,读者应该熟悉递归程序设计,以及基本的VC OpenGL编程.

    地形场景漫游说明文档(LOD地形 )

    场景漫游说明文档 包括场景切割地形LOD无限地形等等

    基于四叉树的动态多分辨率 L O D地形快速简化

    ### 基于四叉树的动态多分辨率 LOD 地形快速简化 #### 摘要与背景 本文探讨了一种改进的基于四叉树的动态多分辨率 LOD(Level Of Detail)地形简化方法。该方法旨在提高地形模型的简化效率,并优化实时渲染速度。...

    地形lod模型与飞行模拟

    地形LOD(Level of Detail)模型与飞行模拟是构建大规模三维环境中的关键技术,尤其是在游戏开发、虚拟现实和航空航天领域。LOD技术旨在优化图形渲染性能,通过动态调整模型的细节程度,确保在远距离和近距离观察时...

    23.湖州市火车站地区城市设计—TOD,LOD.zip

    湖州市火车站地区的城市设计是一个结合了现代交通导向发展(TOD)理念和地形景观级别(LOD)的综合规划项目。本设计旨在优化区域内的交通布局,提升城市功能,并充分考虑环境可持续性,以实现高效、宜居的城市空间。...

    Automatic LOD 1.07

    在Unity3D中,LOD系统可以通过手动设置或使用插件自动实现,而"Automatic LOD 1.07"就是专为此设计的自动化工具。 该资产的1.07版本代表了经过多次迭代和优化后的成熟产品,开发者可以期待它带来的稳定性和性能提升...

    lod-terrain:平滑体素地形细节水平的原型

    "lod-terrain"项目就是将LOD技术应用到体素地形的一个原型实现,旨在提高游戏或虚拟环境中的地形渲染效率。 这个项目基于Rust编程语言进行开发,Rust是一门系统级语言,以其内存安全和高性能而著名,特别适合于开发...

    opengl与四叉树模拟地形源码

    在这个项目中,“opengl与四叉树模拟地形源码”是利用OpenGL和四叉树数据结构来实现地形的高效渲染和管理。 四叉树是一种扩展自二叉树的数据结构,特别适用于处理二维空间的分割问题。在3D图形学中,特别是在地形...

    面向GPU的多LOD因子的大规模场景策略及其原型系统

    - **LOD动态调整**: 根据观察者的位置和视角,动态调整地形的LOD等级,使得远处的地形使用较低的细节级别,而近处的地形则使用较高的细节级别,从而在不影响用户体验的前提下节省计算资源。 - **GPU与CPU通信**: ...

    TerrainLOD

    总的来说,地形LOD是一个综合了算法优化、数据结构设计和渲染技术的复杂领域,它在现代3D图形应用中扮演着至关重要的角色。通过持续的研究和改进,开发者们能够更有效地呈现广阔而细致的虚拟世界,提供更加沉浸式的...

    creator地形制作文件

    计划阶段需深入理解模拟需求,包括飞行高度、视野范围等,这些因素直接影响地形的LOD设计。硬件要求亦不可忽视,必须确保多边形、纹理与光源的数量在硬件承载范围内。多边形预算是平衡真实感与效率的关键,通常建议...

    3D地形制作全攻略 下载

    对于非地球类的地形设计,例如太空游戏中的外星地貌,这种调整可以更加自由和创意化。 #### 一.地形生成算法 地形生成算法是创建逼真地形的核心技术之一。本节将重点介绍两种常用的算法:Fault Formation 和 ...

    Unity地形转换Mesh

    这种设计使得大型地形的渲染变得高效,但同时也限制了对地形的某些高级操作。 转换地形为Mesh,我们可以利用Unity的内置API,如`Terrain.activeTerrain.mesh`,来获取地形的Mesh数据。然而,这个过程需要注意的是,...

    3D 地形 生成 DirectX 游戏编程

    5. **地形LOD(细节层次)**: 根据观察距离动态调整地形细节,优化性能。 6. **渲染**: 设置管线状态,调用DrawIndexedPrimitive绘制地形。 在"Chapter 13"中,可能详细讲解了如何使用Direct3D实现这些步骤,以及...

    vc地形显示源码

    - LOD:在大规模地形渲染时,为了平衡性能和细节,常常采用LOD技术,根据观察者与地形的距离动态调整细节级别,近处的地形更精细,远处的则简化。 4. **光照模型与视点变换** - 光照模型:模拟自然光或人造光源对...

    OpenGL实践四:高程图技术的地形绘制(毕业设计)

    此外,还可以添加LOD(Level of Detail)技术,根据观察距离动态调整地形的细节程度,以提高渲染效率。 在实际绘制过程中,地形的边缘可能会出现明显的锯齿现象。为解决这一问题,我们可以采用抗锯齿技术,如MSAA...

    根据高度图自动生成地形.zip

    这些特性允许开发者在运行时生成或修改地形,极大地扩展了地形设计的可能性。 为了优化性能,Unity地形系统支持LOD,这意味着离玩家较远的地形会显示较低的细节水平,而近处的地形则会显示更丰富的细节。这使得大...

Global site tag (gtag.js) - Google Analytics