摘 要VRML是建構(gòu)虛擬學(xué)習(xí)環(huán)境的一種重要建模方法,VRML可以和3DS MAX結(jié)合實現(xiàn)幾何形體的三維建模,得到虛擬場景的對象,并用VRML及腳本創(chuàng)建虛擬的場景,生動地實現(xiàn)虛擬CAI。
關(guān)鍵詞 VRML;虛擬場景;實例
中圖分類號:G434 文獻標(biāo)識碼:A 文章編號:1671-489X(2008)03-0093-02
Produced Examples of Virtual CAI Based on VRML Technologies//Huang Xin,Wang Qiuxia
Abstract VRML is a kind of important modeling method that construct Virtual environment .VRML can build a 3D model of geometry shape with 3DS MAX , gets the objects who supposes the virtual circumstances. The VRML and script can vividly establish virtual circumstances and CAI.
Key words VRML;Virtual environment;example
Author's address
1 Wuhan University of Science and Engineering,Wuhan 430079
2 WuHan University Attached Middle School,Wuhan 430079
VRML是“虛擬現(xiàn)實建模語言”(Virtual Reality Modeling Language)的首字母縮寫。簡單地說,VRML是一種用于描述三維造型與交互環(huán)境的簡單文本語言。復(fù)雜點說,VRML是在Internet上建立3D多媒體和共享虛擬世界的一個開放的標(biāo)準(zhǔn)。本文參考人民教育出版社的高級中學(xué)課本《化學(xué)》(必修)第2冊第4章第5節(jié)的《苯 芳香烴》中的苯(C6H6)分子模型結(jié)構(gòu),運用VRML制作一個虛擬CAI課件,用于虛擬教學(xué)模擬演示。
課件采用VRMLPad作為開發(fā)工具。VrmlPad是一個功能強大且簡單好用的VRML開發(fā)設(shè)計專業(yè)軟件,其完全支持VRML文件標(biāo)準(zhǔn),對虛擬場景和資源具有很強的支持能力和可視化操作。
1 虛擬場景的建立
分析苯C6H6的分子結(jié)構(gòu)可知,必須有12個Sphere節(jié)點來分別模擬6個碳原子和6個氫原子。為了相互區(qū)別這2種原子,對Shape節(jié)點中的Material節(jié)點的diffuseColor域賦不同的值。其中碳原子的建模場景語句如下:
Shape {
appearance Appearance {
material Material {
diffuseColor 0.6 0.6 0.6
}}
geometry Sphere {
radius 0.25}}
氫原子的建模方法和碳原子相同,只是diffuseColor域值不同。
另外,用24個Cylinder節(jié)點來建模碳原子和碳原子之間、碳原子和氫原子之間的鍵,同樣利用diffuseColor域值的不同來區(qū)分。原子之間鍵的建模語句如下:
Shape {
appearance Appearance {
material Material {
diffuseColor 0.6 0.6 0.6
}}
geometry Cylinder {
height 0.69298604
radius 0.10 }}
為了使物體在不同的虛擬空間正確連接,必須確定好每個部分的空間坐標(biāo),在此可以利用translation節(jié)點來進行空間坐標(biāo)的轉(zhuǎn)化。為了實現(xiàn)模塊化的設(shè)計思想,用組節(jié)點Transform將以上的每個節(jié)點封裝起來。通過封裝后的模塊如下所示:
Transform {
translation 1.1906784 0.70907508 -0.0012576976
children [
Shape {
appearance Appearance {
material Material {
diffuseColor 0.6 0.6 0.6
}}
geometry Sphere {
radius 0.25
}}]}
通過以上的分析,可以用圖1表示虛擬場景的結(jié)構(gòu)。

2 增加交互能力
前面用幾何體建立了虛擬場景以及為幾何體賦予色彩和材質(zhì),這樣建立的虛擬場景是靜態(tài)的。現(xiàn)在使幾何體對象能根據(jù)用戶動作做出反應(yīng),即交互能力,這是VRML2.0最突出的特征。
在VRML中,檢測器(Sensor)節(jié)點是交互能力的基礎(chǔ)。檢測器節(jié)點共9種。在場景圖中,檢測器節(jié)點一般是以其他節(jié)點的子節(jié)點的身份而存在的,它的父節(jié)點稱為可觸發(fā)節(jié)點,觸發(fā)條件和時機由檢測器節(jié)點類型確定。接觸檢測器( TouchSensor)是最常用的檢測器之一,最典型的應(yīng)用例子是開關(guān)。定義一個開關(guān)節(jié)點lightSwitch(這是一個組節(jié)點),并定義一個接觸檢測器作為它的子節(jié)點:
DEF lightSwitch Group {
children [
各幾何造型子節(jié)點...
DEF touchSensor TouchSensor {}
]}
這樣開關(guān)節(jié)點lightSwitch就是一個可觸發(fā)節(jié)點。當(dāng)然,檢測器存在的理由是它被觸發(fā)時能夠引起某種變化,最常見的變化是視點的變化:當(dāng)拖動鼠標(biāo)或按動箭頭鍵時(按照VRML術(shù)語,稱為航行),虛擬境界就會旋轉(zhuǎn)或縮放,這實際上是在調(diào)整視點位置或視角。在虛擬場景的重要位置可以定義視點節(jié)點(ViewPoint),這里定義2個視點節(jié)點:
DEF view1 Viewpoint {
position 0 0 20
description \"View1\"}
DEF view2 Viewpoint {
position 5 0 20
description \"view2\"
}
這樣做的目的是使用戶可以通過觸發(fā)開關(guān)節(jié)點來切換視點。現(xiàn)在先研究一下這2個視點節(jié)點,其中的坐標(biāo)表示視點在場景中的位置,視點的名稱將會在瀏覽器菜單中提示出來供用戶選擇。
3 事件傳遞
下面把事件觸發(fā)和場景變化(視點切換)這2件事情聯(lián)系起來,事件體系由相互通信的節(jié)點組成。能夠接收事件的節(jié)點都應(yīng)具有事件入口(eventIn)。同樣,發(fā)送事件的節(jié)點應(yīng)有事件出口(eventOut)。事件出口和事件入口通過路徑相連,這就是VRML文件中除節(jié)點以外的另一基本組成部分:ROUTE 語句。ROUTE語句把事件出口和事件入口聯(lián)系在一起,從而構(gòu)成事件體系。在這里,把接觸檢測器touchBox的事件出口isActive連接到視點節(jié)點view2的事件入口set_bind:
ROTUE touchBox.isActive TO view2.set_bind
4 測試與運行
要瀏覽測試和運行虛擬場景,必須安裝一定的虛擬瀏覽器插件。VRML插件比較多,一般比較流行的有BS Contact VRML、BlaxxurContact、Cosmo2.1、CORTVRML等,安裝任何一個插件都可以。這里選用Parall Graphics Cortona Control插件。整個對C6H6通過VRMLPad2.1編程的界面見圖2。Debug之后獲得C6H6的模擬效果圖如圖3所示,限于篇幅,這里就不列出源代碼了。
