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

SDF-成形カタログ

視覚的な参考資料: イニゴ・キレス — 3D距離関数

署名付き距離関数(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 (カッペン方向を vec2 として)、 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-Parameter (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 } }

円錐台(Frustum):

{
"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
}
}

サポートされていないプリミティブが指定された場合、このサービスは 原点からの距離に基づいて、球体に近い評価方法を採用します。