• 沒有找到結果。

Surface Sources Distributed on Polygon

計算 Ajk 的方法可以參考 [WRG+84],計算一個表面 Tk對一個三角形 Tj所提 供電荷的影響,三角形 Tj 的質心為 r。假設三角形 Tk 位於平面 P ,Figure 3.1,ˆn 為平面 P 的法向量,ρ 是 r 到平面 P 的投影點,而三角形 Tk 的邊分別為 ri,i = 1, ..., 3,r±i 分別為 ri的兩端點。

Figure 3.1: 計算電荷密度示意圖。

d是 r 到平面 P 的距離,

d = ˆn·( r− ri±

), (3.7)

lˆi為 ri方向的單位向量,

lˆi = r+i − ri

r+i − ri , (3.8) ρ到 r±的距離為 ρ±

± ±− ˆn(

· r±)

ˆl = ρ+− ρ

Figure 3.2: Charge distribution: 此圖左、中、右分別為 pawn、dumbbell、Luigi 算出 電荷分佈的結果,我們以 gray level 的方式表示電荷的強度,越黑的代表電荷密度 越低,越白代表電荷密度越高。

在計算出每個三角形所帶的電荷密度後,我們先對此物體每個三角形所帶的 電荷密度作直方圖均衡化 [L+81],三角形的總數量為 N 使得每個三角形所帶的電 荷密度以線性的方式作累積,提高電荷密度的對比性。我們先用一個陣列 CDF 累積三角形的數量,CDF [0] 為電荷密度等於 0 的三角形數量,CDF [i] 為電荷密 度小於等於 i 的三角形數量,i = 0, ..., 255,CDF [255] = N ,以此類推,我們累積 所有強度共有多少三角形。並將原始的電荷密度值對應到新的電荷密度值:

chargeDensitynew[i] = CDF [i]/N. (3.18) 我們選擇一個門檻 (thresholdcluster),將所有電荷密度小於 thresholdcluster的 三角形標記起來。我們對這些被標記的三角形作 cluster,有相連的三角型為同一 cluster。

我們追蹤每個 cluster 的輪廓,若一個 cluster 有兩條輪廓表示其能將物體分割 成兩個不同區域,但有時候一個 cluster 幾乎將物體分成兩個區塊,卻因為一些三 角形的電荷密度高過 thresholdcluster,導致沒有辦法在一開始就將物體切割,所 以我們必須對無法切割物體的 clusters 作測試,檢查一個 cluster 中的三角形數量 是否超過 thresholdgrowing,thresholdgrowing 為一個和物體三角形總數成正比的一

個常數,若此 cluster 中的三角形總數大於 thresholdgrowing,我們必須對此 cluster 作 cluster-growing。

Cluster-growing 的方法是一個 iterative 的過程,Figure 3.3,首先將一個 cluster 中的所有三角形放入 cuttingList 中,並找出和此 cluster 相鄰的所有三角形存入 growingList。我們利用 growingList,來檢查一個 cluster 是否達到 cluster-growing 的 條 件,將 growingList 中 的 三 角 形 分 堆,有 相 鄰 的 一 堆,若 只 能 分 成 一 堆,

則將 GrowingList 中的三角形加入 cuttingList 中,繼續 iterative 的過程,若能將 growingList 中的三角形分成兩堆,表示目前 growingList 中的三角形已經能將物體 分成兩個區域,因此終止 iterative 的過程。

我們必須在 cuttingList 中,利用 cluster-shrinking 的方法找出確切分割的部 分,追蹤 cuttingList 所形成的輪廓,並且由 cuttingList 的三角形中,和輪廓相鄰 的三角形開始一一作 shrinking,我們作 shrinking 的依據是,若一個三角形的邊 包含了兩條不同輪廓的邊,我們稱此三角形為 cutting triangle,cutting triangle 不 能被 shrinking;否則我們將三角形從 cuttingList 中移除,並且更新輪廓,直到 cuttingList 中的所有三角形都是由 cutting triangles 構成。

結束 cluster-shrinking 後所形成的兩條輪廓我們使其平滑化,選擇總長度較小 的輪廓當作我們的分割輪廓。

Figure 3.3: Cluster-growing 流程圖: 淺綠色的三角形代表 cuttingList 中的三角形,

深綠色的三角形為 growingList 中的三角形,(a) 一 cluster 作 cluster-growing 前,將 cluster 外圍的三角形放入 growingList 中。(b) growingList 中的三角形只能分成紅 色的一堆,達到 growing 的條件,繼續 growing,並將 growingList 中的三角形加 入 cuttingList 中。(c)(d)(e)(f) 為 (a)(b) 兩個步驟作 iteration,(f) growingList 中的三 角形被分成紅色和橘色兩堆,停止 growing。

Figure 3.4: Procedure step of object decomposition: (a) 一開始的 model。(b) 算出每 個面的電荷密度,用 gray level 表示。(c) 利用直方圖均衡化增加對比度的結果,

用 gray level 表示。(d) 將通過 thresholdcluster 的三角形作分堆的結果。(e) 經過 cluster-growing 和 cluster-shrinking 後得到的 contour edges。(f) 物體分割的結果。

Chapter 4

Detector-Based Collision Detection

這個章節我們討論 detector-based 的碰撞偵測,在分割完物體之後,每個獨立 的區域即為一個 detector-region,我們在每個 detector-region 中找一個適當的點作 為 detector-point,每個 detector-point 管理各自的 detector-region。

4.1 Detector-Points

在物體分割後,我們必須在每個 detector-region 中找出適合的 Detector-point。

在模擬過程中,detector-point 在 detector-region 中的位置會影響到 detector-based 碰撞偵測的效能,因此找出較佳的 detector-point 是一個重要的課題。Detector-point 的位置在模擬過程中主要會影響三角形的面向、追蹤的時間和 potentially colliding pair 的數量,進而影響到整個碰撞偵測的時間。在這裡我們所使用的 detector-point 為每個 detector-region 的重心,根據我們的實驗,它有較大的機率對 detector-region 中的所有三角形都是可視的。

相關文件