본문 바로가기

godot) navigation #이동1

2025. 10. 14.
[▼네모 안의 것만 블로그 관리자 광고입니다▼]
[▲네모 안의 것만 블로그 관리자 광고입니다▲]

네비메쉬

 

네비게이션은 고도엔진에서 캐릭터를 목적지 좌표로 이동 시킬 때 사용하는 이동 방식입니다

네비게이션 관련한 노드는 아래와 같이 구성되어 있습니다

 

노드 이름 사용 용도
navigation agent 노드 이동
navigation link 메쉬 이동 경로 이어주기
navigation obstacle 장애물
navigation region 네비메쉬 만들기 

 

유니티 네비메쉬와의 차이점

 

 

유니티에서 SetDesitionation(vecter3 targetposition)을 사용하면 

해당 목적지로 이동하게 되는데 

 

고도엔진에서 이동을 하려면 navigation agent노드의

tartgetposition()을 사용하여 목적지를 설정하고

GetNextPathPosition();으로 계산된 백터 경로를 받아

그곳으로 이동하는 방법을 개발자가 구현해야 합니다 

 

NavigationRegion 노드

 

네비리전 노드는 캐릭터가 이동하는 땅인 네비 메쉬를 만드는 노드입니다 

 

네비리전 노드를 클릭하여 왼쪽 상단에 있는

굽기와 비우기를 사용하면 네비 메쉬를 생성 혹은 제거를 할 수 있는데 

 

인스펙터에 있는 geometry 속성 설정으로

그 메쉬가 되는 대상을 설정할 수 있습니다 

 

Navigation Region 인스펙터

 

인스펙터에는 여러 속성들을 가지고 있으며

리소스를 제외한 것들을 설명합니다 

 

sampling

 

 

sampling의 파티션 타입은 메쉬 베이킹의 정밀도를 설정합니다 

watershed가 기본적으로 설정되어있고, 주로 그것을 사용합니다 

속성 이름 메쉬 생성의 정확도, 품질 메쉬 생성 속도
watershed 높음 느림
monotone 보통 중간
layers 낮음 빠름

 

 

Geometry

 

지오메트리의 소스 지오메트리 모드는   

어떤 노드의 메쉬를 참고해서

네비 메쉬를 만들지 설정하는 속성입니다

속성 이름 기능 설명
Root node children 선택 네비리전의 자식 메쉬를 사용하여 네비메쉬 생성
group with children 특정 그룹 노드와 그 노드의 자식을 사용하여 메쉬 생성
group Explicte 특정 그룹노드만 사용하여 메쉬 생성 (자식x)

 

 

기본적으로 root node children으로 설정되어 있고

네비 리전의 모든 자식 메쉬를 참고하여 네비 메쉬를 생성합니다 

 

외의 2개는 그룹에 속해있는 노드를 참고하게 되는데

사용하고 싶은 노드를 그룹에 속하게 만든 후

그 그룹 이름을 넣고 베이킹하게 되면 

 

그룹에 속해있는 노드를 통해 네비메쉬를 만들게 됩니다 

 

cells

 

 

네비 메쉬를 만드는데 n 간격의 복셀화를 시켜 스캔을 한 후 

메쉬를 만들고 그걸 합쳐 폴리곤으로 만듭니다 

 

cell size는 그 복셀 크기 간격을 설정합니다 

0.25가 기본이며 가장 낮고 정확합니다

 

cell height는 지오메트리 메쉬와 네비메쉬의 간격을 의미합니다 

캐릭터가 네비 메쉬를 사용하여 이동할 때 지오메트리 메쉬의 콜리전에 닫게 되면 

어떤 결과가 나올지 모르기 때문에 바닥과 약간의 차를 둬 오류를 예방하게됩니다

 

Agents

 

agents는 네비 메쉬를 이용하는 에이전트의 크기와 올라갈 수 있는 높이를 정합니다 

 

height 키 높이 입니다. 캐릭터의 크기에 맞춰 설정합니다
radius 반경입니다. 캐릭터의 반경에 맞춰 설정합니다
max climb 오를 수 있는 높이입니다.
max slope 오를 수 있는 경사입니다 

 

 

height와 radius를 캐릭터의 크기에 맞춰 생성하여 

벽에 너무 붙던가 천장이 낮은 곳인데

뚫고 지나가는 경우를 사전에 막습니다 

 

regions

 

min size는 생성될 때 설정한 사이즈 이하의 메쉬는 제거합니다 

 

merge size는 메쉬의 선들이 설정한 값 이하로 가까히 붙어 있으면 선을 병합 시켜 하나의 메쉬로 만든다는데

수치를 바꿔봐도 살짝 살짝 몇 개 병합 하는 것 말고는 규칙을 잘 모르겠다

 

Edges

max length는 선을 줄여 단순화를 시켜줍니다 

기존 설정인 0으로 해놓으면 최대로 줄여주고

그 이상이라면 수치에 해당하는 선이 생겨 정밀도는 높혀주지만

성능 문제가 발생할 수 있습니다

 

polygones

vertices per polygon은 폴리곤으로 만들어질 때 버텍스 수를 제한합니다 

filters

 

baking aabb를 설정하여 일부 지역에서만 네비 메쉬를 생성 하게 합니다

 

xyz는 기준 좌표이며 

whd는 그 영역의 폭입니다