メインコンテンツへスキップ

SDF 形状カタログ

可視化の参考: イニゴ・キレス — 3D距離関数

SDFとは何ですか?​

*符号付き距離関数(SDF)*は、空間内の任意の点から形状の最も近い表面までの距離を返します。内部では負、表面上ではゼロ、 外部では正となります。この距離は力曲線の入力として使用されます。表面に近づくほど力は大きくなり、遠ざかるほど力は小さくなり、最終的にゼロになります。

SDFの形状はナビゲーションモジュールで使用されます(バブル形状)。

形状は、ある primitive と一つ parameters 「ブロック」の説明:

{
"shape": {
"primitive": "sphere",
"parameters": { "r": 0.05 }
}
}

基本形状​

図形要素パラメータ説明
spherer(半径)最も単純な形状
ellipsoida(vec3 で表される半軸半径)SDFの近似;力の計算が比較的正確である
boxb(vec3 で表される半辺の長さ)座標軸に合わせる
rounded_boxb(半辺の長さ)、r(角丸の半径)全寸法 = b + r
box_frameb(半辺の長さ)、e(縁の厚さ)直方体のワイヤーフレーム輪郭
planen(法線ベクトル,vec3)、h(沿 n (方向のずれ)無限半空間;n 正規化済みである必要があります

カプセル体と円柱体​

図形要素パラメータ説明
capsulea、b(端点の位置,vec3)、r(半径)半球形エンドキャップ
capsule_verticalh(半高)、r(半径)Y軸の略記法
capped_cylindera、b(軸端点、vec3)、r(半径)平面エンドキャップ
capped_cylinder_verticalh(半高)、r(半径)Y軸の略記法

環面シリーズ​

図形要素パラメータ説明
torusr1(主半径)、r2(管の半径)XZ 平面内のドーナツ形状
capped_torussc(ベクトル2の方向)、r1、r2円弧;sc = (cos θ, sin θ)
linkle(半長)、r1(円周半径)、r2(管の半径)チェーンリンクの形状

円錐体​

図形要素パラメータ説明
conec(角度,vec2 (sin α, cos α))、h(高度)頂点で切断された無限円錐
capped_conea、b(端点,vec3)、r1(底面の半径)、r2(上面半径)円台
rounded_conea、b(端点,vec3)、r1、r2球形の端蓋が付いた円錐台
solid_anglec(角度,vec2)、r(半径)円錐によって切り取られた球体

特殊形状​

図形要素パラメータ説明
vesica_revolveda、b(軸、vec3)、w(幅)レンズ型
rhombusla、lb(半対角線)、h(引張半高)、r(角丸)菱形断面
pyramidh(高度)底面が正方形
octahedronr(内切半径)正八面体
hexagonal_prismr(外接円の半径)、h(半高)Y軸に沿って
triangular_prismw(半角)、h(半高)Z軸に沿って
パラメータ型

スカラーパラメータ(r、h、e など)は通常の数値です。 ベクトルパラメータ(a、b、n)を対象として:{ "x": 0.0, "y": 0.0, "z": 0.0 }。 Vec2 パラメータ(c、sc)を対象として:{ "x": 0.707, "y": 0.707 }。

JSON の例​

球体:

{ "primitive": "sphere", "parameters": { "r": 0.05 } }

楕球体(X/Z方向がより広い):

{ "primitive": "ellipsoid", "parameters": { "a": { "x": 0.06, "y": 0.03, "z": 0.06 } } }

直方体:

{ "primitive": "box", "parameters": { "b": { "x": 0.04, "y": 0.02, "z": 0.04 } } }

角丸長方体:

{ "primitive": "rounded_box", "parameters": { "b": { "x": 0.30, "y": 0.02, "z": 0.30 }, "r": 0.01 } }

カプセル本体:

{
"primitive": "capsule",
"parameters": {
"a": { "x": 0.0, "y": -0.03, "z": 0.0 },
"b": { "x": 0.0, "y": 0.03, "z": 0.0 },
"r": 0.04
}
}

平面(+X方向の境界):

{ "primitive": "plane", "parameters": { "n": { "x": 1.0, "y": 0.0, "z": 0.0 }, "h": 0.0 } }

円面:

{ "primitive": "torus", "parameters": { "r1": 0.08, "r2": 0.02 } }

円台(円錐台):

{
"primitive": "capped_cone",
"parameters": {
"a": { "x": 0.0, "y": -0.05, "z": 0.0 },
"b": { "x": 0.0, "y": 0.05, "z": 0.0 },
"r1": 0.04, "r2": 0.01
}
}

サポートされていない図形要素が指定された場合、サービスは 原点からの距離に基づく準球面評価に切り替わります。