虚拟实境模型语言基础教程及实例

Virtual Reality Modeling Language (VRML) Basic Tutorial with Examples


实例(四〕或为魍魉


夫皎洁者为忠为正,污秽者为魅为魉。忠佞并立,正邪同存,是青史所以有桀纣
尧舜,天地所以分阴柔阳刚。然忠必终胜佞,正终压邪,冥冥中巨眼明察,自当
无差矣。

且看本大侠如何利用虚拟实境来体现以上主题:

(一〕从第一行开始:

#VRML V2.0 utf8
WorldInfo {   
    title "网开三面" 
    info [   
        "Author: 金臂螳螂",   
        "Date: Feb 22, 1998(Sun)"   
    ]   
}

NavigationInfo {   
    type "EXAMINE"  
}

Viewpoint {    #视点规定了物体以一个什么角度出现在画面上。 
    fieldOfView 1.0   
    orientation 1 0 0 0.79   
    position  0.0 -7.0 5.0   
    description "EntryView"  
}

(二〕设计背景:

Background {  
    groundAngle [0.523, 1.047,1.571]   
    groundColor
       [0 0 0,   
       0 0 1,    
       0 0 1,    
       0 0 0]    
}

注意:背景中对天空没有规定,是黑的。对地的设计设用颜色形成一个深洞。

(三〕对鬼魅的设计:

DEF Lang Transform {  #第一个物体,命名为Lang。以便下面引用。 
    translation 0 0 0     #物体坐标 
    children Shape {   
       appearance DEF Mantis Appearance {   
          material Material { diffuseColor 0 0.5 1 }   
          texture ImageTexture {  
             url "tang.gif"  #粘贴图案为聂小倩头像,象征鬼魅。 
          }  
       }   
       geometry Box {size 2 2 2}  #立方体   
    },   
},

饰聂小倩之演员乃王祖贤,以饰艳鬼成名。以本大侠之无情,若骤然惊艳,纵然
知其为厉,亦不忍挺剑斩之也。

(四〕镇邪之剑:

DEF Tang Transform { #第二个物体,命名为Tang。以便下面引用。 
    translation 0 0 0  #此物体坐标与第一个相同。 
    children Shape {   
       appearance DEF Mantis Appearance {   
          material Material { diffuseColor 0 0.5 1 }   
          texture ImageTexture {   
             url "bishou.gif"    #粘贴图案为匕首,其背景透明。  
          }   
       }   
       geometry Box {size 5 5 5}  #立方体,但比第一个大。  
    },   
},

上面的指令设计了数柄宝剑,悬绕鬼魅四周以镇之。

(五〕新指令TouchSensor:

DEF Touch TouchSensor {},  #TouchSensor是由鼠标来触发设计好的事件。

    DEF Clock TimeSensor {   #TimeSensor是由时间自动触发设计好的事件。 
       enabled FALSE   #FALSE规定此事件不能自动触发  
       cycleInterval 2.0   
       loop TRUE  #DEF Clock 这段指令规定了第一个立方体的事件。 
    },

    DEF ClockE TimeSensor {  #DEF ClockE 这段指令规定了第3二个立方体的事件。
       cycleInterval 5.0
       loop TRUE
    },

DEF TangPath OrientationInterpolator {  #第二个立方体(即匕首)的旋转路径。 
    key [ 0.0 0.5 1.0 ]   
    keyValue   
      [ 0.0 1.0 0.0  0.0,   
      0.0 1.0 0.0 -3.14,   
      0.0 1.0 0.0 -6.28 ]   
}

DEF LangPath OrientationInterpolator { #第一个立方体(即聂小倩)的旋转路径。 
    key [ 0.0 0.5 1.0 ]   
    keyValue   
      [ 0.0 1.0 0.0  0.0,   
      0.0 1.0 0.0 -3.14,   
      0.0 1.0 0.0 -6.28 ]   
}

ROUTE Touch.isOver TO Clock.set_enabled   
ROUTE Clock.fraction_changed TO TangPath.set_fraction   
ROUTE TangPath.value_changed TO Tang.set_rotation   
ROUTE ClockE.fraction_changed TO LangPath.set_fraction   
ROUTE LangPath.value_changed TO Lang.set_rotation

#按以上ROUTE,进入虚拟实境后,聂小倩将自动旋转, 
#而匕首只有在鼠标触到后方旋转。

#此虚拟实境以网开三面为题,喻天心为善至多,唯不仁者乃入我网之意。 
#背景,天未设颜色,地有颜色现深陷之牢。以美人首喻鬼魅,以匕首监之。 
#或近匕首,则旋护以警之,恐其复脱逃也。


(六〕至此,将所有红色指令按其出现的顺序剪切到一个文件里作为源码,再存
为*.wrl文件,如d_Dragon.wrl。

然后,下载 :

tang.gif :聂小倩像。
bishou.gif :镇邪宝剑。

并将以上下载的两个图象放入与d_Dragon.wrl文件相同文件夹里。

最后,浏览此d_Dragon.wrl虚拟实境,并逐一对照核实源码中所言效果,以知
其所以然。

练习题 (一) 阅读并理解此虚拟实境之源码,修改源码,改变聂小倩及宝剑转动方向。
练习题 (二) 浏览本大侠所制另一虚拟实境 “魔变” ,分析源码,找出不同处。
( 此虚拟实境中,倩影如花每闭月,罗刹成骨用吸魂。阁下若用左键弹一下王祖贤 小姐香鬓,彼即羞怒作态矣。) 阁下若再学完下一个实例,则VRML2.0语言之最基本原理已晓,若还有兴趣,即可 找本VRML专业书系统修学了。所谓乾卦九五的态势, 龙飞在天是也。

页眉

主页