簡單的示例代碼如下:
說明:上面代碼是用來以不同方位觀看圓柱體。代碼中,最難理解的就是視點的位置和視角。默認時,我們的人眼是處在+Z方向,當視點位置處在圓柱體后面時,即"Back"視點,我們人眼觀察方向仍然是向里的方向,必需由里向外觀察才能看到圓柱體,因此我們將視角繞Y軸旋轉180度。同理可以理解Top和Left視點的設置。
結果如下圖所示。
在場景中右擊鼠標后,彈出如圖的快捷菜單,上述節點定義的視點名稱出現該菜單中,如下圖所示。
選擇Back后,場景自動動態變換,結果如下圖所示:
類似的,Top結果如下圖所示。
若將Back視點的fieldOfView屬性將原來默認的0.785398改為0.2,即:
則結果如下圖所示,注重與前面的比較。
二、 導航
X3D提供NavigationInfo節點用來指定場景的觀看方式和替身的物理特征。所謂替身就是當我們在場景快捷菜單中選擇"顯示替身"則會在場景中出現一個人物造型,如下圖所示。不同的VRML瀏覽器插件所提供的替身造型是有所不同的。
NavigationInfo節點屬性如下:
說明:
type用來設置在虛擬世界中導航類型和初始航行類型。type類型中共有"ANY"、"WALK"、"EXAMINE"、"FLY"和"NONE"五種選項供選擇設定。
ANY -- 任意模式。用來表示由瀏覽器自動選擇對內容最合適的瀏覽航行方式,并可提供用戶動態更換航行類型的用戶界面。
WALK -- 行走模式。用來指定用戶以步行的方式瀏覽VRML構建的虛擬世界,或者用放置在地面上或懸浮在地面上的交通工具來在虛擬世界探索航行。
FLY -- 飛行模式。功能與WALK差不多,只是可以不用或者忽略重力或者隨地形而更換運行方向。
EXAMINE -- 檢查模式。用來從各個角度觀察個別物體的查看方式。
NONE -- 無模式用來強制用戶使用場景中提供的瀏覽機制進行瀏覽,可以去掉某些用不到的導航模式。
另外,BS Contact還提供平移漫游、游戲等模式。
speed用來指定用戶在虛擬世界中瀏覽場景的運行速度。speed速度的數值應為非負值,當設為0時表示用戶在虛擬現實中瀏覽時的位置是固定的,但不影響用戶在方向上和視野上的變化。speed屬性的設置在type類型為"NONE"時無效。
headlight用來指定瀏覽器是否需要打開一個總是指向用戶注視方向的定向燈光,就像礦工頭上的燈在黑暗中行走的效果一樣。headlight屬性有兩個值,TURE為設置有效,FALSE為設置無效。
avatarSize指定用戶在VRML瀏覽場景時在虛擬世界中的物理尺寸,可用于碰撞檢驗和地形隨動。默認值為[1.25,1.6,0.75],其中第一個數值1.25指定發生collision碰撞時用戶與發生碰撞物體之間的答應距離;第二個數值1.6指定用戶在虛擬世界中瀏覽作品時距離地面的Height高度;第三個數值0.75指定用戶在虛擬世界中瀏覽時Step跨越的高度,以便我們能夠盡可能模擬真實的人在現實世界中的攀登行為動作。
visibilityLimit能見度限制屬性用來設置用戶在虛擬世界中瀏覽時能夠看見的最遠距離。數值為0時表示能看見無限遠,visibilityLimit必須大于或者等于0。
由于上述屬性均可通過屬性窗口的修改進行,因此這里不在給出相應的代碼。值得一提的是,我們也可在場景快捷菜單中通過選擇"移動"子菜單中的命令項進行上述導航操作,其"移動"子菜單內容如下:
在下一講中,我們將討論場景的光照效果。
新聞熱點
疑難解答