Форум программистов, компьютерный форум, киберфорум
Наши страницы

Пишу игровой движок на C++. 030. pitch yaw roll камера

Войти
Регистрация
Восстановить пароль
Сайт движка - gost.imsoftworks.info
Исходные коды движка - https://github.com/532235/GoST
Документация
Примеры кода программ - https://github.com/532235/GoST/wiki

Другой хобби-проект в группе в вк https://vk.com/club154291467
Оценить эту запись

Пишу игровой движок на C++. 030. pitch yaw roll камера

Запись от 532235 размещена 08.01.2018 в 21:44

В движке есть камера с установкой цели. Обычная стандартная look at камера.
В этом то и её достоинство, что можно установить цель. Но, она не может крутиться в нужных направлениях. Если вести её вниз то достигнув определённого момента, вместо того чтобы показывать мир вверх ногами, она резко меняет положение, будто моментально повернулась на 180 градусов.
Так же для того чтобы она крутилась по/против часовой стрелке приходится колдовать с up вектором.

Решение есть, строить view матрицу кватернионами.

Проще решения я не видел.

Только встаёт вопрос, добавить ли в класс камеры сам объект кватерниона, или пусть так и останется вектор с углами Эйлера?
gtCameraImpl::render (новый тип камеры CT_PYR)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
case gost::gtCameraType::CT_PYR:{
        math::makePerspectiveRHMatrix( 
            m_projectionMatrix,
            m_fov,
            m_aspect,
            m_near,
            m_far );
 
        gtQuaternion qPitch( v3f_t( m_rotation.x_, 0.f, 0.f ) );
        gtQuaternion qYaw( v3f_t( 0.f, m_rotation.y_, 0.f ) );
        gtQuaternion qRoll( v3f_t( 0.f, 0.f, m_rotation.z_ ) );
        
        gtQuaternion orientation = qYaw * qPitch * qRoll;
 
 
        math::makeRotationMatrix( m_viewMatrix, orientation );
 
        m_viewMatrix = m_viewMatrix * m_worldMatrixAbsolute;
 
    }break;
Анимационный PNG
Нажмите на изображение для увеличения
Название: pitch yaw roll quaternion camera.png
Просмотров: 345
Размер:	1,005.0 Кб
ID:	4633
Размещено в Игровой движок
Просмотров 368 Комментарии 0
Всего комментариев 0

Комментарии

 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru