В настоящее время у меня есть настройка камеры с интерфейсом хрустального шара, где камера всегда смотрит на начало координат и, нажимая влево, вправо, вверх, вниз, просто перемещается вокруг объекта.
Я хочу изменить это, чтобы камера могла свободно перемещаться по 3D-окружению.
В настоящее время у меня есть две функции, ВЛЕВО и ВВЕРХ, которые были реализованы как CB-интерфейс, о котором я упоминал.
Я хочу, чтобы левая и правая клавиши перемещались влево/вправо, а вверх/вниз поднимали и опускали камеру. Как именно мне его изменить?
Кроме того... как правильно двигать камеру вперед и назад? Я подумал, может быть, перетаскивание мыши можно приравнять к движению вперед/назад?
void Transform::left(float degrees, vec3& eye, vec3& up) {
eye = eye*rotate(degrees, up);
}
void Transform::up(float degrees, vec3& eye, vec3& up) {
vec3 ortho_axis = glm::cross(eye, up);
ortho_axis = glm::normalize(ortho_axis);
eye = eye*rotate(degrees, ortho_axis);
up = up*rotate(degrees, ortho_axis);
}