计算机图形在虚拟现实中的应用,虚拟现实环境中计算机图形场景实现方法研究...
【摘要】虚拟现实技术(Virtual Reality,简称VR)是利用计算机技术产生的一种人为虚拟的环境,这种环境可以通过视觉甚至听觉、触觉来感知,用户通过自己的视点直接地、多角度地对环境进行观察、发生“交互”作用,使人和计算机很好地“融为一体”,给人一种“身临其境”的感觉。本文以园林绿化场景为例阐述用计算机实现场景的方法。
【关键词】虚拟现实;感知;场景
一、虚拟现实技术简介
虚拟现实集成了计算机图形技术、计算机仿真技术、人工智能、传感技术、显示技术、网络并行处理等技术的最新发展成果,是一种由计算机生成的高技术模拟系统。
近几年,信息产业的急速发展使一般民用计算机的性能突飞猛进,VR技术在各行业的得到广泛应用。
二、虚拟现实技术在园林设计方面的应用
1.运用虚拟现实技术的意义
园林景观对于环境变化的前瞻性和周围景物的关联性要求很高,因此在动工之前就必须对完工之后的环境有一个明确的、清晰的概念。通常情况下,设计者会通过沙盘、三维效果图、漫游动画等方式来展示设计效果,供决策者、设计者、工程人员以及公众来理解和感受。以上的传统展示方式都各有其不同的优缺点,但有一个缺点是共同的,即不能以人的视点深入其中,得到全方位的观察设计效果,而运用VR技术则可以很好地做到这一点。使用VR技术后,决策者、设计者、工程人员以及公众可从任意角度,实时互动真实地看到设计效果,身临其境地掌握周围环境和理解设计师的设计意图。这是传统手段所不能达到的。
2.运用虚拟现实技术存在的瓶颈
计算机创建的三维模型(Model)是由面(Face)组成的,模型的形体越复杂,所用的面也会越多,对计算机的运算速度要求也就越高。就目前相关设计领域来说,VR技术在城市规划及建筑设计方面的应用相对较成熟,这主要是因为建筑多由规则的形体构成,在计算机的模型中所用的面相对较少,实现VR较为容易。而园林景观中常用的设计要素,如植物、变化的地形、水体等都是不规则的形体,用计算机的模型表示会非常复杂,像一棵树本身就有成千上万片树叶,做成模型后所用到的面能达到百万的数量级,这对于现阶段的一般民用计算机来说,实现流畅的VR效果是不可能的。因此VR技术在园林造景中的应用研究仍处于起步阶段。
3.目前所能采取的应对方法
目前计算机的速度不能满足完全建模情况下园林景观的虚拟现实,所以只能使用贴图(MAP)的方式来模拟其中的植物。使用一张处理好的树木照片,就能在VR中用1个面来表现一棵树,虽然在真实度方面会有一定的损失,但相对于完全建模所需的上百万个面来说,这种损失是值得的。
三、虚拟现实技术的实现方法
1.虚拟现实技术的选择
经过多年的发展,虚拟现实技术的实现也派生出多种不同的方法,现在较为流行的有JAVA3D、CUTE3D、VRML等多种实现方法,它们也各有其不同的优缺点。而对于大型场景的模拟,VRML较为适合。
VRML(Virtual Reality Modeling Language)是一个用于三维造型和渲染的图形描述语言。用VRML我们可以创造一个能进入、能参与的虚拟世界。VRML2.0的新标准被广泛地用于Internet上创建虚拟三维空间,可以随意创建任何虚拟的物体,像建筑物、城市、山脉、飞船、星体等对象,也可以在虚拟空间中添加声音、动画,使之更加生动,更接近真实。同时,VRML程序所占的磁盘空间非常小,便于网络间的相互传输。
VRML本质上是一个网络语言,像HTML一样,需要通过编写程序代码来实现,这一点也是虚拟现实技术难以普及的一个门槛。但目前一些常用的三维图形制作软件,如3DSMAX、MAYA等都对VRML提供了一定的支持。
对于园林设计师来说,3DSMAX是较为常用的建模软件,而3DSMAX对VRML又有较好的支持,它不仅支持VRML程序的输出,同时还可以在VRML程序中通过选择摄像机在三维场景中进行导航设置,在场景中指定活动控件和感应器,丰富了实时浏览的内容。因此对于熟悉3DSMAX的园林设计师来说,VRML是一个很好的选择。
2.基本流程
(1)在3DSMAX中建立三维场景
首先按照设计方案制作出场景中各要素的模型,并赋上相应的材质贴图,然后加上能照亮整个场景的灯光,最后根据设定的视域和视高来确定自由摄像机(Free camera)的镜头类型和位置。
可见,建立虚拟现实环境的场景与制作电脑渲染图场景的过程基本一致,但侧重点有所不同,后者需要的是静态图像的渲染效果,而前者则更关注实时浏览的流畅感和空间感,因此在创建虚拟现实场景时应做到下面几点:
1)在满足视觉要求的前提下,尽量减少模型的面数。模型创建完后使用3DSMAX中的优化修改器(Optimize)进行优化,能最大限度的减少模型面数。
2)使用关联复制(InstancesCopy)。
Instance是对象的关联复制,当改变任何一个关联复制品的时候,所有其他的复制品都会改变。在建立虚拟场景时,关联复制是非常有用的,当使用关联复制的时候,组成关联复制的对象的面的设置只在VRML中定义一次。这样可以使用多次同样的几何图形,但不增加文件的下载时间。
3)对于一些非主要物体,不要过于苛求细节,尽可能使用“模拟的”几何体。比如周围的建筑可直接采用“几何体+贴图”(box+maps)的方式制作。
4)场景中所使用的贴图不需要很精细,最好全用jpg格式压缩,并缩小尺寸,这样能节省大量的下载时间。
5)所有使用到的贴图必须全部放在一个目录中,因为VRML只能搜索一个指定的贴图目录。
6)使用灯光。光线是场景视觉信息与视觉造型的基础,没有光线便无法体现物体的形状、质感和透视关系,这一点和做电脑渲染图是一样的。但在VRML中不能使用诸如全局光、反射光、折射光、阴影等光线效果,只能通过普通灯光的布光技巧来弥补。另外,要保证场景中任何一个角落都能被灯光照亮,因为最终浏览虚拟现实场景时,任何一个角落都有可能被浏览到。
7)使用摄像机。VR场景的浏览是通过摄像机来进行的,在3DSMAX中创建自由摄像机(Free camera)来确定视域和视高,不同的视域和视高在实时浏览时能给人以不同的感受。在3DSMAX场景中建立的不同摄像机将会由VRML浏览器列出,可以供用户在VR场景中进行选择性的导航。即使是在浏览器中导航非常缓慢的大环境,也可以通过对一系列的摄像机视图进行切换来快速选择性的浏览。使用建立的摄像机,展示最佳场景,也就是展示具有不寻常的透视效果,或是展示场景中花费了大量功夫才创建的精细部分的特写,如果把它留给客户去自由导航场景,就无法控制客户能看到什么效果了。当然,也可以只通过一个摄像机导航,让客户可以自由在VRML场景中游览而且无拘无束。
(2)虚拟场景中植物、地形等不规则要素的制作
1)植物:3DSMAX的透明贴图(Opa-
city)是VRML所不支持的,所以不能使用常规的方法制作植物。应该先用图形处理软件(如PHOTOSHOP)将树木照片处理成无背景的GIF格式(可支持网络上的透明背景),然后直接作为贴图赋予一个平面(Plan)。尽管看起来不是很真实,但与给植物建造模型细节所付出的代价相比要小得多。
VRML场景的浏览是实时互动的,所以仅使用一个面的树木是不能满足多角度观察的。提供两种方法来解决这个问题:一是用关联复制将树木平面复制一份,然后互相十字交叉,这样不管在什么角度都能看到完整的树,但这种情况仅适用于左右对称的植物;第二个方法是使用摄像机对齐技术,使树木的正面始终面对摄像机,但这种方法通过3DSMAX不能直接实现,必须手动修改VRML代码来实现,这就需要一定的编程基础。
2)地形:使用3DSMAX中的位移(di-
splace)修改器制作。位移修改器通过对三维物体施加一个灰度图,使三维物体对应图上亮的地方产生凸起,而亮度的不同会导致凸起的程度不同。因此我们可以将设计的地形用Photoshop处理成一张灰度图,然后在3DSMAX中作为位移修改器的贴图施加到一个平面上,就可以得到我们想要的地形了。
(3)为场景创建互动效果
VR技术中最令人激动的就是场景的互动性,用3DSMAX可以方便地创建出互动效果,在“创建/帮助物体(Creat/Helpers)”面板下的下拉列表框中选“VRML2.0”,出现一个工具面板,面板上列出了12个VRML辅助工具。其中可用于场景互动的有“锚(Anchor)”、“触动感应器(TouchSensor)”和“范围感应器(ProxSensor)”3个感应器工具。Anchor是锚触发器,当点击设置了此触发器的物体时,可以使场景切换到另一个预先指定的URL链接(类似网页文档的超级链接),或是与场景中的指定的另一个摄像机链接,类似电影中的镜头切换;TouchSensor是一个触动感应器,当在场景中用鼠标点击一个指定物体时就会引发一个预定义的动作;ProxSensor则是一个范围感应器,只要接近一个指定物体时也会引发一个预定义的动作。使用它们就能创建出互动的场景。比如走到一扇门前,门会自动打开;按动按钮,喷泉就会喷出水花,等等。
(4)输出VRML文件
在3DSMAX中使用“file”菜单下的“export…”,将导出的格式选为“VRML2.0(*.WRL)”,文件存放的路径应和贴图一致,然后注意在弹出的对话框中设置“Bitmap URL Prefix”,将图片路径设置正确。
(5)虚拟现实的浏览
浏览虚拟现实的最佳方式是通过头盔式显示器或三维眼镜来感受,但成本较高,故不在本文讨论范围。一种廉价的实现方法就是直接通过WINDOWS操作系统中的IE浏览器来浏览,首先需要安装专用的VRML浏览器插件,如CORTVRML、CosmoWorlds等都是较为常用的。安装完成后,直接运行做好的VRML文件就能在浏览器中浏览了。在浏览器中通过鼠标或键盘控制漫游的方向,如同身临其境。
四、总结
在虚拟现实环境中,设计者置身于一个相对真实的模拟空间,使得场景能够突破“平面、立面、剖面”的常规模式,让设计者从各个不同的角度直观地面对设计对象,更加深入地研究环境中各设计要素及空间之间的关系和比例,设计出更加完美、更加人性化的作品。
参考文献
[1]曾芬芳主编.虚拟现实技术[M].上海交通大学出版社,1997.
[2]黄心渊编著.虚拟现实技术与应用[M].科学出版社,1999.
[3]Heung-Yeung Shum and Li-Wee He.Rendering with Concentric Mosaics.SIGGRAPH’99.
[4]张昀,徐自亮.3D Studio MAX R3(上册)[M].清华大学出版社,1999.
[5]3D Studio MAX R3 技术文档[Z].Kinetix Company.
[6]鲍虎军,彭群生.浙江大学CAD&CG国家重点实验室.基于图像的图形绘制技术[Z].技术专题版专题报道,1998(36).
作者简介:李赵国(1980—),男,江西丰城人,浙江工业职业技术学院计算机图形图象教研室讲师。
计算机图形在虚拟现实中的应用,虚拟现实环境中计算机图形场景实现方法研究...相关推荐
- ros构建机器人运动学模型_ROS环境下机器人仿真模型构建方法研究.doc
ROS环境下机器人仿真模型构建方法研究 ROS环境下机器人仿真模型构建方法研究 摘 要: 在众多的机器人仿真平台中,ROS可以封装机器人硬件.提出在ROS环境下构建机器人的仿真模型方法.设计了机器人仿 ...
- 不动产测绘数据入库_不动产数据整合中房地信息与各类测绘数据关联入库方法研究...
2018 年 5 月 测绘与空间地理信息 GEOMATICS & SPATIAL INFORMATION TECHNOLOGY Vol.41 ꎬ No.5 May ꎬ 2018 收稿日期 : ...
- oracle中的mount,Oracle环境中使用NFS的mount选项
在oracle环境中使用NFS,在mount的时候需要修改一些选项,否则可能导致各种问题,比如ORA-27086和ORA-27054错误.不管你是将Oracle安装在NFS设备也好,是将datafil ...
- anaconda中安装的python环境中没有pip3的问题
在使用anaconda配置的python环境时,发现在python环境中并没有安装pip3的包,只有pip的 找到安装anaconda的文件夹 点击envs(利用anaconda安装的python虚拟 ...
- a fatal error java sigsegv_在Linux中Java运行时环境中的致命SIGSEGV错误
在 Linux上运行 java应用程序时收到以下错误,导致jvm崩溃: # # A fatal error has been detected by the Java Runtime Environm ...
- 验证环境中的program为什么必须是automatic
最近在项目中,发现验证环境中的顶层的program(一般将program作为验证环境的入口),都是automatic的. 其实Program默认是static的,那么为什么需要把验证环境做成autom ...
- 在Intranet环境中保护.NETWeb应用程序方案(转)
Microsoft Corporation 内容简介 基于 Intranet Web 应用程序的安全性并不是不重要,因为它存在于许多控制网络中,并且对一个限制集合中的用户是可以访问的.不同个体和部门可 ...
- Mac M1系统 miniconda安装、配置conda环境,及在conda环境中安装激活QIIME2
Mac M1系统 miniconda安装.配置conda环境,及在conda环境中安装激活QIIME2 1.适配版本的miniconda软件安装包下载(windows, MAC, LINUX) Min ...
- Miniconda的安装与使用及pip在conda环境中的安装
文章目录 一.Miniconda如何安装? 1.下载miniconda 2.安装 3.环境变量配置 二.Miniconda的内部配置 1.添加conda的镜像服务器 2.创建python3.9虚拟环境 ...
最新文章
- 浅谈GCC预编译头技术
- Wince 添加中文字库
- 实用算法实现-第6篇	线段树
- html5input输入框设置无边框_芯片充电两大改变,无看点的iPad8,上手体验发现并不简单!...
- aix oracle监听配置_Oracel:ORA-12518:监听程序无法分发客户机连接
- java猜数游戏有次数限制_“去小学化”之后,可以这样开展数学游戏,让孩子玩中学,学中乐!...
- 《Python编程从入门到实践》记录之类继承
- 在 Linux 上监控 CPU 和 GPU 温度
- 第一阶段冲刺(第十天)
- iChart--地图显示人口统计
- c语言sinx幂级数展开,求幂级数展开式的方法
- pano2vr怎么制作漫游_Pano2VR输出全景漫游以及查看
- 简单的python爬取淘宝数据
- css线条伸缩_CSS3弹性伸缩布局(上)——box布局
- Flutter系列五:State的生命周期
- android证书管理
- php一键领取名片赞源码,一键领取名片和圈圈赞
- 为electron添加Chrome扩展程序
- 520催泪感人表白心动文案怎么用免费的记笔记软件记录?
- PDPS软件:机器人示教编程与工作站仿真运行
热门文章
- [含lw+源码等]S2SH+mysql水费管理系统[包运行成功]Java毕业设计计算机毕设
- 清华BAAI唐杰团队提出第一个开源的通用大规模预训练文本到视频生成模型CogVideo,含94亿超大参数量!代码即将开源!...
- 1 电磁波与电磁波谱
- Spring AOP之---基于JDK动态代理和CGLib动态代理的AOP实现
- C语言-随机数的生成
- Java编译多个依赖文件
- 电赛 | 单相用电器分析监测装置(省电赛一等奖作品)
- 5G下矿井,煤炭行业进入“智”时代
- 简易扫雷游戏c语言程序,C++实现简单的扫雷游戏(控制台版)
- YOLOv5s网络结构详解