커스텀 내비게이션 영역 및 쿼리 필터

이 가이드에서는 내비게이션 시스템에 커스텀 영역 및 쿼리 필터를 활용하는 방법을 설명합니다.

Choose your operating system:

Windows

macOS

Linux

필요한 사전지식

이 페이지의 콘텐츠를 이해하고 활용하기 위해 다음 주제를 숙지해 주세요.

개요

언리얼 엔진의 내비게이션 시스템(Navigation System) 은 에이전트가 내비게이션 메시(Navigation Mesh) 를 사용하여 레벨 내에서 경로를 찾고 이동하도록 지원합니다.

에이전트는 내비게이션 메시 내에서 각 내비게이션 폴리곤의 비용을 비교하여 목적지에 도달하는 최적의 경로를 결정합니다. 경로상의 모든 폴리곤이 같은 비용이면 에이전트는 타깃까지의 최단 경로를 선택합니다(보통 직선입니다).

내비게이션 모디파이어 볼륨(Navigation Modifier Volume)내비게이션 쿼리 필터(Navigation Query Filter) 를 사용하여 내비게이션 폴리곤 비용에 인플루언스를 줄 수 있습니다.

내비게이션 모디파이어 볼륨(Navigation Modifier Volume)은 영역 클래스(Area Class) 를 사용하여 볼륨 내 내비게이션의 디폴트 비용(Default Cost) 배수를 결정합니다. 영역 클래스로 에이전트가 영역에 들어갈 때 적용되는 초기 비용인 고정된 영역 진입 비용(Fixed Area Entering Cost) 을 정의할 수도 있습니다. 영역 클래스는 에이전트가 레벨에서 이동하는 방식에 영향을 주기 위해 필요한 만큼 얼마든지 생성할 수 있습니다.

내비게이션 쿼리 필터(Navigation Query Filter) 는 하나 이상의 영역 클래스에 대한 정보를 포함하며, 필요에 따라 비용 값을 오버라이드할 수 있습니다. 쿼리 필터는 에이전트가 레벨에서 이동하는 방식을 더 자세히 커스터마이징하기 위해 필요한 만큼 얼마든지 생성할 수 있습니다.

목표

이 퀵스타트 가이드에서는 내비게이션 영역(Navigation Area)과 쿼리 필터(Query Filter)를 직접 생성하고 사용하여 동일한 내비게이션 메시에서 서로 다른 에이전트가 타깃을 향해 이동하는 방식에 영향을 줄 것입니다.

세부 목표

  • 내비게이션 모디파이어 볼륨으로 세 개의 커스텀 영역 클래스(Area Classes)를 만듭니다.

  • 에이전트가 사용할 두 개의 내비게이션 쿼리 필터(Navigation Query Filter)를 만듭니다.

1 - 커스텀 영역 클래스 만들기

  1. 액터 배치(Place Actors) 패널에서 내비 모디파이어 볼륨(Nav Modifier Volume) 을 검색합니다. 내비 모디파이어 볼륨 액터를 레벨로 드래그하여 Floor 메시 위에 배치합니다. 디테일(Details) 패널에서 스케일(Scale) 을 X = 2, Y = 6, Z = 1로 설정합니다.

    내비 모디파이어 볼륨 액터를 레벨로 드래그합니다

    스케일을 X = 2, Y = 6, Z = 1으로 설정합니다

  2. 콘텐츠 드로어(Content Drawer) 에서 우클릭하고 기본 에셋 생성(Create Basic Asset) 섹션의 블루프린트 클래스(Blueprint Class) 를 선택합니다.

    기본 에셋 생성 섹션의 블루프린트 클래스를 선택합니다

  3. 부모 클래스 선택(Pick Parent Class) 창에서 모든 클래스(All Classes) 섹션으로 이동하여 화살표를 펼칩니다. NavArea 를 검색하고 선택합니다. 선택(Select) 을 클릭하고 블루프린트를 BP_Area_Neutral 로 명명합니다.

    모든 클래스 섹션으로 이동하여 화살표를 펼칩니다. NavArea를 선택합니다

    블루프린트를 BP_Area_Neutral로 명명합니다

  4. 앞의 두 단계를 두 번 반복하고 블루프린트를 각각 BP_Area_Lane1BP_Area_Lane2 로 명명합니다.

  5. BP_Area_Lane1 블루프린트를 더블클릭하여 엽니다. 볼륨 내에서 이동할 때의 디폴트 비용(Default Cost) 배수와 고정된 영역 진입 비용(Fixed Area Entering Cost) 을 수정할 수 있습니다. 이 예시에서는 두 세팅 모두 디폴트 값으로 둡니다.

  6. 드로 컬러(Draw Color) 바를 클릭하고 파란색 을 선택합니다. 컴파일(Compile) 하고 저장(Save) 합니다.

    드로 컬러 바에서 파란색을 선택합니다

  7. BP_Area_Lane2 블루프린트에서 위 단계를 반복하여 드로 컬러(Draw Color)빨간색 으로 변경합니다.

  8. 레벨에서 내비 모디파이어 볼륨(Nav Modifier Volume) 을 선택하고 디테일(Details) 패널에서 Area Class 드롭다운을 클릭한 뒤 BP_Area_Neutral 을 선택합니다.

    드롭다운에서 BP_Area_Neutral을 선택합니다

    레벨에서 영역의 색이 변하는 것을 확인합니다

  9. 내비 모디파이어 볼륨(Nav Modifier Volume) 을 복제하고 위 단계에 따라 Area ClassBP_Area_Lane1 으로 변경합니다. 볼륨을 측면으로 옮겨서 아래와 같은 레인을 만듭니다.

    내비 모디파이어 볼륨을 복제하고 위 단계를 따라 Area Class를 BP_Area_Lane1으로 변경합니다

  10. 이전 단계를 반복하여 내비 모디파이어 볼륨(Nav Modifier Volume) 을 복제하고 Area ClassBP_Area_Lane2 로 설정합니다. 볼륨을 측면으로 옮겨서 아래와 같은 레인을 만듭니다.

    내비 모디파이어 볼륨을 복제하고 위 단계에 따라 Area Class를 BP_Area_Lane2로 변경합니다

  11. 이제 각 영역 클래스(Area Class) 값을 변경하여 실험하면서 타깃을 향한 에이전트의 경로에 영향을 줄 수 있습니다. 아래 예시에서는 BP_Area_NeutralBP_Area_Lane1디폴트 비용(Default Cost) 을 모두 4로 설정했습니다.

    이 예시에서는 BP_Area_Neutral과 BP_Area_Lane1의 디폴트 비용을 모두 4로 설정했습니다

  12. 이 예시에서는 BP_Area_NeutralBP_Area_Lane2디폴트 비용(Default Cost) 을 모두 4로 설정했습니다.

    이 예시에서는 BP_Area_Neutral과 BP_Area_Lane2의 디폴트 비용을 모두 4로 설정했습니다

섹션 결과

이 섹션에서는 세 개의 커스텀 영역 클래스(Area Class) 를 생성하고 레벨에 배치했습니다. 또한 영역 클래스디폴트 비용(Default Cost) 값을 변경하여 타깃을 향한 에이전트의 이동에 영향을 주었습니다.

2 - 내비게이션 쿼리 필터 만들기

  1. 콘텐츠 드로어(Content Drawer) 에서 우클릭하고 기본 에셋 생성(Create Basic Asset) 섹션의 블루프린트 클래스(Blueprint Class) 를 선택합니다.

    기본 에셋 생성 섹션의 블루프린트 클래스를 선택합니다

  2. 부모 클래스 선택(Pick Parent Class) 창에서 모든 클래스(All Classes) 섹션으로 이동하여 화살표를 펼칩니다. NavigationQueryFilter 를 검색하고 선택합니다. 선택(Select) 을 클릭하고 블루프린트를 BP_QueryFilter1 로 명명합니다.

    NavigationQueryFilter를 검색하고 선택합니다

    블루프린트를 BP_QueryFilter1로 명명합니다

  3. BP_QueryFilter1 블루프린트를 더블클릭하여 엽니다. Areas 섹션 옆의 추가(+) 버튼을 클릭하여 펼칩니다.

    Areas 섹션 옆의 추가 버튼을 클릭하여 펼칩니다

  4. Area Class 옆 드롭다운을 클릭한 뒤 BP_Area_Neutral 을 검색하고 선택합니다. Travel Cost Override 체크박스를 활성화하고 100 을 입력합니다.

    Area Class 옆 드롭다운을 클릭한 뒤 BP_Area_Neutral을 검색하고 선택합니다

    Travel Cost Override 체크박스를 활성화하고 100을 입력합니다

  5. 이전 단계를 반복하여 BP_Area_Lane1BP_Area_Lane2 를 목록에 추가합니다. BP_Area_Lane2 에서 Travel Cost Override 체크박스를 활성화하고 100을 입력합니다.

    이전 단계를 반복하여 BP_Area_Lane 1과 BP_Area_Lane 2를 목록에 추가합니다

  6. 콘텐츠 드로어(Content Drawer) 에서 BP_QueryFilter1 블루프린트를 우클릭하고 복제(Duplicate) 를 선택합니다.

  7. BP_QueryFilter2 블루프린트를 더블클릭하여 엽니다. 영역 클래스 BP_Area_Lane1 에서 Travel Cost Override 체크박스를 활성화하고 값을 100으로 설정합니다. 영역 클래스 BP_Area_Lane2 에서 Travel Cost Override 체크박스를 비활성화합니다.

    BP_Area_Lane1에서 Travel Cost Override를 활성화하고, BP_Area_Lane2에서 Travel Cost Override를 비활성화합니다

  8. 블루프린트를 컴파일(Compile) 하고 저장(Save) 합니다.

  9. 레벨에서 BP_NPC 블루프린트를 선택하고 디테일(Details) 패널에서 Filter Class 드롭다운을 클릭한 뒤 BP_QueryFilter1 을 검색하고 선택합니다.

    Filter Class 드롭다운을 클릭한 뒤 BP_QueryFilter1을 검색하고 선택합니다

  10. 시뮬레이트(Simulate) 를 클릭하고 에이전트가 내비게이션 쿼리 필터(Navigation Query Filter) 를 사용하여 목적지로 가는 최적의 경로를 결정하는 것을 확인합니다. BP_QueryFilter1 에서는 BP_Area_Lane1 이 가장 저렴한 경로이므로 에이전트는 이 경로를 사용하여 스피어에 도달합니다.

    BP_QueryFilter1에서는 BP_Area_Lane1이 가장 저렴한 경로이므로 에이전트는 이 경로를 사용하여 스피어에 도달합니다

  11. BP_NPC 블루프린트를 선택하고 Filter ClassBP_QueryFilter2 로 변경합니다. 시뮬레이트(Simulate) 를 클릭하고 에이전트가 BP_Area_Lane2 영역으로 목적지에 도달하는 것을 확인합니다.

    이제 에이전트는 BP_Area_Lane 2 영역으로 목적지에 도달합니다

섹션 결과

이 섹션에서는 두 개의 내비게이션 쿼리 필터(Navigation Query Filter) 를 생성하고 세 개의 영역 클래스(Area Class) 를 추가했습니다. 또한 여러 개의 내비게이션 쿼리 필터 를 사용하는 상황에 영역 클래스 에 할당되는 비용 값을 변경하여 에이전트의 내비게이션을 수정했습니다.