
錦州四叉樹的場景劃分4步驟動畫演講制作
基于四叉樹的場景劃分步驟包括以下4步: 步驟一:將虛擬三維空間等價轉(zhuǎn)換為二維平面。前提是高度相對于廣度可以忽略,或背研究問題 對象允許簡化三維參數(shù)變量。
步驟二:遍歷場景中的所有模型區(qū)域,選取合適的分割平面。由于虛擬:維建筑多數(shù)屬于規(guī)則圖 形,因此,在逐層分割的過程中,沒有必要逐個去分解每個多邊形,只需要選取經(jīng)過象限頂點且與X軸 或Z軸垂直的平面作為分割面即可。
步驟三:分割完成后,分別創(chuàng)建“左上”、“左下”、“右上”以及“右下”四個象限的子節(jié)點 。判斷對應(yīng)象限內(nèi)包含的多邊形數(shù)量是否超過設(shè)定的閥值。若超過,該象限區(qū)域繼續(xù)分割,同時四叉 樹的葉子節(jié)點繼續(xù)分解;若未超過,則該節(jié)點就作為葉子節(jié)點,保存當前各層場景的相關(guān)屬性。
步驟四:重復(fù)步驟二、三處理,直至不存在可以分割的節(jié)點為止,VRMI.中利用模型語言提供的原 型節(jié)點,對基于四叉樹劃分后的節(jié)點進行自定義類型,得到的四叉樹數(shù)據(jù)結(jié)構(gòu)的形式如下: PR()TO QuadTNode{ #自定義的節(jié)點的基本場景屬性 exPoseField SFRotation rotate exPoseField SFVec3f scale 0.0 1.0 0.0 exPoseField SFColor color l.0 0.0 1.0 coord DEF PlaneOl-C()()RDCoordinateI Point[ 00,10,11,0 1] } 以下定義非葉子節(jié)點的四個子節(jié)點( children),每個children對應(yīng)一個子節(jié)點定義,每個子節(jié)點 也是QuadTNode節(jié)點類型。 Group{ children[ geometry cylinder{} ] children[ geometry cylinder{} ]chilclren[ geometry cylinder{ } geometry cylindert } } 對四又樹中的每個節(jié)點(包括葉子節(jié)點和非葉子節(jié)點),應(yīng)該定義此節(jié)點所表示的場景空間的包 圍范圍,定義這個節(jié)點所覆蓋的場景空間的區(qū)域。對應(yīng)于上述VRML四叉樹定義中的coord DEF PlaneOl-COORD,指定這個節(jié)點的四個頂點所表示的坐標索引。通過這四個頂點的坐標也就可以計算出 此節(jié)點所覆蓋的平面區(qū)域的大小。如圖4.6所示,圖中節(jié)點的四個頂點的坐標為(4,4),(4,-4), (-4,-4),(-4,4)。┏━┳━┳━┳━┳━┳━━┳━━┳━━━┳━━┓┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃┣━╋━╋━╋━╋━╋━━╋━━╋━━━┫ ┃┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃-/ ┃┣━╋━╋━╋━╋━╋━━╋━━╋━━━┫ ┃┃ ┃ ┃ ┃ ┃ ┃ ┃/ ┃,/ ┃ ┃┃ ┃ ┃ ┃ ┃ ┃/ ┃ ┃ ┃ ┃┣━╋━╋━╋━╋━╋━━╋━━╋━━━┫ ┃┃ ┃ ┃ ┃ ┃ ┃L ┃ ┃ ┃ ┃┣━╋━╋━╋━╋━╋━━╋━━╋━━━╋━━┫┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃┣━╋━╋━╋━╋━╋━━╋━━╋━━━┫ ┃┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃┣━╋━╋━╋━╋━╋━━╋━━╋━━━┫ ┃┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃┣━╋━╋━╋━╋━╋━━╋━━╋━━━┫ ┃┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃┣━┻━┻━┻━╋━┻━━┻━━┻━━━┻━━┫┃-4) ┃ (4,-4.) ┃┗━━━━━━━┻━━━━━━━━━━━━━━ ┛圖4.6 四叉樹剖分中心位置X=1中心位置)\1半距=l 采用該數(shù)據(jù)結(jié)構(gòu)的四叉樹實現(xiàn)場景模型的空間剖分后,在場景渲染的時候,可以以L()D方式高效 繪制場景圖??梢酝ㄟ^計算包圍球或包圍長方體的方法,實現(xiàn)對可見體的裁剪處理。
轉(zhuǎn)載請注明:
錦州flash動畫制作公司:http://www.haldonestatewines.com/city130/