SDF 形式目录
视觉参考: 伊尼戈·奎莱斯 — 3D 距离函数
什么是无家可归者?
一个带符号的距离函数返回空间中任意一点与 某形状最近的曲面之间的距离:在曲面内部为负值,在曲面上为零, 在曲面外部为正值。该距离成为力曲线的输入参数:越靠近 曲面,力越大;超出曲面范围后,则不存在任何力。
“SDF”表单由“导航”模块使用(气泡表单)。
一个形状由一个 primitive 以及一个块 parameters :
{
"shape": {
"primitive": "sphere",
"parameters": { "r": 0.05 }
}
}
基本形式
| 原始的 | 参数 | 备注 |
|---|---|---|
sphere | r (人造丝) | 最简单的形式 |
ellipsoid | a (以 vec3 形式表示的半轴半径) | SDF 近似;对力而言精确 |
box | b (以 vec3 形式表示的子维度) | 与轴线对齐 |
rounded_box | b (半维度), r (角落区) | 总面积 = b + r |
box_frame | b (半维度), e (棱边厚度) | 一个盒子的铁丝轮廓 |
plane | n (以 vec3 形式表示), h (沿……的偏移) n) | 无限半空间; n 必须进行标准化处理 |
胶囊和圆柱体
| 原始的 | 参数 | 备注 |
|---|---|---|
capsule | a, b (端点位置以 vec3 形式表示), r (人造丝) | 半球形末端 |
capsule_vertical | h (半高), r (人造丝) | Y轴快捷键 |
capped_cylinder | a, b (轴的两端以 vec3 形式表示), r (人造丝) | 平头 |
capped_cylinder_vertical | h (半高), r (人造丝) | Y轴快捷键 |
环面族
| 原始的 | 参数 | 备注 |
|---|---|---|
torus | r1 (rayon majeur), r2 (管半径) | XZ平面中的贝涅饼 |
capped_torus | sc (以 vec2 形式表示的冰盖方向), r1, r2 | 弧; sc = (cos θ, sin θ) |
link | le (半长), r1 (环半径), r2 (管半径) | 链节的形状 |
锥体
| 原始的 | 参数 | 备注 |
|---|---|---|
cone | c (以 vec2 形式表示的角度 (sin α, cos α)), h (高度) | 顶端被截断的无限圆锥 |
capped_cone | a, b (以 vec3 形式表示的端点), r1 (基地半径), r2 (峰顶区域) | 锥体截面 |
rounded_cone | a, b (以 vec3 形式表示的端点), r1, r2 | 带球面顶面的圆锥体 |
solid_angle | c (以 vec2 形式表示的角度), r (人造丝) | 被圆锥截断的球体 |
异域风情
| 原始的 | 参数 | 备注 |
|---|---|---|
vesica_revolved | a, b (以 vec3 形式表示的轴), w (宽度) | 透镜形状 |
rhombus | la, lb (半对角线), h (半高挤出), r (圆角) | 菱形截面 |
pyramid | h (高度) | 正方形底座 |
octahedron | r (已登记的区) | 正八面体 |
hexagonal_prism | r (限定区域), h (半高) | 沿着Y河 |
triangular_prism | w (半宽), 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
}
}
如果提供了不受支持的原始函数,该服务将切换为基于 到原点距离的球面评估。