VRML使用说明
- 格式:doc
- 大小:136.00 KB
- 文档页数:15
第三部分虚拟现实技术--VRML篇3 VRML基本语法及应用3.1 VRML造型VRML造型主要通过几何节点和几何属性节点来实现。
由于这些节点属于辅助节点,不能直接放进场景图,因此要实现VRML造型还需要一个Shape节点。
几何节点是通过Shape 节点的geometry域来包含的,几何属性节点是通过Shape节点的appearance域来包含的。
用于造型的节点:共22个形状(Shape)节点1个几何节点10个:Box(长方体)、Cone(圆锥)、Cylinder(圆柱)、ElevationGrid(标高格阵)、Extrusion(挤出面)、IndexedFaceSet(索引面集)、IndexedLineSet(索引线集)、PointSet(点集)、Sphere(球面)、Text(文本)几何属性节点10个:Appearance(外观、Color(颜色)、Coordinate(坐标)、ImageTexture (图像纹理)、Material(材质)、MovieTexture(影像纹理)、Normal(法线)、PixelTexture (像素纹理)、TextureCoordinate(纹理坐标)、TextureTransform(纹理变换)字型(Fontstyle)节点:1个3.1.1 基本造型由Shape节点、Appearance节点、Material节点和基本几何节点共同实现。
3.1.1.1 Shape节点3.1.1.2. 基本的几何造型节点基本的VRML造型节点有Box,Cylinder,Cone,Sphere节点。
例3-1-1:#创建一个长宽高分别为4.0,1.0,4.0个vrml单位的长方体#VRML V2.0 utf8Shape{appearance Appearance {material Material { }}geometry Box{size 4.0 1.0 4.0}}例2:#创建一个底面半径为4.0高为1.0只有底面的圆柱体#VRML V2.0 utf8Shape{appearance Appearance {material Material { }}geometry Cylinder {radius 4.0height 1.0top FALSEside FALSE}}例:#创建一个底面半径为2.0单位高为1.0单位的圆锥#VRML V2.0 utf8Shape{appearance Appearance {material Material { }}geometry Cone {bottomRadius 2.0height 1.0}}3.1.1.3 节点的编组例:航空塔模型以sphere、box、cylinder、cone为节点创建一个航空塔的三维模型,其中用DEF定义了一个名字为bwhite的appearance的节点。
vrml教程案例
VRML教程案例:
1. 创建一个圆柱体造型:首先,你需要使用Transform节点的坐标平移功能,创建一个在Y方向上平移单位的新坐标系。
然后,在这个坐标系中构建一个圆柱体造型。
设置圆柱体的半径为2,高度为2。
你可以通过设置漫反光颜色和材质属性来改变圆柱体的外观。
2. 创建一个圆锥体造型:在圆柱体的上方,你可以使用同样的坐标系创建一个圆锥体造型。
设置圆锥体的底部半径为2,高度为1。
同样,你可以调整漫反光颜色和材质属性来改变其外观。
3. 组合造型:通过将圆柱体和圆锥体组合在一起,你可以形成一个类似烟囱的组合造型。
4. 添加背景:在立体空间背景下,你可以创建一个金色的哑铃立体空间物体造型作为背景。
设置天空的颜色,以及哑铃的几何造型和材质属性。
5. 异常处理:在进行VRML编程时,异常处理是非常重要的。
例如,你可能需要检查某个对象是否为空,或者某个对象的类型是否是你期望的类型。
对于异常情况,你可以编写else分支来处理错误或异常情况。
以上就是VRML教程案例的一些基本步骤和思路,希望对你有所帮助。
《VRML虚拟现实技术》实验指导书软件学院编制实验一造型定位和旋转、缩放一、实验内容:1.熟悉VrmlPad编辑器的安装和使用2.熟悉Cortonaplayer浏览器的安装和使用3.掌握虚拟造型的基本操作。
二、实验环境:1.硬件环境计算机一台2.软件环境WindowsXP操作系统、VrmlPad编辑器和Cortonaplayer浏览器三、实验步骤:1.图1为VrmlPad编辑器的工作界面。
从中文提示中可以看出工作界面的分布,右边的代码窗口不是默认的,需要进行一定得设置图1 VrmlPad工作界面才能出现,否则就没有左边的行号和右边的预览。
设置过程是:选择菜单中的“工具”→“选项”,出现图2的设置窗口,可以进行选项设置。
图2 选项设置界面2.选择图2中的“预览”选项卡,出现图3,可以进行浏览器设置。
建议选择“使用系统默认VRML浏览器”。
图3 预览选项卡设置界面3.VrmlPad编辑器中提供了一些特殊节点的代码,可以直接加入编辑器中,选择菜单中的“工具”→“特殊节点”就能看到或者选择。
同时,VrmlPad编辑器中有一个造型材质编辑器(Material Editor)如图4所示,给造型的材质颜色设置提供了极大的方便。
图4 Material Editor编辑界面先选中VRML文件中需要调整材质颜色的节点,然后选择VrmlPad编辑器中的“工具”→“Material Editor”就会出现图4的界面。
左上方的“Category”提供了多种材质选择,包括“Glass Colors”、“Material Colors”、“Plastic Colors”、“Soft Colors”等十余种常用材质颜色的选择。
4.VrmlPad编辑器还有一个造型挤压编辑器Extrusion Editor,如图5所示,它给复杂造型的形成、编辑提供了非常有效的工具。
图5 Extrusion Editor编辑界面选择VrmlPad编辑器菜单中的“工具”→“Extrusion Editor”就会出现图5。
vrml简单操作,运动控制,声音,背景,视频,自定义节点函数将图片,视频和声音文件和程序文件保存在同一文件夹下,注意文件的名字不能为汉字,以及注意文件格式#VRML V2.0 utf8DEF voiceTransform {translation 3 0 3children [Sound {direction 0 0 1intensity 1location 0 0 0maxBack 100maxFront 100minBack 20minFront 20priority 0spatialize TRUEsource AudioClip { url "Variations on the Canon.wav" pitch 1 loop TRUE startTime 0 }}]}DEF see1Viewpoint {position 0 1 10}Background {backUrl "s.jpg"frontUrl "s.jpg"bottomUrl "s.jpg"leftUrl "s.jpg"rightUrl "s.jpg"topUrl "s.jpg"}DEF televation Transform {translation 0 0 0children [Shape {geometry Box {size 15 10 0.001}appearance Appearance {texture MovieTexture {url "1.avi" startTime 0 loop TRUE }}}]}DEF sphere3 Transform {scale 0.5 0.5 0.5children [Inline {url "qiu3.wrl"}]}DEF sphered3 PositionInterpolator {key [0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1]keyValue [4 0 0, 2.4 0 0 ,0.8 0 0,-0.8 0 0,-2.4 0 0 ,-4 0 0,-2.4 0 0,-0.8 0 0 ,0.8 0 0, 2.4 0 0 ]}DEF time7 TimeSensor {cycleInterval 80loop TRUE}ROUTE time7.fraction_changed TO sphered3.set_fraction ROUTE sphered3.value_changed TO sphere3.translationDEF box1 Transform {scale 1 1 1children[Shape {geometry Box {size 1 1 1}appearance Appearance {material Material{diffuseColor .61 .61 .61specularColor .39 .39 .39ambientIntensity .25shininess .11emissiveColor 0 0 0transparency 0}texture ImageTexture { url "1.jpg"}}}]}DEF boxr1 OrientationInterpolator {key [0 0.5 1]keyValue [0 1 0 0, 0 1 0 3.14, 0 1 0 6.28]}DEF time1 TimeSensor {cycleInterval 20loop TRUE}ROUTE time1.fraction_changed TO boxr1.set_fractionROUTE boxr1.value_changed TO box1.rotationDEF box2 Transform {children [Shape {geometry Box {size 1 1 1}appearance Appearance {texture ImageTexture {url "1.jpg"}} }]}DEF boxr2 OrientationInterpolator {key [0 0.5 1]keyValue [0 0 1 0, 0 0 1 3.14, 0 0 1 6.28]}DEF time2 TimeSensor {cycleInterval 20loop TRUE}ROUTE time2.fraction_changed TO boxr2.set_fraction ROUTE boxr2.value_changed TO box2.rotationDEF box3 Transform {children [Shape {geometry Box {size 1 1 1}appearance Appearance {texture ImageTexture {url "1.jpg"}}}]}DEF boxr3 OrientationInterpolator {key [0 0.5 1]keyValue [1 0 0 0, 1 0 0 3.14, 1 0 0 6.28]}DEF time3 TimeSensor {cycleInterval 20loop TRUE}ROUTE time3.fraction_changed TO boxr3.set_fraction ROUTE boxr3.value_changed TO box3.rotationDEF sphere1 Transform {translation 4 0 0children[DEF TOUCH2 TouchSensor{}Shape {geometry Sphere {radius 1 }appearance Appearance {material Material{diffuseColor .61 .61 .61specularColor .39 .39 .39ambientIntensity .25shininess .11emissiveColor 0 0 0transparency 0}texture ImageTexture {url "1.jpg"} }}]}DEF time6 TimeSensor {cycleInterval 20}DEF shidian PositionInterpolator {key [0 0.3 0.6 0.9 1]keyValue [0 1 10,0 1 15,-2 3 15,0 1 5 ,0 1 10]}ROUTE TOUCH2.touchTime TO time6.startTimeROUTE time6.fraction_changed TO shidian.set_fraction ROUTE shidian.value_changed TO see1.positionDEF spherer1 OrientationInterpolator {key [0 0.5 1]keyValue [0 1 0 0, 0 1 0 3.14, 0 1 0 6.28]}DEF time4 TimeSensor {cycleInterval 20loop TRUE}ROUTE time4.fraction_changed TO spherer1.set_fraction ROUTE spherer1.value_changed TO sphere1.rotationDEF sphere2 Transform {translation -4 0 0children[DEF TOUCH1 TouchSensor{}Shape {geometry Sphere {radius 1 }appearance Appearance {material Material{diffuseColor .61 .61 .61specularColor .39 .39 .39ambientIntensity .25shininess .11emissiveColor 0 0 0transparency 0}texture ImageTexture {url "1.jpg"} }}]}DEF spherer2 OrientationInterpolator { key [0 0.5 1]keyValue [0 1 0 0, 0 1 0 -3.14, 0 1 0 -6.28] }DEF time5 TimeSensor {cycleInterval 20loop TRUE}ROUTE time5.fraction_changed TO spherer2.set_fraction ROUTE spherer2.value_changed TO sphere2.rotationDEF P1 PositionInterpolator {key []keyValue []}DEF S Script {eventIn SFTime TimeIneventIn SFVec3f PointIneventOut SFVec3f Pointurl "javascript: function TimeIn(){Point[0]=0;Point[1]=1.7;Point.z=15;}"}ROUTE TOUCH1.touchTime TO S.TimeInROUTE P1.value_changed TO S.PointInROUTE S.Point TO see1.position程序中引用的qiu3.wrl源代码#VRML V2.0 utf8Viewpoint {position 0 0 10}DEF sphere2 Transform {center 0 0 -5translation 0 0 5children[DEF TOUCH1 TouchSensor{}Shape {geometry Sphere {radius 1 }appearance Appearance {material Material{diffuseColor .61 .61 .61specularColor .39 .39 .39ambientIntensity .25shininess .11emissiveColor 0 0 0transparency 0}texture ImageTexture {url "1.jpg"} }}]}DEF spherer2 OrientationInterpolator { key [0 0.5 1]keyValue [1 0 0 0, 1 0 0 -3.14, 1 0 0 -6.28] }DEF time5 TimeSensor {cycleInterval 20loop TRUE}ROUTE time5.fraction_changed TO spherer2.set_fraction ROUTE spherer2.value_changed TO sphere2.rotation。