AI 에이전트가 커브를 따라 움직 이도록하려면 어떻게해야합니까?


12

현재 제 기본 AI 프레임 워크에는 일련의 포인트로 구성된 들쭉날쭉 한 경로를 따라 이동하는 에이전트가 있습니다.

탐색 경로

그들은 단순히 자신의 위치를 ​​한 지점에서 다음 지점으로 이동함으로써이를 수행합니다. 다음 지점에 도달하면 다음 지점으로 이동합니다. 곡선 버전의 경로를 따라 부드럽게 이동하도록 어떻게 변경하고 곡선을 생성합니까?


그들은 다음 요점을 어떻게 선택합니까?
— FxIII

@FxIII 죄송합니다. 이전에이 의견을 보지 못했습니다. 새로운 검색 대상을 어떻게 선택 했습니까? 아니면 다음 검색 지점을 어떻게 선택 했습니까?
— SirYakalot

답변:


4

일종의 경로 스무딩을 수행했습니다. 물론, bummzack이 지적했듯이 경로 스무딩을 수행하면 에이전트가 합법적으로 움직일 수 있도록해야합니다.

Gamasutra 의이 기사 는 경로 다듬기, 적법한 회전 및 사실적이고 부드러운 회전 알고리즘을 포함하여 알아야 할 모든 것을 설명합니다.

약간 더 간단한 또 ​​다른 대안 은 작은 경계 원 / 구와 함께 찾기 동작 을 사용 하여 상담원이 경로의 다음 지점에 있는지 또는 그 지점에 가까운지를 확인하는 것입니다.


7

제어점을 이미 알고 있기 때문에 곡률 알고리즘 (예 : Hermite 또는 Cosine)을 사용하도록 보간 코드를 업데이트하면됩니다.

이 사이트는 시작하기에 좋은 설명과 샘플 코드를 제공합니다.

폴 버크 보간법

Sol :: 튜토리얼-보간 트릭


생성 된 커브가 갑자기 장애물에 부딪히면 어떨까요?
— bummzack

이것은 프레임 당 에이전트의 이동을위한 것입니다. 동일한 충돌 감지 알고리즘도 여전히 적용됩니다. 충돌이 감지되면 제어점을 변경하여 물체를 피하거나 (어려운) 다른 이동 알고리즘을 일시적으로 사용하십시오.
— Doug.McFarlane

@bummzack은 좋은 지적이며 그에 대한 대답은 탐색 메쉬를 사용하고 그에 따라 곡선을 부드럽게하는 것입니다. 그러나 지금은 간단한 탐색 그래프 로이 작업을 수행하기 때문에 평활화 만으로이 문제를 해결할 것입니다. 약간의 경로.
— SirYakalot

@bummzack : 곡선 경로 생성 알고리즘 위에 장애물 회피를위한 스티어링 동작을 추가합니다.
— imre

0

여기서는 그레인에 반대하여 커브를 미리 생성하는 대신 원점 복귀 를 만드는 데 사용하는 것과 동일한 논리를 사용하여 프레임 단위로 처리하는 것이 좋습니다. -missile .

두 점 사이에 벽이있을 때 특별한 경우가 필요하지 않기 때문에 훨씬 쉽고 현실적인 방법 일 것입니다. 평소와 같이 충돌 감지 만 처리하면됩니다.

단점은 움직임이 차선책으로 보일 것입니다. 오브젝트는 항상 하나의 웨이 포인트에서 다음 웨이 포인트로 가장 직접적인 경로를 갖습니다. 즉, 스플라인과 달리 웨이 포인트 2를 이미 통과 할 때까지 웨이 포인트 3 으로 향하지 않습니다 . 상황에 따라, 그렇지 않을 수도 있습니다. 웨이 포인트를 조정하여 문제를 해결할 수 있습니다.


1
이것은 본질적으로 내가 제안한 탐색 동작입니다.
— Ray Dey

0

경로 찾기는 경로를 제공해야하며 경로를 수정해서는 안됩니다. 긴 경로 대 짧은 경로와 마찬가지로 부드러운 곡선이있는 경로보다 날카로운 회전이있는 경로를 고려하여 경로 파인더 알고리즘을 수정할 수 있다고 생각합니다.

그것에 대해 깊이 생각할 순간을 찾을 수 있다면 여기에 해결책을 게시 할 것입니다. 그러나 이것이 갈 길이라고 생각합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.