Yaw/Pitch/Roll에 대한 잡담

참 많이 보고, 찾고 했지만 여전히 헛갈린다. 나의 기억력과 이해력이 딸려서 이겠지만 그래도 헛갈린건 사실이다. X, Y, Z축에 익숙하기 때문에, 막상 Yaw, Pitch, Roll을 만나면 한참을 생각하게 된다. Yaw, Pitch, Roll로 검색을 해보면 많은 레퍼런스와 쉽게 설명해주는 블로그 글들을 볼 수 있다. 그래도 여전히 적용하기가 쉽지 않다.

용어의 순서라도 일정했으면 좀 기억하기 수월했을까? Yaw > Pitch > Roll 이라고 하기도 하고, Pitch > Roll > Yaw로 하기도 하고, Roll > Pitch > Yaw로 얘기하기도 한다. 일단 정해진 순서는 없나 보다.

언리얼의 FRotator 생성자를 보면, Pitch, Yaw, Roll 순서이다.

FORCEINLINE FRotator::FRotator( float InPitch, float InYaw, float InRoll )
	:	Pitch(InPitch), Yaw(InYaw), Roll(InRoll) 
{
	DiagnosticCheckNaN();
}

특이하게, 유니티에서는 이 개념을 명시적으로 쓰는 API를 찾지는 못했다. 아마 조금이라도 쉽게 해주려고 이것들을 모두 encapsulate하지 않았을까.

어찌됐든 X축으로 회전을 시키려면 Roll, Y축으로 회전 시키려면 Pitch, Z축으로 회전 시키려면 Yaw이다. 나에게 맞는 것을 찾고자 하니 Roll > Pitch > Yaw가 적당한 듯하다. 그게 X, Y, Z 순서이니 말이다. (R.P.G(y) 로 외울까?)

유명한 비행기 예시처럼 비행기가 위로 옆으로 좌우로 흔들리는 것은 비행기가 가는 방향(로컬 좌표계)을 기준으로 중요한 개념인 것은 분명하다. 어쩌면 월드 좌표계 상에 X, Y, Z축이 고정되어 있는 상태에서 Roll, Pitch, Yaw로 설명할 때 혼란이 오는 게 아닐까.

잘 못 외우는 변명을 한참 해봤다.


Leave a Reply

Your email address will not be published. Required fields are marked *