ecsimsw

Rotate / Euler angle / Quaternion 본문

Rotate / Euler angle / Quaternion

JinHwan Kim 2019. 1. 27. 15:08

Rotate

  • Euler angle
    - 유니티에서 회전은 크게 Euler angle / Quaternion 으로 표현된다.
      오일러(Euler) 방식은 X,Y,Z 축을 기준으로 회전 값 만큼 회전 시키는 우리에게 익숙한 방식이다. 하지만 이는 "짐벌락" (세 회전을 차례로 적용 시 이전 두 회전의 결과로 세 번째 축이 이전 축 중 하나와 같은 방향을 가리킬 수 있다는 문제)을 야기하므로, 유니티 내부에서는 쿼터니언(Quaternion) 방식을 취한다.
      위처럼 inspector에서 직접 rotation 값을 변경하는 방식은 오일러 방식이지만 실제로 유니티 내부에서는 쿼터니언 방식으로 저장된다.
  • Quaternion
    - 유니티 내부에서 오브젝트 회전을 표기하는 방식으로 x,y,z,w 네 개의 값으로 표현되지만, 사용자가 직접적으로 알 필요는 없다. (다시 시간을 내어 원리에 대해 공부할 생각이다.)
      우선 기초를 공부하는 입장에서 우리에게 익숙한 오일러 방식을 쿼터니언 방식으로 변환하는 방법을 공부하고, 그것으로 오브젝트를 rotation 값을 변경하는 것을 목표로 하였다.
    - Quaternion 클래스를 이용하면 편한게 쿼터니언 방식을 다룰 수 있다.
    transform.rotation = Quaternion.Euler(10, 20, 30);
  • transform.Rotate
      위처럼 Quaternion.Euler() 메소드를 이용해서 원하는 rotation 값을 지정할 수 있고, Rotate 메소드로 기준 축과 정도를 지정할 수 도 있다.
    transform.Rotate(new Vector3(0, 1, 0) * Time.deltaTime); transform.Rotate(0,Time.deltaTime * 100,0); transform.Rotate(Vector3.up, Time.deltaTime * 100);
      세가지 모두 같은 결과를 낸다. Translate()과 마찬가지로 서로 다른 frame rate 환경에서도 동일한 시간 대비 회전을 주기 위해 Time.deltaTime을 곱하였다.

'Etc > Unity' 카테고리의 다른 글

Rigidbody / AddForce / AddTorque  (0) 2019.01.28
Accessing other gameobjects  (0) 2019.01.27
translate / position, Translate / Time.deltaTime  (0) 2019.01.26
Game object / Compoenets / Accessing /Tag  (0) 2019.01.17
Unity Screen Configuration  (0) 2019.01.16
Comments