|
97 / 11 / 1
Регистрация: 14.03.2017
Сообщений: 196
|
|||||||||||||||||||||
Матрица LookAt28.11.2017, 05:38. Показов 7475. Ответов 13
Метки нет (Все метки)
Бьюсь уже битые 2 недели, никак не получается. Хочу реализовать матрицу LookAt без glm, glu и прочей математической полезности. Рыскал по сайтам, вроде нашел код, но работать не хочет. Может кто объяснить, где ошибка?
Шейдер:
Источники https://msdn.microsoft.com/ru-... s.85).aspx https://learnopengl.com/code_v... ode=camera Добавлено через 5 часов 19 минут Итак, вот пару интересностей. Матрица проекции и матрица вида объявлены в Camera.h со static. Через метод Update матрица вида меняется, но... Когда я распечатал матрицу в мейне, она была проиницилизирована нулями. Я думал, что переменные со статиком можно изменять везде, но... Второе что заметил. Эту матрицу виду уже в мейне я нормализовал. Следовательно там в центре одни единицы. По логике при перемножении матрицы должна остаться такая же матрица, но ничего подобного, картинка исчезла. При простом умножении на матрицу проекции картинка выводится.
0
|
|||||||||||||||||||||
| 28.11.2017, 05:38 | |
|
Ответы с готовыми решениями:
13
Почему фигура, к которой применена команда lookat, трансформируется? Скорость поворота через lookAt
|
|
|
||
| 28.11.2017, 13:53 | ||
|
тогда должна быть именно та матрица gluLookAt https://www.khronos.org/regist... LookAt.xml PS:не все браузеры показывают адекватно поэтому прикрепил картинку
0
|
||
|
97 / 11 / 1
Регистрация: 14.03.2017
Сообщений: 196
|
||||||||||||||||
| 07.12.2017, 19:24 [ТС] | ||||||||||||||||
|
Раньше проблема была в нерабочем перемножении матрицы. Получалось так, что матрицы как-то теряли значения. Я исправил этот косяк и фигура, наконец, задвигалась, однако, ведет себя ну очень неестественно. Я не до конца понимаю, что я должен прописать в функции, чтобы она двигалась нормально (например, при перемещении мышки наверх сама фигура идет наверх, а не меняет проекцию). Я уже просто тыкаю наугад, пытаясь что-то изменить. Может кто помочь?
Если я убираю перемещение в lookAt, не работает перемещение по клавишам, если оно есть, то по клавишам работает, но ведет себя КРАЙНЕ странно.
0
|
||||||||||||||||
| 08.12.2017, 12:19 | |
|
Возможно/вероятно Вы стали жертвой того что матрицы хранятся совсем не так как они показываются в спецификации OpenGL. Возьмите исходники либы с матрицами (напр QMatrix4x4.h, совместима с OpenGL) и сравните напр свое умножение (оператор матрица * вектор) с тамошним. Я вижу что они не совпадают.
Ну и, конечно, практичнее "использовать готовое". Прикрутить либу не так уж сложно (напр Qt или GLM), а главное - рано или поздно это делать придется, напр назреет хоть какой-то импорт который потребует "своих" матриц.
0
|
|
|
97 / 11 / 1
Регистрация: 14.03.2017
Сообщений: 196
|
|||
| 08.12.2017, 21:14 [ТС] | |||
|
То есть изображение тупо не рисовалось пи 4 на 4, а вот где одномерный 16 все было нормально. Мне кажется проблема или неправильной подаче аргументов в LookAt, либо неправильным построением функции lookat (Но оно каким-то чертом у сех разное! У одного просто перемножение матрицы с матрицей перемещения, у другого инвертированная матрица. Я не понимаю!). Также может быть, что при инвертизации матрицы накапливается ошибка. Но такая ошибка не должна влиять так сильно...
0
|
|||
|
с++
1282 / 523 / 225
Регистрация: 15.07.2015
Сообщений: 2,562
|
|
| 08.12.2017, 21:39 | |
|
где пример того что вы испытываете свою функцию, средствами opengl нарисуйте треугольник и покажите
0
|
|
|
97 / 11 / 1
Регистрация: 14.03.2017
Сообщений: 196
|
||||||
| 08.12.2017, 22:32 [ТС] | ||||||
|
Снова поменял функцию на
Эта матрица - последняя битва в "войне" с glm. Сделаю её и можно будет переходить к самому изображению фигур.
0
|
||||||
|
97 / 11 / 1
Регистрация: 14.03.2017
Сообщений: 196
|
||
| 08.12.2017, 22:36 [ТС] | ||
|
"Нашел" треугольник в пространстве Довернул мышь буквально на пару пикселей.
0
|
||
|
97 / 11 / 1
Регистрация: 14.03.2017
Сообщений: 196
|
|
| 08.12.2017, 22:39 [ТС] | |
|
0
|
|
|
с++
1282 / 523 / 225
Регистрация: 15.07.2015
Сообщений: 2,562
|
||||||
| 08.12.2017, 22:41 | ||||||
Сообщение было отмечено Diochrome как решение
Решение
2
|
||||||
|
97 / 11 / 1
Регистрация: 14.03.2017
Сообщений: 196
|
|
| 08.12.2017, 22:52 [ТС] | |
|
Antikl, Мышка стала вести себя ПОЛНОСТЬЮ корректно. Теперь разворачиваться стала даже приятно. Клавиатура так и не "починилась". Видимо проблема ещё и там. По крайней мере вы вдохнули в меня надежду. Огромное спасибо!
0
|
|
|
с++
1282 / 523 / 225
Регистрация: 15.07.2015
Сообщений: 2,562
|
||
| 08.12.2017, 23:00 | ||
![]() Добавлено через 3 минуты если решите проблему отпишите, мне интересно ведь
0
|
||
| 10.12.2017, 14:42 | ||||||||||||||||||
).Матрицв LookAt переводит из исходной СК в локальную СК заданную векторами. На входе смещение (eyePos) задается в исходной СК, а в матрице должно быть записано в координатах локальной СК. Поэтому (после того как прописали вращение)
Добавлено через 1 час 15 минут
![]() Не по теме:
0
|
||||||||||||||||||
| 10.12.2017, 14:42 | |
|
Помогаю со студенческими работами здесь
14
Вращение другой оси объекта для LookAt возможно? Дана квадратная матрица А порядка n. Проверьте, является ли матрица единичной Дана квадратная матрица А порядка n. Проверить, является ли матрица единичной.
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|
Фото: Daniel Greenwood
kumehtar 13.11.2025
|