摘 要:在虛擬現實仿真模擬研發中,三維造型外觀的逼真程度是核心工作。針對這一問題,分析虛擬現實建模語言的法向量(Normal)節點及法向量補插器(Normal Interpolator)節點的工作原理和作用,討論基于這些節點進行三維造型虛擬仿真的實現方法,并依據研究結論給出相應的三維造型驗證舉例。該研究結論可有效應用于基于虛擬現實建模語言實現虛擬仿真過程中對三維造型的逼真和動態增強,對于復雜的虛擬仿真模擬的高效研發工作有重要指導意義。
關鍵詞:虛擬現實建模語言;法向量;三維造型;法向量補插器
中圖分類號:TP391文獻標識碼:B文章編號:1004373X(2008)2011903
3D Models Virtual Simulation Based on Normal of VRML
WANG Haopeng,LI Dongxu
(Aviation University of Air Force,Changchun,130022,China)
Abstract:Virtual reality simulation is the key for fidelity of 3D models.The principle and function of Normal node and Normal Interpolator node based on Virtual Reality Modeling Language(VRML),the method of virtual reality simulation,the verification programs 3D modeling based on the method are discussed and realized.The research can be applied to enhance fidelity and interaction of 3D models effectively,and is valuable to guide the design and development of complex virtual reality simulation well based on VRML.
Keywords:virtual reality modeling language;normal node;3D modeling;normal interpolator
1 引 言
在VRML中,虛擬光源和真實光源的作用相同,都是照亮場景并構造瀏覽焦點。但是,虛擬光源只體現光照效果,沒有真實造型。在虛擬場景中,三維造型表面的明暗主要由其周圍光源的朝向及其面的朝向決定。面的法向量(Normal)節點是垂直并指向面外的單位向量,其與面上的光源連線夾角θ確定面的亮度。夾角θ越大,面的亮度L越弱;夾角θ越小,面的亮度L越強。與法向量節點關聯的法向量補插器(Normal Interpolator)節點則針對三維造型表面的一組法向量進行關鍵幀動畫插值操作,從而使三維造型的虛擬仿真具有動作,即動態性。
2 法向量(Normal)節點
若三維造型的面朝向與其法向量指向相同。由點坐標定義面的法向量,VRML通常將坐標次序顯示為逆時針方向的一側作為三維造型面的前方。按照三維造型構造效果的不同,法向量分為3種,即缺省法向量、逐面法向量和逐點法向量。
2.1 法向量構成
缺省法向量,即未對三維造型對象指定任何法向量,由瀏覽器自動生成法向量。相鄰面的法向量的折角(creaseAngle)(見2.1.2節)由瀏覽器按其中的值決定其平面交接處應按棱面相交或光滑過渡方式,即逐面法向量或逐點法向量。
2.1.1 法向量節點語法描述
法向量(Normal)節點語法描述如下:
Normal
{
exposedField MFVec3f vector [ ]
…
}
vector公共域的值指定一個可用作造型法向量的單位法向量矢量列表。每個法向量由3個分量(X,Y,Z)構成單位向量。
發送值到vector公共域的隱含域set_vector(eventIn事件),可改變向量列表的值,新的法向量矢量列表由此公共域的隱含域vector_changed(eventOut出事件)輸出。
2.1.2 折角
折角(creaseAngle)指定一個允許角度值θR,用來與相鄰平面的法向量比較。若2個法向量之間的角度θ滿足{θ|θ≤θR},則相鄰兩平面圓滑過渡;若θ滿足{θ|θ>θR},則保留棱邊,兩個表面分別計算各自法向量。
2.2 逐面法向量
當按逐面法向量規定法向量時,由于根據法向量計算出的平面間反光強度各不相同,相鄰面間形成明顯棱析(如圖1所示)。
圖1 逐面法向量
如一個六棱錐三維造型面向瀏覽者的3個面的法向量,依次為每個平面設置法向量值,即:
normal Normal {
vector[
-0.5 -0.5 0.5,
0 -1.5 1.5,
0.5 -0.5 0.5
]
}
則三維造型外表面的生成效果如圖2所示。
圖2 基于逐面法向量的三維造型效果
2.3 逐點法向量
三維造型表面曲面(圓滑)效果的體現,可采用逐點法向量方法。當按逐點法向量規定法向量時,渲染工具為面上的點計算出不同的法向量,用以構成頂點法向量之間的平滑過渡(如圖3所示)。
如對2.2節中的六棱錐三維造型每個頂點設定法向量(不編號),即:
normal Normal {
vector [
-0.5 -0.3 0.5,
-0.3 -0.5 0.5,
0.3 -0.5 0.6,
0.7 -0.3 0.5,
001]}
圖3 逐點法向量
則三維造型外表面的生成效果如圖4所示。
圖4 基于逐點法向量的三維造型效果
3 法向量補插器(NormalInterpolator)節點
NormalInterpolator節點允許對一組法向量進行關鍵幀動畫插值操作。在建立插值器時,為三維造型的動畫中每個指定時刻選擇一組法向量。
3.1 NormalInterpolator節點語法結構
NormalInterpolator節點語法描述如下:
NormalInterpolator {
key MFFloat
keyValue MFVec3f
set_fraction SFFloat
value_changed MFVec3f
}
3.2 NormalInterpolator節點參數解析
key可見域指定一個在[0.0,1.0]范圍內遞減順序的關鍵浮點時刻列表。其域值通過set_key域(入事件)設置,新的key域值通過key_changed域(出事件)輸出。
keyValue可見域指定一個關鍵法向量矢量列表,每個法向量矢量由3個(X,Y,Z)分量構成。同樣keyValue域值通過set_keyValue設置,通過keyValue_changed輸出。
當輸入接口set_fraction收到一個時刻時,NormalInterpolator節點根據關鍵時刻列表和與其對應的關鍵法向量子列表計算出一個法向量;輸入接口value_changed輸出的法向量矢量被逐點插入,NormalInterpolator節點對一個輸入時刻t的輸出法向量矢量列表的計算過程為:
(1) 掃描關鍵時刻t,找出1對相鄰時刻t1和t2,且滿足{t1≤t≤t2};
(2) 取得相應的關鍵法向量矢量列表對;
(3) 在關鍵法向量矢量列表中線性插入,計算出中間法向量矢量子列表。
若t1時刻值和t2時刻值關系為Vt1=Vt2,則動畫軌跡產生一個中斷或跳躍;
若t1時刻值和t時刻值關系為Vt1>Vt,則對應t1時刻的關鍵法向量矢量子列表用于NormalInterpolator節點;
若t時刻值和t2時刻值關系為Vt2 通過NormalInterpolator節點在一個三維造型某面上形成的明暗動態變化的賦值如下: DEF DEFPath NormalInterpolator { key[ 0.0,0.2,0.4,0.8,1.0 ] keyValue[ 1.0 0.0 0.0, 0.0 0.0 1.0, 0.0 0.0 1.0, 0.0 0.0 1.0, 0.0 0.0 1.0, 1.0 0.0 0.0, 0.0 0.0 1.0, 0.0 0.0 1.0, 0.0 0.0 1.0, 0.0 0.0 1.0, 1.0 0.0 0.0, 0.0 0.0 1.0, 0.0 0.0 0.0, 0.0 0.0 1.0, 0.0 0.0 1.0, 1.0 0.0 0.0, 1.0 0.0 0.0, 0.0 0.0 1.0, 0.0 0.0 1.0, 0.0 0.0 1.0 ] } 則三維造型在該NormalInterpolator補插器節點作用的運行效果(任意3個時刻)如圖5所示。 4 結 語 本文討論并給出了VRML下基于法向量(Nor-mal)節點和法向量補插器(NormalInterpolator)節點對三維造型進行表面棱析和色彩變換的實現方法。方法 圖5 NormalInterpolator節點作用下的三維造型渲染效果 可有效使法向量及其補插器節點應用于Shape模型節點中的geometry幾何節點的IndexedFaceSet等子節點中;利用Appearance外觀子節點、Material外觀材質子節點描述三維造型的顏色、材質漫反射、環境光反射、外觀材質密度和透明度等高級渲染,使三維造型的虛擬仿真效果更生動、鮮活。 參考文獻 [1]Naim R El-Far,Nicolas D Georganas,Abdulmotaleb El-Saddik.A Collision Detection Algorithm for Point-Like Haptic Interactions in Highly Detailed Virtual Environments[C].VECIMS 2007-IEEE International Conference on Virtual Environments,Human-Computer Interfaces,and Measurement Systems,2007:25-27. [2]John Ketchel,Pierre Larochelle.Collision Detection of Cylindrical Rigid Bodies for Motion Planning[J].Proceedings ofthe 2006 IEEE International Conference on Robotics and Automation,2006:1 530-1 535. [3]Tomaz Amon,Vojko Valencic.VRMLEnhanced Learning in Biology and Medicine[J].Future GenerationComputer Systems,2000,17(1):1-6. [4]白偉冬,周之平,張颯兵,等.關于VRML 中物體間碰撞檢測的研究[J].計算機應用研究,2004(6):128-133. [5]黃文麗.VRML語言入門與應用[M].北京:中國鐵道出版社,2003. [6] 黃有群,吳冰冰.基于三角網格的三維地形局部貼圖方法的研究\\.沈陽工業大學學報,2007(5):560-563. 作者簡介 王昊鵬 男,1978年出生,吉林長春人,空軍航空大學,講師,博士。主要研究方向為虛擬現實仿真,計算機教育。 李東旭 女,1978年出生,遼寧本溪人,空軍航空大學,講師。主要研究方向計算機軟件設計與教育。 注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文