В моих приключениях, чтобы лучше понять, что именно происходит с матрицами и вершинной математикой с OpenGL, я хотел посмотреть, смогу ли я заставить объект «прилипать» перед моей «камерой». Я играю с этим уже пару дней и чувствую, что приближаюсь.
До сих пор мне удавалось заставить объект следить за движением камеры, за исключением ее вращения (кажется, я просто не могу понять этот фронтальный вектор). Для создания новой позиции объекта у меня есть следующий код:
glm::mat4 mtx_trans = glm::mat4(1.0f);
mtx_trans = glm::translate(mtx_trans, camera->getPosition() + camera->getFront());
glm::vec4 cubePosVec4 = glm::vec4(0.0f, 0.0f, -3.0f, 1.0);
cubePosVec4 = mtx_trans * cubePosVec4;
cubePositions[9] = glm::vec3(cubePosVec4.x, cubePosVec4.y, cubePosVec4.z);
Где camera->getPosition()
получает вектор текущего положения камеры, а camera->getFront()
получает текущий фронтальный вектор камеры.
Как уже упоминалось, я нахожусь в процессе изучения того, что все здесь происходит, так что, возможно, я все об этом ошибаюсь ... В таком случае, как я должен идти о "блокировании" объекта на определенном расстоянии от камеры?