Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

как сделать свободно летающую камеру в OpenGL?

павел корнилов Ученик (199), закрыт 1 год назад
Здравствуйте.
Помогите с двумя похожими вопросами.
Имеется код перемещения камеры в 3D-пространстве OpenGL. Но камера перемещается так, как будто мы ходим по полу. Даже если смотреть вверх или вниз, она двигается в стороны, но позиция высоты остаётся неизменной.
Помогите дописать этот код так, чтобы камера свободно летала во все стороны. То есть, нажимаем "вперёд" и камера летит в направлении куда мы смотрим. Если, например, смотрим строго вверх или вниз, то перемещения по X и Z не должно происходить. Ну, то есть, как обычная noclip-камера в любой игре. Надеюсь, понятно объяснил.
В интернете уже всё обшарил, но не удается найти простой для понимания код. А тот который находится - слишком сложен. Разве нельзя сделать это без кватернионов, библиотеки GLM и т. д.?
код: https://pastebin.com/91wbsm6L

И второе: как найти точку перед камерой?
То есть, разворачиваемся куда-нибудь, нажимаем кнопку и перед нами на расстоянии N появляется объект (например - сфера).
Вопрос не в тем, как нарисовать сферу. А в том как вычислить нужную точку в стороне направления взгляда камеры.
Лучший ответ
del Просветленный (20602) 5 лет назад
Гугли про кватернионы в openGL.
Передвижение камеры по сути это просто перемножение координат на матрицу трансформации.

Если поймешь как работают матрицы трансформации то вопросы про камеры или анимации станут простыми и очевидными.
павел корниловУченик (199) 5 лет назад
Я уже кучу всего перечитал и кучу видео пересмотрел, но всё-равно не понятно.
Камеры по сути нет. Это просто весь мир сдвигается функцией glTranslate(x,y,z)
Но куда его двигать, чтобы получилось "вперёд" - не могу понять.
Очевидно, мир надо двигать в противоположную сторону. Чтоб получилось "вперёд", мир надо сдвинуть в направлении камеры.
Остальные ответы
Похожие вопросы