Last Update:04/02/2026



Overview

TCATNavigationQueryFilter는 TCAT의 인플루언스 맵(Influence Map) 데이터를 기반으로 AI의 이동 경로를 세밀하게 제어하는 기능입니다.

일반적인 쿼리가 “어디로 갈 것인가(Destination)” 를 결정한다면, 이 기능은 **”어떤 길로 갈 것인가(Path)"**를 결정합니다.

1. 왜 필요한가요?

우리가 SearchHighestValue 쿼리를 사용해 AI에게 '가장 안전한 장소(Safe Influence Map에서 ****값이 가장 높은 곳)'를 목적지로 정해주었다고 가정해 봅시다.

2. 동작 원리

이 기능은 언리얼 엔진 Behavior TreeMoveTo 노드에 있는 Filter Class를 확장하여 동작합니다.

  1. AI가 경로를 계산할 때, 네비게이션 메쉬(NavMesh)의 각 지점마다 **이동 비용(Cost)**을 계산합니다.

  2. TCATNavigationQueryFilter는 특정 인플루언스 맵의 값을 이 Cost에 실시간으로 반영합니다.

  3. 즉, **"인플루언스 맵의 값이 높은 곳 = 지나가기 힘든(비싼) 곳"**으로 인식하게 만듭니다.

    <aside> 💡 인플루언스 맵의 값이 높은 곳 = 지나가기 쉬운(싼) 곳으로 인식하게 만들 수도 있습니다. 아래에서 설명할 Cost Multiplier를 1보다 작은 값으로 설정하면 됩니다.

    </aside>

3. 활용 예시: 적진 피해 안전지대로 이동하기

상황: AI가 가장 안전한 곳으로 대피해야 하지만, 가는 길목에 적군이 포진해 있습니다.

How To Use

Creating


  1. let’s create an AI character. In your Content Browser, right-click and select Blueprint Class.

    image (4).png

  2. TCATNavigationQueryFilter를 선택하고, Select를 클릭합니다.

    image.png

Viewing Property


  1. 생성한 Filter를 open합니다.

  2. 상단의 Class Defaults를 클릭합니다.

    image.png

  3. Details창에서 다음과 같은 모습을 보실 수 있습니다.

image.png

이 Property들을 작성하여, 각 지점에 Cost를 정하는 방법을 결정합니다.

Editing Property


Filter Mode

모드 이름 설명 특징
Binary Threshold 이진 임계값 특정 수치 이상의 영향력이 있는 곳을 **"벽(Wall)"**처럼 인식하게 합니다. **"갈 수 있다 / 없다"**를 명확히 나눌 때 유용합니다. (예: 불바다, 독가스 지역)
Linear Boost 선형 가중치 영향력이 높을수록 비용을 점진적으로 높여 **"부드러운 회피(Soft Avoidance)"**를 유도합니다. 아예 못 가는 것은 아니지만, 가급적 피해서 가고 싶을 때 유용합니다. (예: 적의 시야 거리, 진흙탕)

Map Tag

어떤 Influcen map에 Cost를 적용할 지 결정합니다.

Cost Multiplier And Influence Threshold

A. Filter Mode가 Binary Threshold 모드일 때

인플루언스 값이 설정된 InfluenceThreshold를 넘으면, 해당 지역의 이동 비용에 CostMultiplier를 곱합니다.

공식: if (Influence >= Threshold) FinalCost = BaseCost * CostMultiplier;

B. Filter Mode가 Linear Boost 모드일 때

인플루언스 값의 크기에 비례하여 이동 비용을 선형적으로 증가시킵니다.

공식: FinalCost = BaseCost * (1.0 + (Influence * CostMultiplier));

Applying


Behavior Tree에서, 필터를 적용하고 싶은 Move To 노드의 Details > Node > Filter Class에서, 작성한 TCATNavigationQueryFilter를 선택하면 됩니다.

image.png