- 騰訊游戲開發(fā)精粹
- 騰訊游戲編著
- 357字
- 2019-08-30 16:20:41
1.6 利用多邊形數(shù)據(jù)預計算SDF
在實際使用中存在的另一個問題是,繞行障礙物時角色有明顯的抖動感,而期望的結果是平滑滑行。回到之前的SDF數(shù)據(jù)生成流程中,先離散柵格化地圖,然后根據(jù)柵格數(shù)據(jù)計算生成SDF數(shù)據(jù),如圖1.8所示。

圖1.8 抖動
角色(圓形)半徑r=0.5,在繞障礙物滑行時的軌跡呈鋸齒狀,因為SDF數(shù)據(jù)本身就呈明顯的鋸齒狀。而期望的結果如圖1.9所示。

圖1.9 平滑
因此需要優(yōu)化SDF的計算。前面的SDF計算是柵格頂點到阻擋柵格的距離,阻擋區(qū)域本身是由多邊形構成的,那么實際角色應該是繞著多邊形的邊做直線移動的,因此可采用點到多邊形的距離來計算柵格頂點的φ值,在多邊形內部的點距離值為負,外部為正,得到如圖1.10所示的SDF數(shù)據(jù)。

圖1.10 根據(jù)點到多邊形的距離計算φ值
通過雙線性過濾方法,可得角色半徑r=0.5在A、B、C三處的φ值均為0.5,因此角色在繞行障礙物時可以做到沿邊平滑移動。