• 沒有找到結果。

else { // Pd皆不為上述終止條件往三方向擴散 R ← {Pd} ∪ R ;

for ( Pd的所有相連三角形 P’ ) region_growing( P’);

} }

3.3.2 輪廓的判斷

在山石模型中,我們要找的輪廓特徵有:Silhouette、Boundary,可在表面區域 擴展過程中,由兩個相連三角形的關係,區分其相連邊是否為輪廓邊,我們將一一 分析,最後總結說明擴展分析過程。

A. Silhouette

由隱蔽面定義所區分的類型二中,該三角形(Pd)至少有一可見邊 E,當 E 的另 一側三角形為可見時,必會擴展到 Pd,因 Pd不可見而終止,此時 E 可為 Silhouette 或是區域的邊界。我們於下面分析。

在多邊形網格中,Silhouette 包含所有連接 back-facing 多邊形與 front-facing 多 邊形的邊。而 back-facing 多邊形為不可見的,front-facing 多邊形則在可能情況下可 見。也就是說 Silhouette 一定屬於可見三角形與不可見三角形的交界邊。利用此特 性,我們在表面擴展時,在可見三角形區域進行,當它擴展至不可見三角形時終止,

而不可見三角形可能是 front-facing 或 back-facing,利用 3.3 式判別:

第三章 表面區域擴展

29

{ front back - - facing facing n n ρ ρ V V > 0 0

(3.3)

其中

n ρ

為三角形在視角座標下之法向量,

V 為視線向量(line-of-sight vector)。

根據方程式 3.3,辨別出 back-facing 三角形,在這情況下,按 Silhouette 定義,

在 front 與 back face 的相連邊 E 即為 Silhouette,將它加入區域的 Silhouette 集合。

例 如 圖 11 所 示 , 依 此 圖 的 視 點 位 置 看 模 型 , 圖 中 綠 色 線 段 為 該 視 角 下 模 型 的 Silhouette,黃色頂點為可見點,紅色頂點為不可見點。其中 A(藍色區域),是模型 的前半面(front-facing),為可見三角形集合而成的表面區域。而 B~D(灰色區域)為模 型的後半面(back-facing),為不可見表面,其中灰階值由淺至深表示端點可見數的多 寡,B 為只有單一端點不可見,C 的兩端點不可見,D 則三個端點皆不可見。圖中 藍色區域的黑色箭頭為可見三角形進行擴展的方向,實線的箭頭所跨越之邊 E 為擴 展終止邊,也就是說當 A 區域來源三角形(設為 Ps)擴展至 B 區的三角形(設為 Pd)時,

判斷 Pd是不可見的屬性,故不執行 Pd的區域擴展,此時接著以 3.3 式判斷 Pd,得 出它為 back-facing,也就是該終止邊 E 為我們想要找的 Silhouette。同樣為不可見的 灰色三角形但卻是 front-facing 的情況時,則是被前方物體遮蓋而產生的區域邊緣,

在繪畫時並不重要,因為前方物體的輪廓線已描繪出後方物體表面被遮蓋的情形,

見圖 10 (a)之遮蓋景況。

第三章 表面區域擴展

30

圖 11 區域擴散時,Silhouette 的辨別。綠色線段為該視角下模型的 Silhouette,

黃色為可見點,紅色為不可見點。

下面是判斷 Silhouette 的演算法:

if ( Pd不可見 ) {

if (

n ρ ⋅V ≤ 0

) { //back face

Ps與 Pd的相連邊 E 為 Silhouette;

} else{

E 為區域邊界;

} }

n ρ V

A D C

B

可見表面 不可見表面

黑 色 箭 頭 為 擴展方向

2.終止擴展後,以法 向 量 與 視 線 向 量 的 內積值分辨輪廓邊

1.此擴展方向因 B 區 有 一 頂 點 不 可 見,而停止擴展

第三章 表面區域擴展

31

相關文件