Gymnast는 XNA 기반에서 만들어진 무료게임으로 일전에 소개했던 Ski Stunt와 같은 2D 물리엔진 기반의 게임이다. 철봉이라는 소재를 게임화한 것이 특이하다. 기존의 Ski Stunt는 커서의 위치에 따라 ZMP를 이용하는 식이었지만, 이 게임은 2개의 아날로그 스틱을 통하여 상체와 하체를 나누어 조절하는 식이다. 또한 스테이지 에디터를 내장하고 있어 나만의 철봉경기장을 디자인 할 수 있다.

엑스박스 컨트롤러가 필요하지만 위모트나 Sixaxis로도 플레이 가능하도록 되어 있다. 동영상만 보면 쉬워보이지만 실제로 해보면 Ski Stunt보다도 조작성이 떨어지고, 게임 진행이 힘들 정도로 게임이 어렵다. 2차원 기반이라 하더라도 인체모션에 물리엔진이 적용되면 얼마나 게임이 산으로 가는지를 여실히 보여주고 있다. 2개의 아날로그 패드로 입력하는 커멘드가 같다 하더라도 커멘드 입력시 가지는 각 관절의 모멘텀이 다르면 다른 결과를 보여주기 때문이다. 결과적으로 화면에 움직이는 모션을 보면서 커멘드를 실시간 Calibration해야 하는데, 이 부분이 게임을 하드코어하게 만든다. (인간의 뇌에 들어있는 multi-body inverse dynamics solver는 오로지 자신의 육체에만 제대로 반응하는 듯)


다만, 개발사(?)인 WALABER.COM의 참신함에는 큰 점수를 주고 있다. 또한, XNA기반의 2D물리엔진인 Farseer Physics Engine이 오픈소스기반이라 인디 XNA 개발자들에게 도움이 될듯 싶다.

게임 다운로드

사이트 바로가기

Farseer Physics Engine for XNA 바로가기

AND

Autodesk MAYA를 사용하다보면 가끔 MEL Script의 강력함에 매료될 때가 있다. (불안정함으로 작업을 날려먹는 일은 부지기수지만..) 예전에는 Webbrowser Object를 이용해서 Web-Dav처럼 3D Resource를 웹 리포지토리에서 관리하는 MEL Script를 짤때 문득 들었던 생각이 이걸로 게임 만드는 바보도 있지 않을까하는 생각을 했었는데 진짜로 존재한다는 사실을 알게되었다.

스타워즈의 특수효과로 유명한 ILM(Industrial Light and Magic)의 3D 작업자 중 MAYA Guru 였던 Habib Zargarpour는 2002년 MEL과 MAYA Dynamics Engine을 이용하여 로봇을 제작하고 자신의 로봇을 다른 플레이어의 로봇과 겨룰 수 있는 게임을 만들었다. (재미로 만들었다가 ILM개발팀 내부에서 엄청난 반향을 일으켜서 출시하게 됐다는 후문이 있다.)

TV쇼프로인 Robot Wars:Extreme Warriors와 비슷한 개념으로 정해진 스테이지를 벗어나면 패배하도록 되어있다. 파괴룰은 적용이 되었는지 확인해보지 못했다. 명확한 Objective와 Play pattern이 있는게 아니기 때문에 게임이라 부르기보다 장난감에 가깝다고 보는게 맞지 않을까? Toribash, Rag-doll Kung-fu와 더불어 Physically-based Fighting Game의 가능성을 옅보게하는 의미있는 작품이다.


사이트 바로가기
AND

Anthony C. Fang와 Nancy S. Pollard의 Siggraph 2003에 publish되었던 Efficient Synthesis of Physically Valid Human Motion은 spacetime constraints framework의 performance에 초점을 둔 흥미로운 paper이다. 이 paper를 C. Karen Liu Zoran Popovi´c의 Synthesis of Complex Dynamic Character Motion from Simple Animations와 함께 보면 상당한 유사점을 찾을 수 있는데, simple parameters를 constraints으로 하여 physically valid motion을 생성하는 것이 그것이다. 하지만 포커싱에서 큰 차이를 보이는데 전자는 constraints를 단순화 시킴으로서 퍼포먼스를 향상시키려 함이고, 후자는 단순한 constraints만으로 높은 퀄리티의 모션을 뽑아내는 것이 목적이다. 퍼포먼스 향상의 비결은 매우 단순한데,

- Constraints의 단순화를 통한 모델의 simplize : Ground Contact Friction과 Bar Contact Friction, 그리고 Flight Model에 단일 aggregate force & momentum을 사용함으로 equation의 수를 획기적으로 줄였다. 또한, mass-spring damper를 사용하지 않고 더더욱이 개별 joint에서 발생하는 momentum역시 생략해버려서 제어없이 발생하는 passive force는 없는 것이다. (결국 controller에서 모두 해결해버린다.)

- Joint Body의 Velocity와 Momentum계산의 복잡성은 이 2개의 속성이 다른 방향을 통해 결정된다는 것이다. (Velocity는 Base에서 끝으로 더해나가야 하고, Momentum은 끝에서부터 계산되서 Base로 와야 하기 때문에.) 하지만 간단한 꼼수를 이용해서 local position을 2개의 translation X로 분리하여 Fi를 local velocity, local momentum와 Fi+1로 이루어진 공식으로 유도할 수 있다. 결국 단방향으로 전체 F를 계산할 수 있기 때문에 O(N)으로 떨어지게 된다.



더우기, Appoximation없이 유도만으로 식이 생성되었기 때문에 Error가 없다. 하지만, 실 생활에서 주어진 조건에 따른 최적의 움직임은 여러개인데 반해서 이 방식은 결국 해를 구하는 Jacobian Matrix를 만들어서 일괄적으로 풀어버리기 때문에 해가 무조건 1개이다. 따라서 해가 1개가 될 수 없는 미묘한 움직임(그냥 서있기)은 제대로 작동하지 않는다. 또한, Joint에 Torque를 주는 만큼 Complexity는 증가하여(O(KN)), 모든 Joint에 Torque를 부여하면 O(N^2)이 되어 버린다.

1,4,6번째 그림이 조건이고, 나머지가 이를 이용한 결과이다. (Keyframe을 생각하면 비슷하다.)


Paper PDF 다운 받기

저자 웹사이트 가기
AND

쏟아지는 paper의 홍수 속에서 흥미로운 주제만 간단히 소개할까 한다. Physical Based Motion의 선구자중 한사람인 Zordan, V. B.와 CMU의 Pollard, N. S.가 2005년에 연구한 이 Paper는 Physical Based Model중에서도 구현이 쉽지 않은 Soft Body끼리의 Interaction (Collision & Sensing & Control/Feedback)을 '악수'라는 예제를 통하여 다루고 있다. 대충 읽어본 바에 의하면 모션의 소스는 "모션 캡쳐"에서 시작되며, 이후 Parameterized되어 "Neutral-Opening_1-Closing-Gripping-Releasing-Opening_2-Relaxing-Neutral"의 사이클을 가지게 된다. 이를 이용하면 물체를 잡거나 놓치거나가 가능하다. (다만 손안에 넣어주는 물체에만 가능하다. 이 프로젝트는 매우 작은 Constraint만을 허용하고 있다.)
상당히 흥미롭고 중요한 주제이지만, 정작 연구는 주제를 벗어났다는 생각이다. 예제를 통해 얻은 것은 꼼수를 통해 그럴싸하게 보이는 것이지만, 위에서 언급했던 중요한 Interaction Factor가 부족하다. (Sending이나 Feedback에 따른 새로운 Motion Interpolation등이 부족하다.) Parameter들에 따라서 실제처럼 움직여 보이지만 Biomechanical 관점에서 촉각에 따라 사과면 사과 바나나면 바나나에 맞는 최적의 손가락 관절 움직임이 되었으면 더 의미 있었겠다는 생각이다.

사이트 바로가기

논문 다운 받기(PDF)
AND