Вопрос по raytracing, lwjgl, ray-picking, java – Шаг камеры / рыскание к вектору направления

9

Я пытаюсь сделать луч из моей камеры. Я знаю координаты x, y и z камеры, а также ее наклон и рыскание. Мне нужно рассчитать вектор направления, чтобы я мог передать его в свой алгоритм трассировки лучей.

Вектор работы камеры равен (0, 1, 0). "Pitch", с точки зрения камеры, смотрит вверх и вниз.

(Я бы предпочел не использовать матрицы, но я буду, если придется)

Почему возражение против матриц? Это кажется самым логичным способом сделать это для меня. Слишком запутанно, слишком дорого? Если вы не используете матрицы, вам просто придётся придумать это, используя много тригонометрии, что в итоге приведет к тому же. Tim

Ваш Ответ

1   ответ
10

Предполагая, что ваша система координат настроена так, что выполняются следующие условия:

(pitch, yaw)  -> (x, y, z)
(0,     0)    -> (1, 0, 0)
(pi/2,  0)    -> (0, 1, 0)
(0,    -pi/2) -> (0, 0, 1)

Это вычислит (x, y, z):

xzLen = cos(pitch)
x = xzLen * cos(yaw)
y = sin(pitch)
z = xzLen * sin(-yaw)
Круто, это мне очень помогло: D
@ Нил Форрестер, что доза xzlen означает? где я могу найти математическое вывод формулы & # xFF1F;
xzLen длина единичного вектора в нужном направлении после проецирования его на плоскость, содержащую оси x и z. Формула непосредственно следует из определений sin () и cos ().

Похожие вопросы