一张图搞定SDF的概念
本文僅代表個人理解,謬誤之處請指正。
SDF:
Signed Distance Field,譯為有向距離場,“有向”、“距離”、“場”這三個詞非常精確的描述了sdf究竟是個什么東西。GPU Gems 3中是這么描述sdf的:“SDF是由到(多邊形模型)物體表面最近距離的采樣網格。作為慣例,使用負值來表示物體內部,使用正值表示物體外部。SDF理念對于圖形圖像及相關領域具有很大的誘惑力。它經常被用于布料動畫碰撞檢測、多物體動力學、變形物體、mesh網格生成、運動規劃和雕刻。”
關于sdf的更多知識可參考如下鏈接:GPU Gem 3,Byte wrangler`s blog,SIGGRAPH2007_AlphaTestedMagnification。
在naiad中的sdf是個3d的東西,但我接下來用自己制作的一幅二維圖像來解釋2d的sdf,這樣反而更容易理解3d的sdf~
圖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中使用的非常頻繁。
圖2
?
圖3
?
iso-scope不僅能顯示模型的原生sdf,也能顯示原生sdf通過零邊界偏移后的情況,如圖4:
圖4
?
圖4中Iso ?Value中的數值0.1可以理解為顯示SDF值為0.1的等值面。
?
iso-scope所查看的對象必須是body,而且這個body必須帶有這樣一個Field Channel,這個Field Channel必須是distance channel,也就是sdf。
?
Quality菜單下
Slice Count:iso-scope的顯示原理是把sdf根據voxel進行采樣并切片顯示。Slice Count越高,sdf顯示越細致,顯存\刷新速度越慢,Slice Count與顯存占用呈線性關系。
SuperSampling:對于voxel的超采樣精度。SuperSampling越高,sdf顯示越準確,顯存\刷新速度越慢,SuperSampling與顯存占用成指數遞增關系,過高容易導致顯存溢出,顯卡停止響應。
?
?
tile-scope:
tile-scope用來查看body的tile-layout,tile-layout指的是naiad中body的field channel所存在的區域。查看tile-layout是naiad中用來了解資源占用以及各種性能問題診斷的重要手段。一個正常的帶有field的body通常有能將其粒子、模型完全包裹的tile-layout,如圖5:
圖5
?tile-layout包含fine tile和coarse tile,sdf只存在于fine tile中,通常關注fine tile就可以。
再分享一下我老師大神的人工智能教程吧。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智能的隊伍中來!https://blog.csdn.net/jiangjunshow
轉載于:https://www.cnblogs.com/skiwnchiwns/p/10345407.html
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的一张图搞定SDF的概念的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2 字符串String
- 下一篇: Andrew NG 机器学习编程作业5