1. 서론
대규모 군중행동 시뮬레이션[1,2]은 영화, 애니메이션, 게임과 같은 영상 제작 분야나 재난 및 도시교통과 같은 사회적인 현상 해석 분야 등의 많은 분야에서 연구가 진행되고 있다[3-10]. 최근 센서 기술이 발달하면서 다양한 환경 데이터가 수집되고, 많은 양의 지형 데이터가 축적되면서, 실시간으로 상태를 반영하는 대규모 군중행동 시뮬레이션 기술이 요구되고 있다.
대규모 군중행동 시뮬레이션은 군중의 행동 특성을 사실적으로 표현하는 것으로, 입자 시스템(parti-cle system) 방법, 다중 에이전트 시스템(multi-agent system) 방법, 및 유도장 포텐셜 장(afford-ancepotential field)방법이 있다. 입자 시스템 방법[4-7]은 병렬처리가 용이하여 대규모 개체 움직임을 실시간으로 표현한다. 그러나 이 방법은 각 에이전트 개체의 다양한 특성과 상태를 반영하기 어렵고, 각 개체 간의 사실적 움직임을 표현하는데 어려움이 있다. 반면, 다중 에이전트 시스템 방법[13, 15, 16]은 에이전트 간 상호작용을 반영하여 세밀한 움직임의 표현이 가능하나, 움직임 생성에 많은 계산 비용이 요구된다. 유도 포텐셜 장 방법[12, 13, 15, 16]은 에이전트의 특성을 표현하기 위하여 이미지 기반 유도 포텐셜 장을 사용한다. 에이전트 유도 포텐셜 장은 에이전트 위치에 따라 항해 포텐셜 장(navigationpoten-tial field)을 생성하고, 항해 포텐셜 장은 입자 시스템에서 사용하는 역장(forcefield)으로 표현된다. 이 방법은 에이전트가 갖는 미시적 행동 특성과 입자 시스템의 거시적 행동 특성을 모두 표현할 수 있고, 에이전트의 행동 특성이나 공간 환경을 2차원 배열 형태로 구성하여 GPU에서 효율적으로 처리하는 것이 가능하다. 그러나, 이 방법은 다양한 내외부 환경을 반영하기 위하여 다수의 항해 포텐셜 장을 사전에 생성하여야 하고, 복층 구조의 건물이나 경사로와 같은 3차원 지형에서 유도장을 생성하기 어렵다.
본 논문에서는 3차원 가상공간에서 화재 대피 상황과 같이 실시간으로 상황이 변화하는 환경에 유연하고, 사실적인 군중행동을 표현하는 시뮬레이션을 구현하는 방법을 제안한다. 제안하는 방법은 2차원 이미지 유도장 기반 시뮬레이션을 3차원으로 확장하여 수치계산을 줄이고 병렬성을 높인다. 이를 위하여 3차원 공간상에서의 유도장 필드생성, 센서 설계 및 조종힘 유도, 에이전트의 이동방식을 정의한다.
제안된 기법은 일반적으로 2차원 공간에 적용되는 기존의 평면 공간의 유도장 기법을 개선하여 복잡한 구조를 가진 3차원 구조물에도 효과적으로 적용될 수 있어 그 용용 분야가 크게 확장될 수 있다. 또한 에이전트의 회피 동작을 효율적으로 구현할 수 있어 대규모 군중의 동작을 실시간 환경에서 구현해야 하는 다양한 응용에도 적용할 수 있을 것이다.
2. 기존 행동 시뮬레이션 연구
에이전트의 자발적 동작을 생성하는 것은 매우 중요한 연구 주제이다. 새나 곤충들의 군집 활동은 일반적으로 단순한 행동 규칙을 통해 매우 사실적으로 흉내낼 수 있다. 이러한 기법을 군집행동(flocking) 시뮬레이션이라고 하며, Reynolds의 연구[1] 이후에 단순한 행동 규칙을 갖는 개체에 대한 행동 특성을 표현하기 위하여 유체모델(CFD, ComputationalFluid Dynamics)[2,3]이나 입자 시스템(particlesystem)[4] 등 다양한 기법이 제안되었다.
새나 곤충과 달리 사람은 개별적으로 목표를 가지고 행동하면서 상호간의 충돌을 회피하고자 하는 동작을 보인다. 이러한 동작은 자발적 의사를 가진에 이전트의 동작으로 정의할 수 있으며, 사회적 힘 (social force)모델을 통해 시뮬레이션하는 것이 일반적이다[5].
사회적 힘 모델은 자발적 에이전트의 동작을 매우 효과적으로 시뮬레이션 할 수 있는 장점이 있어, 사회학적 요소[6], 심리학적 효과[7], 상황가이드 제어[8,9], 인지 행동모델[10,11] 등을 기반으로 보다 사실적인 상호 에이전트간의 움직임을 표현하기 위한 연구가 진행되어 왔다. 제안된다양한 기법들은 에이전트의 동작을 제어하는 방법과 에이전트들의 상호작용을 다루는 문제에 집중하고 있기 때문에 계산 효율 측면은 깊이 고려하지 않은 기법이다. 특히, 상호작용을 제어하는 문제는 에이전트의 수가 매우 큰 군중 시뮬레이션에서 중요한 계산병목(bottleneck)이 된다. 이러한 문제를 해결하기 위해 이미지 데이터를 통해 군중의 움직임을 직접적으로 제어하기 위한 방법으로 Patil등[12,13]은 사용자의 직접적인 스케치나 비디오 데이터 정보를 추출하여 벡터장으로 표현하는 방법을 제안하였다. 하지만, 상호 충돌회피를 처리하기 위한 방법으로 속도-장애물 기반의 복잡한 수식과 함수의 조합을 사용하여 실시간 처리가 어렵다. Kang 등[14]은 낮은 밀집 환경에서 계산비용을 감소시키기 위하여 이미지 데이터를 활용한 군중 제어 기법을 제안하였지만, 고밀집 환경에서 에이전트의 교착상태가 일어날 경우 병목현상이 발생하여 부자연스러운 움직임을 보이는 단점이 있다.
Ok[15]은 이러한 문제를 해결하기 위해 이미지 기반의 유도장과 충돌 회피장을 제안하였다. 이 기법은 인접한 에이전트의 상호작용을 빠르게 처리할 수 있도록 이미지 공간에서 빠르게 충돌 가능성을 검사하는 기법을 제안하였다. 그러나 이 기법은 이미지 공간에서 텍스처 연산을 사용하기 때문에 2차원 공간으로 그 적용 가능성이 제한된다는 문제를 가진다.
실제 군중의 동작은 곡면을 가진 3차원 공간이나 복잡한 구조를 가진 건조물 등에서 이루어지므로 이를 해결할 수 있는 기법이 요구된다. Kim[16]은 3차원 공간에서 유도장 형태로 경로를 탐색하는 벡터 장(vector field)를 생성하는 방법을 제안하였지만, 충돌처리를 위한 유도장이 정의되어 있지 않기 때문에, 에이전트 상호간의 충돌처리가 자연스럽게 처리되지 않는다. 이렇듯, 3차원 공간에서 유도장을 생성하여 에이전트의 상호작용을 통해 충돌 처리하는 것이 어렵다.
본 연구는 이러한 이전 연구의 한계를 극복하기 위하여 3차원 복합 구조물에서의 에이전트 동작을 다루려고 하며 이러한 문제에 대한 효율적 해법은 아직 제안된 바가 없다.
3. 제안한 3D 행위 유도장 기반 에이전트 행동 시뮬레이션 기법
3.1 유도장 기반 대규모 군중 시뮬레이션
제안한 유도장 기반의 시뮬레이션은 에이전트의 행동 특성을 이미지 기반의 스칼라 장으로 표현한다. 즉, 에이전트 상호 간의 움직임은 미시적인 행동 특성과 군중 에이전트의 흐름을 표현하는 거시적인 행동 특성을 나타내는 이미지 장으로 표현된다. 다음으로, 이미지 장의 척력 및 인력의 기울기를 통하여 에이전트의 조종힘이 유도된다.
3D 유도장 기반 대규모 군중시뮬레이션 실행 과정은 다음과 같다. 우선, 시스템은 조종힘 유도를 위한 목적지 이동 유도장과 충돌회피 유도장을 생성 구축한다. 그 후 에이전트의 정보를 통해 각자의 위치에 맞게 배치하고 항해 포텐셜 장(navigationpo-tential field)으로 결합하고, 에이전트는 결합된 장을 통해서 조종힘을 유도하고 이동하는 등의 업데이트 과정을 마치는 구조를 갖는다. Fig. 1은 기존 2차원 시뮬레이션과 제안하는 3차원 시뮬레이션의 전체과정을 나타낸다. Fig. 1에서 전처리 과정 살펴보면 에이전트 이미지 장뿐만 아니라 에이전트와 모델에 대한 각 이미지를 사전에 모두 준비해야 한다. 또한, 3차원 시뮬레이션에서는 모델 이미지 장을 구축하기 위한 새로운 정점 정보를 입력받아 실시간으로 3차원 공간 모델 이미지 장을 구축한다.
Fig. 1. Proposed 3D affordance field simulation process with heat source.
3.2 행위 유도장 생성
행위 유도장 기반 시뮬레이션에서 장(field)이란, 스칼라 값의 수치적 차이를 통해 조종힘을 유도하도록 시뮬레이션의 상태를 표현하는 것이다. 즉, 에이전트가 장의 기울기(gradient)를 읽어 이동을 위한 벡터를 유도할 수 있도록 하는 구조를 말한다. 본 절에서는 군중 에이전트들의 상호작용을 표현하기 위하여 유도장을 미시적 관점과 거시적 관점으로 분류하여, 3차원 공간상에 있는 모델과 에이전트에 유도장을 부여하는 방법과 에이전트가 조종힘을 유도할 수 있도록 유도장을 변환하는 방법에 대하여 기술한다.
3.2.1 3차원 목적지 이동 유도장 생성
목적지 이동 유도장은 거시적인 관점에서 군중에 이전트의 움직임을 제어한다. 군중 에이전트가 3차원 공간상에서 놓인 목적지를 향해 이동할 수 있도록 하는 유도장으로, 목적지 유도장은 목적지로부터 멀어질수록 스칼라 값이 점점 높아지거나, 낮아지도록 생성되어야 한다. 예를 들어, 실제 화재 대피 상황이 일어났을 경우 피난 경로를 향해 이동하거나 화재 발생 지역으로부터 멀어지는 등 이상적으로 현 상황에서 가야 할 경로를 유도할 수 있어야 한다. Crane 등[17]은 열원(heatsource)으로부터 멀어지는 만큼의 스칼라 값 차이를 통해 벡터필드를 생성하는 방법에 대하여 제안하였다. 제안한 방법에서는 Crane 방법을 기반으로 목적지 유도장 생성 시, 3차원 공간에 존재하는 기하구조(geometry)에 임의의 정점 정보들이 주어졌을 때, 측지거리(geodesicdistance)를 계산하고 계산된 거리와 시간 t이후의 열전도 양에 따라서 Varadhan의 공식을 이용하여 다음 수식 (1)을 적용한다.
\(\Phi(x, y)=\lim _{t \rightarrow 0} \sqrt{-4 t \log k_{t, x}(y)}\) (1)
여기서 kt,x(y)은 열 커널(heat kernel)이라 하고, 열원 x에서 t시간 후에 목적지 y까지 전달된 열 전도 양을 측정하는 함수이다.
위의 열 확산 수식을 이용하여 Geometry의 각 정점 정보에 열전도 양이 부여되고, 열원과 가까울수록 값이 높아지기 때문에 스칼라 값의 차이가 생겨 목적지 유도장이 생성된다. Fig. 2는 3차원에서 생성된 목적지 유도장이 스칼라 값의 차이로 기울기를 생성 가능하다는 것을 나타낸다. 열확산 방법에 의하여 점군(point cloud), 폴리곤 메쉬(polygon mesh) 등 다양한 형태의 지오메트리로 표현될 수 있다. 제안하는 방법에서는 폴리곤 메쉬구조의 지오메트리에 값을 부여한다.
Fig. 2. Generated destination induction field and its gradient.
3.2.2 3차원 충돌회피 유도장 생성
충돌회피 유도장은 각 에이전트의 충돌 범위와 행동 특성을 나타내기 위해 이미지로 표현한 것으로, 충돌회피 유도장이 항해장으로 결합되어 겹쳐진 충돌범위의 스칼라 값 차이를 통해 척력힘을 유도할 수 있게 한다. 충돌회피 유도장은 전역 공간에 나타냄으로써 충돌회피를 유도하기 위해 요구되는 상호 에이전트 간의 특성을 요구하지 않기 때문에 사실적인 충돌 회피 행동 특성을 표현하기 위한 복잡한 수식처리 과정을 간결화할 수 있다. Fig. 3은 2차원 유도장 기반 시뮬레이션에서 전체 에이전트의 충돌회피 유도장이 항해장으로 표현한 것이다.
Fig. 3. 2D collision avoidance induction field granted to the whole simulation.
2차원 유도장 기반 시뮬레이션에서는 에이전트나 센서의 위치, 유도장을 부여하기 위한 텍스처 좌표가 모두 한 평면 내에서 정의될 수 있기 때문에 전체 에이전트의 충돌회피 유도장을 하나의 프레임 버퍼로 표현이 가능하다. 이러한 특성 때문에 병렬성이 극대화되고, 센서 및 에이전트가 조종힘을 유도하기 위한 값을 읽기 위한 과정이 간단하지만, 3차원 공간 위에 배치되는 각 에이전트들은 높이 값과 법선벡터의 방향이 다르기 때문에 하나의 프레임 버퍼 내에서 텍스처 좌표와 센서의 위치를 특정하기 어렵다. 3차원 가상공간에서 충돌회피 유도장을 생성하기 위해서는 개별 에이전트의 충돌회피 유도장 텍스처 좌표를 얻는 방법과 평면 프레임버퍼를 3차원 공간에서 적용 가능하도록 충돌회피 유도장을 변환하는 방법이 요구된다.
3.2.3 개별 에이전트 충돌회피 유도장 생성
각각의 에이전트들은 서로 다른 방향의 법선벡터를 갖는 평면 위에 놓여진다. 평면의 형태로 부여되는 에이전트 충돌회피 유도장을 생성하기 위해서는 에이전트가 위치한 면(face)에 접하는 평면 공간 내에서 텍스처 좌표를 결정해야 한다. Fig. 4는 에이전트 접공간 내에서 생성되는 충돌회피 유도장의 구조를 설명한다. 에이전트가 서있는 폴리곤 메쉬의 법선 벡터 \(\vec{n}\)과 에이전트의 진행방향 \(\vec{v}\)가 주어졌을 때, 벡터 \(\vec{v}\)와 \(\vec{n}\)에 모두 수직인 binormal 벡터 \(\vec{b}\)를 구할 수 있고, \(\vec{v}\)의 크기인 속도 s에 따라 \(\vec{v}\)의 정규화 벡터 \(\vec{d}\)와 binormal 벡터 \(\vec{b}\)의 조합으로 접공간 내 텍스처 좌표를 부여할 수 있다.
Fig. 4. Texture coordinate and bilboard defined by agent tanget space.
제안한 방법에서는 충돌회피 유도장을 생성하기 위하여 2차원 이미지를 간단한 메쉬 구조인 빌보드 (billboard)를 생성한다. 그리고 메쉬 객체를 생성하여 메모리를 할당하고, 정의된 접공간 벡터와 현재 에이전트의 속력에 따라 빌보드의 좌표를 설정한다. 메쉬가 그려질 순서 및 좌표 정보를 할당된 메쉬 객체에 저장하고 텍스처를 적용하는 것으로 충돌 회피 유도장을 생성한다.
3.2.4 결합된 에이전트 충돌회피 유도장 생성
3차원 지오메트리 특성상 표면이 구(sphere) 형태로 굽어져 있거나, 경사와 평면이 합쳐진 구조, 복층 구조 등 다양한 형태로 표현될 수 있기 때문에 센서의 위치를 하나의 평면 프레임 버퍼 내에서 특정하기 어렵다. 즉, 하나의 프레임 버퍼를 통해 각 에이전트의 충돌회피를 유도하는 일이 쉽지 않다. 따라서, 3차원 공간에서 충돌회피 유도장을 생성하기 위해서는 개별적으로 생성된 충돌회피 유도장을 변형하고, 각 에이전트의 접공간을 기준으로 하는 프레임 버퍼에 담는 과정이 필요하다.
3차원 공간상에서 충돌회피 유도장을 생성하는 과정은 Fig. 5에서와 같다. 이 과정을 살펴보면, 가상의 카메라들은 에이전트의 충돌범위를 상정하는 위치에 놓여지고, 해당 범위 내에 그려진 개별 에이전트의 충돌회피 유도장을 직교투영(orthographic projection)하여 가상카메라의 프레임 버퍼에 담아낸 다음, 하나로 결합된 충돌회피 유도장이 생성된다.
Fig. 5. Generation for collision avoidance field.
3.2.4 항해장 조정
목적지 유도장과 충돌회피 유도장은 계층적으로 분류되어 각자 인력힘과 척력힘을 유도한다. 따라서 가상의 카메라를 통해 유도장을 획득하는 과정에서 각 유도장은 계층(layer)을 지정하여 각 유도장의 목적에 따라 관리된다.
한편, 각 에이전트마다 생성되는 충돌회피 유도장은 복층구조와 같은 3차원 환경에서 실행되는 특징 때문에 충돌 항해장 획득 과정에서 충돌 범위 내에 있지 않은 다른 에이전트의 충돌 회피 유도장까지 불필요하게 감지하는 문제점을 유발할 수 있다. Fig. 6(a)는 이러한 문제점이 발생할 수 있는 상황과 이로 인해 획득된 부적절한 결합된 충돌회피 유도장을 나타낸다.
Fig. 6. (a) the problems of navigational fields hierarchically classified in 3D space and (b) the adjustment of the virtual camera for a collision navigation field.
이와 같은 문제를 해결하기 위해 충돌 항해장의 조정단계에서 요구되는 것은 다음과 같다. 첫째, 가상 카메라의 뷰포트(viewport)는 에이전트를 포함하는 평면의 법선벡터 방향과 일치하도록 설정되어야 한다. 둘째, 에이전트가 충돌 항해장을 통해 충돌을 감지할 수 있도록 충돌 반경(collision radius)을 포함하도록 카메라를 위치시켜야 한다. 이때, 카메라의 렌더링 볼륨(rendering volume)이 지나치게 먼 거리의 에이전트가 생성하는 장(field)을 포함하지 않도록 한다. Fig. 6(b)는 실제 시뮬레이션 내에서 가상의 카메라를 조정하여 충돌 항해장을 획득하는 것을 나타낸다. 실제 에이전트가 충돌 항해장을 획득하는 범위는 Fig. 6(b)에서 흰색 실선으로 표현된 육면체 범위와 같다.
3.3 센서 설계 및 조종힘 유도
에이전트 센서는 생성된 항해장을 통해 각 항해장의 스칼라 값을 읽고, 에이전트와 센서의 스칼라 값의 차이를 통해 조종힘을 유도한다. 3.2절의 내용을 통해 3차원 목적지 유도장을 통해 생성된 인력 항해장은 3차원 지오메트리의 정점에 부여되고, 3차원 충돌 회피 유도장을 통해 생성된 척력 항해장은 에이전트의 접공간 내에서 정의된다.
3.3.1 목적지 유도센서 설계 및 인력장 계산
목적지 유도장의 스칼라 값은 3차원 지오메트리의 정점마다 열전도양을 부여받기 때문에 에이전트 의 위치가 임의의 3차원 공간상에 있을 때, 단순히 인접 정점의 값을 얻었을 경우 지오메트리의 규모에 따라 값의 차이가 너무 크거나, 값의 차이가 없을 수 있기 때문에 정확한 목적지 이동 힘을 유도하기 어렵다. 또한, 목적지 유도장을 색상으로 표현하여 유도장의 센서를 평면공간에서 구하려 할 경우에도 마찬가지로 동일한 문제점이 발생할 수 있다. 따라서, 에이전트는 폴리곤 위의 정점 정보를 보간하여 정확히 에이전트의 위치에 있는 스칼라 값을 구해야 한다. 이를 위해 무게중심 좌표계(barycentriccoordinates)를 통해 정확한 값을 보간하도록 하였다. 면 위의 세 점 \(v 1, v 2, v 3\)을 기준으로 정점 p에 대한 삼각형 내부 판정 및 보간을 위한 무게중심 좌표계를 적용한 식은 다음과 같다.
\(w_{v 1}=\frac{\left(v 2_{y}-v 3_{y}\right)\left(p_{x}-v 3_{x}\right)+\left(v 3_{x}-v 2_{x}\right)\left(p_{y}-v 3_{y}\right)}{\left(v 2_{y}-v 3_{y}\right)\left(v 1_{x}-v 3_{x}\right)+\left(v 3_{x}-v 2_{x}\right)\left(v 1_{y}-v 3_{y}\right)}\) (2)
\(w_{v 2}=\frac{\left(v 3_{y}-v 1_{y}\right)\left(p_{x}-v 3_{x}\right)+\left(v 1_{x}-v 3_{x}\right)\left(p_{y}-v 3_{y}\right)}{\left(v 2_{y}-v 3_{y}\right)\left(v 1_{x}-v 3_{x}\right)+\left(v 3_{x}-v 2_{x}\right)\left(v 1_{y}-v 3_{y}\right)}\) (3)
\(w_{v 3}=1-w_{v 1}-w_{v 2}\) (4)
\(c_{p}=\frac{w_{v 1} c_{v 1}+w_{v 2} c_{v 2}+w_{v 3} c_{v 3}}{w_{v 1}+w_{v 2}+w_{v 3}}\) (5)
인력의 연산은 에이전트의 위치와 각 센서의 위치에서 읽은 스칼라 값의 차이와 센서의 로컬벡터의 곱들의 합으로 정의된다. 인력장을 통해 조종힘을 유도하는 식은 다음과 같다.
\(\vec{f}_{a}=\sum_{i=1}^{n} \frac{\vec{p}_{s i}-\vec{p}_{a}}{\left\|\vec{p}_{s i}-\vec{p}_{a}\right\|}\left(c_{a}-c_{s i}\right)\) (6)
여기서 \(c_{a}\)와 \(c_{s i}\)는 식(2)를 통해 폴리곤 메쉬의 정점 정보를 이용해 얻어낸 보간된 색상 값으로 에이전트와 각 센서가 읽어낸 스칼라 값을 의미한다. \(\vec{p}_{s i}\)와 \(\vec{p}_{a}\)는 각 센서의 위치를 나타내며 \(\vec{p}_{s i}-\vec{p}_{a}\)는 센서의 로컬벡터를 의미한다. 인력힘 연산은 센서의 방향과 스칼라 값의 차이들의 곱을 통해 조종힘을 유도하기 위한 기울기를 만들어 얻어낸다.
한편, 인력장을 통해 조종힘을 유도하는 과정에서 접공간 내에 정의된 벡터는 표면위에 부여되는 유도장의 스칼라 값을 읽기위해 각 표면 사이의 법선벡터의 각도만큼 투영될 수 있다. 이로 인해 에이전트가 스칼라 값을 읽기 위해 변환된 센서의 로컬벡터를 그대로 취할 경우, 정확한 에이전트의 움직임을 유도하기 어렵다. 따라서, 센서는 변환되기 이전의 로컬 벡터를 보존하고 변환 이후 획득한 스칼라 값만을 취하여 목적지 유도힘을 구한다.
3.3.2 충돌회피 유도센서 설계 및 척력장 계산
충돌 항해장은 충돌회피 유도장 생성과정에서 언급한 바와 같이 에이전트의 충돌 범위 이내를 담고있는 프레임 버퍼로 생성된다. 이는 결합된 충돌회피 유도장이 에이전트의 접공간에서 충돌범위 이내로 표현된 절두체로 볼 수 있다. 따라서, 프레임 버퍼 내에 접근하기 위한 인덱스(index)로 접공간 내에 위치하는 센서를 정의할 수 있다. 프레임 버퍼 내에서 에이전트와 센서의 위치를 나타내는 인덱스를 특정하고, 각 위치에서 얻어낸 색상 값과 진행방향 벡터, 바이노말 벡터의 결합을 통해 센서를 정의한다.
척력장의 연산은 인력장의 연산과 마찬가지로 에이전트의 위치, 센서의 위치에서 읽은 스칼라 값의 차이와 센서의 로컬벡터의 곱들의 합으로 정의하며, 척력을 표현하기 위하여 반대방향으로 적용시킨다. 척력장을 통해 조종힘을 유도하는 식은 다음과 같다.
\(\vec{f}_{r}=\sum_{i=1}^{n}\left[\frac{\vec{p}_{a}-\vec{p}_{s i}}{\left\|\vec{p}_{a}-\vec{p}_{s i}\right\|}\left(f\left(i x_{a}, i y_{a}\right)-f\left(i x_{s i}, i y_{s i}\right)\right)\right]\) (7)
여기서 \(i x_{a, s i}, i y_{a, s i}\)는 충돌 항해장의 프레임 버퍼에 접근하기 위한 인덱스이다. 이 인덱스들은 고정된 최대, 최소 속도 및 에이전트의 위치와 일치하는 인덱스가 주어졌을 때, 현재 에이전트의 속도에 따라 선형 보간하여 얻을 수 있으며, 충돌 항해장의 스칼라 값을 \(f(i x, i y)\)의 형태로 읽는다. 각 함수를 통해 얻어낸 스칼라 값의 차이와 센서의 로컬벡터의 반대 방향들의 곱으로 척력힘을 유도한다.
충돌회피 유도힘을 구하는 일련의 과정은 다음과 같다. 먼저, 결합된 충돌회피 유도장을 얻는 가상의 카메라의 프레임 버퍼에 접근할 수 있도록 2차원 배열의 텍스처로 변환한다. 그리고 이 텍스처를 통하여 충돌이 검출된 센서에 대하여 조종힘을 구한다. 센서의 위치는 최대, 최저 속도의 위치에서의 위치를 임의로 지정되고, 현재 속도에 따라 선형 보간된 텍스처 위치에 접근 가능한 인덱스들이 얻어진다.
3.3.3 조종힘 합산
에이전트는 다양한 시뮬레이션 환경에 적용할 수 있도록 질량이나 센서의 위치배열, 최대 및 최저속도의 제한 등 각자의 이동 특성을 부여할 수 있다. 조종힘을 계산하는 과정에서 큰 힘의 크기를 조절할 수 있도록 목적지 유도힘과 충돌회피 유도힘에 가중치를 곱하여 최종 합력을 구한다.
\(\vec{f}_{s}=w_{a} \vec{f}_{a}+w_{r} \vec{f}_{r}\) (8)
3.4 에이전트 이동
에이전트의 이동은 일정 시간마다 최종적으로 얻어낸 조종힘의 영향을 받아 이동할 수 있도록 뉴턴의 운동방정식이 사용된다. 조종힘과 이전 에이전트의 속도는 모두 에이전트의 접공간 내에서 정의되기 때문에 새롭게 갱신된 속도 또한 에이전트의 접공간 내에서 정의된다. 하지만, 실제 에이전트는 이와 달리 3차원 가상공간에서 위치환경인 모델데이터 위에서 움직인다. 3.3 절에서 언급하였듯이 목적지 이동 유도장의 스칼라 값을 읽기 위하여 에이전트와 센서의 위치는 폴리곤 메쉬의 표면 위에 보장되어야 한다. Roman 등[18]은 무게중심 좌표계의 특징과 halfedge 구조의 관계를 정의하여 3차원 공간에서 에이전트가 표면을 이동하기 위한 방법을 제안하였다.
에이전트는 서로 다른 법선벡터를 갖는 3차원의 지오메트리의 면 위에서 이동하기 때문에 에이전트가 현재 위치된 면에서 다른 면으로 이동할 경우 벡터 변환이 이루어져야 한다. 여기서 로컬 벡터를 통해 이동하거나 이동된 위치에서의 정확한 스칼라 값을 얻기 위해서는 접공간 내에서 이동한 벡터가 면을 벗어나는지에 대한 판별이 이루어진다. 면의 외부에 있을 경우에는 half-edge를 통해 다음 면의 정보를 얻어서 벡터를 다음 면에 투영하고, 면의 내부에 있을 경우 해당 위치에 놓여진다.
4. 실험 결과
본 실험에서는 3차원 공간의 지형 데이터와 에이전트에 따라 유도장을 생성하고, 생성된 유도장 상에 에이전트의 충돌 실험을 통하여 군중 에이전트의 움직임을 분석하였다. 실험 환경은 Uinty3D 환경에서 실행되었으며, 목적지 유도장이 부여되는 3차원 지형 데이터는 모델링 된 도서관 건물을 사용하였다. Fig. 7(a)는 모델링 된 도서관 건물을 나타내고, Fig. 7(b)는 에이전트가 배치되어 이동할 지면을 추출한 것이다.
Fig. 7. (a) Test 3D library building model used in the experiment and (b) simulated geospatial mode
본 실험에서는 에이전트의 상태와 지형 환경의 상태를 변경하면서 에이전트에 일어나는 현상을 관측 하였다. 충돌 실험은 에이전트의 그룹을 서로 다른 목적지를 기준으로 나누어 조종힘 가중치 비율, 속도를 기준으로 각 에이전트의 속성에 변화를 주면서 행동 특성을 분석한다.
Fig. 8는 본 실험에 사용된 인력 항해장으로, 각 실험에서 에이전트를 두 그룹으로 나뉘어 실행된다. 각 인력 항해장은 그룹별로 나뉜 에이전트들이 서로 다른 목적지를 유도한다. Fig. 8에 표시된 goal A, goal B를 기준으로 스칼라 값의 차이를 생생한다.
Fig. 8. Simulated maps with similar destination paths of (a) Goal A and (b) Goal B
이 지형의 특징은 각 층 사이를 이동할 수 있는 계단이 2 5층 구간에서 하나로 연결되어 있고, 1층 과 2층을 잇는 계단은 두 개로 분리되어있다. 따라서, 1층의 양측을 목적지로 두었을 때 2, 3, 4, 5층을 잇는 계단에서 유사한 인력힘을 유도하고, 분기점이 되는 2층에서 각 인력힘이 다르게 유도된다.
4.1 에이전트간 동일 속성 실험
본 실험에서는 두 에이전트 그룹에 동일한 속성을 부여했을 때 에이전트가 나타내는 행동 특성을 분석하였다. 에이전트 속성은 유도 힘의 비율, 속도의 범위로 정의된다.
Table 1의 Type1에서와 같이 동일한 속성이 부여된 에이전트 그룹의 이동을 시간의 경과에 따라 관측한 실험결과는 Fig. 9에서와 같다. goal A를 향하는 에이전트 그룹은 파란색으로 표현되었으며, goal B를 향하는 에이전트 그룹을 붉은색으로 표현하였다. 에이전트 그룹들은 각자의 목적지에 따라 부여된 인력 항해장을 따라 이동하면서 에이전트 상호간 충돌 회피를 하면서 이동하게 된다. Fig. 9(a)와 같이 배치되어 이동하는 에이전트들은 시간이 경과됨에 따라 Fig. 9(b)와 같이 두 에이전트 그룹이 유사한 기울기를 가지는 계단 지역에서 군집되는 현상을 볼 수 있다. 각자의 상태를 읽어 조종힘에 따라 밀집 충돌 지역인 계단을 벗어나고, Fig. 9(c)에서와 같이 서로 다 른 인력힘을 유도하는 2층의 분기점 지역에서 그룹별로 나뉘어 이동하는 것을 관측할 수 있다. Fig. 9(d)에서 같이 지형 데이터의 구조에 따라 분기점이 되는 2층 계단에서 가까운 그룹 A가 먼저 종료됨을 알 수 있다.
Table 1. Same properties of agents with different forces of FA and FR. FA and FR is the attraction force and the repulsive force.
Fig. 9. Experimental results of agents with same properties from (a) to (d).
Table 1의 Type 2에서와 같이 인력이 척력보다 더 강한 비중을 차지하도록 에이전트 속성을 변경하고, 이를 두 그룹에 동일하게 부여하여 이동 현상을 관찰하였다. Table 2에서와 같이 인력힘이 척력힘보다 강한 것은 에이전트가 상호간 충돌회피보다 목적지를 우선적으로 이동하도록 에이전트의 특성을 적용한 것을 의미한다. Fig. 10(a)는 인력과 척력비가 6:4인 속성을 가지는 에이전트들이 갖는 문제점을 나타낸다. 인력힘이 척력힘보다 강할 경우 에이전트들이 밀집되어 서로를 둘러싸는 형태로 교착상태가 진행되면 에이전트는 척력힘에 대한 기울기가 낮아져 상대적으로 강한 인력힘이 많이 적용되어 붉은색으로 표시된 영역에서 에이전트가 다른 에이전트를 뚫고 지나가는 현상이 발생되어, 충돌회피 유도장이 겹쳐짐을 관측할 수 있다. Fig. 10(b)는 속성이 각 에이전트에 부여되어 인력과 척력의 비율이 7:3으로 6:4일 때보다 더 많이 인력힘이 부여되었을 때 문제점을 보여준다. Fig. 10(a)는 비교적 밀집되지 않은 구간에서 충돌회피가 이루어지는 것을 관측할 수 있는 반면, 인력힘이 너무 많은 비중을 차지할 경우 밀집구간은 물론이고 에이전트의 진행속도가 빠를 경우 충돌 감지 초기에 척력힘이 인력힘에 비하여 매우 낮기 때문에 에이전트를 뚫고 지나가는 현상이 발생한다. 전체적인 결과는 Fig. 10(b)에서와 같이 충돌회피가 제대로 반영되지 않는 것을 알 수 있다.
Fig. 10. (a) Dense problem in ㅊ=6:4 and (b) no avoid collision in FA:FR=7:3.
Table 2. Agent properties with different ratios of FA and FR.
Table 1의 Type 3에서와 같이 척력힘이 인력힘보다 더 높게 에이전트의 특성을 각 그룹에 동일하게 부여하였다. 이는 에이전트가 목적지를 향해 이동하는 것보다 충돌회피를 우선으로 하도록 에이전트의 특성을 적용한 것을 의미한다. Type 3의 실험 결과는 Fig. 11에서와 같으며, 척력힘이 인력힘보다 더 강할 경우 전체 에이전트의 행동이 지연되어 나타나는 문제점을 가진다. 동일한 시간대에 관측된 Fig. 11과 Fig. 9(c)를 비교했을 때 Fig. 11에 나타난 결과가 전체 에이전트의 시뮬레이션 진행속도가 지연됨을 알 수 있다. 그러나 에이전트 상호간의 충돌이 자연스럽게 회피되어 더욱 자연스러운 시뮬레이션 결과를 얻을 수 있다.
Fig. 11. Delay of agent movement in FA < FR.
4.2 에이전트간 서로 다른 속성 실험
본 절에서는 두 에이전트 그룹에 다른 속성을 부여했을 때 에이전트의 행동 특성을 관찰하고 분석한다.
4.2.1 힘의 비율이 서로 다른 에이전트 실험
힘의 비율이 다를 경우, 각 그룹은 회피 우선과 목적지 이동 우선을 비교할 수 있다. 각 실험에 사용된 에이전트의 속성은 Table 2에서와 같다. 에이전트들은 각 층마다 하나의 출구를 통해 계단으로 이동하게 되어 계단 지역에서 Fig. 12에서와 같이 병목현상이 일어나게 된다. 이때, A그룹(파랑) 척력힘이 강할 경우 Fig. 12(a)의 붉은색으로 표시된 영역과 같이 A그룹이 나중에 계단으로 진입한다. 마찬가지로 Fig. 12(b)의 B그룹(빨강) 척력힘이 강할 경우 B그룹이 나중에 계단으로 진입하는 것을 관찰할 수 있다. Fig. 12(b)에서와 같이 분기점을 지난 영역(노란색)에서도 B그룹 에이전트가 밀려나 우회하게 되는 것을 관찰할 수 있다.
Fig. 12. Agent movement when force ratios are different; (a) FA
Table 3은 에이전트의 목적지 도착시간과 도착시 간의 차이를 측정한 것을 나타낸다. 서로 다른 힘의 비율이 적용된 실험의 경우, 동일 속성이 부여된 에이전트에 비하여 회피이동을 우선하는 에이전트들은 평균 도착시간이 지연되는 것을 알 수 있다. 또한, 서로 다른 속성을 가진 에이전트에 비하여 평균 도착 시간이 2.5초 차이로 크지 않은 것을 알 수 있다. 하지만, A그룹의 목적지가 평균적으로 가까운 곳에 위치한 목적지이기 때문에 B그룹이 충돌회피를 우선하는 경우 가장 도착시간의 차이가 크고, A그룹이 충돌 회피를 우선하는 경우가 가장 도착시간의 차이가 적은 것을 알 수 있다.
Table 3. Experimental results based on different ratios of forces.
4.2.2 힘의 비율과 속도가 서로 다른 에이전트 실험
본 실험에서는 힘과 속도를 서로 다르게 주었을 때 에이전트의 움직임을 관찰하였다. 속도가 느린 그룹을 노인 및 어린이의 그룹으로, 속도가 빠른 그룹을 일반 성인 그룹으로 가정할 수 있을 것이다. 이번 실험결과를 통해 가까운 목적지에 배치되어야 할 그룹이 어떤 그룹인지, 우선적으로 빠져나가야 할 그룹이 어떤 그룹인지를 분석할 수 있다. Table 4는 에이전트의 특성에 대한 실험결과를 보여주고 있다. 실험 2는 가까운 목적지에 성인 그룹이 도착하고, 노인 및 어린이 그룹이 우선적으로 충돌 상황에서 빠져나갈 수 있도록 상황을 가정한다. 실험 3은 가까운 목적지에 노인 및 어린이 그룹이 도착하고, 우선적으로 충돌 상황에서 빠져나갈 수 있도록 상황을 가정한다. 실험 4는 가까운 목적지에 일반 성인 그룹이 도착하고 우선적으로 충돌 상황에서 빠져나갈 수 있도록 상황을 가정한다.
Table 4. Experimental results on different agent properties.
결과를 살펴보면, 노인 및 어린이 그룹이 가까운 목적지로 향하게 하고, 일반 성인 그룹이 우선적으로 충돌 상황에서 빠져나오는 실험 1이 평균적으로 두 그룹이 가장 빠르게 도달하는 것을 알 수 있다. 노인 및 어린이 그룹이 가까운 목적지로 배치되어 우선적으로 충돌 상황에서 빠져나오는 실험 3이 빠르게 끝나는 것을 알 수 있다. 두 실험의 공통점은 노인 및 어린이 그룹이 가까운 목적지에 배치되었다는 점이며, 최악의 경우는 노인 및 어린이 그룹이 멀리 있는 목적지를 향하게 하고 일반 성인 그룹이 충돌 상황에서 우선적으로 빠져나오는 상황의 실험이었으며, 이 실험의 특징은 모든 실험 중에서 노인 및 어린이 그룹이 가장 늦게 도착하고, 일반 성인그룹이 가장 빨리 도착하는 두 가지가 동시에 나타나는 실험이었다. 결과적으로 실험 1이 가장 효과적으로 에이전트들이 움직이는 상황임을 알 수 있었다.
5. 결론
본 논문에서는 3D 지형 모델링에 적용이 가능한 3D 행동 유도장 기반 대규모 에이전트 행동 시뮬레이션 방법을 제안하였다. 제안한 방법은 3D 충돌회피 유도장과 목적지 유도장의 생성 방법, 항해장과 에이전트 및 센서의 관계를 정의, 조종힘 유도, 및 에이전트의 이동 방식들을 정의한다. 3D 목적지 유도장은 측지 거리에 따른 열전도량을 3D 지오메트리의 정점 정보에 부여함으로써 생성된다. 목적지 유도 장을 통한 인력힘은 지오메트리에 저장된 정점 정보와 정점에 담긴 열전도량의 보간에 의하여 구하여진다. 3D 충돌회피 유도장은 에이전트 위치 접공간 내의 텍스처 좌표에 의하여 생성된다. 충돌 항해장은 각 에이전트의 가상 카메라 상의 충돌 범위 내에 있는 충돌회피 유도장을 직교 투영하고 결합함으로써 생성된다. 척력힘은 에이전트 접공간을 담는 가상 카메라의 프레임 버퍼에 접근하는 인덱스와 프레임 버퍼에 담긴 스칼라 값을 통해 계산되어진다.
3D 에이전트 속성에 대한 행동 실험으로부터 다음과 같은 결과를 확인하였다. 첫째, 동일한 에이전트 특성 실험에 사용된 3D 구조물의 특징 또는 목적지에 따라 3D 구조물 상에 유리한 에이전트 특성을 쉽게 알아낼 수 있었다. 둘째, 에이전트 특성을 다양하게 변경하면서 실제 상황을 반영한 시뮬레이션이 가능하였다. 셋째, 다양한 상황에 대한 실험 결과를 관측함으로써 가장 유리한 에이전트 특성을 알 수 있었다. 제안한 방법은 에이전트 충돌회피 이동에 요구되는 상호간의 관계를 이미지 장으로 표현함으로써 많은 계산 요구량을 줄일 수 있고, 다양한 지형 환경에 유연하면서, 대규모 군중 에이전트 시뮬레이션에 적합함을 확인하였다.
References
- C.W. Reynolds, "Flocks, Herds and Schools: A Distributed Behavioral Model," SIGGRAPH Computer Graphics, Vol. 21, No. 4, pp. 25-34, 1987. https://doi.org/10.1145/37402.37406
- L.F. Henderson, "On the Fluid Mechanics of Human Crowd Motion," Transportation Research, vol. 8, issue 6, pp. 509-515, 1974. https://doi.org/10.1016/0041-1647(74)90027-6
- D. Helbing, "A Fluid-dynamic Model for the Movement of Pedestrians," Complex Systems, Vol. 6, pp. 391-415, 1992.
- D. Helbing, "Traffic and Related Self-driven Many Particle Systems," Reviews of Modern Physics, Vol. 73, issue 4, pp. 1067-1141, 2001. https://doi.org/10.1103/RevModPhys.73.1067
- D. Helbing, I. Farkas, and T. Viscek, "Simulating Dynamical Features of Escape Panic," Nature, Vol. 407, pp. 487-490, 2000. https://doi.org/10.1038/35035023
- S.R. Musse and D. Thalmann, "A Model of Human Crowd Behavior: Group Inter-Relationship and Collision Detection Analysis," Workshop of Computer Animation and Simulation of Eurographics, pp. 39-51, 1997.
- S. Kim, S.J. Guy, D. Manocha, and M.C. Lin. "Interactive Simulation of Dynamic Crowd Behaviors using General Adaptation Syndrome Theory," ACM SIGGRAPH Symposium on Interactive 3D Graphics and Games, I3D '12, pp. 55-62, 2012.
- M. Sung, M. Gleicher, and S. Chenney, "Scalable Behaviors for Crowd Simulation," Computer Graphics Forum, Vol. 23, Issue 3, pp. 519-528, 2004. https://doi.org/10.1111/j.1467-8659.2004.00783.x
- R. Narain, A. Golas, S. Curtis, and Mi.C. Lin. "Aggregate Dynamics for Dense Crowd Simulation," ACM Transactions on Graphics, Vol. 28, No. 5, pp. 122:1-122:8, 2009.
- S. Paris, J. Pettre, and S. Donikian, "Pedestrian Reactive Navigation for Crowd Simulation: a Predictive Approach," Computer Graphics Forum, Eurographics '07, Vol. 26, No. 3, pp. 665-674, 2007.
- I. Karamouzas, P. Heil, P. Beek, and M.H. Overmars, "A Predictive Collision Avoidance Model for Pedestrian Simulation," Proceedings of the 2nd International Workshop on Motion in Games, MIG '09, pp. 41-52, 2009.
- S. Patil, J. Berg, S. Curtis, M.C. Lin, and D. Manocha, "Directing Crowd Simulations using Navigation Fields," IEEE Transactions on Visualization and Computer Graphics, Vol. 17, Issue 2, pp. 244-254, 2011. https://doi.org/10.1109/TVCG.2010.33
- J. Berg, M.C. Lin, and D. Manocha, "Reciprocal Velocity Obstacles for Real-time Multi-agent Navigation," IEEE International Conference on Robotics and Automation, ICRA 2008, pp. 1928-1935, 2008.
- S.J. Kang and S.K. Kim. "Crowd Control with Vector Painting," Journal of Research and Practice in Information Technology, Vol. 46, No. 2, pp. 119-131, 2017.
- S.-Y. Ok. "Large-Scale Realtime Crowd Simulation Using Image-Based Affordance and Navigation Potential Fields," Journal of Korea Multimedia Society, Vol. 17, No. 9, pp. 1104-1114. 2014. https://doi.org/10.9717/kmms.2014.17.9.1104
- J.H. Kim, A Study on Crowd Agent Path Finding Method based on Heat Equation for Massive Crowd Simulation, Graduate School of Tongmyong University, 2018.
- K. Crane, C. Weischedel, and M. Wardetzky, "Geodesics in Heat: A New Approach to Computing Distance based on Heat Flow," ACM Transactions on Graphics (TOG), Vol. 32, No. 5, pp. 1-11, 2013.
- R. Soukal, M. Malkova, and I. Kolingerova. "Walking Algorithms for Point Location in TIN Models," Computational Geosciences, Vol. 16, No. 4, pp. 853-869, 2012. https://doi.org/10.1007/s10596-012-9305-3