- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
5.13 三维数字地形漫游
?
三维数字地形系统是地理信息系统的重要组成部分,现在应用于许多领域。可以从模拟飞行游戏、Google数字地球中体验到三维数字地形生动、形象以及具有良好互动性等特点。三维数字地形已成为具有很强应用价值的技术,但是单纯利用Direct3D或OpenGL来实现三维地形需要大量专业知识,同时编程量很大;如果使用专业三维地形引擎则价格昂贵,这些限制了广大爱好者对三维数字地形的开发研究。不过,随着开源运动的广泛开展,目前有许多开源三维图形游戏引擎(如Ogre,KlayGE,Nebula,Irrlicht等)可用于三维数字地形系统的开发,使三维数字地形程序变得易于开发。其中由德国电脑游戏专家Nikolaus Gebhardt设计的Irrlicht三维图形引擎,可以应用于各种.NET语言中,在普通电脑即可运行,易于掌握,并由活跃的开发团队支持。比较适合进行三维数字地形漫游系统的开发。
文中采用目前广泛使用的C#语言,结合Irrlicht三维图形引擎实现了三维数字地形的漫游。由于采用三维图形引擎,免去了许多底层编程工作;同时,C#的特性又使该程序开发速度较快。
二、引擎配置
以Microsoft Visual Studio .NET 2003为例介绍开发过程。
1.引擎下载
从Irrlicht三维图形引擎的主页:/ 的Download栏目中下载Irrlicht引擎 SDK压缩包。整个压缩文件约为16MB,解压后生成irrlicht-1.3.1目录,该目录包括Irrlicht引擎C++源代码、引擎动态链接库、使用手册以及一些三维素材。
2.建立C#工程
在New Project中选择建立C#的 Console Application工程,如图1所示,将工程命名为Terrain。
3.在工程中加入Irrlicht引擎
鼠标右键点击新建工程的References项,选择Add References…加入引擎的动态链接库Irrlicht.NET.dll,该文件在irrlicht-1.3.1\bin\Win32-VisualStudio目录中,如图2所示。
图1 建立C#工程
图2 添加irrlicht.NET引擎
成功加入引擎后,在References项中会显示新子项Irrlicht.NET,如图3所示。
图3 References项中显示Irrlicht.NET
三、地形生成方法
用电脑生成三维地形的方法有许多种,其中使用最广泛的就是高度图生成法。我们经常会看到用不同的颜色表示海拔高度的地图。高度图生成法采用相同原理,只不过为了便于计算机处理,海拔高度值用图像中的亮度值表示。即图像中每一点处的灰度值代表该坐标处的地形海拔高度,越接近黑色则海拔越低,反之越接近白色则海拔越高。要使地形具有真实感,地形图像必须符合一些要求,主要是灰度数值的连续变化,两像素距离越近的点灰度值越接近。地形图像较容易得到,我们可以利用图像处理软件Adobe Photoshop制作,利用其“Render”特效的“Clouds”项,将前景设为黑色,背景设为白色,这样得到的图像可以表现出非常真实的地形效果。也可以从网上直接下载相关的用灰度值表示的高度图。本文采用irrlicht引擎中多媒体素材文件夹meida中的高度图terrain-heightmap.bmp,如图4所示。为了便于编程实现,这里将路径为irrlicht-1.3.1\media的素材文件夹拷贝到与新建C#工程Terrain相同的目录下。
图4 高度图
这张高度图尺寸为256*256。可生成216个三维网格顶点,这是普通电脑系统一次所能绘制的最多顶点数。如果要绘制更大的三维地形,则需要分批多次绘制。通过高度图生成三维图形后,可在Irrlicht引擎的支持下增加控制功能以及碰撞检测用于实现三维数字地形漫游。
四、地形漫游程序
三维地形漫游程序采用console风格,程序的整体框架如下:
using System;
using System.Text;
using System.IO;
using Irrlicht;
using Irrlicht.Video;
using Irrlicht.Core;
using Irrlicht.Scene;
using Irrlicht.GUI;
namespace TerrainRoam //命名空间指定为为地形漫游
{
class Program: IEventReceiver
{
//高度图及纹理载入路径
string path=../../../../media/;
//定义地形场景节点
ITerrainSceneNode terrain;
static voi
文档评论(0)