티스토리 뷰

반응형

군중 시뮬레이션의 이해 

디지털 이펙트, 영화, 게임 등등의 특수 효과에서 가장 중요한 분야 중 하나인 군중 시뮬레이션 시그래프에서 1987년 처음 소개가 된 이래 계속해서 R&D가 이루어져지면 눈부시게 발전해왔습니다. 크레이그 레이놀스의 논문에 따르면 각각의 파티클들이 집단 행동을 유지하기 위해 서로에게 미치는 간접적인 힘의 관계들을 공간 백터의 형태로 설명을 하였는데, 이 때 여기에서 말하는 간접적인 힘의 관계들은 기러기 비행 대형과 같은 모습을 보면 쉽게 알 수 있습니다. 서로 충돌하지 않고 같은 방향으로 대형을 무너트리지 않고 무리의 리더를 따라 가는 것입니다. 이러한 간접적인 힘의 관계들은 결국 집단 속에 있는 각각의 캐릭터들, 즉 파티클들을 일정한 형태로 묶어주는 역할을 하며 눈에 보이지 않게 서로 연결하는 매개체 역할을 합니다. 따라서 기본적인 파티클 운동에 이러한 간접적인 힘의 요소들이 들어가게되면 군중 시뮬레이션을 구현할 수 있습니다. 군중 시뮬레이션의 기본적인 습성은 군중을 이루고 있는 각 개체들의 행동 습성은 어떤 방향으로 움직이고자 하는 힘(공간 백터)으로 이해가 가능합니다. 따라서 군중 시뮬에이션은 이러한 습성을 공간 백터로 변형해 그 합을 구하고 오일러 방식에 적용해 운동 변화를 계산합니다. 무리 안의 A가 갖는 행동 습성 스티어링 포스라고 정으의하고 각각의 캐릭터가 갖는 이러한 행동 습성들이 모여 이루는 집단적인 행동 패턴 과정을 군중 시뮬레이션이라고 합니다. 여기에서 군중은 여러 객체로 구성되어 있는 집단을 의미하고 객체는 집단을 이루고 있는 최소 단위를 말합니다. 군중 시뮬레이션에서는 파티클을 의미하는 것으로도 볼 수 있습니다. 스티어링 포스는 파티클이 커런트 벨로시티에서 디자여드 벨로시티로 가고자 하는 포스, 힘이라고 생각할 수 있습니다. steeringForce = desired Velocity - current Velocity 입니다. 커런트 벨로시티는 현재 움직이는 방향, 디자여드 벨로시티는 목표 지점을 향한 방향, 스티어링 포스는 현재 움직이는 방향으로부터 목표 지점으로 향하고자 하는 방향으로 정의 합니다. 군중 시뮬레이션에서 파티클의 행동 습성은 크게 두 가지 유형으로 나우어 볼 수 있는데 공동체적인 그룹 비헤이브여즈와 인디비듀얼 비헤이브여즈 입니다. 그룹 비헤이브여즈는 주변에 있는 구성원의 움직임에 영향을 받아서 생기는 습성으로 무리 전체보다는 주위 일정 범위 내의 구성원을 토대로 습성이 결정됩니다. 무리를 지어 움직이려면 최소 세퍼레이션, 센터링, 벨로시티 매칭 이 3가지 조건을 충족해야 합니다. 세퍼레이션 포스는 무리 속에서 움직일 때 서로 간에 일정한 거리를 두는 것을 말합니다. 충돌 자체가 무리를 지어 움직이는 것의 기본적인 허들이기 때문에 이것은 너무나 기본중의 기본입니다. 세퍼레이션 포스 스텝을 간략하게 살펴보면 스텝 1- 무리 속에 있는 A가 그 주위에 있는 모는 객체를 찾고 A 일정 범위 안에 있는 다른 캐릭터들은 A에 속하게 됩니다. 스텝 2-A의 이웃 캐릭터들 중의 하나가 neighborhoodCharacter[i]라고 한다면 A와 neighborhoodCharacter[i]의 거리 벡터를 계산하여 노멀라이제이션 합니다. 노멀라이제이션을 하는 이유는 그 벡터의 방향을 구하기 위해서 입니다.  스텝 3- 노멀라이즈드 디스턴스 벡터의 반대 방향이 A가neighborhoodCharacter[i] 멀어지고자 하는 방향입니다. 따라서 세퍼레이션 포스는 노멀라이즈드 디스턴스 벡터의 반대 방향이며, 그 힘의 크기는 거리에 반비례 합니다. 이는 서로 가까워질수록 세퍼레이션 포스가 커지는 것을 의미합니다. 센터링 포스는 무리가 이동할 때 흐트러지지지 않고 주위 캐릭터들이 곁에 있으려고하는 습성입니다. 쉽게 이야기하면 100% 맞아떨어지는 것은 아니지만 응집력이라고 표현할 수도 있습니다. 벨로시티 매칭 포스는 자신이 속한 그룹과 속도를 맞추어 같은 방향을 향해 움직이려고 하는 습성입니다. 센터링 포스와 같이 집단 행동을 유지하는데 필수적인 요소입니다. 인디비듀얼 비헤이브여즈는 무리의 전체 움직임과 직접적인 관계는 없고 일반적으로 자신이 속한 그룹을 벗어나지 않는 선에서 혀용이 됩니다. 가장 기초적인 습성들은 골, 팔로잉, 벡터 필드, 아브스터컬 어보이던스, 완더링입니다. 골 포스는 골을 향해 가고자 하는 습성을 말합니다. 팔로잉 포스는 정해진 경로를 따라 움직이는 습성을 말합니다. 벡터 필드 포스는 로컬 아레아에 분포되어 있는 벡터 필드 또는 벨로시티 필드에 영향을 받아 움직이는 습성입니다. 아브스터컬 어보이던스는 충돌의 위험이 크면 모든 습성을 무시하고 피하는 것입니다. 콜리전 리스폰즈와 다른 점은 충돌은 없지만 충돌을 예감해 피하고자 하는 것입니다. 완더링 포스는 자연스러운 동작을 생성하기 위해서는 약간의 불규칙적인 요소가 필요합니다. 그렇지 않으면 너무 규칙적이고 인위적으로 느껴지기 때문입니다. 완더링 포스는 현재의 파티클 위치에서 원 위의 점을 향하는 방향 벡터가 되며, 다른 습성들 모두에 추가로 합해집니다. 군중 시뮬레이션 시스템에 대해서 전체적으로 간략하게 주요과정을 요약해보면 1-임의의 파티클에 작용하는 습성들의 평균값. 2-뉴턴의 제2법칙. 3-오일러 공식. 4-디스플레이 애니메이션입니다.군중 시뮬레이션의 전반적인 과정은 각각의 캐릭터들에 대한 반복적인 프로세스가 기반이 되고 여기에서 프리 시뮬레이션/ 메인 시뮬레이션/ 포스트 시뮬레이션/ 디스플레이 애니메이션으로 파생됩니다. 프리 시뮬레이션에서는 습성들의 선택과 이웃 캐릭터들의 선택이 이루어집니다. 메인 시뮬레이션에서는 선택된 습성의 계산, 습성의 블렌딩, 뉴턴의 제2법칙, 오일러 공식이 적용됩니다. 포스트 시뮬레이션에서는 업데이트와 클린 업 데이터가 적용됩니다.

반응형
댓글