Up вектор в реализации камеры

149
22 января 2020, 01:30

В примере к видовой матрице указано:

glm::mat4 View       = glm::lookAt(
glm::vec3(4,3,3), // Камера находится в мировых координатах (4,3,3)
glm::vec3(0,0,0), // И направлена в начало координат
glm::vec3(0,1,0)  // "Голова" находится сверху
);

Вопрос касательно 3го параметра. Разве up вектор, не должен указывать именно на точку над камерой (выше камеры)? Если у нас камера находиться в координатах (4,3,3), тогда up должен быть (4,4,3). Или нет?

Answer 1

Как уже написали в комментариях, up задается относительно позиции камеры.

up = точка_над_камерой - позиция_камеры = (4,4,3) - (4,3,3) = (0,1,0).

Answer 2

Вы, очевидно, путаете термины вектор и направленный отрезок. Термин вектор соответствует всему классу направленных отрезков одинаковой длины и направления, а не какому-то конкретному отрезку. У вектора нет и не может быть конкретной позиции, т.е. он по определению никак не привязан и не может быть привязан ни к какой конкретной точке. В каком месте располагается ваша камера - не имеет никакого значения. В вашем случае речь идет о том, что направление "up" задается вектором (0, 1, 0), ни больше, ни меньше.

READ ALSO
Строки вводятся не ожидаемым образом

Строки вводятся не ожидаемым образом

У меня есть код, в котором я ввожу число N, а потом просто ввожу в цикле по N строки, состоящие из пробелов, цифр, скобок и дефисовПотом я хочу...

117
c++ различие операторов?

c++ различие операторов?

Подскажите, чем отличаются данные фрагменты кода

129
Возврат из потока POSIX

Возврат из потока POSIX

Нужно вернуть данные из потоковой функции:

109
Как рендерить svg в gtkmm3, cairomm?

Как рендерить svg в gtkmm3, cairomm?

В C можно рендерить svg в cairo с помощю librsvg, чем рендерить svg в gtkmm? cairomm? или как засунуть в cairomm GdkPixbuf*?

114