`
webcenterol
  • 浏览: 916532 次
文章分类
社区版块
存档分类
最新评论

引擎技术研究之地形技术

 
阅读更多

地形的网格可以使用高度图作为数据源生成高度图可以是位图,可理解成二维数组,地形实际上就是一系列高度不同的网格而已,这样数组中每个元素的索引值刚好可以用来定位不同的网格(xz),而所储存的值就是网格的高度(y)。

地形的渲染可由四叉树来管理,网格的每个顶点对应四叉树的各个节点,有关四叉树的应用可参考"引擎技术研究之场景管理------四叉树与视椎剔除技术"。

现讨论地形技术的相关应用:

一:地形的生成

1 根据一指定路径的灰度图生成高度图mpBmpHeightMap并获取mpBmpHeightMap的长度length和宽度width

2 根据lengthwidth创建一顶点指针mpVertexsMapmpVertexsMap保存地形网格各顶点的位置。调用IDirect3DDevice9

CreateVertexBuffer((width+1)*(length+1)*sizeof(Vertex),0,

D3DFVF_XYZ|D3DFVF_NORMAL|D3DFVF_TEX1,D3DPOOL_MANAGED,&m_pVB, NULL)

生成顶点缓冲m_pVB,内存大小为(width+1)*(length+1)*sizeof(Vertex)

执行m_pVB->Lock( 0, 0, (void**)&vertex, 0 )锁定顶点缓冲,vertex指向其内存地址。

3 遍历Vertex每个顶点,并计算其位置x, y, z值,其中高度值y可由高度生成函数获取。并将Vertex的每个顶点值传递给mpVertexsMap数组,mpVertexsMap作用在于解除顶点锁定后仍可以使用顶点的位置值。调用IDirect3DDevice9

CreateIndexBuffer(width*length*2*3*sizeof(DWORD),0,

D3DFMT_INDEX32, D3DPOOL_MANAGED,&m_pIB,NULL)

生成索引缓冲m_pIB,其大小为 width * length*2*3*sizeof(DWORD).

在地形信息更新时执行m_pIB->Lock( 0, 0, (void**)&index, 0 )锁定索引缓冲区,index指向其内存地址。

4 为地形设置纹理,并根据地形网格中外围四个顶点的索引及其位置创建四叉树。

至此,已根据四叉树生成地形网格。

二:地形的剔除

与一般模型的剔除不同,地形剔除技术指的是剔除视椎外的地形区域,即只在视椎内的区域绘制三角形。我们把地形在X,Z平面上划分成均匀大小的16 X 16个块,块的个数可由四叉树的层数决定,本例中层数为4,即有256个节点,每一节点对应一块。每一块包含多个网格,每块的网格数等于地形灰度图像素数除以块数:512 X 512/256=1024,即每块都是32X32的网格。每个网格可划分为两个三角形,即每块有2048个三角形。网格通过顶点索引所组成的三角形描述其所在的一片区域。整个地形用一棵四叉树把这些块组织起来。实时渲染时四叉树负责地形的裁剪,决定哪些块应该绘制,从而得到整个地形要渲染的三角形面片。地形的数据组织如图所示:

分享到:
评论

相关推荐

    3D游戏引擎的研究与实现

    3D游戏引擎技术是-I'-J综合技术,涉及了计算机图形学、网络、人工智 能等领域,是当前研究的热点之一。 本文将游戏引擎分为底层引擎和高层引擎。底层引擎主要提供内存管理、 资源管理、数学库、日志管理等基本功能。...

    3D游戏引擎的研究与实现.Pdf

    技术 3D游戏引擎技术是 I" J综合技术 涉及了计算机图形学 网络 人工智 能等领域 是当前研究的热点之一 本文将游戏引擎分为底层引擎和高层引擎 底层引擎主要提供内存管理 资源管理 数学库 日志管理等基本...

    3D游戏引擎中场景绘制及光照渲染技术的研究与实现

    ,介绍了3D游戏引擎 的发展与加速绘制三维游戏场景及全局光照渲染的相关技术。然后, 研究了如何利用三角形网格为三维游戏场景中的几何体进行建模。通 过结合光学中的视域衰减模型,提出了一个基于视域衰减的LOD地 ...

    CryEngine地形分析

    CryEngine地形分析 Cryengine优化的出彩之处主要有以下几个方面: 1材质排序:从PerfHUD的结果来看,Cryengine对DXAPI的调用是最为简洁的,如此多的材质,却只有如此简洁的状态切换过程,不能不令人赞叹,相比之下...

    Android平台下3D游戏引擎技术的研究及应用综述 (2012年)

    结合Android平台下3D游戏引擎的现状,阐述了游戏引擎结构的演变,对Android平台主流引擎进行了对比和分析,并对引擎中涉及场景渲染的包括游戏地形渲染、碰撞检测、遮挡剔除及可见性裁剪在内的多项关键技术进行了简介...

    3D游戏卷2:动画与高级实时渲染技术——1

     本书旨在为当今的三维游戏引擎技术提供一个综合的解决方案,使读者尽快地进入开发者角色,了解整个游戏的开发过程并初步具备游戏引擎开发能力。  本书适合作为高等院校相关专业的教学参考书,同时可供相关技术...

    3D游戏卷2:动画与高级实时渲染技术——2

     本书旨在为当今的三维游戏引擎技术提供一个综合的解决方案,使读者尽快地进入开发者角色,了解整个游戏的开发过程并初步具备游戏引擎开发能力。  本书适合作为高等院校相关专业的教学参考书,同时可供相关技术...

    Android平台的多尺度地理信息三维显示技术 (2014年)

    分析了0SGearth 引擎和Android平台的优势,重点对移动终端实现海量地理信息数据的三维可视化和使用OSGearth渲染引擎构建三维地球模型的关键技术进行了研究。最后,利用0SGearth引擎构建三维地球场景,成功移植到移动...

    基于虚拟现实的装甲车辆运动仿真研究

    装甲车行驶中车体姿态的仿真是模拟驾驶训练系统的关键技术.为实现不同地形下基于虚拟现实的装甲车辆驾驶模拟,本文提出了基于虚拟现实的装甲车辆运动仿真方法.首先,构建装甲车辆的结构、外形和真实的地形,采用第一...

    国内外主流的三维GIS软件

     特点:该平台集成了国内领先的Uniscope三维GIS引擎技术,覆盖全域的高分辨率卫星影像(CBERS-02B、SPOT5)、较高精度的地形高程数据、导航用道路和POI等矢量信息,符合保密规定的政府用户还可以享受航空影像数据...

    基于虚拟现实的渲染优化算法

    然而在虚拟场景中,复杂的地形、大量的植被和建筑使需要渲染的数据量大得惊人,故渲染速度成为了虚拟现实技术的一大瓶颈.现有的研究并不能很好的提升虚幻引擎中的渲染速度,还会出现“突越”和对视野外模型剔除效果...

Global site tag (gtag.js) - Google Analytics