SDF 형상 카탈로그
시각화 참고 자료: 이니고 킬레스 — 3D 거리 함수
SDF란 무엇인가요?
*부호 있는 거리 함수(SDF)*는 공간 내 임의의 점에서 형상의 가장 가까운 표면까지의 거리를 반환합니다.내부에서는 음수,표면 위에서는 0, 외부에서는 양수를 나타냅니다. 이 거리는 힘 곡선의 입력값으로 사용됩니다. 표면에 가까울수록 힘은 커지고, 멀어질수록 힘은 작아지며, 결국 0이 됩니다.
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(주반경),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
}
}
지원되지 않는 도형이 제공된 경우, 서비스는 원점 거리를 기반으로 한 준구형 계산 방식으로 전환됩니다.