虚拟现实技术 实验2
- 格式:doc
- 大小:50.50 KB
- 文档页数:8
姓名:胡芳惠 学号 03134302 VR 实验2—基于VRML的3D设计 一、 实验内容: 1. 熟悉VrmlPad编辑器的安装和使用 2. 熟悉Cortona3D浏览器的安装和使用 3. 掌握虚拟造型的基本操作 二、 实验环境: 1. 硬件环境 计算机一台 2. 软件环境 WindowsXP操作系统、VrmlPad编辑器和Cortona3D浏览器 三、 实验步骤: 1.选择菜单中的“工具”→“选项”可以进行选项设置。选择图2中的“预览”选项卡,可以进行浏览器设置。建议选择“使用系统默认VRML浏览器”。 2.VrmlPad编辑器中提供了一些特殊节点的代码,可以直接加入编辑器中,选择菜单中的“工具”→“特殊节点”就能看到或者选择。同时,VrmlPad编辑器中有一个造型材质编辑器(Material Editor)给造型的材质颜色设置提供了极大的方便。先选中VRML文件中需要调整材质颜色的节点,然后选择VrmlPad编辑器中“工具”→“Material Editor”。左上方“Category”提供了多种材质选择,包括“Glass Colors”、“Material Colors”、“Plastic Colors”、“Soft Colors”等常用材质颜色的选择。 3.选择VrmlPad编辑器菜单中的“工具”→“Extrusion Editor”。Extrusion Editor可以创建、编辑一个复杂的几何体;可以方便快捷地进行材质设置;可以进行纹理的缩放、移位、旋转、变形、模糊显示、亮度增减等;包含一个可扩充的Extrusion资源库;并且可以很容易地将代码插入到正在编辑的VRML文件中。
4.VRML测试代码
(1) 基础造型 实例1.圆柱基本几何造型。 1.输入下例。 #VRML V2.0 utf8 #Background { # skyColor 1.0 1.0 1.0 #} Shape{ appearance Appearance { material Material{ } } geometry Cylinder { top FALSE } } 2. 将本例中关于Cylinder节点的参数进行更改,并观察每个参数的影响。 实例2.圆柱基本几何造型。 1.输入下例。 #VRML V2.0 utf8 Background { skyColor 1.0 1.0 1.0 } Shape{ appearance Appearance { material Material{ } } geometry Sphere { radius 1.6 } } 2.将Sphere节点的参数进行更改,并观察更改后的效果。 实例3. 长方体等基本几何造型的例子。 #VRML V2.0 utf8 Shape { appearance Appearance { material Material { } } geometry Box { } } (2) 空间变换
VRML场景中的每一个造型都是基于当前坐标系进行创建的,而单一坐标系的使用将在很大程度上限制用户的空间想象力和创造力的发挥。在VRML场景中改变空间位置和空间朝向,需要进行VRML空间变换,也即变换造型创建所基于的空间坐标系。VRML空间变换使用Transform节点进行。 实例1. 楼梯造型 1. 代码如下: #VRML V2.0 utf8 DEF stair Shape { appearance Appearance{ material Material{ } } geometry Box { size 1.5 1.0 5.0 } } Transform { translation 1.3 0.8 0.0 children [ USE stair Transform { translation 1.3 0.8 0.0 children [ USE stair Transform { translation 1.3 0.8 0.0 children [ USE stair ] } ] } ] } 2. 效果图如下:
实例2. 立体鼠标 1. 代码如下: #VRML V2.0 utf8 Background { skyColor 1.0 1.0 1.0 } DEF acrossmouse Shape { appearance Appearance { material Material { diffuseColor 1.0 1.0 0.0 } } geometry Cylinder { radius 0.2 height 4.0 } } Shape { appearance Appearance { material Material { diffuseColor 0.6 0.4 0.2 } } geometry Box{ } } Transform { rotation 1 0 0 1.571 children [ USE acrossmouse ] } Transform { rotation 0 0 1 1.571 children [ USE acrossmouse ] } 2. 效果图如下: 实例1.广告牌。 1. 代码如下: #VRML V2.0 utf8 Shape { appearance Appearance { texture ImageTexture { url "2.jpg" } } geometry Box{ size 2 2 0.04 } } Transform { translation 0 0 -0.1 children [ Shape { appearance Appearance { material Material { diffuseColor 0 1 1 } } geometry Box { size 2 2 0.16 } } ] } 2.其效果如下: 实例2. 视频纹理。 1.代码如下: #VRML V2.0 utf8 Background { skyColor 1 1 1 } Transform { translation 0 0 -0.1 children [ Shape { appearance Appearance { material Material { diffuseColor 0.5 0.6 0.1 } } geometry Box { size 15 8 0.2 } } ] } Shape { appearance Appearance { texture DEF mpeg MovieTexture { url "dahanzhan.mpeg" loop TRUE # speed 0.1 } } geometry Box { size 12 7 0.1 } } 2. 效果图如下:
(4) VRML动画 VRML动画依据一个给定的时间传感器以及一系列插补器节点对场景中的动画进行控制。节点不但拥有域属性,还有事件属性,分为出事件和入事件eventOut,eventIn,域则分为私有域和公共域exposedField。某个节点的事件出口和其他节点的事件入口之间用于传递事件的通道称为路由。 通常情况下,时间传感器的startTime域被另一个对用户动作做出反应的传感器或脚本传来的时间事件设置。在startTime设定的时刻以前,时间传感器不产生任何事件,在该时刻到来时,将产生值为TRUE的isActive事件,并开始产生time,cycleTime和fraction_changed事件,time事件是一个总保持当前时刻值的连续发生的事件,而其他与时间相关的事件则是周期性发生的事件。 实例1. 朝向插补器动画 #VRML V2.0 utf8
Background { skyColor 1 1 1 }
DEF bar Transform { translation -6.0 0 0 children [ Shape { appearance Appearance { material Material { diffuseColor 0.5 0.3 0 ambientIntensity 0.4 specularColor 0.7 0.7 0.6 shininess 0.20 } } geometry Cylinder { height 6.0 radius 0.2 } } ] }
DEF clock TimeSensor { cycleInterval 8 loop TRUE } DEF inter1 OrientationInterpolator { key [ 0 0.125 0.25 0.375 0.5 0.625 0.75 0.875 1.0 ]
keyValue [