基于opengl的三维场景漫游实现

基于opengl的三维场景漫游实现
基于opengl的三维场景漫游实现

基于opengl的三维场景漫游实现

摘要:本课题是关于opengl三维场景的实现,要求能够实现人机交互,具有缩放、旋转等基本的功能。

利用opengl创建三维模型的原理,本课题在理解opengl创建图形元的基础上,实现了简单三维场景模型的建立。通过建立全局Camera,实现了对场景全方位的观测,同时能够及时响应键盘和鼠标的操作。在此基础上,利用天空盒子和全局地形的方法,实现了三维场景的基本框架,能够在虚拟场景中任意角度的漫游。通过纹理贴图的方法,实现场景的创建,并对场景内部的事物进行碰撞检测,来实现简单的三维场景漫游。

关键词:三维建模; 全局Camera; 场景漫游; 纹理贴图; 碰撞检测

目录

1 课题论述 (1)

1.1选题背景简介 (1)

1.2系统开发平台及运行环境 (1)

1.2.1 开发环境的搭建 (1)

1.2.2 opengl绘图机制 (1)

2课题实现的关键技术 (2)

2.1 场景建模 (2)

2.2 场景渲染 (2)

2.3 纹理映射 (2)

2.4 碰撞检测 (3)

3漫游场景的实现 (4)

3.1 全局Camera的创建 (4)

3.2 地形和天空的绘制 (5)

3.3场景的绘制 (6)

3.4纹理和字体类的设计 (7)

4 总结 (8)

5 程序使用方法介绍 (8)

1 课题论述

1.1选题背景简介

随着科技的发展,人们对视觉的需求也越来越高,这正好也促发了计算机图形学的快速发展:从简单的平面图形到3D空间的立体图形空间的一个转变,为opengl提供了广阔的应用和开发前景。随着opengl的越来越成熟,在各个领域的应用也变得广泛起来。从计算机、多媒体、影视到医学、工业等领域。Opengl开发的重心也有所转变,从普通的三维场景的建立,到现在的大型复杂场景的三维信息生成、实时三维场景光影效果的模拟和实时三维场景的内存使用控制,opengl的发展越来越成熟。

正是基于opengl目前广泛的应用,本课题从opengl基本的图形元的创建、渲染、视角的转换等方面,选择一些opengl的基本操作,实现简单的三维场景空间的漫游,促进对opengl进一步的了解,也为以后进一步的开发做准备。

1.2系统开发平台及运行环境

本设计是基于Opengl 1.0在windows7操作系统下使用Visual C++6.0集成开发环境开发并调试,设计中使用了基于Win Application的架构。

1.2.1 开发环境的搭建

本设计是在Visual C++ 6.0下使用Opengl1.0库开发的,开发环境搭建步骤详细如下:(1)安装Visual C++ 6.0。

(2)配置Opengl1.0

由于Visual C++ 6.0本身带有安装好的opengl1.0版本,所以一些头文件和bin路径的设置就不必要做了。但自带的opengl1.0 没有包含glut函数库,所以需要下载glut函数库,并正确的设置include和bin的路径,并把dll文件放到system32下。

1.2.2 opengl绘图机制

在Windows环境的绘图机制下使用图形设备接口GDI作图要通过设备上下文调用相应的函数,用opengl作图也是这样。Opengl通过“渲染上下文”即RC完成对三维图形的绘制。Windows下的设备上下文和窗口都支持“文图格式”属性,和RC在位图结构方面是一致的。因此只要在创建RC的同时与一个DC建立联系,opengl函数就可以通过对应的DC 绘制到相应的显示设备上面。

2课题实现的关键技术

2.1 场景建模

场景的建模能够直接的展示出场景的三维特性,也是影响三维可视化功能的关键。在本课题中,我主要完成了一下几个场景的建模。

首先是地形的建模,在地形的建模中,采用了四边形近视模型和纹理贴图的方式来完成。在xoz平面,建立的是一个46*46的网格模型,其中每个方格的大小大约为7个坐标。在y方向,通过读取位图信息的方式,建立的随机高度的模型。其中,地形中心部分为平面,用于建立一些基本的场景,而地形的边界部分,用位图数据随机读取,生成一圈环绕的小山,把整个场景环绕在山围之中。

房子模型的建立是通过opengl简单的图形元建立,首先建立房子的四周,即四个围墙,用四个平面图形建立,然后屋顶通过两个四边形和两个三角形进行建模,实现三维房屋的构建。

天空的建立有很多方法,基本的有两种:一种是天空盒法,另一种是天空球法。天空盒是有一个长方体,在它的各个面上贴有天空的图片组成。天空球是有一个球体,在它的表面贴上天空的纹理组成。天空球相对于天空盒子较简单,因为它只需要一张纹理,但为了显示效果的真实性,本课题采用的是天空盒子的方法,建立六个天空的面,然后选取合适的天空图片进行贴图。由于六个面的链接处会出现一条线,为了实现天空的无缝连接,需要设置纹理的一些属性,来达到天空的无缝连接。

2.2 场景渲染

场景的渲染对于三维空间来说也是十分最要的,因为这直接决定着场景的真实性。本课题主要利用了纹理映射场景进行渲染。

纹理映射是把纹理空间中的纹理像素映射到屏幕空间中的像素的过程,利用纹理映射,可以使三维的世界显得更加的逼真。本课题中主要对地形、天空、房子等进行了纹理的渲染,同时利用鼠标来旋转摄像机,相当于对物体进行了三维空间的旋转,来更好的观测场景的效果。

2.3 纹理映射

纹理映射技术的原理是通过把纹理空间坐标与物体空间坐标的每一点建立关联,实现把二维的纹理图像映射到三维的物体表面,从而呈现出真实的视觉效果。

纹理映射操作包括启用及载入纹理,指定纹理坐标,设置纹理的参数,使用纹理对象等方面。Opengl中规定纹理贴图在RGBA模式下。本文启用了opengl中的纹理映射技术来对三维场景中的地形、天空和房子进行纹理的渲染,实现的大体过程如下:

(1)首先要创建纹理对象并且为此对像指定纹理。

调用glGenTexture()函数创建纹理对象,使用一个正整数对纹理对象进行编号,并

把相应的对象存储到指定的数组中。最后调用glBindTexture()函数实现把生成的

纹理名字绑定到对应的目标纹理上。

(2)控制滤波的方式

Opengl在图像的时候,有可能显示的图像比原始的要大,也有可能比原始的图像

要小,所以要采用控制滤波的方式,对其进行适当的放大和缩小。本课题采用的

是GL_LINEAR方式,这样纹理总是以平滑的方式来显示。

(3)启用纹理并载入纹理的数据

首先要启用纹理,通过glEnable(GL_TEXTURE_2D)来启用二维的纹理,并通过

glBindTexture()和glTexImage2D()来绑定纹理数据。由于贴纹理的时候要明确纹理

与映射物体的映射关系,所以通过函数glTexCoord2f()来进行绑定。

2.4 碰撞检测

碰撞检测技术主要是对场景内部的物体进行的,由于场景都是自己通过三维图形建立的,而随着在场景内部全局Camera的移动,相当于观察者在场景中进行漫游。当观察者移动到一些场景内部时,如果没有碰撞检测,就会直接穿过物体,不符合实际的情况,所以需要引入碰撞检测技术。

碰撞检测技术有很多中,本课题采用的是基于盒子的碰撞检测原理,即在被检测物体的一定范围之内,假设存在一个盒子把物体包围住,当观察者移动到盒子的范围边界时,就停止一定,然后根据Camera的角度,进行偏移。本课题场景比较简单,主要是有山和房子组成,所以碰撞检测只做了山和房子的检测。

对于山的检测比较简单,利用盒子原理,在山的内部边界部分,设置一个四方体边界,当相机移动到边界的时候,就停止移动,然后根据角度左右或则前后移动,防止穿过环绕山。而对于房子的检测,就要分为好几部分,墙面的检测,门的检测。其中在房子内部和外部的边界部分都要做边缘的检测,使从外部进入和里面出来都不能穿过墙面和门。其实现方法也是在墙面和门的附近很小的距离设置检测边界,当到达边界时,即碰撞到了物体,不能越过边界,从而达到碰撞检测并不穿过物体的目的。

3漫游场景的实现

3.1 全局Camera的创建

由于需要在虚拟场景中实现漫游,如果只是简单的控制坐标轴的旋转,不能够对场景中的物体进行全方位的观察,因此引入了全局Camera,通过键盘的方向键和鼠标的移动,来控制Camera移动的方向和角度,实现场景的漫游。

场景中大量的旋转和平移,如果没有相机来控制的话,程序会显得杂乱。因此。本课题首先创建了Camera来实现对ViewMatrix矩阵和ProjectMatrix矩阵的管理。通俗的说,就是由相机来维护整个场景的平移、旋转等矩阵换算,还有远近裁剪面的矩阵,这样大量复杂计算全都在相机这样一个实体类中得以处理,使用者只需要调用相机的外部接口来满足自己的视角,相机内部处理矩阵计算,最终传递给OpenGL对应的Matrix,从而支撑起整个场景的视觉效果。

在程序设计中,首先创建了Camera类,包含一些基本的处理函数,关键的函数部分如下:

void setCamera(float positionX, float positionY, float positionZ,

float viewX, float viewY, float viewZ,

float upVectorX, float upVectorY, float upVectorZ);

void rotateView(float angle, float X, float Y, float Z); /* 旋转摄像机方向*/

void setViewByMouse(); /* 根据鼠标设置摄像机观察方向*/

void yawCamera(float speed); /* 左右摄像机移动*/

void moveCamera(float speed); /* 前后移动摄像机*/

void setLook(); /* 放置摄像机*/

void checkForMovement(); /*检查时候移动*/

void CheckedgeCollision(Vector3f oldPos,Vector3f oldView); /*碰撞检测*/

首先需要调用setCamera(),初始化相机开始的位置,在本程序中,相机的初始位置设定在场景的中心,方便后边的碰撞检测。然后通过键盘或则鼠标的相应事件,调用相应的函数,判断是要向哪个方向一定。程序中设定“W、S、A、D、Shift”以及键盘上的方向键为相机移动和加速的响应键,当方向键被按下时,调用yawCamera() 函数和moveCamera()函数,获取移动的方向,保存相应的值。同时移动鼠标,调用setViewByMouse()函数,通过计算鼠标移动的角度,获取Camera要旋转的视角。最后调用checkForMovement()函数,

检查键盘和鼠标是否移动,如果移动,把上述获取的值赋予Camera,移动相机,实现漫游的效果。

对于场景内部的物体,需要做碰撞检测来达到真实性,所以本程序采用了包围盒子的方法,在被检测物体一定小的范围内,设置检测区域,当相机移动到检测区域的边界时,在checkForMovement()函数中调用CheckedgeCollision()函数,做出判断,看是否碰撞到检测边界,如果是,则停止移动,防止穿过被检测物。

3.2 地形和天空的绘制

实现了全局Camera后,接下来就要绘制基本的框架:地形和天空。对于地形,本程序分为两部分:一部分是高低不平的环绕山,另一部分是平地,用于建造房子等场景。对于天空的绘制,采用了天空盒子的思想,即绘制一个长方体,把所有的场景包含进来。本程序中,设计了一个SkyBox类,用于绘制地形和天空,具体的机构如下:class SkyBox

{

public:

SkyBox();

~SkyBox();

void CreateSkyBox(); //天空包围盒

void DrawGround(); //绘制地面并纹理贴图

void Init(); //初始化地形

Vector3f m_TerrainCoord[m_TerrainSize*m_TerrainSize]; //网格坐标数据

void InitTerrainData(float height); //初始化地形数据

void DrawGrid(int minrow,int maxrow,int mincol,int maxcol);

private:

GLuint m_Skybox[6];

GLuint m_Groundtexture[2];

AUX_RGBImageRec *m_TerrainImage;

Texture m_Texture;

};

对于地形的划分,程序采用了46*46个小网格的方法来绘制,存储在m_TerrainCoord[ ]数据中, 对于地形的高度部分,由于高度不统一,所以程序通过调用auxDIBImageLoad()

函数,读取一张位图的RGB数据信息,来随机的分配高度,并通过InitTerrainData(float height)函数,初始化纹理的信息。当所有的数据都初始以后,调用DrawGround()函数,绘制地形。

对于天空的绘制,首先设置天空盒子的长、宽、高以及绘制原点的坐标,然后调用CreateSkyBox()函数进行绘制。其中,为了实现每个面的链接出没有缝隙,在CreateSkyBox()函数中通过glTexParameteri()函数设置纹理的参数信息,这样就能够实现无缝的链接。3.3场景的绘制

地形和天空的基本框架绘制完成以后,就是场景内部物体的绘制。在本程序中,场景比较简单,只绘制了房子和环绕山。其中环绕山在绘制地形的时候已经实现,所以只需要实现房子场景。

对于房子的绘制,程序分为四部分:四个墙面、两个斜的屋顶、两个上部的三角墙面和门,通过House类,实现基本的绘制。基本的结构如下:

class House

{

public:

House();

~House();

void Init();

void DrawHouse(); //绘制房子

void DrawSurface(); //绘制墙面

void DrawDoor(); //绘制门

void DrawRoof(); //绘制斜屋顶

void DrawRoofOb(); //绘制直屋顶

bool open ;

private:

Texture m_Texture;

GLuint m_WallTexture[4];

};

房子的绘制比较简单,主要绘制一些基本的线元和小方格,然后绑定纹理的信息。首先是调用Init()函数,初始化房子的纹理信息,然后调用各个绘制函数,实现房子的绘制。

3.4纹理和字体类的设计

程序中对于纹理和显示字体的部分,也分别设计了Texture类和Font类,来实现对纹理和字体的调用。具体的结构如下:

纹理类:

class Texture

{

public:

bool LoadTexture(char *filename, GLuint &texture); //生成一个纹理,并用texture邦定bool LoadAlphaTexture(char *filename,char *alphafilename, GLuint &texture,unsigned char compare);

};

void Readstr(FILE *f,char *string); //读取文件中的数据

字体类:

class Font

{

public:

Font();

~Font();

bool InitFont();

void PrintText(char *string, float x, float y);

protected:

HFONT m_hFont;

};

纹理图片的加载,主要通过LoadTexture()函数来读取需要加载的BMP图片,然后通过创建AUX_RGBImageRec 对象来存取读取的位图信息,通过glGenTextures()函数进行产生纹理对象的数量,并glBindTexture()函数和glTexImage2D()函数进行绑定和设置一些参数,实现Texture类的功能。

字体类的实现,主要通过创建字体函数,设置在DC中的数据信息和位图数据信息,最终实现屏幕上的打印。具体可以参见代码部分。

4 总结

本程序主要是实现简单的三维场景的绘制和漫游,通过把每一个部分进行分类设计,各个类之间相互调用,是程序运行起来效率更高,同时可读性也提高了。全局Camera的控制,能够很好的实现场景全方位的漫游。但场景部分简单,功能不是太多,下一步有点进行添加和改进。

最后自己尝试了通过3Dmax 建模软件导入一个树的模型,但碰撞检测和纹理部分没有处理,只是了解一下导入的过程,为以后做准备。

5 程序使用方法介绍

程序可以在全屏模式和窗口模式下面运行,当启动程序后,可以通过“W/A/S/D”和键盘的方向键来控制前后左右移动。Shift键进行加速运动,Tab键用于切换显示模式。移动鼠标来控制视角。当走到门前的时候,可以通过Space空格键来打开门(注意要离门足够近,否则认为距离太远打开),当离开房子的时候,站在门口再次按Space键可以关闭。屏幕运行的界面也有字体的提示。

基于三维全景技术的动态虚拟漫游系统

基于三维全景技术的动态虚拟漫游系统 摘要针对当前全景漫游系统存在的问题,自主研发一种基于三维全景技术的动态虚拟漫游系统。该系统利用先进的网络、数据库技术,提出一系列改进算法,建立动态数据模块,并对数据流程图中的各个模块进行描述;利用HTML5框架上开源的WebGL库文件,构建Ajax模式下的MVC设计模型;借助SqlServer 数据库,增加后台管理平台,从而能对本系统不断更新、维护。 关键词全景漫游;动态数据模块;MVC设计模型;SqlServer数据库 近年来,虚拟现实技术一直是计算机应用领域的研究热点,其特点是利用计算机多媒体技术系统中创建真实世界的仿真环境,通过计算机的硬件设备来模拟人体的视觉、听觉、味觉和触觉等真实感知,使参与者在其中产生与在真实环境中相同或相似的体验。根据人体的生理特点,在各种感知中视觉感知占80%,因此在虚拟现实技术的研究中,视觉的模拟占有十分重要的地位。 1 研究背景 基于视觉的虚拟现实技术主要分为两种:一种是基于三维几何模型建模技术(VRM),另一种是基于图像的全景绘制技术(IBR)。VRM在实时绘制时显然计算量大、制作周期长,再加上互联网网速的延迟,以及计算机本身硬件条件的限制,显得无能为力。IBR提供了较好的方法来解决这些难题,利用真实场景的图像作为虚拟场景的表示形式,真实地再现了真实场景的视觉信息,生成的场景视图的质量远远优于VRM。 目前,国内许多全景数字史馆建设往往采用特制的软件来实现,比较常用的国外软件有MGI photo suite、Pano2VR、Panorama Maker、Virtools、Ulead Cool 360等,国内也有一些比较好的全景处理软件,比如杰图的“造景师”、彩影以及中视典的vrp系列软件。 虽然直接使用商业软件能够比较简单、快速地制作出基于IBR的360全景,但是它们没有考虑现实情况中不断增长、实时更新的动态性问题。所以,本项目自主研发一种基于三维全景技术的动态虚拟漫游系统。 2 关键技术 全景漫游技术可以实现网络上的虚拟场景漫游,因其具有良好的交互性、沉浸性而受到众多用户的青睐。传统漫游技术如VRML、QuickTime、Flash等大多存在标准不一、插件依赖、封闭性、集成性差等问题,新兴的基于HTML5的全景漫游方案可以对以上问题进行缓解。 2.1 基于HTML5的全景漫游技术的实现原理

三维虚拟校园漫游系统设计

Scientific Journal of Information Engineering June 2013, Volume 3, Issue 3, PP.50-55 Design of 3D Virtual Campus Roaming System Hongyan Yang, Zhuo Shi, Yanru Zhong# College of Computer science and engineer, Guilin University of Electronic Technology, Guilin Guangxi 541004, China #Email: rosezhong@https://www.360docs.net/doc/2315747505.html, Abstract With the growing sophistication of virtual reality technology, 3D virtual campus roaming system as effective platform for school propaganda outside, the campus planning and management decision will provide a strongly support. Taking the campus of Guilin University of Electronic Technology as prototype, combing with the software of 3Ds Max and using VR-Platorm development platform connections with the backend database and virtual building and live Imaging shooting, a real-time roaming system of virtual campus has been designed and implemented. In this paper, the main aim is to explore a new idea for digital campus construction. Keywords: Virtual Reality; VR-Platform; Digital Campus 三维虚拟校园漫游系统设计* 杨宏艳,史卓,钟艳如 桂林电子科技大学计算机科学与工程学院,广西桂林 541004 摘要:随着虚拟技术的日益成熟,三维虚拟校园漫游系统作为学校对外宣传的有效平台是数字化校园建设的核心。以桂林电子科技大学东校区为例,结合三维仿真技术3DS max实现了虚拟校园的三维模型。运用VR-Platorm开发引擎,结合SQL Server数据库连接设计并实现了三维虚拟校园漫游系统。实现了自主漫游、按目的地自动生成漫游路径、定位鸟瞰等功能。实验结果表明:经过改进的场景优化技术,系统在普通PC机上运行稳定、流畅、高效。 关键词:虚拟现实;VR-Platform;数字校园 引言 20世纪80年代美国人Jaron Lanier首次正式提出了虚拟现实[1](Virtual Reality)概念。自此,这种利用计算机模拟虚拟世界,提供用户身临其境的视觉、听觉、触觉的感官模拟技术,因其具有感知性、沉浸性、交互性和构想性的特点,如今已广泛应用于城市规划、文物保护、交通模拟、虚拟现实游戏及远程教育等领域。“虚拟校园”是随因特网、虚拟现实技术、网络虚拟小区等的发展而产生,是基于现实校园对三维景观和教学环境数字化模拟的产物。数字化校园虚拟漫游系统是数字校园建设计划的核心平台。当前浙大率先开发展示了虚拟校园之后,国内众多高校如清华、南京大学、北航、香港中文大学等高等院校纷纷建立自己的虚拟校园[2-3] 。 通常,三维虚拟校园开发的主要方法是用ArcGis,SuperMap和其它具有三维功能的软件进行二次开发。但这些方法明显的缺点是对开发者的编程水平要求较高,建模代码太长,开发系统不能独立于运行环境。考虑到以上情况,本文选择VR-Platform为开发环境,提出了一种简单实现虚拟校园的方法。这种方法一方面能利用专业的建模工具3DS MAX软件很快实现三维场景模型的建立。另一方面,通过运用VRP引擎高效的模块化的编程能力,能够进行实时渲染和交互控制,减少了建模时间加速了系统开发的进程。另 *本文受国家自然科学基金(NO.50865003)和广西科学制造系统和先进制造技术开放基金资助(No.K090014)以及新世纪广西高等教育教改工程项目(No. 2011JGB048)“以工程应用能力为导向的数字媒体技术人才培养模式的探索与实践”基金资助。

三维地形漫游系统的OPENGL实现

三维地形漫游系统的OPENGL实现 引言 (2) 1地形可视化的概念: (2) 2 三维地形的生成技术: (3) 2.1 基于真实数据的地形生成 (3) 2.2 基于分形技术的地形生成 (3) 2.3 Diamond一Square算法: (4) 3基于OpenGL的地形渲染: (5) 3.1:OpenGL的基本操作 (6) 4 三维地形的简化技术: (7) 4.1四叉树的LOD简化算法 (7) 4.2自适应实时网格优化算法(ROAM) (9) 5三维地形的漫游系统: (10) 5.1各个类之间的类视图,如图所示: (10) 5.2各个类的具体实现: (11) 5.2.1数据采集和处理 (11) 5.2.2Lod 类,封装LOD技术 (11) 5.3系统实现 (12)

引言 本系统是基于OpenGL的三维地形漫游,系统主要包括三个方面: 地形数据的采集与计算,由于本系统是采用随机中点位移法得到地形高度图数据。采用Diamond一Square算法得到原始数据。地形渲染,采用基于OpenGL的环境,在地形中加入光照,雾,天空,以及纹理等效果对地形进行模拟,使其更接近真实。采用LOD技术对地形进行简化和管理。 1地形可视化的概念: 地理信息系统技术从60年代以来,经过40多年的发展,现逐步向三维化、可视化和网络化等方面发展,GIS软件平台不断推陈出新。传统的2D-GIS 软件通过矢量或栅格的方法完成二维地表的成图和分析,多年来,一直用二维地图产品表示三维地物,包括地质图、横断面图、示意图以及专门的几何结构图如立体网等。但在某些领域,人们需要分析具有三维坐标的地表面以下的状况,这种空间关系时常为判断和评价矿产资源、石油资源和污染状况提供重要的信息。因此人们在2D-GIS软件的基础上研究和开发了一些适合实际需要的3D-GIS产品。“数字地球”强调对地球的真三维的描述,中国政府将“数字地球”列为21世纪的战略目标之一,使得3D-GIS的理论研究和软件开发又掀起了一次高峰。所有的GIS系统都带有包括空间数据、拓扑关系及属性数据在内的地理数据库,或者能与外部数据库管理系统直接进行连接。GIS所处理的空间数据按其处理方式不同,可分为:栅格数据、2D拓扑矢量数据、数字高程模型(DEM)、三角形不规则网格(TIN)、三维模型、时间模型等,而所有这些都是以2D或2.5D(准三维)为主的。2D-GIS用点、线和面来表示地理实体,许多3D地理实体被简化为2D形式,得到的是二维地图、图像产品,其分析功能也是在二维基础上进行的。2.5D或称准3D意思是它不具备真正的Z坐标,而是将Z值作为某一位置上的属性变量,它并不是空间坐标值。在真3D-GIS中,可用表达式a=f(x,y,z)来表示,a为点(x,y,z)对应的属性值,z是独立于x,y的自变量,即三维空间中的z坐标值。3D-GIS 具有连续的数据结构和与之相应的分析功能,由此带来的好处是可以从空间的角度分析和显示物体。地形的可视化是一门以研究数字地面模型(Digital Terrain Model,DTM)或数字高程域(Digital Height Field)的显示、简化、仿真为内容的学科,它属于计算机图形学的一个分支。除了计算机图形学之外,计算几何也是它的重要基础知识。它的应用涉及地理信息系统(GIS)、虚拟现实(VR)技术、战场环境仿真、娱乐与游戏、飞行穿越(Flythrough)、土地管理与利用、气象数据的可视化等各个领域。 常用的地形可视化方法大致有写景法、等高线法、分层设色法、晕渲法、拍摄实地景观照片、建立三维几何相似的实物模型、产生三维线框透视投影图和逼真地形显示等多种方法。随着光栅图形显示硬件的发展,以真实感图形为代表的光栅图形技术日益成为计算机图形发展的主流,基于计算机图形学理论的三维地形逼真显示逐渐成为地形可视化发展的主流。产生逼真地形

基于Unity3D的三维数字校园漫游系统

龙源期刊网 https://www.360docs.net/doc/2315747505.html, 基于Unity3D的三维数字校园漫游系统 作者:宋姗姗 来源:《中国科技博览》2016年第21期 [摘要]在数字校园建设中应用虚拟现实技术,是进行校园规划和设计的新趋势。本文以某大学校园环境为虚拟空间,以Unity3D为开发平台,采用场景建模软件,结合使用编程语言进行交互,并与HTML进行整合,共同开发完成虚拟校园。 [关键词]Unity3D;三维;数字校园;漫游系统 中图分类号:TP391.41 文献标识码:A 文章编号:1009-914X(2016)21-0245-01 1 前言 虚拟现实技术可以利用计算机生成比较真实的模拟环境,用户仿佛置身于真实的环境中,用户通过接口与虚拟环境进行交互,具有用户渲染感、交互性以及实时性。虚拟现实技术是信息科学的一门新的技术,广泛应用于军事、娱乐、医学等各个领域。三维数字校园漫游系统具有强大的功能,可以直观地展现校园全景,用户产生置身于真实校园的感觉,对学校的规划和设计具有指导意义。现在很多高等院校都在利用不同的软件来进行数字校园建设。本文介绍了Unity3D游戏开发技术在三维数字校园漫游系统中的应用情况,校园漫游系统可以让用户对学校有更形象直观的了解。 2 系统简介 三维数字校园漫游系统是三维形式的校园系统,主要是将校园的信息进行三维形式的展示。该系统采用三维可视化技术和虚拟现实技术,并借助三维建模软件模拟现实环境,使系统实时可交互。Unity3D是实现校园漫游系统的游戏型软件,系统可以在网页上直接运行,用户的体验比较直观。 现在实现校园漫游的系统软件很多,最早的语言是VRML语言,以后又出现VRP,这是一款国内国内顶尖的虚拟漫游引擎,在设计虚拟产品方面Cult3D非常的便捷,在国内外享有盛誉的是Unity3D软件。 3 Unity3D平台介绍 Unity3D是一款跨平台游戏开发软件,可以直观的对游戏进行编辑。Unity3D由Unity?Technologies进行系统开发开发,可以轻松创建三维视频游戏、建筑可视化、实时三维动画等类型的互动内容,是一个多平台的综合型游戏开发工具,可以进行全面的游戏引擎。其优势在于性价比高,用户不用下载客户端,直接进行网页效果浏览进行体验。Unity3D支持各类脚本

三维虚拟校园的漫游系统实现

2015.09 主要通过VR-Platform 平台编辑器中对已建立的校园模型交互功能实时设置,同时进行系统优化及设置、编译、发布等系统生成。交互功能设置是通过虚拟相机生成、光照、云彩效果生成、消隐、碰撞检测功能,为校园模型增加场景的逼真度;经过系统优化工作以提高系统交互感,最后对系统添加背景音乐、编译测试、发布运行。 1场景合成导入 首先运用3DS Max 软件进行场景合成,然后将场景导入 到VR-Platform 平台中,通过VRP 平台进行交互处理后,最终生成三维虚拟校园漫游系统。 2交互功能设置 运用VR-Platform 平台编辑器可实现场景模型的交互处 理,包括虚拟相机生成、场景真实化处理、优化处理以及设置背景音乐等。 2.1虚拟相机生成 在三维虚拟校园系统中漫游,其实质是以某一点为基础 点进行观看游览,随着基础点的移动而变换场景,因此在系统开发时需要生成虚拟相机,用以模拟用户在虚拟校园中漫游的视角。 VRP-BUILDER 中内置了多种样式的相机,开发者可以自 由选择,如定点观察相机、行走相机、飞行相机等。其中:定点相机主要用于拍摄虚拟场景;行走相机主要用于模拟人的第一视角进行漫游交互,开发者可自主选择观看位置和观看角度,视线可实现360度调整,可提高虚拟校园的交互性和逼真度,因此行走相机对系统交互性的影响最大;动画相机用于创建自由漫游的路径,并可按此路径进行游览;飞行相机则是通过创建一个较高的视点,实现用户在高空俯瞰校园虚拟场。灵活运用以上多种虚拟相机,系统开发者可设计出不同模式、不同视角的用户自主控制漫游路径。 2.2光照效果 在3DS Max 中,可使用天空盒模型生成辽阔的天空场景, 但实现天空场景的逼真感,还需要有云朵、光照等与真实校园上的天空相似的景观和气候,其中光照就是必不可少的模块。在VR-Platform 平台中,生成光照对象后调整光线方向,使其投射去向和场景投影方向相同。同时还可进一步添加光晕效果,选择合适的光晕加入到虚拟校园系统中,调整其高 度和角度参数,使其与光照方向相吻合,结合天空盒中的光线方向,即可生成美丽的光圈。 2.3云彩效果 云彩是实现虚拟校园系统逼真性不可缺少的道具之一。 为实现更加逼真的云彩效果,建议在天空中对云彩效果进行随机布置,并设置好云彩的浓淡效果,从蓝天到白云应有一个由淡转浓的渐变过程,才可实现云彩效果的逼真性。 2.4消隐 各种三维模型绘制的先后顺序不一样,在整个虚拟场景 中,经常会出现某些模型的一部分被其他部分遮盖住的情况。用户漫游虚拟校园时,随着视点和视角的变化,有些场景对用户来说是不可见的,不可见的场景是随着视点和视角的变化而变化的。为实现这种变化,使三维场景的立体观感更强烈,应对不可见的场景进行隐藏,即进行图形的消隐处理,经过消隐处理的图像视觉观感更为真实。 2.5碰撞检测 真实世界中,人体是无法穿过固态物体的;而在虚拟校 园系统中,大部分的模型为三维模型,这些三维模型在用户的视点发生变化时,可能会出现视点和物体交接穿越的现象。为了更加真实地模拟校园,需要对这类碰撞进行检测。碰撞检测可判定视点与模型之间是否会发生碰撞,增强虚拟系统的交互感与真实感,从而让用户产生身临其境的逼真感。因此,一个逼真的虚拟系统需要高效的碰撞检测算法。 内置物理引擎系统的碰撞检测算法具有非常高的效率是 VR-Platform 平台的显著优势之一,VR-Platform 平台在进行物 理模拟之前,先重组三维场景中所有模型的片和面,使其格式最优化并进行存储,后续的模拟将不需要进行再次计算。为排除碰撞检测时可能出现的计算冗余,在碰撞检测前,VR- Platform 平台会进行多次过滤,包括场景过滤、碰撞组过滤、 包围盒过滤以及动、静物体过滤。 3系统优化 在信息收集和模块建模之后需要对模型进行优化,以确 保虚拟校园系统不仅可以保证良好的沉浸感、交互性和仿真感,还能高效、快速和流畅地运行,这种优化需要在整个项 三维虚拟校园的漫游系统实现 徐飞 (安徽理工学校,安徽安庆246002) 摘 要:虚拟校园系统是虚拟现实技术在教育领域的一个重要应用,可服务于学校的宣传展示、资源管理、规划设 计、远程访问等,也是校园管理信息化的一个重要应用,对学校的数字化管理具有较重要的积极影响。 关键词:三维虚拟校园漫游系统;虚拟现实;VR-Platform 平台;碰撞检测;交互功能;漫游功能 收稿日期: 2015-01-12 91 DOI:10.16184/https://www.360docs.net/doc/2315747505.html,prg.2015.09.040

开题报告-基于虚拟现实技术的三维校园漫游系统的设计与实现

梧州学院 毕业设计(论文)任务书 课题名称基于虚拟现实技术的三维校园 漫游系统的设计与实现 系部计算机科学系 专业计算机科学与技术 班级07计本5班 学号0700608118 姓名王荣华 指导教师(签名)年月日教研室主任(签名)年月日

一、课题的内容和要求: 本课题从3D MAX的建模和渲染烘焙技术着手,采用成熟VRP-BUILDER虚拟现实编辑器模块进行二次开发来构建的三维校园漫游系统。基于3D和VRP技术的三维仿真漫游系统的开发方法,以梧州学院(北区)建立虚拟场景,实现了自动漫游、手动漫游、校园路径导航、校园景物的查看、校园信息查询、各种气候效果、各种实体的动态效果,并根据路线做了详细的碰撞检测。同时根据三维仿真漫游的特点,在自动漫游和手动漫游过程中,以现有场景为基础,通过视频、图片、音乐对虚拟现实系统做了补;给需要了解梧州学院校园地理信息的用户提供了极大方便。 二、设计的技术要求与数据(或论文主要内容): 采用Polygon+NURBS高级建模的建模方法,各个模型采用简体模型来对整个校园建筑进行立体虚拟;用Bitmap位图+UVW Mapping坐标贴图、VRAY渲染方法还原校园的真实景象;采用Max-for-VRP导出插件将模型导入VRP-BUILDER虚拟现实编辑器模块,加入碰撞检测算法、VRP命令行脚本实现人机交互功能,保证系统的实用性;运用行走相机、动态漫游增加三维实景表现力,多角度查看学校环境;调试运行后由虚拟现实编辑器模块导出为EXE可执行文件实现系统的可移植运行。 三、设计(论文)工作起始日期: 自2011 年1 月10 日起,至2011 年4 月10 日止。 四、进度计划与应完成的工作: 1.收集资料进行需求分析时间:2011年1月 2.实时数据采集,建立三维模型时间:2011年2月初-----2011年2月底 3.运行和调试,系统设计及实现时间:2010年3月初-----2011年3月底 4.论文撰写时间:2011年4月 五、主要参考文献、资料: [1]陈珍.虚拟现实技术的教育应用初探.中小学电教.2009,7.8-9 [2]申蔚,曾文琪.虚拟现实技术(21世纪计算机科学与技术实践型教程).北京:清华大学出版社.2009.3-20 [3]数字仿真与虚拟现实技术概述.https://www.360docs.net/doc/2315747505.html,/showthread.php?t=3340700 [4]姜学智,李忠华.国内外虚拟现实技术的研究现状.辽宁工程技术大学学报.2004,23(2):238-240 [5]杨爱良等.反走样技术在计算机图形仿真中的运用.计算机仿真.2005,22(4):124-125

相关主题
相关文档
最新文档