실시간 동적 길 찾기?


19

현재 길 찾기 연구를하고 있으며 시뮬레이션은 다음과 같습니다. 시작점과 끝 점이 표시된 3D 장면이 있으며 길 찾기를 돕기 위해 탐색 메시, 웨이 포인트 및 다각형을 만들 수 있습니다.

나는 A * 알고리즘과 그 변형 중 일부를 시도했으며 완벽하게 작동합니다. 그러나 이제는 '동적'경로 찾기에 더 관심이 있습니다. 예를 들어 A 지점에서 B 지점으로 경로를 찾는 동안 새로운 장애물이 갑자기 나타나면 알고리즘에서 즉시 경로를 다시 계획하고 검색을 다시 시작할 수 없도록하고 싶습니다.

나는 D * 알고리즘에 대해 약간의 독서를했고 이것이 내가 필요한 것에 적합하거나 이것이 과잉 인 것처럼 보일지 궁금해했다.

그래서 내 질문은 기본적으로 : 실시간 동적 경로 찾기에 가장 적합한 알고리즘은 무엇입니까? 또는 대신 어떤 기술 조합을 사용할 수 있습니까?


그들이 어떤 알고리즘을 사용하는지 잘 모르겠 기 때문에 이것이 대답은 아니지만, 이것이 당신이 모방하려고하는 것이라고 상상합니다. youtube video
MichaelHouse

A *를 연장하는 것은 어떻습니까? 오픈 / 클로즈 세트의 노드에 저장된 내용을 원하는만큼 확장하고 A *를 확장하여 고려합니다.
user712092

나는 당신과 같은 대답을 찾고 있었고 HPA *에 관한 기사를 찾았으며 비디오 게임과 관련이 있습니다. 나는 여전히 기사를 찾고 아마도 그것을 구현할 것입니다. 지금까지 성능을 향상시키는 것이 의미가 있으며 정적 및 동적 환경 모두에서 사용할 수 있습니다. 여기 기사가 있습니다
NelsonPunch

답변:


19

D *는 매우 관련이 있습니다. 구현을 권장하지 않습니다. 똑똑한 / 경험이 많은 사람들이 자금을 지원하고 개발 한 프로젝트 일지라도 D *는 올바른 고통을주기 때문에 D * 라이트가 사용됩니다.

Left 4 Dead의 길 찾기에 대한 토론이 포함 된이 프레젠테이션에 관심이있을 수 있습니다.

http://www.valvesoftware.com/publications/2009/ai_systems_of_l4d_mike_booth.pdf

한 가지 방법은 대략적인 레벨 A * 검색을 사용하여 에이전트의 일반 경로를 얻은 다음 에이전트의 로컬 환경에 대한 세부 레벨 A * 검색을 수행하는 것입니다. 이렇게하면 지형이 변경되면 코스 세부 사항 A * 검색을 빠르게 다시 계산 한 다음 환경의 작은 세그먼트에 대한 세부 사항 A * 검색을 빠르게 다시 계산할 수 있습니다. 이것은 완벽하지 않습니다. 장애물이 여러 코스 상세 그래프 노드를 차단할 수없는 한 대부분의 게임에 적합합니다. 에이전트가 100 개 미만인 경우이 방법을 권장합니다.

수백 또는 수천 명의 에이전트를 지원하려는 경우 연속 군중과 같은 것을 구현할 수 있습니다. 이 연구를 참조하십시오 : http://grail.cs.washington.edu/projects/crowd-flows/ 동적 환경에서 수천 명의 행위자를 지원할 수있는 순수한 CPU 기반 방법에 대해 설명합니다.

수만 또는 수십만 개의 에이전트를 지원하려는 경우 GPU 지원을 통해 연속 군중과 같은 것을 구현할 수 있습니다. 관련 연구는 여기를 참조하십시오 : https://a248.e.akamai.net/f/674/9206/0/www2.ati.com/misc/siggraph_asia_08/GPUCrowdSimulation_SLIDES.pdf

여기에 행동에 연속 군중을 보여주는 비디오입니다 : http://www.youtube.com/watch?v=lGOvYyJ6r1c (. 자동차와 도시 주위에 산책하는 사람의 수백에 영향을 미치는 정지 신호와 같은 큰 동적 장애물을 볼 수 4시 10분으로 건너 뛰기)


링크 주셔서 감사합니다. D * Lite는 내가 읽은 내용에서 옳은 것 같습니다
Andrei

9

간단한 조향 동작을 살펴 보셨습니까?

http://www.red3d.com/cwr/steer/

로컬 장애물을 피하기 위해 A * 경로에서 방향을 바꾸고 나면 경로로 돌아갈 수 있습니다.

여러 동작을 결합하는 것도 매우 쉽습니다.


+1. 왜 다운 다운되었는지 확실하지 않습니다. 이 간단하고, 아스 커 찾던 것이 가능하지 대답이지만, 나는 그것이 온 주제라고 생각하고 나는 그것을 발견 유용 :)
Olhovsky

1
최신 게임에서이 조향 동작을 읽고 구현했습니다. 이제 다른 방법으로 다시 대체 할 것입니다. 나는 그것이 미리 계산 된 최적의 경로와 함께 잘 작동하지 않는다고 생각합니다. 여러 행동의 "조합"은 일반적으로 나쁜 결과를 낳습니다. 그래도 계속 사용하려고한다면 동시에 길을 따라 가려고하지 마십시오. 대신 장애물을 통과하면 100 % 조향으로 전환하고 100 % 뒤로 전환하십시오.
Imi

4

귀하의 게시물이 스택 교환의 "게임 개발"부분에 있으므로 대부분의 게임 프로그래머가 귀하에게 대답 할 내용은 다음과 같습니다. 실시간 동적 경로 찾기가 아니라 실시간 동적 경로 *에 대한 것입니다 !

내비게이션 그래프의 가장자리가 완전히 방해되는 일부 가장자리의 경우 패스 파인더가 다른 경로를 다시 계산해야하지만 대부분의 경우 장애물을 중심으로 개체를 조정하고 위치 예측을 수행하고 올바른 방향으로 피할 수 있습니다. 대부분의 게임에서 시간이 지남에 따라 동적 에이전트의 위치를 ​​예측하기에는 너무 무겁습니다. 특히 플레이어의 행동이나 에이전트 결정을 정확하게 예측할 수 없기 때문입니다.

따라서 내 조언은 Steering Behaviors (http://red3d.com/cwr/steer/)를 구현하여 시작하고 경로가 불가능한 경우를 처리 한 다음 그 위에 레이어를 추가하여 가장자리가 아닌 경우를 처리하는 것입니다. 이전의 두 가지 솔루션으로 처리되지 않습니다.

도움이 되었기를 바랍니다


아뇨 "경로 추적"은 경로 찾기와 동일합니다. 데스크탑 PC에는 장애물이 변경 될 때 수천 개의 에이전트를 실시간으로 허용하는 많은 접근 방식이 있습니다 . 장애물이 움직일 때 단일 요원 의 길을 찾는 것은 비용이 너무 많이 들지 않습니다 . 여기서 많은, 하나의 방법입니다 : grail.cs.washington.edu/projects/crowd-flows GPU는 연속 군중의 버전이 존재 accellerated.
Olhovsky

나는 이것에 동의하지 않을 것이다. 모든 엔진은 경로 찾기와 경로 추적을 두 가지 별개의 문제로 취급합니다. 첫 번째는 탐색 가능한 영역의 그래프 검색이고 다른 하나는 로컬 공간 내에서 최적의 이동 벡터를 검색하려는 것입니다. 나는 GPU에 의존하지 않고 AAA 게임에서 사용되는 미들웨어를 생성하는 군중 시뮬레이션을 위해 노력했습니다. 대부분의 구현에서는 흐름 필드 (경로 파인더)와 조정을 사용하여 흐름을 따르고 다른 에이전트 (경로 추적자)를 피합니다. 내 답변에서 언급했듯이 이것은 "게임 프로그래머"답변이며 학문적 답변이 아닙니다.
emartel

나는 당신이 연속 군중을 위해 GPU가 필요하지 않다는 것을 알고 있습니다. 이것이 제가 CPU 기반 버전을 연결 한 이유입니다. 경로 추적에 대한 설명은 여전히 ​​길 찾기 검색이며, 다른 데이터 세트에서 다른 세부 수준의 길 찾기 검색 일뿐입니다. 그래서 당신이 실제로 가지고있는 것은 코스 디테일 패스 찾기 패스와 훌륭한 디테일 패스 찾기 패스입니다. 궁극적 으로 배우가 따라야 할 길 을 찾으려고 합니다. 이에 대한 새로운 용어를 발명하는 것은 혼란을 초래합니다.
Olhovsky

1
죄송하지만 "경로 추적"은 발명 된 용어가 아닙니다. 산업 생산 문서를 읽고 당신은 반복해서 사용하고 볼 수 있습니다 : 링크 또는 링크는 몇 가지를 링크 할 수 있습니다. 불행히도 나는 업계에서 널리 사용되는 엔진 / 미들웨어의 NDA 보호 문서에 당신을 연결할 수 없습니다.
emartel

1
첫 번째 링크는 내가 btw에서 내 링크에서 제공 한 링크입니다. 충분히 공정한 것으로, 그러한 경로 찾기 유형을 경로 추적으로 설명하는 것이 공정 할 수 있습니다. 궁극적으로 그들은 따라야 할 길을 찾으려고 노력하고 있지만이 경우에는 내가 틀렸다고 생각하며 두 번째 링크에서 볼 수있는 것을 경로 따라라고합니다. 예를 들어 입방 스플 라이스 / 비저 곡선 / 삽입 방법과 함께 거친 경로 점을 연결하는 작업. 즉, 나는 당신의 대답이 제안하는 것처럼 역동적 인 장애물 주위에서 경로 찾기를 구현하는 것이 불가능하다는 것에 여전히 동의하지 않습니다.
Olhovsky
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.