專利名稱:可預存產生3d影像自我遮蔽陰影所需信息之裝置及方法
技術領域:
本發明涉及一種預先計算并儲存產生3D影像自我遮蔽陰影所需的信 息,于產生3D影像時,擷取這些信息以節省實時運算時間之裝置及方法。
背景技術:
隨著多媒體技術及影像處理技術的改進,動畫產業已由處理傳統平面 式的影像進步到處理3D影像,使得動畫在視覺上更為逼真。欲達到逼真 的效果,陰影的產生是極為重要的一環。欲產生動畫中物體因本身某部分遮擋所造成的陰影,公知有許多解決 的方式。例如以整體光照(global illumination)算法來處理,但其無法達到 實時(real-time)的效果。環境光遮擋(ambientocclusion)技術提供了模型自體遮擋的信息,在模 型表面作一次的光跡追蹤(ray tracing),更進一步來說,環境光遮擋是針對 物體上之每一點,計算其對環境的平均可見度,透過可見度的信息,在物 體表面產生柔和的自體陰影效果。雖然環境光遮擋技術的概念簡單,但仍 需對物體上所有端點朝所有方向計算可見度,所需的計算量還是很大,同 樣難以達到實時的效果。由于動態物體之每個部分的相對位置隨時間不停在變化,因此其所產 生的陰影也不停地變化,前述例舉之公知產生自我遮蔽陰影之技術皆有無 法實時處理的問題,故并不適合用于產生動態物體的陰影。因此如何在3D 動畫中產生動態物體自我遮蔽所產生的陰影,仍是業界急需解決的問題。發明內容本發明提供一種產生動態對象之自我遮蔽陰影的解決方案,此方案利
用多個球體(統稱球擬體)來擬合一個動態對象的外觀,以簡化遮蔽面積(accessibility)及遮蔽角度(occlusion angle)的計算。不僅如此,此方案還預 先將計算遮蔽面積及遮蔽角度所需的信息,與排除球體重疊造成陰影計算 錯誤的信息存放在貼圖數據中,來加速遮蔽面積的計算工作。本發明還可配合原本動態對象所具有的皮骨(skin-bone:)架構信息,動 態地調整各球體之相對位置與關系,使球擬體階層(sphere tree)可以隨時對應至動態對象當時的動作。前述提及之預先計算遮蔽面積所需的信息,可以為計算該動態對象之 某個頂點對于空間中在不同角度與不同遮蔽區域下,對于該點之上半球空 間所造成的遮蔽面積。此信息及遮蔽角度值是以二維貼圖方式儲存,此貼 圖定義為"存取值貼圖"。前述提及之排除球體重疊造成陰影計算錯誤的信息,可以利用一大球 體以涵蓋重疊之兩球體,并將此大球體總和遮蔽面積值及夾角以三維貼圖 方式儲存,此貼圖稱為"合成弧度貼圖"。前述之"存取值貼圖"與"合成弧度貼圖"被預先儲存,故當欲產生 該動態對象自我遮蔽的陰影時,可直接先更新球擬體中各球體的最新位 置,再擷取貼圖中的信息,針對該動態對象上的每個頂點計算受球體的整 體遮蔽影響,最后將計算出來的陰影效果映像至3D影像中。由于本發明之解決方案預先產生"存取值貼圖"與"合成弧度貼圖", 供產生動態對象自我遮蔽陰影時擷取使用,因此實時的運算量會大幅降 低,故可解決公知技術無法實時處理的問題。在參閱圖式及隨后描述之實施方式后,所屬技術領域的普通技術人員 便可了解本發明之其它目的,以及本發明之技術手段及實施方式。
圖1為本發明之第一實施例進行第一階段時之流程圖;圖2為遮蔽面積值之示意圖;圖3為存取值貼圖之示意圖4A為考慮兩個球體同時對一頂點所造成的遮蔽影響之示意圖; 圖4B為將兩球體以一大球體來表示之示意圖; 圖5為合成弧度貼圖之示意圖;圖6為本發明之第一實施例進行第二階段時之流程圖;以及圖7為本發明之第二實施例之示意圖。主要元件標記說明21:球體 22:法向:23:球體24:頂點P至球體23中心的向量25:投影區域 29:面積 41:球體 42:頂點P至球 43:球體 51:合成弧度貼圖 73:實時處理模塊 701:球擬體產生模塊 707:第二計算模塊 711:第四計算模塊 715:第五計算模塊27:水平面 31:存取值貼圖45中心的向量45:大球體 71:預先處理模塊 75:存儲器 705:第一計算模塊 709:第三計算模塊 713:第一貼圖產生模塊 717:第六計算模塊719:第二貼圖產生模塊721:更新模塊723:存儲器 725:合成模塊727:影像產生模塊具體實施方式
本發明之第一實施例為一種3D動態對象成像方法,此方法可產生該 動態對象自我遮蔽所產生之陰影,其流程可分為兩階段,第一階段于產生 該動態對象自我遮蔽的效果前便預先執行,第二階段于產生該動態對象自 我遮蔽的效果時實時進行。第一階段之步驟如圖1所示。首先執行步驟101,產生球擬體階層,此球擬體階層包含多個球體, 這些球體階層式地被排列,用以模擬該動態對象各部分之相對關系。公知 有許多產生球擬體階層的技術,以八元樹(Octree)算法為例,首先建立一 個立方體,該立方體將該動態對象包含在其中,此立方體接著被沿著X、 Y、 Z軸分割成8個次立方體,這些次立方體再進一步被分割,如此分割 下去直到這些小立方體近似為一個節點(node)。每一個節點代表該動態對 象的一部份。接著針對每一個節點,產生一球體來包含該節點。這些球體 根據其由哪個立方體所切割出,便能決定在球擬體階層的位置及上下層屬 關系。由于八元樹算法一開始將該動態對象分成8個次立方體,故以此球 擬體階層來代表該動態對象時,此球擬體階層最上層會有8個大球體。除了八元樹算法,尚有許多公知技術可用來產生球擬體階層,例如哈 伯(Hubbard)算法、格網(Grid)算法、合并(Merge)算法、叢集(Burst)算法、 展開(Expand)算法、衍生(Spawn)算法及聯合(Combined)算法等。本發 明并不限制利用何種算法來產生球擬體階層。一般而言,該動態對象之外觀由一組皮骨(skin-bone)架構信息所定義, 本實施例進一步利用該動態對象之皮骨架構信息,調整球體于球擬體階層 中之相對位置,以更正確地對應至該動態對象之所有部分。因此在步驟103中,自存儲器中擷取該動態對象之皮骨架構信息。接著執行步驟105,根據該皮骨架構信息計算出每個球體的圓心s的 皮骨權重。假設被某一球體包覆的頂點有N個(W21),與這些頂點相關 的骨參數為bj bM,而這些頂點對于bj的權重為Wij,其中i代表第i個骨 參數,j代表第j個頂點。例如,第3個頂點相對于b4之權重為w43,第6個頂點相對于bs之權重為W86。圓心S的皮骨權重可藉由下列式子求得 <formula>formula see original document page 9</formula>其中,Wsi表示圓心S相對于bi的皮骨權重,而除了前述的方式,圓心s的皮骨權重亦可利用質心坐標系(barycentric coordinate)來表示,其公式如下<formula>formula see original document page 9</formula>其中,p.i是球體中心對第j個頂點的質心坐標系的值。接著計算每一球體對于每個頂點之遮蔽面積值及遮蔽角度(occlusion angle)值。圖2用以解釋何謂遮蔽面積值及遮蔽角度值。如圖2所示,該 動態對象某一頂點P被一球體21所包含,在考慮頂點P被該動態對象某 一部分遮蔽所產生的陰影時,假設該部分被一球體23所包含(球體21及 23為前述球擬體階層中之球體),則球體23于球體21之表面會產生一投 影區域25,在此定義此投影區域之面積為e,而e映射至球體21之水平 面27之面積29即為遮蔽面積值。而遮蔽角度值是平均遮擋方向與球體21的法向量22的夾角,若球體23完全位于水平面27上方,則遮蔽角度值 會相等于O。需注意的是,在這個階段,球體23的大小或距離頂點P的遠近并不 重要,因為只要位于頂點P與球體23間兩切線內(在立體空間中為一圓錐)之球體,都會造成相同遮擋情形,換言之,只要面積e和夾角(D—樣,遮 蔽面積值及遮蔽角度值便相同,故接下來便要取得在不同的角度o及e值下之遮蔽面積值及遮蔽角度值。因此在步驟107中,根據不同的角度0)計算所有球體對于球體21之 0值。如圖2所示,角度0)為球體21的法向量22與頂點P至球體23中 心的向量24之夾角。其計算e值的方式采用公知幾何運算即可。接著執行步驟i09,基于不同的角度O)及e值,以獲得遮蔽面積值。獲得遮蔽面積值的方式可利用蒙地卡羅(Monte Carlo)法計算下列式子^ = J" JW",")cos"sin"^te^................(5)0 0其中,A即為遮蔽面積值,V((x,p)為能見度函數(visibility function),是利用球坐標a及卩來決定頂點P上方半球的可見度。更進一步來說,由于(D 及e是貼圖的兩個坐標方向,O代表的是球體23的圓心與頂點P聯機方 向,與頂點P之法方向22的夾角,e代表的是球體23投影在頂點P上方 的單位半球時,在單位半球上所占的弧度(即所占面積)。這兩者與第(5)式 的關系為e大小會影響V(a,P)的積分結果,e越大,V(a,(3)的積分結果就 越大(因為遮擋面積越大);0)會影響COS(a)的積分結果,O)越大COS(a) 積分結果越小(因為球越靠近水平方向,投影到平面面積越小)。在此實施例中,由于貼圖坐標的范圍是(o,i),所以假設0)及e的范圍分別是(o,兀) 及(o, 2兀),則貼圖上(O), e)坐標所代表的o及e就是(w兀,e* 2兀)。若在坐標(a,p)方向被球體23遮擋,則V(a,(3^1,否則V(a,p)=0。又或者可利用機率密度函數(probability density function)計算獲得遮蔽面積值<formula>formula see original document page 10</formula>
其中,S為利用蒙地卡羅法取樣的數目,(Cli,Pi)為第i個取樣的方向,p((Xi,卩i)為機率密度函數。接著執行步驟iii,基于不同的角度o及e值,以獲得遮蔽角度值。同樣地,獲得遮蔽角度值的方式可利用蒙地卡羅法計算下列式子<formula>formula see original document page 11</formula>其中,OA為遮蔽角度值,o及e值與第(7)式的關系如前所述。又或者可利用機率密度函數計算獲得遮蔽角度值<formula>formula see original document page 11</formula>接著執行步驟113,基于不同的角度o及e值,產生一個存取值貼圖。 更詳細來說,步驟109及iii已針對不同的o及e值計算出相對應之遮蔽 面積值及遮蔽角度值。而本步驟將這些對應值存于一個二維對應表中,此 對應表即為存取值貼圖。不論球體的體積再怎么大,e值也不會超過27i(即 頂點p上半球的范圍),且o及e值的范圍也在(o,兀)間,因此僅需處理(o,2兀)和(0,7i)這兩個范圍內的貼圖即可。如圖3所示,存取值貼圖31具有二維空間,其由o及e值所定義,存取值貼圖3i對于一特定之o及e值存 有二個值,即遮蔽面積值及遮蔽角度值。因此存取值貼圖是記錄單一球體 對于頂點p所造成之遮蔽影響。除了考慮單-一球體所造成的遮擋,本發明還可進一步解決多個圓球互 相重疊的問題,亦即考慮多個球體同時對某一頂點所造成的遮蔽現象。如圖4A所示,假設有兩球體41及43同時遮蔽頂點p,其9值分別為9,及 e2,且兩球體41及43之夾角為S。在考慮這兩個球體41及43同時對頂 點p所造成的遮蔽影響時,如圖4B所示,可視為有一大球體45,其遮擋 范圍為03te,+e2),且球體21的法向量22與頂點P至球體45中心的向量 42之夾角為0)。因此,本發明僅需考慮球體45對頂點P的影響,即可對 應至球體41及43同時對頂點P的影響。同樣地,在這個階段,大球體45 的大小或距離頂點P的遠近并不重要,因為只要位于頂點P與大球體45 間兩切線內(在立體空間中為一圓錐)之多個重疊球體都會造成相同遮擋情 形,換言之,只要角度e,、 02及S值一樣,總和遮蔽面積(total occluded area)值63及夾角0>便相同,故接下來便要取得在不同的角度e,、 e2及s值下 之總和遮蔽面積值03及夾角o。因此在步驟ii5中,基于不同的角度e,、 02及s值,以獲得總和遮蔽 面積值e3。獲得總和遮蔽面積值e3的方式可利用蒙地卡羅法計算下列式 子 <formula>formula see original document page 12</formula>9)0 0其中,TOA為總和遮蔽面積值03, e,、 02值越大,表示被遮蔽面積越大, 則積分結果就越大,5值越小,表示球體41及43重疊的部分越多,故積 分結果有可能會越小,當然在球體41及43沒有重疊的情況下,S不論大 小積分結果都不變。又或者可利用機率密度函數計算獲得總和遮蔽面積值簡=_7 、' —l no)接著執行步驟117,基于不同的角度e,、 02及S值,以獲得夾角^^ 獲得夾角O的方式可利用蒙地卡羅法計算下列式子 <formula>formula see original document page 12</formula>11)
其中,angle(a,(3)為(a,P)方向與球體41的夾角,e,、 02及S值與第(ll)式的 關系如前所述。又或者可利用機率密度函數計算夾角需注意的是,在步驟109、 111、 115及117中,若采用機率密度函數 的方式取得面積值及角度值,則機率密度函數需符合以下算式才為適當f J/7(",y9)sinacto// = l ..............(13)0 0接著執行步驟i19,基于不同的e,、 02及5值,產生一個合成弧度貼圖。更詳細來說,步驟115及117己針對不同的e,、 02及5值計算出相對應之03值及0值。而本步驟是將這些對應值存于一個三維對應表中,此對應表即為合成弧度貼圖。如圖5所示,合成弧度貼圖51具有三維空間,其由e,、 92及5值所定義,合成弧度貼圖5i對于一特定之e,、 02及s值存有二個值,即03值及O值。因此合成弧度貼圖記錄多個球體對于頂點p所造成之遮蔽影響。至此,第一階段之流程已完成。接著便是在需要產生該動態對象之3D 影像時,如何運用存取值貼圖31與合成弧度貼圖51以及球擬體階層實時 產生對象的自我遮蔽效果,亦即進行第二階段。第二階段之步驟如圖6所不。在步驟601中,根據該動態對象之目前動作,更新球體于球擬體階層 中之相對位置,亦即利用像素遮影器(pixel shader)并根據骨皮的關系(即于步驟105中所獲得之皮骨權重),計算對象頂點與球體的目前位置,并將 結果存成一球擬體階層架構貼圖。接著執行步驟603,根據球擬體階層架構貼圖,擷取適當之存取值貼 圖及合成弧度貼圖之值,以合成該動態對象自我遮蔽所產生之陰影。由于
球擬體階層中愈上層的球體其體積愈大,因此可用較少的球體便能涵蓋整 個動態對象,而愈下層的球體其體積愈小,但可保留動態對象的細節。在 計算自我遮蔽時,對于每個需要計算自我遮蔽的頂點在球擬體階層中找出 一定個數的球體。找尋一定個數的球體的方式如下于每一階層中找出四 個最接近此頂點的球體。由于最上層的四個球體可以包覆住整個對象,因 此可藉此產生自我遮蔽中較粗略的影像,而細節部分再由較下層的球體來 產生。由于所有球體所造成的遮擋效果一定在存取值貼圖與合成弧度貼圖 中有對應值,因此此步驟所要做的只是根據遮檔球體的0值且/或兩遮擋球 體的S值,進行內插便可取得相對應之遮蔽面積及遮蔽角度值。
更詳細來說,先產生一個對應至畫面大小的四邊形,而根據每一個頂 點計算出來的自我遮蔽值對應至畫面的某一個像素。接著再利用像素遮影 器針對每一個頂點,基于球擬體階層架構貼圖及預先儲存之存取值貼圖與 合成弧度貼圖來計算投影面積,并處理球體互相重疊的問題,最后將計算 結果存成環境光遮擋貼圖。
接著執行步驟605,根據該環境光遮擋貼圖產生該動態對象之陰影視 覺效果,并顯示該對象之3D影像。
本發明之第二實施例如圖7所示,為一種3D動態對象成像裝置,此 裝置可執行如圖l及圖6所示之方法,以產生動態對象自我遮蔽所產生之 陰影。3D動態對象成像裝置包含預先處理模塊71、實時處理模塊73及存 儲器75,預先處理模塊71包含球擬體產生模塊701、第一計算模塊705、 第二計算模塊707、第三計算模塊709、第四計算模塊711、第一貼圖產生 模塊713、第五計算模塊715、第六計算模塊717及第二貼圖產生模塊719, 于產生該動態對象自我遮蔽的效果前預先動作,亦即執行圖l之步驟,實 時處理模塊73包含更新模塊721、存儲器723、合成模塊725及影像產生 模塊727,于產生該動態對象自我遮蔽的效果時實時動作,亦即執行圖6 之步驟。
首先球擬體產生模塊701產生一球擬體階層,此球擬體階層包含多個 球體,這些球體階層式地被排列,用以模擬該動態對象各部分之相對關系
(對應至步驟101)。球擬體產生模塊701執行公知產生球擬體階層的技術, 例如八元樹算法、哈伯算法、格網算法、合并算法、叢集算法、展開算法、
衍生算法及聯合算法其中之一。此球擬體階層被儲存至存儲器75。
接著第一計算模塊705自存儲器75中擷取該動態對象之皮骨架構信 息及球擬體階層(對應至步驟103),以計算每個球體的圓心s的皮骨權重(對 應至步驟105)。同樣地,假設被某一球體包覆的頂點有N個(7V21),與 這些頂點相關的骨參數為b, bM,而這些頂點對于bi的權重為Wij,其中i 代表第i個骨參數,j代表第j個頂點。第一計算模塊705可利用前述第(l) 式及第(2)式計算圓心s的皮骨權重,或者利用前述第(3)式及第(4)式計算 圓心s的皮骨權重。這些皮骨權重被儲存至存儲器75中。
接著第二計算模塊707根據不同的角度0)計算所有球體對于圖2之球 體21之e值(對應至步驟107)。如圖2所示,角度0為球體21的法向量 22與頂點P至球體23中心的向量24之夾角。其計算0值的方式采用公知 幾何運算即可。
接著第三計算模塊709自第二計算模塊707擷取0值,利用前述第(5) 式或第(6)式計算遮蔽面積值(對應至步驟109),并將遮蔽面積值儲存至存 儲器75中。
接著第四計算模塊711根據不同的角度0及自第二計算模塊707擷取 e值,利用前述第(7)式或第(8)式計算遮蔽角度值(對應至步驟111),并將 遮蔽角度值儲存至存儲器75中。
因此第三計算模塊709及第四計算模塊71 l(在此合稱單一球體計算模 塊)計算每一球體之遮蔽面積值及遮蔽角度值。
接著第一貼圖產生模塊713根據不同的角度O及自存儲器75中擷取 遮蔽面積值、遮蔽角度值及自第二計算模塊707擷取e值,以產生一個存 取值貼圖(對應至步驟113)。存取值貼圖記錄單一球體對于頂點P所造成
之遮蔽影響,其中0)及e值與遮蔽面積值及遮蔽角度值之對應關系如圖3
所示,故不贅述。此存取值貼圖儲存至存儲器75中。
除了考慮單一球體所造成的遮擋,本發明還可進一步解決多個圓球互
相重疊的問題,亦即考慮多個球體同時對某一頂點所造成的遮蔽現象。如
圖4A所示,假設有兩球體41及43同時遮蔽頂點p,其e值分別為e,及
e2,且兩球體41及43之夾角為S。在考慮這兩個球體41及43同時對頂 點P所造成的遮蔽影響時,如圖4B所示,可視為有一大球體45,其遮擋 范圍為e3(=erfe2),且球體21的法向量22與頂點P至球體45中心的向量 42之夾角為0。因此,本發明僅需考慮球體45對頂點P的影響,即可對 應至球體41及43同時對頂點P的影響。同樣地,在這個階段,大球體45 的大小或距離頂點P的遠近并不重要,因為只要位于頂點P與大球體45 間兩切線內(在立體空間中為一圓錐)之多個重疊球體都會造成相同遮擋情
形,換言之,只要角度e,、 62及§值一樣,總和遮蔽面積值63及夾角<d 便相同,故接下來便要取得在不同的角度e,、 e2及s值下之總和遮蔽面積
值03及夾角0>。
因此第五計算模塊715自存儲器75中擷取遮蔽角度值及自第二計算 模塊707擷取e值,利用前述第(9)式或第(10)式計算總和遮蔽面積值03(對 應至步驟115)。總和遮蔽面積值03儲存至存儲器75中。
接著第六計算模塊717自存儲器75中擷取遮蔽角度值及自第二計算 模塊707擷取0值,利用前述第(11)式或第(12)式計算夾角(D(對應至步驟 117)。夾角(D儲存至存儲器75中。
因此第五計算模塊715及第六計算模塊717 (在此合稱多球體計算模 塊)計算任兩球體之總和遮蔽面積值及夾角。
同樣地,若第三計算模塊709、第四計算模塊711、第五計算模塊715 及第六計算模塊717采用機率密度函數的方式取得面積值及角度值,則機 率密度函數需符合前述第(13)式才為適當。
接著第二貼圖產生模塊719自存儲器75中擷取總和遮蔽面積值03及 O值、自第二計算模塊707擷取e值,以產生一個合成弧度貼圖(對應至 步驟119)。合成弧度貼圖記錄多個球體對于頂點P所造成之遮蔽影響,其 中e,、 62及5值與03值及0)值之對應關系如圖5所示,故不贅述。合成 弧度貼圖儲存至存儲器75中。
至此,第一階段之流程已進行完成。接著便是在需要產生該動態對象
之3D影像時,實時處理模塊73如何運用存于存儲器75中之存取值貼圖、
合成弧度貼圖及球擬體階層實時產生對象的自我遮蔽效果,亦即進行第二 階段。
更新模塊721擷取存儲器75中之球擬體階層,根據該動態對象之目 前動作更新于球擬體階層中之相對位置,亦即利用像素遮影器并根據骨皮 的關系(即第--計算模塊705計算而得之皮骨權重),計算對象頂點與球體 的目前位置,并將結果存成一球擬體階層架構貼圖(對應至步驟601)。此 球擬體階層架構貼圖被儲存至存儲器723中。
接著合成模塊725擷取存儲器723中之球擬體階層架構貼圖,并基于 此球擬體階層架構貼圖自存儲器75擷取適當之存取值貼圖及合成弧度貼 圖,以合成該動態對象自我遮蔽所產生之陰影(對應至步驟603)。由于球 擬體階層中愈上層的球體其體積愈大,因此可用較少的球體便能涵蓋整個 動態對象,而愈下層的球體其體積愈小,但可保留動態對象的細節。在計 算自我遮蔽時,對于每個需要計算自我遮蔽的頂點在球擬體階層中找出一 定個數的球體。找尋一定個數的球體的方式如下于每一階層中找出四個 最接近此頂點的球體。由于最上層的四個球體可以包覆住整個對象,因此 可藉此產生自我遮蔽中較粗略的影像,而細節部分再由較下層的球體來產 生。由于所有球體所造成的遮擋效果一定在存取值貼圖與合成弧度貼圖中 有對應值,因此合成模塊725所要做的只是根據遮檔球體的e值且/或兩遮 擋球體的S值,進行內插便可取得相對應之遮蔽面積及遮蔽角度值。
更詳細來說,合成模塊725先產生一個對應至畫面大小的四邊形,而 根據每一個頂點計算出來的自我遮蔽值對應至畫面的某一個像素。接著合 成模塊725再利用像素遮影器針對每一個頂點,基于球擬體階層架構貼圖 及預先儲存之存取值貼圖與合成弧度貼圖來計算投影面積,并處理球體互 相重疊的問題,最后將計算結果存成環境光遮擋貼圖。此環境光遮擋貼圖 被儲存至存儲器723中。
接著影像產生模塊727自存儲器723中擷取環境光遮擋貼圖,以產生
該動態對象之陰影視覺效果,進而顯示該動態對象之3D影像(對應至步驟
604)。
前述之方法可以用一應用程序來具體實現,亦即利用一應用程序以驅 動3D動態對象成像裝置7來執行前述之方法,而該應用程序可儲存于計 算機可讀取記錄媒體中,此計算機可讀取記錄媒體可以是軟盤、硬盤、光 盤、隨身碟、磁帶、可由網絡存取之數據庫或所屬技術領域的普通技術人 員可輕易思及具有相同功能之儲存媒體。
由于本發明可于產生動態對象自我遮蔽的影像前預先產生存取值貼 圖與合成弧度貼圖,再于產生動態對象自我遮蔽的效果時擷取存取值貼圖 與合成弧度貼圖之信息,用以產生動態對象自我遮蔽陰影,因此實時的運 算量會大幅降低,故可解決公知技術無法實時處理的問題。
上述實施例僅為例示性說明本發明之原理及其功效,而非用于限制本 發明。任何所屬技術領域的普通技術人員均可在不違背本發明之技術原理 及精神的情況下,對上述實施例進行修改及變化。因此本發明之權利保護 范圍應如權利要求所列。
權利要求
1. 一種3D動態對象成像方法,其特征是包含下列步驟產生相對于對象之球擬體階層,該球擬體階層包含多個球體;針對該對象之所有頂點,計算空間中之遮蔽面積值及遮蔽角度值;根據上述這些遮蔽面積值及遮蔽角度值,產生存取值貼圖;針對該對象之所有頂點,計算空間中任兩球體之總和遮蔽面積值及夾角;根據上述這些總和遮蔽面積值及夾角,產生合成弧度貼圖;根據該對象之動作,更新上述這些球體于該球擬體階層中之相對位置;根據該相對位置,由該存取值貼圖及該合成弧度貼圖中擷取適當之值,以合成該對象自我遮蔽所產生之陰影;以及顯示該對象之3D影像,該3D影像包含該陰影。
2. 根據權利要求1所述之3D動態對象成像方法,其特征是還包含下列步驟擷取該對象之皮骨架構信息;以及根據該皮骨架構信息,計算每一球體的圓心之皮骨權重;其中,該更新步驟還根據上述這些皮骨權重以更新上述這些球體于該 球擬體階層中之相對位置。
3. 根據權利要求1所述之3D動態對象成像方法,其特征是該計算空 間中任兩球體之總和遮蔽面積值及夾角之步驟包含設定大球體之步驟,該 大球體針對該對象之一頂點之遮蔽面積值等于上述任兩球體針對該頂點 之遮蔽面積值之總和。
4. 根據權利要求3所述之3D動態對象成像方法,其特征是該頂點被 上述這些球體中的一個所包含,該夾角為包含該頂點之球體之法向量與該頂點至該大球體中心的向量之夾角。
5. —種3D動態對象成像裝置,其特征是包含球擬體產生模塊,用以產生相對于對象之球擬體階層,該球擬體階層包含多個球體;單一球體計算模塊,用以針對該對象之所有頂點,計算空間中之遮蔽 面積值及遮蔽角度值;第一貼圖產生模塊,用以根據上述這些遮蔽面積值及遮蔽角度值,產 生存取值貼圖;多球體計算模塊,用以針對該對象之所有頂點,計算空間中任兩球體 之總和遮蔽面積值及夾角;第二貼圖產生模塊,用以根據上述這些總和遮蔽面積值及夾角,產生 合成弧度貼圖;更新模塊,用以根據該對象之動作,更新上述這些球體于該球擬體階 層中之相對位置;合成模塊,用以根據該相對位置,由該存取值貼圖及該合成弧度貼圖 中擷取適當之值,以合成該對象自我遮蔽所產生之陰影;以及影像產生模塊,用以顯示該對象之3D影像,該3D影像包含該陰影。
6. 根據權利要求5所述之3D動態對象成像裝置,其特征是還包含 第一計算模塊,用以擷取該對象之皮骨架構信息,并根據該皮骨架構信息,計算每一球體的圓心之皮骨權重;其中,該更新模塊還根據上述這些皮骨權重以更新上述這些球體于該 球擬體階層中之相對位置。
7. 根據權利要求5所述之3D動態對象成像裝置,其特征是該多球體 計算模塊還設定大球體,且該大球體針對該對象之一頂點之遮蔽面積值等 于上述任兩球體針對該頂點之遮蔽面積值之總和。
8. 根據權利要求7所述之3D動態對象成像裝置,其特征是該頂點被上述這些球體中的一個所包含,該夾角為包含該頂點之球體之法向量與該 頂點至該大球體中心的向量之夾角。
全文摘要
預先產生一球擬體,根據此架構計算3D對象各頂點之遮蔽面積值及角度值,進而產生存取值貼圖及合成弧度貼圖。當欲產生該對象自我遮蔽的陰影時,直接更新球擬體中各球體的最新位置,再擷取貼圖中的信息,以產生3D影像。由于存取值貼圖與合成弧度貼圖被預先儲存,因此當需要產生動態對象自我遮蔽陰影時,實時的運算量可大幅降低。
文檔編號G06T15/50GK101211464SQ20061017050
公開日2008年7月2日 申請日期2006年12月25日 優先權日2006年12月25日
發明者劉育碩, 莊榮宏, 鄭育镕 申請人:財團法人資訊工業策進會