TIL

2024/01/09 TIL (Navigation Mesh)

미역제자 2024. 1. 9. 10:53


NavMesh

유니티 엔진의 기능 중 하나로, 게임 캐릭터나 AI 에이전트가 이동할 수 있는 가상의 경로를 생성하고 관리하는 데 사용됩니다. NavMesh를 사용하면 캐릭터나 AI 에이전트가 장애물을 피하거나 정해진 경로를 따라 이동할 수 있습니다.

 

NavMesh Surface

기존에 있던 Bake 기능이 NavMesh Surface로 넘어왔습니다. 신규 NavMeshSurface의 가장 큰 장점은 동적 베이킹으로, 실시간으로 변화되는 환경에서의 길찾기가 능합니다. 이에 대한 최적화를 위해 Volume 안에 있는 오브젝트만 길찾기에 포함하는 등의 작업이 가능합니다

 

 

NavMeshAgent

NavMeshAgent는 NavMesh 위에서 이동하는 캐릭터나 AI 에이전트를 제어하는 구성 요소입니다. NavMeshAgent는 속도, 회전, 도착 여부 등을 제어할 수 있는 다양한 기능을 제공합니다.

 

프로퍼티기능

에이전트 크기
Radius 에이전트의 반경은 장애물과 다른 에이전트 간의 충돌 계산하기 위해 사용됩니다.
Height 에이전트가 장애물 밑으로 지나갈 수 있는 높이 간격입니다.
Base offset 트랜스폼 피봇 포인트와 관련한 충돌 실린더의 오프셋입니다.
스티어링
Speed 최대 이동 속도(초당 월드 단위로)
Angular Speed 최대 회전 속도(초당 각도)
Acceleration 최대 가속(제곱 초당 월드 단위로)
Stopping distance 에이전트는 목표 위치에 가까워졌을 시 정지합니다.
Auto Braking 활성화 시 에이전트는 목적지에 다다를 때 속도를 줄입니다. 에이전트가 멀티플 포인트 사이에서 부드럽게 움직여야 하는 순찰과 같은 동작을 할 때에는 반드시 비활성화 시켜야 합니다.
장애물 회피
Quality 장애물 회피 품질입니다. 에이전트의 수가 많다면 장애물 회피 품질을 줄임으로써 CPU 시간을 절약할 수 있습니다. 회피를 없음으로 설정할 경우 충돌만 해결할 수 있을 뿐 다른 에이전트와 장애물에 대한 적극적인 회피는 하지 않습니다.
Priority 낮은 우선 순위의 에이전트는 이 에이전트의 회피 대상에서 제외됩니다. 값은 0에서 99사이에서 설정되어야 하며 낮은 숫자가 높은 우선 순위임을 의미합니다.
경로 찾기
Auto Traverse OffMesh Link 자동적으로 오프 메시 링크를 횡단하려면 트루로 설정해야 합니다. 애니메이션을 사용하거나 오프메시 링크를 횡단하는 특정한 방법을 사용하고 싶다면 반드시 이를 꺼놔야 합니다.
Auto Repath 활성화 시 에이전트가 경로 일부분의 끝에 도달하면 경로를 재탐색 합니다. 목적지까지 경로가 없다면 목적지에서 제일 가깝게 도달할 수 있는 위치까지 부분적인 경로가 생성됩니다.
Area Mask 영역 마스크는 에이전트가 경로 탐색에 어떠한 영역 타입을 고려할 것인지를 설명합니다. 내비메시 베이킹를 위해 메시를 준비할 때 각각의 메시 영역 타입을 설정할 수 있습니다. 예를 들어 계단을 특별한 영역 타입으로 표시하고 몇몇 캐릭터 타입의 계단 이용을 금지할 수 있습니다.

 

NavMeshObstacle

NavMeshObstacle은 움직이면서 길을 막아버리는 동적 오브젝트를 말합니다. Carve를 선택하는 경우, 네비메시의 이동가능 경로를 파먹는 식으로 구현이 됩니다.

 

Areas

특정한 경로의 이동 가중치를 부여하는 개념입니다. 특정 영역을 걸어서 지나가는 데 드는 비용(어려움)을 뜻하며, 경로를 탐색할 때에는 낮은 비용 영역순으로 선택됩니다. 또한 각각의 내비메시 에이전트에는 Area Mask 가 있어 에이전트가 이동할 수 있는 영역을 지정할 수 있습니다.

위의 예제에서, 영역 타입은 아래 두 개의 사용 사례에 사용됩니다.

  • Water 영역에는 높은 비용을 할당되어 있어 걸어가는 데 더 많은 비용이 소요됩니다. 이를 통해 물이 얕은 곳을 느리게 걸어가는 시나리오를 처리할 수 있습니다.
  • Door 영역에는 특정 캐릭터만 접근할 수 있습니다. 이를 통해 사람은 통과할 수 있지만 좀비는 통과할 수 없는 시나리오를 처리할 수 있습니다.