符号付き距離関数
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2024/08/10 16:17 UTC 版)


符号付き距離関数(ふごうつききょりかんすう、英語: signed distance functionまたは英語: oriented distance function、SDF)は、与えられた点xから距離空間における集合Ωの境界までの垂直距離である。xがΩの内部にあるかどうかによって符号が決まる。この関数は、Ωの内部の点xでは正の値を持ち、Ωの境界に近づくにつれて値が減少し、符号付き距離関数がゼロになる場所でΩの境界に達し、Ωの外部では負の値を取る[1]。負の値を内部、正の値を外部とする規約が採用されることもある[2]。
定義
Ωを距離空間Xの部分集合とし、 符号付き距離関数が利用される分野の例としては、リアルタイムレンダリング[7]、SDFレイマーチング、コンピュータビジョンなどがある[8][9]。
SDFは2000年代半ばからレイマーチングの実装においてリアルタイムレンダリングにおけるオブジェクトのジオメトリを記述するために使用され始めた。2007年にはValveが、SDFを使用して大きなピクセルサイズ(または高DPI)の滑らかなフォントをGPUアクセラレーションでレンダリングしている[10]。Valveの手法は(連続的な)ベクタ空間での問題を解く計算複雑性を避けるためにラスタ空間で実行されるため完璧ではなく、レンダリングされたテキストは角が丸まってしまうことが多い。2014年には、en:Behdad Esfahbodによって改良された手法が発表された。BehdadのGLyphyはフォントのベジエ曲線をスプライン曲線で近似し、グリッドベースの離散化手法(遠すぎる点をカリングする)によってリアルタイムで実行する[11]。
複数のオブジェクトをレンダリングする際のピクセルの侵入エラーを最小化するための損失関数としてSDFの修正版が使われている[12]。オブジェクトに属さないピクセルに対して、それがレンダリング時にオブジェクトの外側にある場合はペナルティは課さず、内部にある場合はその距離に比例した正の値を課すというものである。
- 符号付き距離関数のページへのリンク