【摘要】虚拟现实技术(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—),男,江西丰城人,浙江工业职业技术学院计算机图形图象教研室讲师。

计算机图形在虚拟现实中的应用,虚拟现实环境中计算机图形场景实现方法研究...相关推荐

  1. ros构建机器人运动学模型_ROS环境下机器人仿真模型构建方法研究.doc

    ROS环境下机器人仿真模型构建方法研究 ROS环境下机器人仿真模型构建方法研究 摘 要: 在众多的机器人仿真平台中,ROS可以封装机器人硬件.提出在ROS环境下构建机器人的仿真模型方法.设计了机器人仿 ...

  2. 不动产测绘数据入库_不动产数据整合中房地信息与各类测绘数据关联入库方法研究...

    2018 年 5 月 测绘与空间地理信息 GEOMATICS & SPATIAL INFORMATION TECHNOLOGY Vol.41 ꎬ No.5 May ꎬ 2018 收稿日期 : ...

  3. oracle中的mount,Oracle环境中使用NFS的mount选项

    在oracle环境中使用NFS,在mount的时候需要修改一些选项,否则可能导致各种问题,比如ORA-27086和ORA-27054错误.不管你是将Oracle安装在NFS设备也好,是将datafil ...

  4. anaconda中安装的python环境中没有pip3的问题

    在使用anaconda配置的python环境时,发现在python环境中并没有安装pip3的包,只有pip的 找到安装anaconda的文件夹 点击envs(利用anaconda安装的python虚拟 ...

  5. a fatal error java sigsegv_在Linux中Java运行时环境中的致命SIGSEGV错误

    在 Linux上运行 java应用程序时收到以下错误,导致jvm崩溃: # # A fatal error has been detected by the Java Runtime Environm ...

  6. 验证环境中的program为什么必须是automatic

    最近在项目中,发现验证环境中的顶层的program(一般将program作为验证环境的入口),都是automatic的. 其实Program默认是static的,那么为什么需要把验证环境做成autom ...

  7. 在Intranet环境中保护.NETWeb应用程序方案(转)

    Microsoft Corporation 内容简介 基于 Intranet Web 应用程序的安全性并不是不重要,因为它存在于许多控制网络中,并且对一个限制集合中的用户是可以访问的.不同个体和部门可 ...

  8. Mac M1系统 miniconda安装、配置conda环境,及在conda环境中安装激活QIIME2

    Mac M1系统 miniconda安装.配置conda环境,及在conda环境中安装激活QIIME2 1.适配版本的miniconda软件安装包下载(windows, MAC, LINUX) Min ...

  9. Miniconda的安装与使用及pip在conda环境中的安装

    文章目录 一.Miniconda如何安装? 1.下载miniconda 2.安装 3.环境变量配置 二.Miniconda的内部配置 1.添加conda的镜像服务器 2.创建python3.9虚拟环境 ...

最新文章

  1. 浅谈GCC预编译头技术
  2. Wince 添加中文字库
  3. 实用算法实现-第6篇 线段树
  4. html5input输入框设置无边框_芯片充电两大改变,无看点的iPad8,上手体验发现并不简单!...
  5. aix oracle监听配置_Oracel:ORA-12518:监听程序无法分发客户机连接
  6. java猜数游戏有次数限制_“去小学化”之后,可以这样开展数学游戏,让孩子玩中学,学中乐!...
  7. 《Python编程从入门到实践》记录之类继承
  8. 在 Linux 上监控 CPU 和 GPU 温度
  9. 第一阶段冲刺(第十天)
  10. iChart--地图显示人口统计
  11. c语言sinx幂级数展开,求幂级数展开式的方法
  12. pano2vr怎么制作漫游_Pano2VR输出全景漫游以及查看
  13. 简单的python爬取淘宝数据
  14. css线条伸缩_CSS3弹性伸缩布局(上)——box布局
  15. Flutter系列五:State的生命周期
  16. android证书管理
  17. php一键领取名片赞源码,一键领取名片和圈圈赞
  18. 为electron添加Chrome扩展程序
  19. 520催泪感人表白心动文案怎么用免费的记笔记软件记录?
  20. PDPS软件:机器人示教编程与工作站仿真运行

热门文章

  1. [含lw+源码等]S2SH+mysql水费管理系统[包运行成功]Java毕业设计计算机毕设
  2. 清华BAAI唐杰团队提出第一个开源的通用大规模预训练文本到视频生成模型CogVideo,含94亿超大参数量!代码即将开源!...
  3. 1 电磁波与电磁波谱
  4. Spring AOP之---基于JDK动态代理和CGLib动态代理的AOP实现
  5. C语言-随机数的生成
  6. Java编译多个依赖文件
  7. 电赛 | 单相用电器分析监测装置(省电赛一等奖作品)
  8. 5G下矿井,煤炭行业进入“智”时代
  9. 简易扫雷游戏c语言程序,C++实现简单的扫雷游戏(控制台版)
  10. YOLOv5s网络结构详解