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

Understading GRF

Motion Physics 2006. 4. 4. 03:02
Ground reaction forces (GRF)는 인체모션(특히 달리기와 펌프등의 다리가 땅에서 떨어지는 모션들)을 정의하는데 중요한 요소중 하나이다. 달리는 속도가 빨라질수록 더 높이 점프할수록 GRF는 증가한다. 일반적으로 생각하면 mocap data만으로 모션을 분석할 수 있다고 생각하기 마련인데, 이는 잘못된 생각이다. 왜냐면 인체의 Soft Body적 성향으로 인하여 외부로 나타나는 모션과 Ground Contact Force는 상당히 다르기 때문이다. 실례로 서전트 점프를 한다고치면 점프준비동작의 모션을 미분해봐도 V는 매우 작지만 실제 GRF는 상당히 크다. 또한, 달리다가 갑자기 멈출때도 자세는 Run Cycle과 크게 다르지 않지만 GRF Vector의 horizon part는 캐릭터가 달리는 반대편을 향하고 있으며 이에 따라 각 Muscle에 들어가는 힘을 계산해야 한다.

관련 Article 바로가기
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