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.