티스토리 뷰

반응형

파티클 시스템과 파티클 개론

파티클 데이터의 흐름은 파티클의 초기 값과 힘의 합-오일러 방식의 적용-충돌로 이루어지고 충돌에서 '예'일경우 충돌에 의한 운동의 변화로 이어지며, 충돌에서 '아니오'일 경우 파티클 데이터 업데이트로 이어집니다. 파티클 시스템의 구조는 크게 파티클 시스템/ 솔버/ 콜리젼/ 파티클 어레이/ 파티클로 구분할 수 있습니다. 파티클 시스템은 파티클과 넘버 오브 파티클, 타임으로 이루어져 있으며 솔버는 오일러 메서드, 미드 포인트 메서드로 이루어져 있으며, 콜리전은 콜리전 디텍션, 콜리전 리스폰으로 이루어져 있습니다. 파티클 어레이는 파티클 배열로 이루어져 있고 파티클은 포지션, 벨로시티, 에이지, 매스, 포스, 컬러 등의 속성을 가지고 있습니다. 파티클 시스템의 속성들에는 어떠한 것들이 있는지 자세히 살펴보도록 하겠습니다. 파티클 시스템의 속성에는 emit start- 파티클을 분출하기 시작하는 지점, rate-프레임 당 분출되는 파티클의 양, age- 파티클의 수명으로 life라고 표현되기도 합니다. velocity-파티클이 방출되는 순간의 초기 속도를 의미하며, 이벤트가 없으면 계속해서 해당 초기값으로 이동을 합니다. accelearion- 가속도를 의미하며, 파티클이 이동할 때 속도의 변화를 나타냅니다. translation- 파티클의 위치를 말합니다. rotation- 파티클의 회전 값, scale- 파티클의 크기, mass- 파티클의 질량, gravity- 파티클에 영향을 주는 중력값을 의미합니다. vortex- 파티클에 소용돌이 효과를 주는 것을 말합니다. wind- 파티클에 영향을 주는 바람 효과를 말합니다. 난기류나 노이즈 효과를 이용하면 불규칙적인 움직임을 만들어 낼 수 있습니다. goal- 파티클이 어떤 지점을 찾아가게 하는 일종의 목적지입니다. follow- 파티클이 지정된 선 또는 물체를 따라 움직이게 합니다. collision- 파티클의 충돌을 일으킵니다. resistance- 파티클 시뮬레이션에 공기 저항의 지정합니다. metaball- 파티클을 이용해 액체를 표현하고자 할 때 사용합니다. shader- 사물의 표면 질감, 재질을 나타냅니다. 이렇게 파티클 시스템과 속성들을 알고 있으면 C++ 프로그램으로 테스팅이 가능합니다. 물론 코딩에 대한 기본적인 지식이 필요합니다. 파티클 운동에 변화를 일으키는 요소들은 외부적인 힘의 요소와 파티클 내부, 상호간에 발생하는 내부적인 힘의 요소들이 있습니다. 파티클들을 특수한 조건으로 연결하면 다양한 형태의 움직임을 구현할 수 있습니다. 이러한 경우에는 대부분은 내부적인 요소가 크게 영향을 끼칩니다. 즉 외부에서 작용하는 힘 < 파티클 간에 생기는 내부의 힘 입니다. 파티클 조직으로 구성된 사물들은 Fuzzy objects, Particle Crowd objects, Soft Body objects, and Rigid Body objects 총 4가지 모델로 구분할 수 있습니다. Fuzzy objects는 파티클 객체들 간에 특별한 연결 조건 없이 독립적으로 움직여 불특정한 형태의 사물들을 표현하는데 사용됩니다. 연기, 화염, 허리케인, 바람 등과 같이 형태가 명확하지 않게 움직이는 현상 표현에 적합하여 자주 사용됩니다. Particle Crowd objects는 파티클들이 집단 속에 소속되어 일정한 형태와 패턴으로 움직이는 현상을 표현할 때 사용합니다. 예를 들면 군중 시뮬레이션이 이에 해당됩니다. Particle Crowd simulation은 파티클들을 이용하여 캐릭터들이 공간 좌표상에서 갖게되는 위치나 속도의 변화를 계산한 다음 그 결과를 다시 캐릭터들에 적용합니다. 예를 들자면 1000여 명의 군대 전투 씬에서 양쪽 진영이 격돌하는 경우 캐릭터끼리 동료들과 부딪쳐 쓰러지지 않게 하기 위해서는 일정한 거리와 공간을 유지하려는 움직임들을 파티클을 이용해 먼저 계산하고 최종모델에 그 결과값을 적용해야합니다. Soft body objects는 파티클들이 탄력있는 매개체로 서로 연결되어 있는 구조로 젤리, 고무공 처럼 탄력이 있고 형태 변화가 생기는 사물을 표현하는데 적합합니다. 긴머리나 옷의 표현도 가능하지만 헤어와 옷의 표현은 파티클보다 더 전문적인 이를테면 마블러스와 같은 프로그램을 사용하는 추세입니다. Soft Body objects는 해당 오브젝트의 탄력성의 이해 조절이 가장 중요합니다. 이는 사물의 특성상 길이의 변화가 제한적이지만 각도에 대한 변화가 비교적 자유롭기 때문 입니다.  Rigid Body objects는 Soft Body objects처럼 파티클들이 서로 연결되어 있지만 상호 간의 거리가 변하지 않고 초기의 형태를 그대로 유지하기 때문에 Soft Body objects와 반대로 형태 변화가 없는 딱딱한 사물들을 표현하는데 사용됩니다. 외부에서 힘이 작용할 때 거리 변화 없이 초기 형태를 유지하며 같이 움직이는 특성상 물체의 회전력을 고려해야 합니다. Rigid Body는 충돌에 의한 형태 변화가 없으며, 위치 이동과 더불어 자체 회전력을 갖는다는 점을 유념해서 사용해야합니다. 파티클 조직으로 구분 된  Fuzzy objects, Particle Crowd objects, Soft Body objects, and Rigid Body objects 4가지 중에서 군중 시뮬레이션의 경우에는 Particle Crowd objects와 Soft Body objects가 사용됩니다. 

    

반응형
댓글