[0903 구경원] recast 네비메쉬
TRANSCRIPT
Recast 네비메쉬
돼지고기 ( 구경원 )데브루키
1. Recast 소개- 개발자 크라이시스 “리드 AI 프로그래머”Mikko Mononen.
- 랜더링OpenGL
-UISDL
- 자동으로 네비게이션 메쉬를 만들어 준다 .
- 레벨 디자이너들에게 효율적인 편의성을 제공 해주기 위한 툴이다 .
- 오픈소스이며 , 개발자 마음대로 수정하여 사용할 수 있다 .
- 다운로드 및 Wiki 를 통한 피드백 가능 .
http://code.google.com/p/recastnavigation/
Recast 를 사용하면 무엇이 좋은가요 ?
기존 네비메쉬 제작 .레벨 디자이너들이 지형모형에 맞추어서
한땀 한땀 만들어 나가는 장인정신의 결실 .
Recast 툴 사용 .옵션 설정으로 다양한 지형에 대해서 버튼
한번 클릭으로 누구나 쉽게 메쉬를 생성할 수 있다 . 작업 효율의 증가 .
권장사항 .FPS, 존 방식의 게임 .적은 지형을 필요로 하는 게임 .
그외사항 .MMORPG 와 같은 넓은 필드도 가능 .
어느 장르 게임에 어울리나요 ?
Detour A-Star 알고리즘의 길찾기 소스Recast복셀을 이용한 네비게이션 메쉬 만드는 소스RecastDemo 샘플 프로그램 소스
2. Recast 구성
3. Recast 기능
Rasterization
CellSize - 복셀 필드를 구성하는 Cell 의 넓이 . - 셀 조절 = 해상도 조절- 낮은 값으로 생성하면 지형 메쉬에 컬리티
높은 네비게이션 메쉬를 생성할 수 있다 . 하지만 처리비용이 높아지고 메모리를 많이 필요로 한다 .
낮은 값
높은 값
Rasterization
CellHeight- 복셀 필드를 구성하는 Cell 의 높이 . - 셀조절 = 해상도 조절- 낮은 값으로 생성하면 지형 메쉬에 근접한
높이를 가지는 네비게이션 메쉬를 생성할 수 있다 . 하지만 처리비용이 높아지지만 메모리 사용량은 크게 증가하지 않는다 .
높은 값
낮은 값
Agent
Height- 가상의 객체의 높이 .- 낮은 값으로 생성하면 낮은 값의 높이가
지나갈 수 있는 부분의 지역에 네비게이션 메쉬를 생성 해준다 .
낮은 값
높은 값
Agent
Radius- 가상의 객체의 둘레 .- 둘레의 수치를 조절하여 실제로 지역의
경계면에 플레이어가 움직일 수 있는 범위만큼 네비게이션 메쉬를 생성한다 .
높은 값
낮은 값
Agent
Max Climb- 가상의 객체의 올라갈 수 있는 높이 .- 수치를 높이면 Height 와는 다르게
객체의 올라갈수 있는 높이만큼 네비게이션 메쉬가 생성된다 .
낮은 값
높은 값
Agent
Max Slope- 가상의 객체의 올라갈 수 있는 경사도 .- 경사도가 있는 지형에 네비게이션 메쉬를
생성하고자 할 때에 수치를 높여주면 된다 .
높은 값
낮은 값
Region
Min Region Size- 연결되여 있지 않은 부분에 대해서
독립적인 네비게이션 메쉬를 생성해준다 .
낮은 값
높은 값
Region
Merged Region Size- 작은 영역의 수를 주위의 큰 지역에
병합시켜 준다 . - 작은 영역에서 발생하는 대각선 경로의
문제를 해결해준다 .- 값이 작을수록 일부분에서 얇고 긴
삼각형이 생성된다 .
낮은 값
높은 값
Polygonization
Max Edge Length- 네비게이션 메쉬의 경계를 나타내는
다각형 가장자리의 최대길이를 조절할 수 있다 .
- 값을 0 으로 하면 비활성화 된다 .
낮은 값
높은 값
Polygonization
Max Edge Error- 네비게이션 메쉬의 가장자리를 최대한
지형 메쉬의 윤곽에 따라 만들어 준다 .- 값이 낮을수록 다각형의 개수가 많이
지므로 제로 값은 권장하지 않는다 .
낮은 값
높은 값
Polygonization
Verts Per Poly- 다각형을 이루는 정점들의 수 .- 높은 값은 처리비용은 증가하지만 좀더
나은 네비게이션 메쉬를 생성할 수 있다 . - 일반적으로 6 이상의 사용은 권하지
않는다 .
높은 값 (6)
낮은 값 (3)
Detail Mesh
Sample Distance- 지형메쉬의 표면에 네비게이션 메쉬를
일치시킬 때 사용하는 샘플링 거리를 설정한다 .
- 낮은 값을 사용할수록 지형메쉬에 디테일하게 삼각형들이 생성되지만 연산이 높아진다 .
높은 값
낮은 값
Detail Mesh
Max Sample Error- Sample Distance 에서 발생할 수 있는
부족한 부분을 좀 더 디테일하게 만들어 주는 역할을 한다 .
- 값이 낮을수록 연산량이 많아지지만 디텔일은 높아진다 .
- 0 의 사용은 권장하지 않는다 .
낮은 값
높은 값
•툴 시연
4. 추가기능
툴에서 생성된 네비게이션 메쉬에 직접
A* 알고리즘을 테스트 할 수 있다 .
네비메쉬 다각형마다 플래그를
지정해서 원하는 옵션을 줄 수 있다 .
떨어져 있는 두 메쉬 간의 공간을
가상으로 연결해주는 기능을
제공한다 . ( 포탈기능 )
•툴 시연
주의사항• 메쉬당 버텍스 수가 65536 개로 제한되여
있다 .
• -4000 ~ 4000 사이의 좌표 안에 해당하는 메쉬에 대해서 높은 정확성을 가질 수 있다 .
• 너무 디테일하게 네비메쉬를 생성하려고 하면 상당히 많은 메모리를 필요로 해서 생성이 안되거나 오류가 날 수 도 있다 .
• 또한 너무 느슨하게 생성하면 중복된 좌표로 인한 네비메쉬 겹침 현상이 발생할 수 도 있다 .
주의사항
3. 작업
• 사용 확장자 *.obj
• Meshes 폴더에 넣어두면 자동으로 툴의 목록에 읽혀진다 .
• *.obj 내부는 TXT 형태로 상당히 심플하게 구성 되여 있다 .
.obj 해부
v 버텍스 좌표 f 인덱스 번호
지형 툴에서 정점 데이터
추출.obj
파일 생성Recast 에서
랜더링
네비메쉬 생성생성된 네비메쉬
정점 데이터 추출
사용
사용 순서
레벨 디테일
- 넓은 지형을 일정한 크기의 타일로 나누어서 부분 타일마다 네비게이션 메쉬를 생성한다 .
- 부분 적으로 연산이 필요하기 때문에 메모리 사용량도 부분적이다 .
- 타일메쉬를 사용하면 저장기능도 제공한다 .
Tile Mesh
•Q&A
•END