스크립팅하는애님 2024. 5. 22. 22:29

태그와 페널티를 사용하는 Recast 그래프 예제 장면


이 예제 장면은 태그를 사용하여 서로 다른 에이전트가 그래프의 서로 다른 영역을 통과할 수 있게 하는 방법을 시연합니다. 또한 일부 에이전트가 그래프의 특정 영역을 피하도록 하는 방법도 보여줍니다.

Contents

Graph setup

이 장면에서는 RecastGraph GridGraph 모두 잘 작동할 수 있습니다. 그러나 이 예제에서는 Recast 그래프가 임의로 선택되었습니다.

지면이 거의 평평하기 때문에 Recast 그래프는 기본 설정에서 많은 수정을 필요로 하지 않습니다. 가장 눈에 띄는 변경 사항은 다음과 같습니다:

  • 그래프의 셀 크기가 약간 줄어들어 세계를 더 정확하게 표현합니다.
  • 캐릭터 반경도 장면에서 사용될 에이전트의 크기를 반영하도록 변경되었습니다.
  • 그래프의 경계 상자가 세계에 맞도록 변경되었습니다.
  • 레이어 마스크는 기본 레이어만 포함하도록 변경되었습니다. 이는 이 장면의 모든 장애물이 기본 레이어에 있기 때문입니다.

Tags that influence traversability

장면에는 빨간 복도와 파란 복도가 하나씩 있습니다. 또한 빨간 에이전트와 파란 에이전트 두 개가 있습니다. 빨간 에이전트는 빨간 복도만 통과할 수 있고, 파란 에이전트는 파란 복도만 통과할 수 있습니다.

 

이는 태그를 사용하여 구현되었습니다. 빨간 복도의 지면에는 "Red" 태그가 할당되었고, 파란 복도에는 "Blue" 태그가 할당되었습니다. 마찬가지로 에이전트는 기본 지면 태그와 자신의 색상에 해당하는 태그만 통과할 수 있도록 구성되었습니다.

복도의 지면 타일에는 RecastMeshObj 컴포넌트가 추가되었습니다. 이를 통해 Recast 그래프가 이 메시를 스캔하는 방식을 변경할 수 있습니다. 이 경우, 표면 유형이 "태그가 있는 보행 가능 표면"으로 변경되었고, 태그는 각각 "Red" 또는 "Blue"로 변경되었습니다.


에이전트의 경우,  FollowerEntity 컴포넌트가 태그를 고려하도록 약간 조정되었습니다. 특히 "Tags" 항목 아래에서 각 봇이 통과할 수 없는 태그가 비활성화되었습니다.

예를 들어, 빨간 봇이 경로를 계산할 때는 모든 파란 태그 노드를 통행 불가로 간주합니다.

 

Working with tags  참고


Tags with penalties

이전 섹션에서 설명한 태그를 기반으로, 장면에는 또한 검은색 영역이 있습니다. 이 영역은 두 에이전트 모두 통과할 수 있지만, 파란 에이전트는 큰 우회를 하지 않는 한 이 영역을 피하려고 합니다.

 


첫 번째 비디오에서는 우회가 상대적으로 짧아서 파란 에이전트가 검은색 영역을 피합니다. 하지만 두 번째 비디오에서는 우회가 더 길어져서 파란 에이전트가 대신 검은색 영역을 통과하기로 결정합니다.

이 설정 방식은  FollowerEntity 컴포넌트의 "Tags" 항목 아래에서 "BlackHighPenalty" 태그가 파란 에이전트에게 높은 페널티로 설정된 것입니다. 지면은 이전 섹션에서 설명한 것처럼 RecastMeshObj 컴포넌트를 사용하여 "BlackHighPenalty" 태그로 태깅되었습니다.

Working with tags  참고