주요 내용으로 이동

SDF 형상 카탈로그

시각화 참고 자료: 이니고 킬레스 — 3D 거리 함수

SDF란 무엇인가요?​

*부호 있는 거리 함수(SDF)*는 공간 내 임의의 점에서 형상의 가장 가까운 표면까지의 거리를 반환합니다.내부에서는 음수,표면 위에서는 0, 외부에서는 양수를 나타냅니다. 이 거리는 힘 곡선의 입력값으로 사용됩니다. 표면에 가까울수록 힘은 커지고, 멀어질수록 힘은 작아지며, 결국 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원호;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
}
}

지원되지 않는 도형이 제공된 경우, 서비스는 원점 거리를 기반으로 한 준구형 계산 방식으로 전환됩니다.