Navigation Mesh란 무엇인가?
- Navigation Mesh는 캐릭터가 이동할 수 있는 공간을 정의한 지도다.
- 흔히 자동차에서 자주 쓰이는 네비게이션의 AI버전 이라고 생각해도 좋다.
- 길 찾기(Pathfinding)의 기반이 되는 데이터 구조며
- NavMeshBoundsVolume이라는 박스 형태의 볼륨 안에서 바닥 표면을 분석하여 이동 가능한 구역만 녹색으로 표시해주는 시스템이다.
NavMesh가 AI에게 필요한 이유
AI캐릭터가 목적지로 이동할 때 장애물을 피하거나, 점프가 불가능한 곳을 인식하려면 이동 경로 정보가 있어야한다.
만약 없다면? AI가 직선경로로 특정 위치로 이동을 하게 돼 벽을 뚫어버리거나 아니면 벽에 막힌 채 그냥 계속 벽에 비비게 될 것 이다.
NavMesh를 배치하는 방법
1. 액터 배치 패널을 연다
2.내비메시 바운드 볼륨을 뷰포트에 드래그한다.
3. 크기를 키운다.
참고로 브러시 세팅에서 키울 수 있다.
이렇게만 해주면 세팅은 끝
그 다음은 캐릭터를 움직여주면 되는데, 이거는 다음에 비헤이비어 트리 관련 에서 자세히 다룰것이다.
실수하기 쉬운 점
- NavMeshBoundsVolume이 캐릭터가 있는 지형을 충분히 덮지 않으면, AI가 이동을 못한다.
- NavMesh를 덮고 있는 메시에 NavArea_Obstacle이 있거나 콜리전이 Blocking이면 그 부분은 이동 불가로 처리된다.
- AI가 너무 큰 경우, NavMesh 설정에서 Agent Radius, Height 값을 키워줘야 한다.
Link Proxy
Nav Link Proxy는 NavMesh로 자동 연결되지 않는 두 지점을 수동으로 연결해주는 도구다.
역할과 기능
- NavMesh는 지형의 형태에 따라 자동으로 길을 만들어주지만, 높이가 다른 플랫폼이나 장애물 등으로 인해 NavMesh가 끊기는 경우가 있다.
- 이럴 때 Nav Link Proxy를 사용해서 AI가 지나갈 수 있는 경로를 강제로 연결.
- Nav Link Proxy는 말 그대로 “길이 단절된 구간에 다리를 놓는 역할”을 함.
구성요소
- Start Point: 경로의 시작 위치
- End Point: 경로의 끝 위치
- Link Direction: 방향 설정 (OneWay, TwoWay)
- bSmartLinkIsRelevant: Smart Link 기능 활성화 여부
Smart Link
Smart Link는 AI가 NavMesh로는 연결되지 않은 두 지점을 “특수한 방식”으로 연결할 수 있게 해주는 시스템이다.
사용하는 경우
- 계단을 뛰어넘거나
- 높은 언덕에서 떨어지거나
- 점프해서 넘어가야 하는 갭(틈)이 있을 때 등
Nav Mesh는 자동으로 이 공간을 이어주지 않는데,
이 때 Smart Link를 사용하면 NavMesh의 비연결 구역도 AI가 “점프”나 “도약” 같은 특수 동작으로 이동할 수 있게 된다.
Smart Link (NavLinkProxy)와 일반 Proxy Link의 차이
항목 | Smart Link | 일반 Proxy Link |
목적 | AI가 특수 동작을 하며 이동 | 단순한 경로 연결 |
동작 | 점프, 떨어지기, 벽 타기 등 | 그냥 NavMesh끼리 연결 |
커스터마이징 | OnSmartLinkReached 델리게이트로 가능 | 불가능 |
예시 | AI가 점프해서 다른 플랫폼으로 이동 | 벽 뒤로 돌아가기 위한 우회 경로 설정 |
정리
NavMesh는 게임 내에서 레벨 디자인과 맞물려있고, 레벨과 AI의 연결고리이기 때문에 잘 이해하고 사용해야되고, 보통 AI의 이동 퀄리티 문제는 NavMesh에 문제일 경우가 많다.
'언리얼 공부 > AI' 카테고리의 다른 글
블랙보드 설정과 비헤이비어 트리로 AI행동패턴 만들어보기 (0) | 2025.05.01 |
---|---|
AI Perception (0) | 2025.04.02 |
비헤이비어 트리 (0) | 2025.03.25 |