跳转至正文

SDF 图形目录

视觉参考资料: 伊尼戈·奎莱斯 — 3D 距离函数

什么是SDF?​

*带符号距离函数(Signed Distance Function)*会返回空间中任意一点到该几何体最近表面的距离。内部为 负数,表面上为0,外部为正数。该距离将作为力曲线的输入。也就是说,离表面越近,力越大;离表面越远,力就越小。

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弧(arc); 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
}
}

如果提供了不受支持的基元,服务将使用基于距原点距离的 球面近似评估来替代。