SDF 형상 카탈로그
시각적 참고 자료: 이니고 킬레스 — 3D 거리 함수
서명된 거리 함수(SDF)란 무엇인가요?
부호가 있는 거리 함수는 공간 내의 임의의 점에서 형상의 가장 가까운 표면까지의 거리를 반환합니다. 내부에서는 음수, 표면 위에서는 0, 표면 밖에서는양수를 반환합니다. 이 거리는 힘 곡선의 입력값으로 사용됩니다. 표면에 가까울수록 힘이 더 강하게 작용하고, 멀어질수록 힘은 작용하지 않습니다.
SDF 형상은 내비게이션 모듈 (버블 형태)에서 사용됩니다.
한 형태는 다음을 통해 형성됩니다. primitive 그리고 einen parameters-블록 설명:
{
"shape": {
"primitive": "sphere",
"parameters": { "r": 0.05 }
}
}
기본 형태
| 원시적인 | 매개변수 | 참고 사항 |
|---|---|---|
sphere | r (반지름) | 가장 간단한 형태 |
ellipsoid | a (할바흐센 반지름을 vec3로 표현) | 근사 SDF; 힘에 대해 정확함 |
box | b (halbausdehnungen을 vec3로) | 축 평행 |
rounded_box | b (반반 신장), r (모서리 반경) | 전체 팽창량 = b + r |
box_frame | b (반반 신장), e (칸텐디케) | 상자의 철망 윤곽 |
plane | n (법선 벡터 vec3), h (이격 거리 n) | 무한 반공간; n muss는 정상화되어야 한다 |
캡슐과 실린더
| 원시적인 | 매개변수 | 참고 사항 |
|---|---|---|
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 (Winkel을 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-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 } }
Kapsel:
{
"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
}
}
지원되지 않는 기본 연산자가 지정되면, 이 서비스는 원점과의 거리를 기반으로 한 구형 유사 계산 방식을 사용합니다.