320x100
C++용 NaviMesh 생성(Recast)과 길 찾기 알고리즘(detour) 라이브러리
언리얼 내에서 쓰인다고 하며, 길 찾기 알고리즘으로 A* 알고리즘을 사용한다.
공식 홈페이지
https://github.com/recastnavigation/recastnavigation
다운로드 하고 솔루션 파일이 없으므로 VS에서 폴더로 열어 빌드 가능하게 만들어야 한다.
Demo UI 옵션 설명
- Cell - Size
복셀 필드를 구성하는 Cell의 넓이
낮은 값으로 생성하면 퀄리티 높은 네비메쉬를 생성할 수 있다(처리비용 증가, 메모리 필요)
- Cell - Height
복셀 필드를 구성하는 Cell의 높이
낮은 값으로 생성하면 지형 메쉬에 근접한 높이를 가지는 네비메쉬를 생성할 수 있다(처리비용 증가)
Agent - Height
가상 객체(캐릭터) 높이
가상 객체가 통과할 수 있는 부분에 대해서 네비메쉬를 생성할 수 있다.
Agent - Radius
가상 객체(캐릭터) 둘레
가상 객체가 통과할 수 있는 지역에 대해서 네비메쉬를 생성한다
Agent - Max Climb
가상 객체(캐릭터)가 올라갈 수 있는 높이
값을 높일 수록 더 높은 지형에 네비메쉬를 생성한다.
Agent - Max Slope
가상 객체(캐릭터)가 올라갈 수 있는 경사도
높은 값일 수록 고각의 경사에 네비메쉬를 생성한다
Region - Min Region Size
연결되어 있지 않은 지형에 대해 독립적인 네비메쉬를 생성한 최소 크기
Region - Merged Region Size
지역 병합의 최소 크기
작은 영역에서 발생하는 대각선 경로의 문제를 해결해준다
값이 작을수록 일부분에서 얇고 긴 삼각형이 생성된다
Polygonization - Max Edge Length
네비메쉬의 경계를 나타내는 다각형 가장자리의 최대 길이(0이면 비활성화)
Polygonization - Max Edge Error
네비메쉬의 가장자리를 최대한 지형에 따라 만들어준다
값이 낮을 수록 다각형의 개수가 많아진다(0은 비권장)
Polygonization - Verts Per Poly
다각형을 이루는 정점들의 수
높은 값은 좀 더 나은 네비메쉬를 생성한다(처리비용 증가, 6이상은 권장 하지 않음)
Detail Mesh - Sample Distance
지형의 표면에 네비메쉬를 일치시킬 때 사용하는 샘플링 거리 설정
낮은 값을 사용할수록 지형에 디테일하게 삼각형 생성(연산 증가)
Detail Mesh - Max Sample Error
Sample Distance에서 발생할 수 있는 부족한 부분을 좀 더 디테일하게 만들어 준다
값이 낮을 수록 디테일이 높아짐(연산량 증가, 0은 권장하지 않음)
주의 사항
각 메쉬당 버텍스 수가 65536개로 제한되어있다.
-4000 ~ 4000 사이이 좌표 안에 해당하는 메쉬에 대해 높은 정확성을 가진다.
너무 디테일하게 네비메쉬를 생성하려고 하면 많은 메모리가 필요해서 생성이 안되거나 오류가 날 수 있다.
작업
사용 확장자: *.obj
2021.11.10 - [게임/Unity] - Unity NaviMesh에서 obj 파일용 Mesh 데이터 뽑기
사용 순서
지형 툴에서 정점 데이터 추출
.obj 파일 생성
Recast에서 렌더링(Build)
네비메쉬 생성
생성된 네비메쉬 정점 데이터 추출(.bin)
사용
Tile Mesh
넓은 지형을 일정한 크기의 타일로 나눠 부분 타일마다 네비메쉬 생성
부분적으로 연산이 필요하기 때문에 메모리 사용량도 부분적이다.
출처: https://www.slideshare.net/KooKyeongWon/0903-recast
함수 설명
Sample::saveAll() - Build한 NaviMesh를 *.bin 파일로 저장
320x100
'게임 > 라이브러리' 카테고리의 다른 글
flatbuffer (0) | 2021.10.23 |
---|---|
glog (0) | 2021.08.29 |
rapidjson (0) | 2020.07.04 |