Почему GfMatrix4d::SetLookAt дает поворот, противоположный ожидаемому?
Я пытаюсь сориентировать камеру, расположенную в (1, 0, 1), так, чтобы она указывала на цель. Для упрощения я предполагаю, что целью является источник, но он может быть где угодно. Вот код, который я использую:
const GfVec3d from_vec{ 1.0, 0.0, 1.0 };
const GfVec3d to_vec{ 0.0, 0.0, 0.0 };
const GfVec3d up{ 0.0, 1.0, 0.0 };
GfMatrix4d m;
m.SetLookAt(from_vec, to_vec, up);
GfVec3d rotation = m.DecomposeRotation(GfVec3d::XAxis(), GfVec3d::YAxis(), GfVec3d::ZAxis());
std::cout << "rotation: " << rotation << std::endl;
В документах для SetLookUp() указано, что он « жестко поворачивает ориентацию относительно своей канонической рамки, которая определена как направленная вдоль оси -z с осью +y в качестве направления вверх », а положительные значения поворота определены как противодействующие. вращается по часовой стрелке вокруг оси, если смотреть вниз по этой оси в направлении начала координат. Поэтому я ожидаю положительного поворота на 45 градусов вокруг оси Y, который я могу применить к камере, чтобы она указывала на начало координат: (0, 45, 0).
Вместо этого я получаю отрицательное вращение: (0, -45, 0).
Что я здесь делаю неправильно?