오일러앵글이 아니라 쿼터니언의 회전은 이해하기 어려울 수 있다.
회전각을 반전시키는 것은 더더욱...
예를 들기 위해 obj의 로컬로테이션을 미러하고 싶다고 가정했다.
보통은 아래와 같이 생각하지만,
new Quaternion(obj.localRotation.x * -1.0f, obj.localRotation.y, obj.localRotation.z, obj.localRotation.w);
실제로는 아래와 같아야 하고,
new Quaternion(obj.localRotation.x * -1.0f, obj.localRotation.y, obj.localRotation.z, obj.localRotation.w * -1.0f);
위도 비슷하지만 비틀림이 있기 때문에 아래와 같이 사용하는 것이 옳다.
new Quaternion(obj.localRotation.x, obj.localRotation.y * -1.0f, obj.localRotation.z * -1.0f, obj.localRotation.w);
참고 URL : https://www.gamedev.net/forums/topic/599824-mirroring-a-quaternion-against-the-yz-plane/
추가 메모 :
카메라 방향이 그대로 일 때 어떤 오브젝트의 이동과 회전을 거울 반전시키려면
포지션 x 축도 바꿔준다. (localPosition.x * - 0.1f)
댓글 없음:
댓글 쓰기