跳至主要内容
版本:3.5.x

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轴简写

Torus 系列

原始的参数注释
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 参数 (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
}
}

如果提供了不受支持的原始数据,该服务将回退到 以原点为中心的球面式计算。