안녕 얘들 아,이 사람이 내 밤새 먹고있어. 그리고 마침내 도움을 청해. 기본적으로, 당신이 카메라 업데이트를 할 직후보기 매트릭스에서 피치 및 요를 계산하기 위해 매우 간단합니다 :Direct3D - 뷰 매트릭스에서 롤을 계산하려면 어떻게합니까?
D3DXMatrixLookAtLH(&m_View, &sCam.pos, &vLookAt, &sCam.up);
pDev->SetTransform(D3DTS_VIEW, &m_View);
// Set the camera axes from the view matrix
sCam.right.x = m_View._11;
sCam.right.y = m_View._21;
sCam.right.z = m_View._31;
sCam.up.x = m_View._12;
sCam.up.y = m_View._22;
sCam.up.z = m_View._32;
sCam.look.x = m_View._13;
sCam.look.y = m_View._23;
sCam.look.z = m_View._33;
// Calculate yaw and pitch and roll
float lookLengthOnXZ = sqrtf(sCam.look.z^2 + sCam.look.x^2);
fPitch = atan2f(sCam.look.y, lookLengthOnXZ);
fYaw = atan2f(sCam.look.x, sCam.look.z);
그래서 내 문제는 : 어떻게 유사 라디안 롤을 얻을 수있는 방법이 있어야합니다 Pitch와 Yaw는 코드 끝에 있습니다. 나는 나에게 의미가있는 것으로 보이는 수십 개의 알고리즘을 시도했지만 아무도 원하는 결과를 얻지 못했다. 많은 개발자들이이 값을 추적하지 못한다는 사실을 알고 있지만, 값을 기반으로 몇 가지 리 센터링 루틴과 클리핑 설정을 작성하고 있으며, 혼합 행렬을 View Matrix에 적용 할 때 수동 추적이 중단됩니다. 그래서, 누구든지 View Matrix에서 롤을 라디안 (또는도, 나는 상관하지 않음)으로하는 공식을 가지고 있습니까? 감사!
뒤늦은 지혜에 대한 설명은 전방 벡터에 따라 기본 위쪽 벡터를 아래로 기울일 필요가 있다는 사실을 완전히 잊어 버렸으므로 내 설명이 완전히 엉망이었습니다. – Goz