虚拟现实提高性实验报告 - 图文

发布时间 : 星期二 文章虚拟现实提高性实验报告 - 图文更新完毕开始阅读

提高型实验报告

实验课题: 个人工作室三维模型制作

√设计型 □应用型 实验类型:□综合型 □

实验课程: 虚拟现实技术基础与应用 专业名称: 教育技术学 实验班级: 0702 实 验 者: 何文丽 实验时间: 2010.6

教育科学与技术学院

提高型实验项目:虚拟现实系统的设计与开发

——个人工作室三维模型制作

一、实验目的

1. 熟悉虚拟现实系统开发的流程。 2. 熟练掌握VRML语言的使用。

二、实验器材

硬件环境:多媒体计算机。

软件环境:1.Windows XP操作系统;

2.虚拟现实浏览器插件BS_Contact_VRML-X3D; 3.VRML编辑器vrmlpad。

三、实验原理

VRML语言语法简单、易懂,能创造三维造型与场景并且可以实现很好的交互效果,而且可以嵌入JavaScript程序实现人机交互,且在VRML中具有感知功能,可以利用各种传感器节点来实现用户与虚拟场景之间的智能交互。

本课件主要采用VRML语言编辑,用到的节点有以下几种:基本几何节点、绘图节点、物体外观节点、纹理映射节点、群节点、影音与视点导航节点、规范化接口节点、动态交互感知节点。

四、实验内容与步骤

1. 构思设计思路:建立一个个人工作室模型,里面的物品有立灯、展示台、书柜、窗户、办公桌、沙发、茶几。书柜上有书、眼镜、鼠标等;展示台上有书、风车、照相机等;沙发的圆桌上摆放着玫瑰花;茶几上有CD和一些杂志等。

其中有交互功能的物体有“门”、“站立式灯1”、“站立式灯2”、“窗户”、“风车”以及“办公桌”,它们实现的功能分别是: (1)“门”实现的功能是用户单击门时,门会自动打开,当再次单击门后,又会自动关上。

(2)“站立式灯1”和“站立式灯2”实现的功能是单击门旁边的开关,相应的灯会发亮。

(3)“窗户”实现的功能是当单击窗帘时窗帘会自动向两旁收缩,这时用户可以看到窗外,当再次单击窗帘后,窗帘会自动向中间收拢,遮住窗外。

(4)“风车”实现的功能是当用户将鼠标放置在风车上时,风车会开始转动,并能唱出歌谣“大风车”,当用户将鼠标移开后,风车和声音均会停止。

(5)“办公桌”实现的功能是当用户在电脑屏幕上单击鼠标,电脑会开始播放MV,若中途用户再次单击鼠标,则播放会停止。重新单击则又会重头开始播放。

2. 开发的主要步骤是先将工作室中的所有物品都在vrmlpad编辑器中单独建立一个.wrl文件,在其中编写出造型代码,然后再通过内连接点整合到“工作室.wrl”中。 3. 交互功能的关键代码及说明如下。

(1)门的交互功能:由于要实现开门和关门两个效果,所以需要两个传感器,他们的key值相同而keyvalue刚好相反。另外它们可以共用一个接触传感器和时间传感器。另外需要用到script脚本使门的开关是符合实际的,其脚本如下:

DEF controller Script {

field SFBool isOpen FALSE eventIn SFTime doorClicked eventIn SFFloat fracIn eventOut SFTime actionStart eventOut SFFloat fracOut url \ \

function doorClicked(value){ }

function fracIn(value,timeStamp){ }

if(!isOpen) else

fracOut=value; fracOut=1-value; isOpen=!isOpen; actionStart=value;

ROUTE touch1.touchTime TO controller.doorClicked ROUTE controller.actionStart TO time1.startTime ROUTE time1.fraction_changed TO controller.fracIn ROUTE controller.fracOut TO ROUTE controller.fracOut TO

ontInp.set_fraction ontInp2.set_fraction

ROUTE ontInp.value_changed TO door2.rotation

ROUTE ontInp2.value_changed TO door1.rotation

(2)灯的交互功能:灯的开关交互与门的旋转相似,因此在这里着重叙述灯的亮、暗的实现,用到PointLight和Script脚本,其主要脚本编写如下:

DEF lamp PointLight { }

ROUTE touch.touchTime TO path.time ROUTE path.color TO lamp1.emissiveColor ROUTE path.kong TO lamp.on

(3)窗户的交互功能:与门的功能相似,只是这里用到的是位置传感器。

(4)风车的交互功能:音乐的播放要用到sound节点,而交互的位置是整个风车,所以接触传感器和时间传感器是处在整个group的children域中的,其路由的代码主要如下:

ROUTE touch2.isOver TO time2.enabled

ROUTE touch2.isOver TO ring.loop #鼠标处在风车上时,音乐即开始播放 on FALSE location 0 1.53 0 radius 100 color 1 1 1 intensity 1

ambientIntensity 0.8 attenuation

1 0 0

DEF path Script { eventIn SFTime time field SFColor white 1 1 1 field SFColor red 1 0 0 field SFBool

on FALSE

eventOut SFColor color eventOut SFBool kong url \ function time(){

if (on==FALSE){

color=red; on=TRUE; kong=true;

} else {

color=white; on=FALSE; kong=false;

}

}\}

联系合同范文客服:xxxxx#qq.com(#替换为@)