티스토리 뷰

반응형

소프트 바디의 기본 이론과 개념

보편적으로 릴리즈 된 3D 애니메이션이나 영화, 게임에서 천이나 패브릭, 젤리 같은 물질들의 부드러운 동작을 만들어 낼 때 소프트 바디가 사용됩니다. 소프트 바디 기능을 사용해 파티클을 기존의 폴리곤 모델에 적용하면 해당 모델의 버텍스 점들에 파티클들이 각각 마크 되어 이로부터 버텍스 점들이 파티클에 의해서 움직임을 갖게 됩니다. 그리고 그 파티클 사이를 스프링으로 연결한 것 같은 효과를 줌으로써 오브젝트가 움직일 때 부드럽고 유연해지 됩니다. 간략하게 정리하면 기존모델에 소프트 바디 적용 > 파티클의 기존 모델의 점들을 인식 > 애니메이션 > 파티클이 적용 된 점들의 움직임 정도로 이해하면 됩니다. 소프트 바디는 스프링 구조를 가지고 있습니다. 두 파티클을 연결하고 있는 매체가 스프링과 같은 특성을 가짐에 따라 외부에서 힘이 작용시 서로간의 거리가 상황에 맞춰 변하게 됩니다. 스프링은 늘어나는 특성과 함께 변형에 저항하려는 특성도 있어서 스프링 구조 내부에서의 힘의 요소들고 간과해서는 안됩니다. 스프링 구조에 연결된 파티클은 그 시스템의 내부와 외부에서 작용하는 모든 힘들의 합으로부터 액셀레이션 되어 운동변화를 일으킵니다. 이러한 힘들은 크게 익스터널 포스와 스프링포스 댐핑 포스 3가지로 세분화하여 구분할 수 있습니다. 익스터널 포스는 스프링에 작용하는 외적인 힘을 말하며, 스프링 포스는 스프링이 변형하려는 힘을 말합니다. 댐핑 포스는 변형에 대한 스프링의 저항력을 의미합니다. 스프링 구조의 내부에 발생하는 힘의 요소들은 공간 베터로 표현이 가능하며 소프트 바디에 있어 가장 큰 영향을 줍니다. 스프링 내부에서 발생하는 힘의 요소는 스프링 포스, 댐핑 포스, 힌지 포스 3가지가 있습니다. 스프링 포스와 댐핑 포스는 이전에 설명한 내용과 같고 새롭게 등장한 힌지 포스는 면들이 이루고 있는 각도 변화에 대한 저항력을 뜻합니다. 힌지 포스에 대해서 간략하게 살펴보면 스프링으로 이루어진 구조는 면들의 각도 변화가 불안정하게 발생할 수 있기 때문에 두 면의 모서리에 힌지 스프링을 추가해 스프링 구조에 안전성을 올릴 수 있습니다. 댐핑 포스는 길이 변형에 대한 저항이지만 힌지 포스는 두 면이 이루고 있는 각도의 변형에대한 저항입니다. 서로 접하고 있는 두 면은 스프링 운동에 의하여 각도 변화가 생기게 되며, 그로 인해 스프링 구조의 면을 이루고 있는 각각의 버텍스에는 힌지 포스가 발생하게 됩니다. 이런 힌지 포스는 두 면이 접하는 선을 축으로 해 발생하는 회전력으로부터 유추될 수 있습니다. 회전력은 두면의 각도 변화량에 의하여 정의 되며 두면의 접선을 중심축으로 하는 회전력을 그 면들의 각도 변화량으로부터 구한 다음, 그로부터 각각의 버텍스에 작용하는 힌지 포스를 계산할 수 있습니다. 소프트 바디 시스템의 이해를 위해서는 오일러 공식에 대한 이해가 필수적으로 필요합니다. 소프트 바디를 이루고 있는 각각의 파티클에 대하여 단위 시간 동안에 일어난 운동의 변화를 이해하려면 첫째로 파티클에 작용하는 모든 힘의 합을 구해야하며, 두번째로 뉴턴의 제2법칙에 힘의 합을 적용해 파티클의 가속도를 알아내야 합니다. 세번째는 가속도를 오일러 공식에 적용해 파티클이 단위 시간 후에 갖는 새로운 속도를 계산합니다. 네번째는 파티클의 현재속도를 오일러 공식에 적용하여 파티클이 단위 시간 뒤에 움직인 위치를 계산합니다. 파티클로 이루어진 스프링 구조에 중력이 작용하면 파티클에 속도와 위치의 변화는 다음의 공식으로 알 수 있습니다. 파티클에 작용하는 힘의 합-가속도> 파티클의 속도 -속도> 파티클의 위치. 스프링 구조에서 파티클에 작용하는 힘은 중력의 외부 힘과 파티클 간에 발생하는 내부 힘으로 이루어집니다. 외부의 힘=중력-공기저항 입니다. 내부의 힘=스프링 + 댐핑 + 힌지 입니다. 따라서 질량을 갖고 있는 파티클이 이러한 힘들로부터 갖게 되는 가속도는 a=∑Fs/m= ∑Fs+∑Fd+∑Fh+g-R/m 입니다. 스프링 구조에서 파티클들이 복잡한 상호 작용을 일으키며 움직이기 때문에 파티클의 속도는 오일러 공식만 적용해서는 정확한 값을 얻기는 어렵습니다. 이러한 단점을 보완하는 방법으로는 런지쿠타 방식입니다. RK4라고도 합니다. RK4 함수를 오일러 공식에 적용해 속도를 구하면 V(t+△t) = V(t) + RK4F (V, △t) 입니다. 파티클의 새로운 위치를 계산하는 방법은 S(t+△t) = S(t)+△t*V(t) 입니다. 위에서 언급한 런지구타 방식에 대해서 조금 더 알아보면 The 4th Order Runge-Kutta Method 런지쿠타 방식 RK4 함수입니다. RK4는 테일러 시리즈의 4번째 미분계수까지 적용한 공식으로 오일러 공식이 테일러 시리즈의 첫 번째 미분계수만으로 이루어진 점을 감안하면, RK4는 스프링 시스템과 같이 좀 더 복잡하고 정밀한 파티클 운동을 계산하는데 아주 유용합니다. 오일러 공식은 X(t+h) = X(t)+K1☜K1=h*F(X(t), t)☜=h*d/dtX(t)= 단위 시간 * 속도 (여기에서 X=위치, t=시간, h=단위 시간) RK4공식은 X(t+h)=X(t)+RK4F(X,h)☜RK4F(X, h)=(1/6)*(K1+2*K2+2*K3+K4)☜K1=h*F(X(t), t☜K2=h*F(X(t)+0.5*K1, t+0.5*h)☜K3=h*F(X(t)+0.5*K2, t+0.5*h)☜K4=h*F(X(t)+K3, t+h)

 

반응형
댓글