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

Virtual Reality Modeling Language (VRML) Basic Tutorial with Examples


实例(三〕人间正道


此虚拟实境设计了一个圣坛,以达吾侪对武林骄子李小龙崇敬之情。夫天地间
浩然之气,清灵者为仁为圣,刚坚者为士为侠。李小龙倔强奋斗而成一代之名,
惜英年早逝, 此天定胜人之无奈,人定胜天之豪情,独令人怆然泣下也。以人
间正道名此实例,乃本大侠寄托之所在也。

慷慨过后,且看实例如下:

(一〕从第一行开始:

#VRML V2.0 utf8

WorldInfo {   
        title "神龙词" 
        info [  
        "Author: 金臂螳螂"  
        "Date: Feb. 28, 1998 (Sat)",  
        ]   
}

NavigationInfo {  
        type "EXAMINE"   
        headlight TRUE   
        speed 1.0   
}
Background {  
        frontUrl ["stand.gif"]  #背景图象的路径,stand.gif 系李小龙站马形象。 
        backUrl ["stand.gif"]  
        topUrl ["stand.gif"]  
        bottomUrl ["stand.gif"]  
        leftUrl ["stand.gif"]  
        rightUrl ["stand.gif"]  
}


背景形成了一个殿,令人有身入神龙之窟的感觉。

(二〕新指令Billboard及Text等等:

Billboard { #Billboard 是组合指令,它使所规定的物体与虚拟实境整体不 
   axisOfRotation 0 1 0     #在一个轴向转动。 
   bboxSize 7.0 7.0 0.2  #此指令用以包含其子物体。 
      children [  
         Shape {  
           appearance Appearance {  
             material Material {  
                diffuseColor 1.0 1.0 0.0   
             }  
           }
           geometry Text {  #虚拟实境中的文字 
              string ["Dragon's","Shrine" ]  
              fontStyle FontStyle {  
                family "ARIAL"  
                style "ITALIC"  
                justify [ "MIDDLE" "MIDDLE"]  
                spacing 1.5  
                size 1.5  
              }  
           }  
           },  
          Transform {  

              translation 0.0 -0.0 -0.06  
              children [  
                Shape {  
                  appearance Appearance {  
                    material Material {  
                    diffuseColor 0.5 0.5 0.5  
                        transparency 0.6  
                    }  
                  }  
                  geometry Box { size 7.0 7.0 0.1 }  #板状体  
                }  
              ]  
           }  
      ]  
}

以上的全部指令实际上是在虚拟实境中立了一个碑,碑上有文字。此碑不随虚拟实
境整体同轴转动。

(三〕新指令Inline,USE 等等:

Group {  
children [ Transform { translation 8.0 8.0 1.0 children DEF Sphere Inline { #Inline 指令可令被指令的文件重复引用。 bboxSize 2.0 2.0 2.0 #这里是DEF Sphere,即sphere.wrl。 bboxCenter 0.0 0.0 0.0 url "sphere.wrl" #这个虚拟实境是个圆球,表面粘贴了龙的图案。 } }, Transform { translation -8.0 8.0 -1.0 children USE Sphere #在这里 USE Sphere 将引用sphere.wrl。 }, Transform { translation 8.0 -8.0 -1.0 children USE Sphere }, Transform { translation -8.0 -8.0 1.0 children USE Sphere } ] }
以上指令形成了四个悬浮的圆球,象征照亮殿堂的宝珠。 (四〕规定视点: Group { #规定视点的指令群,请注意顺序的不同。 children [ DEF EntryView Viewpoint { fieldOfView 1.27 orientation 0 0 -1 0 position 0.0 0.0 12.0 description "EntryView" }, DEF BackView Viewpoint { fieldOfView 1.57 orientation 0 1 0 3.14 position 0.0 0.0 -12.0 description "BackView" } ] } (五〕至此,将所有红色指令按其出现的顺序剪切到一个文件里作为源码,再存 为*.wrl文件,如c_Dragon.wrl。 然后,下载stand.gif :李小龙立像, 并放入与 c_Dragon.wrl 文件相同的文件夹里。 最后,浏览此c_Dragon.wrl虚拟实境,并逐一对照核实源码中所言效果,以知 其所以然。 练习题 (一) 阅读并理解此虚拟实境之源码,修改源码,改写碑文。
练习题 (二) 浏览本大侠所制另一虚拟实境 “龙珠” ,分析源码,找出不同处。 下一个实例,或为魍魉,学完以后,寓意自明。

页眉

主页