(컴퓨터 그래픽스) 짐벌락이란?

짐멀락이란? 같은 방향으로 오브젝트의 두 회전 추이 겹치는 현상을 말한다. 간단설명하면 우리의 오브젝트가 회전하려고 하는 방향으로 오브젝트가 회전하지 않는 것이다.
이것은 회전행렬을 사용할 시에 주의해야 할 제약사항이다.



오일러 앵글을 사용하는 시스템들(마야,Max,Lightwave,softimgage)에서는 이러한 짐벌락문제를 가집니다.

이것이 생기는 이유는 오일러 앵글이 설정한 순서에 각 축을 독립적으로 평가하기 때문입니
다.

3DS Max는 회전순서가 X,Y,Z로 되어있습니다. 물론 이 순서는 여러분이 원하기만 하면
변경이 가능합니다. 어찌 됐든 X,Y,Z로 회전순서가 돼어있다는 것은 먼저 X축으로 오브젝트를 회전시키고 그 다음 Y축으로 회전하고 마지막으로 Z축으로 회전한다는 의미입니다.

이때 여러분이 Y축을 90도로 회전할 때 짐벌락이 발생합니다.
왜냐하면 X 성분이 이미 평가가 됐기 때문에, 다른 두축으로 이동되지 않습니다.

이렇게 되면 X와 Z축이 서로 같은 축을 향해 가리키게 됩니다.

여러분이 오일러 앵글을 사용한다면 여러분은 짐벌락 문제를 항상 염두해 두어야만 합니다.
오일러 앵글을 사용하면서 얻어지는 장점은 오일러 앵글을 사용하면 쿼터니언 회전보다 그래픽 아티스트들이 이해하기가 매우 쉽다는 점입니다.

쿼터니언 회전은 훨씬 더 강력하며 튼튼합니다.
Max에서 ,TCB 컨트롤러는 방향을 구하기 위해서 쿼터니언 수학을 사용합니다.
쿼터니언 회전은 얼마큼 회전하는지를알려주는 행렬을 위해 4개의 값과 회전하려고 하는 방향을 구하기 위해 동시에 세개의 축을 평가합니다.

이렇게 쿼터니언을 사용하면서 얻는 이점은 여러분은 짐벌락에 대한 문제에
더 이상 고민하지 않아도 된다는 것입니다.

쿼터니언은 세개의 축이 동시에 업데이트 되기 대문에 짐벌락이 일어나지 않습니다.
물론 단점이 있는데 쿼터니언을 사용하게 되면 오일러 앵글보다 이해하기가 훨씬 더 복잡해지며 개념화하기가 어렵다는것입니다.

max에서 회전 스크립트 컨트롤러는 오일러 앵글보다 훨씬 더 강력하게 해주는 쿼터니언 회전이다. 그러나 쿼터니언은 사용하기가 어려우며 이해하기가 매우 어렵다.

나는 대개 코드에서 오일러 앵글을 사용했다 왜냐하면 이해하기가 쉬우며 애니메이트 시키기가 편하기 때문이다.

여러분은 그냥 오일러 앵글을 로컬 오일러, 월드 오일러,XYZ 베지어 등등 모로 부르던간에
심각한 제약사항이 있다는 것만을 기억해주기 바란다.

댓글

이 블로그의 인기 게시물

(네트워크)폴링방식 vs 롱 폴링방식

(ElasticSearch) 결과에서 순서 정렬

(18장) WebSocekt과 STOMP를 사용하여 메시징하기