2016년 8월 25일 목요일

유니티 물리 효과

3D 모델을 화면에 보여주는 기술은 렌더링(Rendering)이라 부르며, 이것을 처리해주는 소프트웨어를 렌더링 엔진(Rendering Engine)이라 부릅니다.
화면에 보이는 3D 모델을 움직이게 하기 위해서는 애니메이션(Animation) 효과를 줘야 합니다. 일반적으로 애니메이션을 만드는 방법은 다음과 같습니다.
  • 수치 해석적 방법(Numerical Method)으로 움직임을 만든다.
  • 키 프레임(Key Frame)을 정해주고 이를 연속적으로 재생(Playback)하여 움직임을 만든다.
수치 해석적 방법은 매우 부드럽게 움직일 수 있는 장점이 있지만, 복잡한 움직임의 경우는 표현하기가 매우 어려운 단점이 있습니다.
반면에 재생 방식은 어떤 움직임이든 표현할 수 있는 장점이 있지만, 키 프레임을 만들기가 어려운 단점이 있습니다.
수치 해석적 방법으로 애니메이션을 만드는 예
키 프레임을 재생하여 애니메이션을 만드는 예

3D 애니메이션 분야에서는 이 문제를 해결하기 위해 오랫동안 방법을 연구해왔습니다.
키 프레임 재생 방식 분야는 애니메이션을 보다 자연스럽고 편리하게 만들 수 있도록 도구가 발달했습니다. 3ds Max나 Maya등 애니메이션 전문 도구가 등장하여 키 프레임 생성의 어려움을 많이 극복했습니다.
3ds Max의 애니메이션 제작 모습

수치 해석적 방법은 자연 현상을 재현하는 방향으로 발전했는데, 이것이 바로 시뮬레이션(Simulation)입니다. 자연에 존재하는 여러 힘(중력, 마찰력 등)을 고려하여 어떤 물체가 움직이는 경로를 계산하는 것이 시뮬레이터(Simulator)입니다.
군사 훈련에 활용되는 시뮬레이션 기술

초기에는 이 시뮬레이션 기술이 군사, 산업 등 전문 분야에서만 활용되었습니다. 그러나, 이 기술이 점차 게임이나 영화등에 활용되기 시작했습니다.
이렇게 3D 모델을 현실과 비슷하게 움직이게 만드는 효과를 물리(Physics) 효과라 부르고, 이것을 처리해주는 소프트웨어를 물리 엔진(Physics Engine)이라 부릅니다.
유니티에는 이 물리 엔진이 내장되어 있고, 여러분들은 이 기술을 이용해서 3D 모델을 현실감있고 자연스럽게 움직일 수 있습니다.


RigidBody
유니티에서 GameObject를 물리 엔진에 의해 움직이게 하려면 강체(RigidBody)라는 Component가 추가되어야 합니다.

Rigidbody Component의 설정에 관해 자세히 알고 싶다면 유니티 공식 튜토리얼을 보기 바랍니다.
Rigidbody만 추가한다고 바로 3D 모델이 힘의 영향을 받아 움직이는 것이 아닙니다. 반드시 유니티를 재생(Play) 모드로 만들어야 그때부터 물리 엔진이 Rigidbody들을 움직입니다.


Collider
충돌체(Collider)는 물리 엔진이 Rigidbody들이 서로 부딪치는 효과를 내기 위해 필요합니다. 만약, Rigidbody가 Collider를 갖고있지 않다면 그냥 뚫고 지나가는 모습을 보게 될 것입니다.
3D 그래픽 외형의 모습은 Mesh 데이터를 이용해서 보여주지만, 충돌을 계산하기 위한 Collider는 계산량을 줄이기 위해 단순한 모양을 많이 사용합니다.

물론, 3D 모델의 모양과 최대한 근접하게 표현할 수 있는 Collider 사용도 가능하지만, 꼭 필요한 경우가 아니라면 추천하지는 않습니다.

Collider에 대한 더 자세한 이해가 필요하다면 유니티 공식 튜토리얼을 보시기 바랍니다.


Physic Material
마찰력이나 탄성력 등은 두 물체가 부딪칠 때 많은 영향을 주는 요소입니다. 유니티 물리 엔진에서도 이 요소를 표현하여 더 자연스러운 움직임을 만들 수 있습니다.
Collider는 Physic Material이란 것을 사용해서 마찰력과 탄성력을 표현합니다.
Physic Material은 Project Window에서 만들 수 있고, 만든 Physic Material을 반드시 Collider에 적용해야 효과가 나타납니다.
Physic Material 생성 메뉴

Physic Material 속성

Physic Material에 대한 더 자세한 이해가 필요하다면 유니티 공식 튜토리얼을 보시기 바랍니다.


Physics Joint
유니티 물리 엔진은 Rigidbody들이 서로 연결되어 움직이는 조인트(Joint) 효과를 지원합니다.
이 기능을 이용하면 사슬이나 문 등을 표현할 수 있고, 심지어 깨지는 창문 등도 만들 수 있습니다.

 유니티 공식 튜토리얼을 통해 Physics Joint로 뭘 할 수 있는지 확인해 보시기 바랍니다.




댓글 없음:

댓글 쓰기