1、天津农学院计算机与信息工程学院仿真与虚拟农业课程设计报告题目:基于VRML的虚拟房子场景的设计专业班级: 2013级物联网工程2 班学号: 1308114203 姓名: 赵慧彤 指导教师: 李乃祥 成绩:2016年 6月摘要:虚拟现实场景能产一种生动逼真的效果,能让人产生身临其境的感觉。本文主要介绍了VRML基本工作原理,交互技术,并设计了基于 VRML的虚拟房子的场景,旨在通过网络展示室内概括,用户可以走入虚拟房子中,观赏室内布置。浏览者可以利用输入设备控制自己的视点和视角,对这个虚拟场景进行全方位的浏览和交互。关键字:VRML 虚拟场景视点交互Abstract:Virtual realit
2、y scene can produce a vivid effect, can let a person produce immersive feel. This paper mainly introduces the basic working principle of VRML, interactive technology, and designed a virtual house scene based on VRML, designed to show indoor summarized through the network, the user can into virtual h
3、ouse, watch the indoor layout. Visitors can use input device in control of their viewpoints and perspectives, to carry on the omni-directional browse the virtual scene and interaction。 Key words:VRML Virtual SceneViewpointInteraction29目录摘要:1Abstract:11.设计背景32。选题分析43。可行性分析43。1用户分析43.2技术分析54。系统开发设计与实施
4、54。1界面设计原则及VRML特性54.2设计模型74.3 系统描述74。4 界面实现74.5 交互功能的实现104.6主要代码设计125.总结与心得体会13参考文献15基于VRML的虚拟房子场景的设计1。设计背景VRML是一种建模语言,也是一种描述Internet上交互式3D多媒体和共享虚拟世界的开放标准.VRML定义了一组用以描述三维图形的对象,这些对象称为节点,节点被组织成一种分层的结构,称为场景。使用场景图数据结构来建立3D场境。场景图是一种代表所有3D世界静态特征的节点等级:几何关系、质材、纹理、几何转换、光线、视点以及嵌套结构。境界中的对象及其属性用节点描述,节点按照一定规则构成场
5、景图,也就是说,场景图是境界的内部表示。场景图中的第一类节点用于从视觉和听觉角度表现对象,它们按照层次体系组织起来,反映了境界的空间结构。另一类节点参与事件产生和路由机制,形成路由图,确定境界随时间的推移如何动态变化 詹剑锋.软件观念革命 交互设计精髓J.电子工业出版社.2005:9。VRML用文本信息来描述三维场景,在Internet上传输,然后在本地机上由VRML 浏览器解释生成三维场景。这种工作机制,避免了在网络上直接传输图形文件,把复杂任务交给本地机器,从而减轻了网络的负担,使得在Internet上的三维交互成为可能。VRML的访问方式是基于客户/服务器模式,其中服务器提供VRML文件
6、及支持资源,客户通过网络下载希望访问的文件,并通过本地平台上的VRML浏览器交互式访问该文件描述的虚拟境界,因为浏览器是本地平台提供的,从而实现了与硬件平台的无关性 杨苗,郝莹.基于VRML的虚拟现实技术的研究与实现J.第十四届全国图像图形学学术会议.2010:710。现今,基于VRML的虚拟现实系统已经有很多成功案例,如虚拟学校漫游系统、虚拟宿舍系统、虚拟博物馆系统等等。2。选题分析本选题是基于VRML的虚拟房子场景的系统,通过VRML制作的虚拟房子是个规模较小的三维场景,旨在通过网络展示室内概括,用户可以打开虚拟房子的门,走入房中,浏览室内布置。浏览者可以利用输入设备控制自己的视点和视角,
7、对这个虚拟场景进行全方位的浏览和交互。3。可行性分析3.1用户分析该系统的用户为偶然型用户,即没有计算机应用领域的专业知识,也缺少计算机系统基本知识的用户,遍布各种年龄层次,文化背景,职业特征和爱好等.所以本系统的人机交互主要体现在通过鼠标和键盘控制来观看整个房子.3.2技术分析用VrmlPad软件来对VRML程序进行编辑和调试,用BS contact播放器来浏览虚拟场景。BS Contact播放器是由德国Bitmanagement Software GmbH公司开发的,其实现了web3d联盟规定的x3d标准的大部分节点,同时也扩展了一些应用节点,良好的图形渲染效果为x3d虚拟现实系统的开发提
8、供了编程的接口,大大提高了构建x3d虚拟现实系统的效率。VrmlPad 是由的基于文本格式、支持即时预览的VRML专用开发工具,具有VRML代码下载、编辑、预览、调试功能,是当今VRML源代码编辑的最强工具之一。4.系统开发设计与实施4。1界面设计原则及VRML特性界面要求具有一致性,常用操作要有快捷方式,便于操作.还必须提供必要的错误处理功能,提供信息反馈,并且允许操作可逆,设计有良好的联机帮助,还要能合理划分并高效地使用显示屏幕。VRML是以节点(Node)作为基本单位,将不同的节点以层次关系组织在一起,构成VRML中的场景图(Scene Graph),实现立体空间中各种造型及相关操作。总
9、的说来,VRML具有以下特性:(1)分布式:VRML可以通过其它的VRML或Web主页使分布在各处的资源链接起来;(2)交互性:VRML提供了丰富的接口用于接收输入和与浏览器通信;(3)超媒体集成:VRML可以支持包括3D声音以及各种音频、视频和动画等多媒体格式,还可以内嵌使用Java和ECM Script等语言编写的程序代码,VRML同其他标准格式文件也有很好的兼容性 朱婷婷. 基于 VRML 的虚拟实验的设计与研究 .四川师范大学计算机科学院学院.2009:36。例如把WAV和MIDI文件用于虚拟世界中播放声音等;(4)平台无关性:VRML编写的文件可在任何平台上运行,它仅与VRML浏览器
10、的解释程度有关;(5)可重组性:VRML中通过定义相关的机制(如原型机制等)使得用VRML生成的模型可被重复使用;(6)易扩展性:VRML不仅可以让开发者定义自己的节点类型,还提供了多种调用接口。4.2设计模型4。3 系统描述通过VRML制作的虚拟房子是个规模较小的三维场景,旨在通过网络展示室内概括,用户可以走入虚拟房子中,观赏室内布置.浏览者可以利用输入设备控制自己的视点和视角,对这个虚拟场景进行全方位的浏览和交互。4。4 界面实现1、用户可用键盘上的前后左右键漫游系统,在系统中行进;2、用户可通过点击鼠标控制门的开关状态;3、用户可用鼠标在系统中行进漫游;4、用户漫游时无法用+、控制速度;
11、5、用户可用BS contact播放器自带的功能键实现俯视或仰视建筑,还能变换视点观察房间内部结构。如下,图14分别是四个视点的房间外部浏览,图5、6是房间内部场景展示。图1 正面视点图2 左侧后方视点图3右侧后方视点图4侧方视点图5 房间内部柜子等视点图6 房间内部沙发等视点4。5 交互功能的实现VRML中实现交互的一个基本方法就是使用各种传感器,传感器主要用来检测用户在虚拟场景中的动作。通过事件的传递实现用户和虚拟场景的交互。传感器分为两大类:一是触摸型的传感器,另一类是感知型的传感器。主要由用户在虚拟场景中的动作来决定。所谓动作分为两类:一类是用户的输入设备对于对象的操作.用户在浏览场景
12、的时候,主要的输入设备是鼠标,传感器实际上是检测用户对于鼠标的各种操作动作,如鼠标的单击、指向和拖动等,从而场景作出相应的反应.这属于触摸型传感器。描述这类传感器的节点有TouchSensor(使用TouchSensor可以实现交互区域划分,只有用户单击点在指定区域时才会产生交互效果);PlaneSensor(将鼠标运动转化为z=0平面上的相对运动,即对象可在XY平面移动,其方位不发生变化);CylinderSensor(将鼠标的单击和移动转化为空间的一个虚构圆柱体的旋转);SphereSensor(将鼠标的单击和移动转化为绕原点的旋转)。另一类是用户和场景中的某对象接近的程度作出响应,从而产
13、生交互,这类是感知传感器 陈华,陈福民.基于VRML的虚拟场景的设计与实现D.同济大学计算中心.2010:45附录#VRML V2.0 utf8# Produced by 3D Studio MAX VRML97 exporter, Version 3, Revision 1.31# MAX File: SunnyHouse5.max, Date: Fri Jul 20 10:48:08 2001DEF Camera01 Viewpoint #定义结点,控制节点,视点设置结点 position -2.851 1.341 8.06 orientation -0.169 0.9847 -0.042
14、52 -0.5002 fieldOfView 0.6024 description Camera01DEF NavInfo01 NavigationInfo #浏览者信息结点 avatarSize 0.2165, 0.6417, 0.6102 headlight TRUE speed 0.9667 type WALK visibilityLimit 0DEF Background01 Background #环境结点 skyColor 0 0.1804 0.5725, 0.5059 0.5922 0.7882, 0.8078 0.8392 0.9176, #天空色 skyAngle 1.047
15、, 1.571, #天空角 groundColor 1 1 1, #颜色DEF Omni01 PointLight #灯信息 intensity 1 color 1 1 1 location 2.523 1.553 -0.8173 on TRUE radius 314.1DEF Fspot01 SpotLight intensity 1 color 1 1 1 location 2.46 0.3023 -1.954 direction 0 1 0 cutOffAngle 1.99 beamWidth 1.906 on TRUE radius 314.1DEF FDirect01 Directi
16、onalLight intensity 1 color 1 1 1 direction 0 -1 0 on TRUEDEF Line01 Transform translation 2.539 0.3742 -2.008 children Shape #实物结点 appearance Appearance #外观域结点 material Material #材质 diffuseColor 0.5137 0.7255 0.8471 #漫反光色 ambientIntensity 0.5686 #材料表面的对比度 specularColor 0.6735 0.6735 0.6735 #材质的镜面反射
17、光色 shininess 0.2875 #材料表面亮度 transparency 0.7 #材料的透明度0.0不透明,1.0完体透明 geometry DEF Line01-FACES IndexedFaceSet ccw TRUE solid TRUE colorPerVertex TRUE color Color color 0.1449 0.161 0.1724, 0.2049 0.2182 0.2281, 0.004517 0.006953 0.01061, 0.004517 0.006953 0.01061, 0.2612 0.3396 0.3869, 0.2953 0.3808 0
18、.4322, 0.3857 0.4563 0.4991, 0.3169 0.3738 0.4087, 0.1704 0.2354 0.2749, 0.1818 0.2513 0.2935, 0.2166 0.2749 0.3107, 0.3728 0.4584 0.5099, 0.7135 0.8587 0.9442, 0.5758 0.7261 0.8147, 0.3991 0.5331 0.6123, 0.4406 0.5656 0.6397, 0.2283 0.3089 0.3575, 0.5185 0.6355 0.7049, 0.3689 0.4949 0.5695, 0.4144
19、0.5553 0.6384, 0.3468 0.3957 0.4261, 0.3777 0.4883 0.5541, 0.1459 0.1923 0.2213, 0.5698 0.6911 0.763 colorIndex 17, 0, 16, -1, 1, 16, 0, -1, 1, 2, 6, -1, 1, 6, 5, -1, 2, 3, 7, -1, 2, 7, 6, -1, 3, 0, 4, -1, 3, 4, 7, -1, 8, 9, 13, -1, 8, 13, 12, -1, 9, 10, 14, -1, 9, 14, 13, -1, 19, 10, 11, -1, 11, 18
20、, 19, -1, 11, 8, 12, -1, 11, 12, 15, -1, 11, 0, 8, -1, 3, 8, 0, -1, 2, 8, 3, -1, 2, 9, 8, -1, 1, 9, 2, -1, 1, 10, 9, -1, 0, 10, 1, -1, 0, 11, 10, -1, 15, 12, 4, -1, 7, 4, 12, -1, 6, 7, 12, -1, 6, 12, 13, -1, 5, 6, 13, -1, 5, 13, 14, -1, 4, 5, 14, -1, 4, 14, 15, -1, 1, 5, 16, -1, 4, 0, 17, -1, 16, 5,
21、 20, -1, 11, 15, 18, -1, 14, 10, 19, -1, 21, 14, 19, -1, 5, 4, 20, -1, 20, 4, 22, -1, 15, 14, 21, -1, 23, 15, 21, -1, 4, 17, 22, -1, 18, 15, 23, -1, 20, 22, 21, -1, 19, 17, 16, -1, 21, 19, 20, -1, 16, 20, 19, -1, 18, 22, 17, -1, 19, 18, 17, -1, 23, 21, 22, -1, 18, 23, 22, -1 coord DEF Line01-COORD C
22、oordinate point -2.539 0 2.008, 2.539 0 2.008, 2.539 0 -2.008, -2.539 0 -2.008, -2.539 1.772 2.008, 2.539 1.772 2.008, 2.539 1.772 -2.008, -2.539 1.772 -2.008, -2.5 0 -1.969, 2.5 0 -1.969, 2.5 0 1.969, -2.5 0 1.969, -2.5 1.772 -1.969, 2.5 1.772 -1.969, 2.5 1.772 1.969, -2.5 1.772 1.969, 0.324 0.0126
23、1 2.008, -0.3886 0.01261 2.008, -0.3886 0.01261 1.969, 0.324 0.01261 1.969, 0.324 1.252 2.008, 0.324 1.252 1.969, -0.3886 1.252 2.008, -0.3886 1.252 1.969 DEF Box01 Transform #编组结点 translation -0.003897 0.3674 -0.02515 #规定了X、Y、Z方向的平移量当平移量为正时正向移反之相反,默认值(0.0 0.0 0.0) children #引出成员结点 Shape appearance
24、Appearance material Material diffuseColor 0.6275 0.6275 0.6667 ambientIntensity 0.6405 specularColor 0.135 0.135 0.135 shininess 0.145 transparency 0 texture ImageTexture url hifi_rc/brick.gif textureTransform TextureTransform center 0.5 0.5 scale 1 2 geometry DEF Box01-FACES IndexedFaceSet ccw TRUE
25、 solid TRUE colorPerVertex TRUE color Color color 0.193 0.193 0.2017, 0.7167 0.7167 0.7499, 0.244 0.244 0.2542, 0.6491 0.6491 0.6842, 0.6476 0.6476 0.683, 0.9258 0.9258 0.9759, 0.8065 0.8065 0.8463, 1 1 1 DEF Box02 Transform translation 0.04343 0.3674 -3.956 children Shape appearance Appearance mate
26、rial Material diffuseColor 0.6275 0.6275 0.6667 ambientIntensity 0.6405 specularColor 0.135 0.135 0.135 shininess 0.145 transparency 0 texture ImageTexture url hifi_rc/brick.gif textureTransform TextureTransform center 0.5 0.5 scale 1 2 geometry USE Box01-FACES DEF Rectangle02 Transform translation
27、0 -0.03088 0.3587 children Shape appearance Appearance material Material diffuseColor 0.6118 0.8314 0.9333 ambientIntensity 0.7922 specularColor 1.926 1.926 1.926 shininess 0.5155 transparency 0 geometry DEF Rectangle02-FACES IndexedFaceSet ccw TRUE solid TRUE colorPerVertex TRUE color Color color 1
28、 1 1, 0.7975 1 1, 0.8961 1 1, 0.8186 1 1, 0.6886 0.9424 1, 0.9166 1 1, 0.9274 1 1, 0.8852 1 1, 0.9047 1 1, 0.9381 1 1, 0.9395 1 1, 0.8946 1 1, 0.8332 1 1, 0.7956 1 1, 0.8209 1 1, 0.8841 1 1, 0.753 1 1, 0.8296 1 1, 1 1 1, 1 1 1, 1 1 1, 1 1 1, 1 1 1, 1 1 1, 1 1 1, 1 1 1, 1 1 1, 1 1 1, 1 1 1, 1 1 1, 0.
29、7819 1 1, 0.8527 1 1, 1 1 1, 1 1 1, 1 1 1, 1 1 1, 0.8132 1 1, 1 1 1, 1 1 1, 1 1 1, 1 1 1, 1 1 1, 1 1 1, 1 1 1, 1 1 1, 1 1 1, 1 1 1, 1 1 1, 0.927 1 1, 0.8503 1 1, 0.7857 1 1, 0.8931 1 1, 1 1 1, 1 1 1, 1 1 1, 1 1 1, 1 1 1, 1 1 1, 1 1 1, 1 1 1, 1 1 1, 1 1 1, 0.9667 1 1, 1 1 1 colorIndex 0, 1, 33, -1, 0
30、, 33, 32, -1, 1, 2, 34, -1, 1, 34, 33, -1, 2, 3, 35, -1, 2, 35, 34, -1, 3, 4, 36, -1, 3, 36, 35, -1, 4, 5, 37, -1, 4, 37, 36, -1, 5, 6, 38, -1, 5, 38, 37, -1, 6, 7, 39, -1, 6, 39, 38, -1, 7, 8, 40, -1, 7, 40, 39, -1, 8, 9, 41, -1, 8, 41, 40, -1, 9, 10, 42, -1, 9, 42, 41, -1, 10, 11, 43, -1, 10, 43,
31、42, -1, 11, 12, 44, -1, 11, 44, 43, -1, 12, 13, 45, -1, 12, 45, 44, -1, 13, 14, 46, -1, 13, 46, 45, -1, 14, 15, 47, -1, 14, 47, 46, -1, 15, 16, 48, -1, 15, 48, 47, -1, 16, 17, 49, -1, 16, 49, 48, -1, 17, 18, 50, -1, 17, 50, 49, -1, 18, 19, 51, -1, 18, 51, 50, -1, 19, 20, 52, -1, 19, 52, 51, -1, 20,
32、21, 53, -1, 20, 53, 52, -1, 21, 22, 54, -1, 21, 54, 53, -1, 22, 23, 55, -1, 22, 55, 54, -1, 23, 24, 56, -1, 23, 56, 55, -1, 24, 25, 57, -1, 24, 57, 56, -1, 25, 26, 58, -1, 25, 58, 57, -1, 26, 27, 59, -1, 26, 59, 58, -1, 27, 28, 60, -1, 27, 60, 59, -1, 28, 29, 61, -1, 28, 61, 60, -1, 29, 30, 62, -1,
33、29, 62, 61, -1, 30, 31, 63, -1, 30, 63, 62, -1, 31, 0, 32, -1, 31, 32, 63, -1, 24, 26, 25, -1, 24, 27, 26, -1, 24, 28, 27, -1, 24, 29, 28, -1, 24, 30, 29, -1, 24, 31, 30, -1, 23, 31, 24, -1, 23, 0, 31, -1, 22, 0, 23, -1, 21, 0, 22, -1, 20, 0, 21, -1, 19, 0, 20, -1, 18, 0, 19, -1, 17, 0, 18, -1, 16,
34、0, 17, -1, 15, 0, 16, -1, 14, 0, 15, -1, 13, 0, 14, -1, 12, 0, 13, -1, 11, 0, 12, -1, 10, 0, 11, -1, 9, 0, 10, -1, 8, 0, 9, -1, 7, 0, 8, -1, 6, 0, 7, -1, 6, 1, 0, -1, 6, 2, 1, -1, 5, 2, 6, -1, 5, 3, 2, -1, 4, 3, 5, -1, 56, 57, 58, -1, 56, 58, 59, -1, 56, 59, 60, -1, 56, 60, 61, -1, 56, 61, 62, -1, 5
35、6, 62, 63, -1, 55, 56, 63, -1, 55, 63, 32, -1, 54, 55, 32, -1, 53, 54, 32, -1, 52, 53, 32, -1, 51, 52, 32, -1, 50, 51, 32, -1, 49, 50, 32, -1, 48, 49, 32, -1, 47, 48, 32, -1, 46, 47, 32, -1, 45, 46, 32, -1, 44, 45, 32, -1, 43, 44, 32, -1, 42, 43, 32, -1, 41, 42, 32, -1, 40, 41, 32, -1, 39, 40, 32, -
36、1, 38, 39, 32, -1, 38, 32, 33, -1, 38, 33, 34, -1, 37, 38, 34, -1, 37, 34, 35, -1, 36, 37, 35, -1 coord DEF Rectangle02-COORD Coordinate point 0.0497 0 -0.2937, 0.04864 0 -0.3029, 0.04563 0 -0.3113, 0.04091 0 -0.3187, 0.03471 0 -0.3249, 0.02728 0 -0.3296, 0.01887 0 -0.3326, 0.009701 0 -0.3337, -0.00
37、9701 0 -0.3337, -0.01887 0 -0.3326, -0.02728 0 -0.3296, -0.03471 0 -0.3249, -0.04091 0 -0.3187, -0.04563 0 -0.3113, -0.04864 0 -0.3029, -0.0497 0 -0.2937, -0.0497 0 0.2937, -0.04864 0 0.3029, -0.04563 0 0.3113, -0.04091 0 0.3187, -0.03471 0 0.3249, -0.02728 0 0.3296, -0.01887 0 0.3326, -0.009701 0 0
38、.3337, 0.009701 0 0.3337, 0.01887 0 0.3326, 0.02728 0 0.3296, 0.03471 0 0.3249, 0.04091 0 0.3187, 0.04563 0 0.3113, 0.04864 0 0.3029, 0.0497 0 0.2937, 0.0497 0.003937 -0.2937, 0.04864 0.003937 -0.3029, 0.04563 0.003937 -0.3113, 0.04091 0.003937 -0.3187, 0.03471 0.003937 -0.3249, 0.02728 0.003937 -0.
39、3296, 0.01887 0.003937 -0.3326, 0.009701 0.003937 -0.3337, -0.009701 0.003937 -0.3337, -0.01887 0.003937 -0.3326, -0.02728 0.003937 -0.3296, -0.03471 0.003937 -0.3249, -0.04091 0.003937 -0.3187, -0.04563 0.003937 -0.3113, -0.04864 0.003937 -0.3029, -0.0497 0.003937 -0.2937, -0.0497 0.003937 0.2937, -0.04864 0.003937 0.3029, -0.04563 0.003937 0.3113, -0.04091 0.003937 0.3187, -0.03471 0.003937 0.3249, -0.02728 0.003937 0.3296, -0.01887 0.003937 0.3326, -0.009701 0.003937 0.3337, 0.009701 0.003937 0.3337, 0.01887 0.003937 0.3326, 0.02728 0.003937