摘 要:在虛擬現(xiàn)實(shí)仿真模擬研發(fā)中,三維造型外觀的逼真程度是核心工作。針對這一問題,分析虛擬現(xiàn)實(shí)建模語言的法向量(Normal)節(jié)點(diǎn)及法向量補(bǔ)插器(Normal Interpolator)節(jié)點(diǎn)的工作原理和作用,討論基于這些節(jié)點(diǎn)進(jìn)行三維造型虛擬仿真的實(shí)現(xiàn)方法,并依據(jù)研究結(jié)論給出相應(yīng)的三維造型驗(yàn)證舉例。該研究結(jié)論可有效應(yīng)用于基于虛擬現(xiàn)實(shí)建模語言實(shí)現(xiàn)虛擬仿真過程中對三維造型的逼真和動態(tài)增強(qiáng),對于復(fù)雜的虛擬仿真模擬的高效研發(fā)工作有重要指導(dǎo)意義。
關(guān)鍵詞:虛擬現(xiàn)實(shí)建模語言;法向量;三維造型;法向量補(bǔ)插器
中圖分類號:TP391文獻(xiàn)標(biāo)識碼: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中,虛擬光源和真實(shí)光源的作用相同,都是照亮場景并構(gòu)造瀏覽焦點(diǎn)。但是,虛擬光源只體現(xiàn)光照效果,沒有真實(shí)造型。在虛擬場景中,三維造型表面的明暗主要由其周圍光源的朝向及其面的朝向決定。面的法向量(Normal)節(jié)點(diǎn)是垂直并指向面外的單位向量,其與面上的光源連線夾角θ確定面的亮度。夾角θ越大,面的亮度L越弱;夾角θ越小,面的亮度L越強(qiáng)。與法向量節(jié)點(diǎn)關(guān)聯(lián)的法向量補(bǔ)插器(Normal Interpolator)節(jié)點(diǎn)則針對三維造型表面的一組法向量進(jìn)行關(guān)鍵幀動畫插值操作,從而使三維造型的虛擬仿真具有動作,即動態(tài)性。
2 法向量(Normal)節(jié)點(diǎn)
若三維造型的面朝向與其法向量指向相同。由點(diǎn)坐標(biāo)定義面的法向量,VRML通常將坐標(biāo)次序顯示為逆時針方向的一側(cè)作為三維造型面的前方。按照三維造型構(gòu)造效果的不同,法向量分為3種,即缺省法向量、逐面法向量和逐點(diǎn)法向量。
2.1 法向量構(gòu)成
缺省法向量,即未對三維造型對象指定任何法向量,由瀏覽器自動生成法向量。相鄰面的法向量的折角(creaseAngle)(見2.1.2節(jié))由瀏覽器按其中的值決定其平面交接處應(yīng)按棱面相交或光滑過渡方式,即逐面法向量或逐點(diǎn)法向量。
2.1.1 法向量節(jié)點(diǎn)語法描述
法向量(Normal)節(jié)點(diǎn)語法描述如下:
Normal
{
exposedField MFVec3f vector [ ]
…
}
vector公共域的值指定一個可用作造型法向量的單位法向量矢量列表。每個法向量由3個分量(X,Y,Z)構(gòu)成單位向量。
發(fā)送值到vector公共域的隱含域set_vector(eventIn事件),可改變向量列表的值,新的法向量矢量列表由此公共域的隱含域vector_changed(eventOut出事件)輸出。
2.1.2 折角
折角(creaseAngle)指定一個允許角度值θR,用來與相鄰平面的法向量比較。若2個法向量之間的角度θ滿足{θ|θ≤θR},則相鄰兩平面圓滑過渡;若θ滿足{θ|θ>θR},則保留棱邊,兩個表面分別計算各自法向量。
2.2 逐面法向量
當(dāng)按逐面法向量規(guī)定法向量時,由于根據(jù)法向量計算出的平面間反光強(qiáng)度各不相同,相鄰面間形成明顯棱析(如圖1所示)。
圖1 逐面法向量
如一個六棱錐三維造型面向?yàn)g覽者的3個面的法向量,依次為每個平面設(shè)置法向量值,即:
normal Normal {
vector[
-0.5 -0.5 0.5,
0 -1.5 1.5,
0.5 -0.5 0.5
]
}
則三維造型外表面的生成效果如圖2所示。
圖2 基于逐面法向量的三維造型效果
2.3 逐點(diǎn)法向量
三維造型表面曲面(圓滑)效果的體現(xiàn),可采用逐點(diǎn)法向量方法。當(dāng)按逐點(diǎn)法向量規(guī)定法向量時,渲染工具為面上的點(diǎn)計算出不同的法向量,用以構(gòu)成頂點(diǎn)法向量之間的平滑過渡(如圖3所示)。
如對2.2節(jié)中的六棱錐三維造型每個頂點(diǎn)設(shè)定法向量(不編號),即:
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 逐點(diǎn)法向量
則三維造型外表面的生成效果如圖4所示。
圖4 基于逐點(diǎn)法向量的三維造型效果
3 法向量補(bǔ)插器(NormalInterpolator)節(jié)點(diǎn)
NormalInterpolator節(jié)點(diǎn)允許對一組法向量進(jìn)行關(guān)鍵幀動畫插值操作。在建立插值器時,為三維造型的動畫中每個指定時刻選擇一組法向量。
3.1 NormalInterpolator節(jié)點(diǎn)語法結(jié)構(gòu)
NormalInterpolator節(jié)點(diǎn)語法描述如下:
NormalInterpolator {
key MFFloat
keyValue MFVec3f
set_fraction SFFloat
value_changed MFVec3f
}
3.2 NormalInterpolator節(jié)點(diǎn)參數(shù)解析
key可見域指定一個在[0.0,1.0]范圍內(nèi)遞減順序的關(guān)鍵浮點(diǎn)時刻列表。其域值通過set_key域(入事件)設(shè)置,新的key域值通過key_changed域(出事件)輸出。
keyValue可見域指定一個關(guān)鍵法向量矢量列表,每個法向量矢量由3個(X,Y,Z)分量構(gòu)成。同樣keyValue域值通過set_keyValue設(shè)置,通過keyValue_changed輸出。
當(dāng)輸入接口set_fraction收到一個時刻時,NormalInterpolator節(jié)點(diǎn)根據(jù)關(guān)鍵時刻列表和與其對應(yīng)的關(guān)鍵法向量子列表計算出一個法向量;輸入接口value_changed輸出的法向量矢量被逐點(diǎn)插入,NormalInterpolator節(jié)點(diǎn)對一個輸入時刻t的輸出法向量矢量列表的計算過程為:
(1) 掃描關(guān)鍵時刻t,找出1對相鄰時刻t1和t2,且滿足{t1≤t≤t2};
(2) 取得相應(yīng)的關(guān)鍵法向量矢量列表對;
(3) 在關(guān)鍵法向量矢量列表中線性插入,計算出中間法向量矢量子列表。
若t1時刻值和t2時刻值關(guān)系為Vt1=Vt2,則動畫軌跡產(chǎn)生一個中斷或跳躍;
若t1時刻值和t時刻值關(guān)系為Vt1>Vt,則對應(yīng)t1時刻的關(guān)鍵法向量矢量子列表用于NormalInterpolator節(jié)點(diǎn);
若t時刻值和t2時刻值關(guān)系為Vt2 通過NormalInterpolator節(jié)點(diǎn)在一個三維造型某面上形成的明暗動態(tài)變化的賦值如下: 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補(bǔ)插器節(jié)點(diǎn)作用的運(yùn)行效果(任意3個時刻)如圖5所示。 4 結(jié) 語 本文討論并給出了VRML下基于法向量(Nor-mal)節(jié)點(diǎn)和法向量補(bǔ)插器(NormalInterpolator)節(jié)點(diǎn)對三維造型進(jìn)行表面棱析和色彩變換的實(shí)現(xiàn)方法。方法 圖5 NormalInterpolator節(jié)點(diǎn)作用下的三維造型渲染效果 可有效使法向量及其補(bǔ)插器節(jié)點(diǎn)應(yīng)用于Shape模型節(jié)點(diǎn)中的geometry幾何節(jié)點(diǎn)的IndexedFaceSet等子節(jié)點(diǎn)中;利用Appearance外觀子節(jié)點(diǎn)、Material外觀材質(zhì)子節(jié)點(diǎn)描述三維造型的顏色、材質(zhì)漫反射、環(huán)境光反射、外觀材質(zhì)密度和透明度等高級渲染,使三維造型的虛擬仿真效果更生動、鮮活。 參考文獻(xiàn) [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]白偉冬,周之平,張颯兵,等.關(guān)于VRML 中物體間碰撞檢測的研究[J].計算機(jī)應(yīng)用研究,2004(6):128-133. [5]黃文麗.VRML語言入門與應(yīng)用[M].北京:中國鐵道出版社,2003. [6] 黃有群,吳冰冰.基于三角網(wǎng)格的三維地形局部貼圖方法的研究\\.沈陽工業(yè)大學(xué)學(xué)報,2007(5):560-563. 作者簡介 王昊鵬 男,1978年出生,吉林長春人,空軍航空大學(xué),講師,博士。主要研究方向?yàn)樘摂M現(xiàn)實(shí)仿真,計算機(jī)教育。 李東旭 女,1978年出生,遼寧本溪人,空軍航空大學(xué),講師。主要研究方向計算機(jī)軟件設(shè)計與教育。 注:本文中所涉及到的圖表、注解、公式等內(nèi)容請以PDF格式閱讀原文