이 튜토리얼은 RecastGraph를 사용하여 게임에 자동으로 네비메시를 생성하는 방법을 보여줍니다.
이 튜토리얼은 네비메시 사용의 일부입니다.
참고: Recast Graph는 A* Pathfinding Project Pro에서만 사용할 수 있습니다. |
다음과 같은 장면이 있다고 가정해보겠습니다: 가운데에 상자가 있는 간단한 바닥.
Recast 그래프는 네비메시를 자동으로 생성하여 많은 시간을 절약할 수 있습니다. 이전에 수동으로 생성한 네비메시 그래프를 제거하고 대신에 recast 그래프를 추가할 수 있습니다.
Recast 그래프는 장면에서 모든 메시(콜라이더가 아닌 다각형)를 가져와서 이를 복셀화합니다. 2D 복셀화의 아날로그는 여러 개의 삼각형을 가져와서 이를 텍스처에 그리는 것이며, 텍스처는 픽셀로 구성됩니다. 3D 픽셀은 복셀이라고 합니다. 그런 다음 캐릭터 높이, 캐릭터 반경 및 기타 유사한 설정과 같은 설정에서 보행 가능한 네비메시가 생성됩니다.
그래프를 직접 스캔하는 것은 대부분 좋은 결과를 얻지 못할 것입니다. 먼저 "Snap Bounds To Scene" 버튼을 누르세요. 이 버튼은 장면의 모든 메시를 찾아서 그래프의 경계를 해당 메시를 포함하도록 구성합니다. 경계를 수동으로 지정할 수도 있습니다. 경계는 씬 뷰에서 흰색 와이어 큐브로 시각화됩니다.
너비와 깊이 값은 아마도 너무 낮을 것입니다. 이러한 필드는 직접 편집할 수 없으며 대신 셀 크기(각 복셀의 크기)를 수정하여 수정해야 합니다. 이 장면에서 셀 크기를 0.1로 설정했으며, 우리의 평면이 10단위 폭이므로 그래프가 정확하게 포함되어 있습니다. 따라서 너비와 깊이 샘플의 수는 100이 됩니다. 다음으로 타일 크기를 100으로 설정하세요. Recast 그래프는 그래프를 사각형 청크로 나누기 위해 타일을 사용합니다. 타일을 완전히 비활성화할 수도 있습니다. 이는 'Use Tiles' 설정을 'Dont Use Tiles'로 설정하여 수행할 수 있습니다. 그러나 타일을 사용하는 것이 일반적으로 더 좋습니다.
- 타일을 병렬로 스캔하여 스캔 속도를 크게 높일 수 있습니다.
- 런타임 중에 recast 그래프의 개별 타일을 업데이트할 수 있으며, 이는 전체 그래프를 업데이트하는 것보다 빠릅니다.
- navmesh 커팅은 타일별로 작동하며, 그래프의 작은 부분을 업데이트하는 것이 더 빠릅니다.
- 매우 큰 다각형을 분할하여 매우 비최적의 경로의 위험을 줄입니다(이에 대한 자세한 내용은 네비메시 사용에서 다룹니다).
'최적의' 타일 크기는 없지만, 일반적으로 64에서 256 사이의 값이 사용됩니다.
지금 스캔을 누르면 다음과 같은 결과가 나올 것입니다: (당신의 설정을 내 것과 비교할 수 있습니다)
Recast 그래프 설정에서 'Show Outline' 및 'Show Surface'를 활성화하는 것이 좋습니다.
거의 모든 것이 잘 보입니다. 유일한 문제는 캐릭터도 네비메시에 포함되어 있다는 것입니다. 이는 우리가 원하지 않습니다(캐릭터는 이동하기 때문에 정적이 아닙니다). 따라서 캐릭터를 별도의 레이어(예: Transparent FX)에 배치한 다음, recast 그래프의 레이어 마스크 필드를 구성하여 네비메시 생성에서 해당 레이어를 제외하도록 설정합니다.
재생을 누르면 스캔된 그래프가 표시되고 캐릭터가 목표 지점으로 이동해야 합니다.
Recast 그래프에 대한 참고 사항
Recast 그래프의 해상도(인스펙터의 너비/깊이 필드)는 생성된 네비메시의 모양에 큰 영향을 미칩니다. 아래 이미지는 동일한 환경을 보여주지만 복셀화에 대해 다른 해상도를 설정한 것입니다. 큐브 사이의 얇은 영역은 충분히 높은 해상도가 설정된 경우에만 이동 가능합니다.
다른 예시를 보여드리겠습니다:
라스터화 해상도는 recast 그래프 생성에 걸리는 시간에 큰 영향을 미치지만, 런타임 성능에는 직접적인 영향을 미치지 않습니다(단, 전체 그래프 업데이트는 제외합니다). 간접적으로 큰 해상도는 그래프에 더 많은 세부 정보를 추가할 수 있으므로 런타임 성능에 약간 영향을 미칠 수 있습니다.
큰 세계용 recast 그래프는 스캔하는 데 상당한 시간이 소요될 수 있으므로 시작 시간을 개선하기 위해 결과를 캐시하는 것이 좋습니다.
내비메시 섹션 조정
네비메시의 일부를 조정하는 것은 때로 필요합니다. 예를 들어 특정 영역을 완전히 이동할 수 없게 만들거나, 특정 구역을 네비메시에서 제외하려는 경우가 있습니다.
이를 위해 RecastMeshObj 구성 요소를 사용할 수 있습니다. 이를 원하는 객체에 추가하고 설정을 조정하면 됩니다.
RecastMeshObj 구성 요소를 사용하면 다음을 수행할 수 있습니다:
- 그래프에서 개체를 완전히 제외합니다.
- 물체의 표면을 걸을 수 없게 만듭니다.
- 물체의 표면을 걸어 다닐 수 있게 만듭니다(이것은 단지 기본 동작입니다).
- 인접한 개체 사이의 navmesh에 이음새를 만듭니다.
- 특정 태그로 개체의 표면을 표시합니다(태그 작업 참조).
RecastMeshObj를 참조하세요. |
'유니티 에셋 > A* Pathfinding project pro' 카테고리의 다른 글
Graph Types (0) | 2024.05.21 |
---|---|
The A* Inspector (0) | 2024.05.20 |
Using navmeshes > Creating a navmesh manually (0) | 2024.05.20 |
Using navmeshes (0) | 2024.05.20 |
Get Started Guide > Writing a movement script (0) | 2024.05.20 |