一張圖搞定SDF的概念


本文僅代表個人理解,謬誤之處請指正。


SDF:

Signed Distance Field,譯為有向距離場,“有向”、“距離”、“場”這三個詞非常精確的描述了sdf究竟是個什么東西。GPU Gems 3中是這么描述sdf的:“SDF是由到(多邊形模型)物體表面最近距離的采樣網格。作為慣例,使用負值來表示物體內部,使用正值表示物體外部。SDF理念對於圖形圖像及相關領域具有很大的誘惑力。它經常被用於布料動畫碰撞檢測、多物體動力學、變形物體、mesh網格生成、運動規划和雕刻。”

關於sdf的更多知識可參考如下鏈接:GPU Gem 3Byte wrangler`s blog,SIGGRAPH2007_AlphaTestedMagnification

naiad中的sdf是個3d的東西,但我接下來用自己制作的一幅二維圖像來解釋2dsdf,這樣反而更容易理解3dsdf~

1

1中:

1、藍色線條為sdf的零邊界連線,在naiad中則是iso-scope顯示的iso surface

2、“有向”“距離”“場”的概念:voxel中數字正負與黑色箭頭代表“signed”,正負數字與零邊界之差為“distance”,青色區域代表“field”。

3、青色區域為sdf存在的區域,在naiad中則是fine tile區域。

 

 

Iso-surface

譯為等值面、等參面、等值參數面,在naiad中可以理解為一種用於可視化sdf等值面的一種顯示方法,iso-scope默認顯示的是sdf的零參數面(零邊界)。

 

 

iso-scope

iso-scope用來查看sdf在不同邊界值下的iso-surface,naiad中使用的非常頻繁。

Naiad:一張圖搞定SDF的概念

2

 


Naiad:一張圖搞定SDF的概念

3

 

iso-scope不僅能顯示模型的原生sdf,也能顯示原生sdf通過零邊界偏移后的情況,如圖4:

Naiad:一張圖搞定SDF的概念

4

 

4Iso  Value中的數值0.1可以理解為顯示SDF值為0.1的等值面。

 

iso-scope所查看的對象必須是body,而且這個body必須帶有這樣一個Field Channel,這個Field Channel必須是distance channel,也就是sdf

 

Quality菜單下

Slice Countiso-scope的顯示原理是把sdf根據voxel進行采樣並切片顯示。Slice Count越高,sdf顯示越細致,顯存\刷新速度越慢,Slice Count與顯存占用呈線性關系。

SuperSampling:對於voxel的超采樣精度。SuperSampling越高,sdf顯示越准確,顯存\刷新速度越慢,SuperSampling與顯存占用成指數遞增關系,過高容易導致顯存溢出,顯卡停止響應。

 

 

tile-scope

tile-scope用來查看bodytile-layouttile-layout指的是naiadbodyfield channel所存在的區域。查看tile-layoutnaiad中用來了解資源占用以及各種性能問題診斷的重要手段。一個正常的帶有fieldbody通常有能將其粒子、模型完全包裹的tile-layout,如圖5:

Naiad:一張圖搞定SDF的概念

5


 tile-layout包含fine tilecoarse tilesdf只存在於fine tile中,通常關注fine tile就可以。


再分享一下我老師大神的人工智能教程吧。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智能的隊伍中來!https://blog.csdn.net/jiangjunshow


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM