[CEDEC 2009]결정적 수단은 텐솔, 물리 시뮬레이션 도입의 급소
Tensor : 3차원 공간에 있어서 9개의 성분을 가지며, 좌표 변환에 의해 좌표성분의 곱과 같은 형의 변환을 받는 양. 예를 들면, 물체의 관성 모멘트나 변형은 이것으로 표시됨. (출처 : 네이버)
물리 시뮬레이션(이후 물리)은 Havok 혹은 NVIDIA PhysX로 대표되는 물리 엔진이 준비되어 프로그래머나 게임디자이너의 도구로서 게임에 도입할 수 있게 되었다. 게임의 멋내기로서 혹은 게임성 그 자체에 물리를 넣는 타이틀은 드물지 않게 되었지만 그래도 아직 물리를 어려운, 행동 조정이 귀찮다라는 이유로 멀리하는 게임 크리에이터는 적지 않은 것 같다.
CEDEC 2009의 첫날에 행해졌던「게임 물리 취급 방법」이라고 세션은 그런 물리를 싫어하고 있는 게임디자이너나 프로그래머를 대상으로 게임에서 물리를 잘 이용하기 위한 포인트를 소개하는 내용. 4Gamer의 독자로서는 반대로 물리를 채용한 조정 부족의 게임에서 발생할 수 있는 기묘한 동작의 이유를 아는 단서로도 되는 내용을 포함하고 있었으므로 세션의 개요를 소개해 보고 싶다.
강체의 표현으로는 관성 tensor 조정이 키를 잡는다


게임에 있어서의 물리는 오로지 오브젝트끼리의 상호작용을 표현하는데 이용되고 있다. 오브젝트끼리가 충돌한다든가 구르고 부서지고 떨어진다……라고 하는 행동을 물리로 계산하는 것이다
|
데자이나의 손에 의한 키 프레임 애니메이션을 사용한 움직임에는 유한의 패턴 밖에 없지만 물리를 이용하면 무한의 패턴이 만들어진다. 패턴이 다양하게 되어 디자이너의 부담을 줄일 수 있다
|
세션을 담당한 것은 소니 컴퓨터 엔터테인먼트에 소속하는 마츠이케 유타카사씨, 타카하시루시씨, 사쿠라이 료스케씨 3명. 사쿠라이씨가 우선 게임 물리의 개요를 소개한 뒤, 마츠이케씨가 강체의 표현과 그 편성 포인트를 해설 그리고 마지막에 타카하시씨가 유체의 표현을 소개 하는 순서. 그 중에서도 가장 시간이 할애해진 것이 사쿠라이씨의 세션이었으므로 그 세션을 중심으로 정리해 보자.
게임에 있어서의 물리에 대해 재차 설명할 필요가 없다고 생각하지만 간단하게 정리하면 게임 중에 등장하는 오브젝트(물체)의 움직임을 물리 계산을 사용해 표현하는 것으로 보다 현실에 가까운 움직임을 표현하려는 물건이다. 사용되는 계산은 뉴턴 물리로 대표되는 고전물리의 레벨로 「물리라고 해도 대부분 어려운 것은 없다」(사쿠라이씨).
물리를 사용하는 결점에는 계산 부하가 높다고 하는 것을 들 수 있다. 극히 간단한 계산을 실시한다고 해도 오브젝트의 수가 증가하면 계산량이 증가하고, 게임에서는 프레임의 묘화에 맞추어 계산을 실시할 필요가 있으므로 계산 시간이 한정되는 것이 장애가 된다.
한편 이점은 「물리 법칙에 따라서 얻을 수 있는 행동의 패턴은 무한」(사쿠라이씨)이라고 하는 점이다.
물리를 이용하는 이점은 큰 것이지만 첫머리에서 말한 것처럼 조정이 어렵다는 이유로 채용을 피하는 게임디자이너가 적지 않다. 실제 「설정을 바꾼 것만으로 눈 깜짝할 순간에 행동이 불안정하게 된다」(마츠이케씨)라고 하는 것이 잘 일어난다.
게임 물리에서는 강체(딱딱한 오브젝트)에 형상, 위치, 속도, 질량이라고 하는 파라미터를 설정하여 계산시키지만 마츠이케씨에 의하면 파라미터 중에서 행동을 안정시키는 키가 되는 것이 관성 tensor이라고 한다.


물리 파라미터의 설정이 어려운 것이 게임 물리의 난점. 설정이 능숙하지 않으면 랙돌(여기서 말하는 랙돌은 물리로 작동되는 인체 등의 것)의 관절이 성장해 버리는 등 부자연스러운 움직임을 보이는 것도 적지 않다고 한다
|
강체가 가지는 파라미터 가운데 공동을 안정시키는 키가 되는 것이 관성 tensor이라고 한다.「관성 tensor을 이해하지 않는 채 물리 시뮬레이션을 적용하는 것은 위험이 있다」(마츠이케씨)
|
관성 tensor이라고 하는 것은 회전 하기 쉬움(회전 모멘트)를 보다 일반화한 수학 표현이지만 여기에서는 회전 하기 쉬움을 나타내는 파라미터 정도로 생각해 두면 충분하다. 관성 tensor이 크면 회전 하기 어렵고, 또 회전 하기 시작하면 멈춤기 힘들다. 반대로 관성 tensor이 작으면 간단하게 돌기 시작하지만 회전은 간단하게 멈춘다.
관성 tensor은 물체의 형상이나 중량 배분으로부터 결정할 수 있지만 물리 엔진에서는 「관성 tensor이 너무 작아 지면 물체의 움직임이 안정되지 않는다」(마츠이케씨)라고 한다. 그 때문에 물체의 형상으로부터 상정되는 관성 tensor을 그대로 사용해 버리면 오브젝트의 움직임이 안정되지 않는 결과가 되기 쉽다고 한다.


관성 tensor은 물체를 회전하는 축으로부터 바라보면 대체로 크기를 알 수 있다. 회전축에서 본 크기가 작으면 관성 tensor은 작고, 크면 관성 tensor은 커지는 것이다
|
예를 들면 봉과 같은 강체라면 단면 방향의 관성 tensor만이 극단적으로 작아져 버리기 때문에 불안정하게 되기 쉽다고 한다. 불안정을 억제하려면 관성 tensor을 실제보다 굵은 봉으로서 설정하면 잘 된다
|



대략적으로 컨스트레인트는 그림 중의 간이식에서 계산되지만 관성 tensor의 차이가 오차를 크게 해 버리는 결과, 관절의 부자연스러운 성장이라고 하는 현상을 일으킨다
|
추의 질량은100kg, 쇠사슬은 네 개의 오브젝트로 나누어진 1kg의 질량을 가지는 쇠사슬로 내려지고 있다. 이 질량 배분을 바탕으로 오브젝트의 관성 tensor을 설정하면 추를 털었을 때에 쇠사슬의 조인트가 떨어져 버리는 현상이 일어난다
|
실제로 시뮬레이션을 실행하고 있는 예. 왼쪽이 관성 tensor을 질량 배분 대로로 설정한 예. 중앙이 쇠사슬과 추를 같은 질량으로 한 예. 오른쪽이 쇠사슬의 관성 tensor을 크게 한 예로 왼쪽의 예가 가장 자연스럽게 움직이는 것처럼 보인다
|
랙돌의 관절의 부자연스러운 성장이라고 하는 현상도 관성 tensor을 조정하는 것으로 억제할 수 있다고 한다.
그럼 왜 랙돌의 관절이 부자연스럽게 성장하거나 하는 것일까. 관절은 물체와 물체끼리의 상호 작용……부딪친다든가, 붙인다라고 하는 계산(제약:컨스트레인트라고 한다)을 사용하여 움직임을 표현하고 있다. 물체끼리의 상호 작용이라고 하는 것은 간단하게 말하면 두 개의 물체의 속도와 위치, 그리고 두 개의 물체의 질량비를 사용하여 계산할 수 있지만 속도나 위치는 수학적 또 시간적인 제약으로부터 근사적으로 밖에 구할 수 없다. 관성 tensor은 질량 쪽에 걸려 오므로 관성 tensor의 차이가 근사의 오차를 확대해 버려 관절 등이 자연스러운 형태에는 표현할 수 없는 결과를 일으킨다고 한다.
그럼 실제로 무슨 일이 일어나는 것일까. 간단한 예로서 4개의 관절을 가지는 쇠사슬로 줄에 걸어서 내린 추의 예가 소개되었다.
오른쪽 중앙 그림(역주:바로 위 그림의 오른쪽)과 같은 쇠사슬 줄로 내린 추에 대해서 관성 tensor을 질량 배분대로 설정하면 추를 털었을 때에 조인트가 떨어져 버린다. 그것을 해결하려면 질량 배분을 바꾸는(쇠사슬에 대해서 추를 가볍게 하는) 방법도 있지만 쇠사슬 부분의 관성 tensor을 추에 대해서 크게 한다고 하는 조정으로 보다 자연스러운 움직임을 재현할 수 있다고 한다.
이것은 랙돌의 경우도 마찬가지로 실제 인체의 질량 배분대로 하면 관절이 성장해 버리는 현상이 일어난다. 아래의 예를 보면 좋겠다.




실제의 인체의 질량에 맞추어 오브젝트의 질량의 배분을 결정한다. 그 랙돌의 손을 고정해 움직이면 손의 관절이 성장해 버린다고 한다
|
실제로 시뮬레이션 한 예. 조금 알기 힘들지만 손을 고정하고 좌우에 랙돌을 거절하면 손의 관절이 떨어져 있는 것을 안다고 생각한다
|
고정되고 있는 손을 우선하여 질량을 다시 배분한다
|
04그러면 좌우로 털어도 관절이 성장하지 않는다
|
게임 물리와 실제의 물리는 다르다 ~ 의미를 이해한 위에 파라미터의 조절이 필요
이상 관절의 움직임에 더해 문의 움직임 등의 설명이 있었지만 간단하게 정리하면 「파라미터의 의미를 이해한 다음 파라미터를 잘 조절해 자연스러운 움직임을 재현하자」라고 한다.
관성 tensor과 같이 알기 힘든 파라미터를 의미를 이해하지 않고 조정해도 괜찮은 결과는 얻을 수 없다. 또 이해하고 현실 대로에 파라미터를 설정해도 역시 잘 되지 않는다. 랙돌의 중량 배분 등 현실과 동떨어지고 있지만 실제로 움직이면 「그것 같은」움직여 주는 것을 안다. 게임은 진짜 의미로의 물리 시뮬레이션은 아니니까 「그것 같은」움직임이 중요하다.
물리 엔진의 보급에 따라 향후도 물리를 넣는 게임이 증가할 것이다. 파라미터의 조정이 능숙하지 않은 게임도 물론 증가할 것이다. 게임 중 오브젝트의 부자연스러운 행동을 보면 이번 기사를 조금 생각해 내 주면 「아, 과연」이라고 납득할 수 있을지도 모른다.
출처 : http://www.4gamer.net/games/032/G003263/20090901058/
이 글은 스프링노트에서 작성되었습니다.
댓글