

数学とその応用において、符号付き距離関数または符号付き距離場(SDF)は、距離空間(幾何学的形状の表面など)内の与えられた点xから集合Ωの境界までの直交距離であり、その符号はxがΩの内部にあるかどうかで決まる。この関数は、Ωの内部にある点xでは正の値を持ち、xがΩの境界(符号付き距離関数がゼロ)に近づくにつれて値が減少し、Ωの外部では負の値を取る。[1]ただし、代わりに別の規則が採用されることもある(つまり、Ωの内部では負、外部では正)。[2]この概念は、有向距離関数/フィールドと呼ばれることもある。
意味
Ω を計量dを持つ計量空間Xの部分集合とし、その境界とする。Xの点xとXの部分集合との間の距離は、通常通り次のように定義される。
ここで は下限を表します。
Xの点xからXまでの符号付き距離関数は次のように定義されます。
ユークリッド空間における性質
Ωがユークリッド空間 R nの部分集合で、境界が区分的に 滑らかな場合、符号付き距離関数はほぼどこでも微分可能であり、その勾配はアイコナール方程式を満たす。
Ωの境界がk ≥ 2に対してC kである場合(微分可能クラスを参照)、dはΩの境界に十分近い点上でC kである。 [3]特に、境界f上では
ここで、N は内向きの法線ベクトル場です。したがって、符号付き距離関数は法線ベクトル場の微分可能な拡張です。特に、Ω の境界上の符号付き距離関数のヘッセ行列は、ワインガルテン マップを与えます。
さらに、ΓがΩの境界に十分近く、fがその上で2回連続微分可能である場合、符号付き距離関数と最も近い境界点に関して、変数変換のヤコビアンに対するワインガルテン写像W x を含む明示的な式が存在する。具体的には、 T ( ∂ Ω, μ )がΩの境界から距離μ以内の点の集合(つまり、半径μの管状近傍)であり、gがΓ上の絶対積分可能な関数である場合、
ここでdetは行列式を表し、dS uは面積分を取っていることを示します。[4]
アルゴリズム
符号付き距離関数を計算するアルゴリズムには、効率的な高速マーチング法、高速スイープ法[5] 、およびより一般的なレベルセット法などがあります。
ボクセルレンダリングでは、タクシージオメトリのSDFを計算するための高速アルゴリズムとして、合計面積テーブルが使用されます。[6]
アプリケーション

符号付き距離関数は、例えばリアルタイムレンダリング[7]、SDFレイマーチング法、コンピュータビジョン[ 8]などに適用されます。 [9]
SDF は、2000 年代半ばから、通常はレイマーチングのコンテキストで、リアルタイム レンダリングにおけるオブジェクト ジオメトリの記述に使用されてきました。2007 年までに、 Valve はSDF を使用して、ゲーム内でGPUアクセラレーションを使用して大きなピクセル サイズ (または高 DPI )の滑らかなフォントをレンダリングしています。 [10] Valve の方法は、(連続) ベクトル空間で問題を解く計算の複雑さを回避するためにラスター空間で実行されるため、完璧ではありません。レンダリングされたテキストは、鋭い角が失われることがよくあります。2014 年に、 Behdad Esfahbodによって改良された方法が発表されました。Behdad の GLyphy は、フォントのベジェ曲線を円弧スプラインで近似し、グリッドベースの離散化手法 (遠すぎるポイントをカリングする) によって加速され、リアルタイムで実行されます。[11]
SDFの修正版は、複数のオブジェクトをレンダリングする際のピクセルの相互浸透の誤差を最小限に抑えるための損失関数として導入されました。 [12]特に、オブジェクトに属していないピクセルについては、レンダリング時にオブジェクトの外側にある場合はペナルティは課されませんが、外側にある場合は、オブジェクト内の距離に比例した正の値が課されます。
2020年、FOSSゲームエンジンGodot 4.0は、よりリアルなボクセルベースのGIとベイクされたGIの妥協案となったSDFベースのリアルタイムグローバルイルミネーション(SDFGI)を採用しました。その主な利点は、無限の空間に適用できることであり、開発者はオープンワールドゲームにこれを使用できます。[13]
2023年には、すべてのUI要素をGPUで描画し、多くの部分をSDFで描画する「GPUI」UIフレームワークがリリースされました。作者は、 120fpsでレンダリングするZed コードエディターを作成したと主張しています。この作品では、Inigo QuilezのSDFの幾何学的プリミティブのリスト、Evan Wallace( Figmaの共同創設者)のSDFの近似ガウスぼかし、および新しい角丸長方形SDFが使用されています。[14]
参照
注記
- ^ Chan, T.; Zhu, W. ( 2005).レベルセットベースの形状事前セグメンテーション。IEEE Computer Society Conference on Computer Vision and Pattern Recognition。doi :10.1109/CVPR.2005.212。
- ^ Malladi, R.; Sethian, JA; Vemuri, BC (1995). 「フロントプロパゲーションによる形状モデリング: レベルセットアプローチ」. IEEE Transactions on Pattern Analysis and Machine Intelligence . 17 (2): 158–175. CiteSeerX 10.1.1.33.2443 . doi :10.1109/34.368173. S2CID 9505101.
- ^ ギルバーグ&トゥルーディンガー 1983、補題14.16。
- ^ Gilbarg & Trudinger 1983、方程式(14.98)。
- ^ Zhao Hongkai . アイコナール方程式の高速スイープ法。Mathematics of Computation、2005年、74。Jg.、Nr. 250、S. 603-627。
- ^ ニルソン、トビアス (2019). 「クライアント側 Web でのダイレクト ボリューム レンダリングの最適化方法」(PDF)。Digitala Vetenskapliga Arkivet 。2022-07-08に取得。
- ^ Tomas Akenine-Möller、Eric Haines、Naty Hoffman (2018 年 8 月 6 日)。リアルタイム レンダリング、第 4 版。CRC プレス。ISBN 978-1-351-81615-1。
- ^ Perera, S.; Barnes, N.; He, X.; Izadi, S.; Kohli, P.; Glocker, B. (2015 年 1 月)。「切り捨て符号付き距離関数に基づくボリューム サーフェスのモーション セグメンテーション」。2015 IEEE Winter Conference on Applications of Computer Vision。pp . 1046–1053。doi :10.1109/ WACV.2015.144。ISBN 978-1-4799-6683-7. S2CID 16811314。
- ^ Izadi, Shahram; Kim, David; Hilliges, Otmar; Molyneaux, David; Newcombe, Richard; Kohli, Pushmeet; Shotton, Jamie; Hodges, Steve; Freeman, Dustin (2011)。「KinectFusion」。第 24 回 ACM ユーザー インターフェイス ソフトウェアおよびテクノロジ シンポジウムの議事録。UIST '11。ニューヨーク、ニューヨーク、米国: ACM。pp. 559–568。doi : 10.1145/ 2047196.2047270。ISBN 9781450307161.S2CID 3345516 。
- ^ Green, Chris (2007). 「ベクターテクスチャと特殊効果のためのアルファテスト済み拡大機能の改善」ACM SIGGRAPH 2007 コースpp. 9–18. CiteSeerX 10.1.1.170.9418 . doi :10.1145/1281500.1281665. ISBN 9781450318235. S2CID 7479538。
- ^ Behdad Esfahbod. GLyphy: OpenGL ES2 シェーダーを使用した高品質のグリフ レンダリング [linux.conf.au 2014]。YouTube。2021年12 月 11 日のオリジナルからアーカイブ。ソースコード
- ^ Jiang, Wen; Kolotouros, Nikos; Pavlakos, Georgios; Zhou, Xiaowei; Daniilidis, Kostas (2020-06-15). 「単一画像からの複数の人間の一貫した再構築」. arXiv : 2006.08586 [cs.CV].
- ^ Engine、Godot。「Godot 4.0 は SDF ベースのリアルタイム グローバル イルミネーションを採用」。Godot Engine。
- ^ Scandurra, Antonio (2023年3月7日). 「RustとGPUを活用してユーザーインターフェースを120 FPSでレンダリングする - Zedブログ」Zed。
参考文献
- Stanley J. Osher と Ronald P. Fedkiw (2003)。レベルセット法と動的暗黙的表面。Springer。ISBN 9780387227467。
- ギルバーグ、D.ニューサウスウェールズ州トルーディンガー (1983)。2 次の楕円偏微分方程式。 Grundlehren der mathematischen Wissenschaften。 Vol. 224(第2版)。スプリンガー・フェルラーク。(または 1977 年第 1 版の付録)
