Войти
ПрограммированиеФорумГрафика

Зачем нам эти жирные матрицы? (2 стр)

Страницы: 1 2 3 4 5 6 Следующая »
#15
0:57, 21 июня 2016

Ruins007
Хочешь сэкономить память на матрицах? Ооо! У тебя миллион матриц?


#16
1:34, 21 июня 2016

Так никто ж и не заставляет использовать матрицы там, где они не нужны

#17
12:32, 21 июня 2016

Кватернион это хорошая штука. Но если мы используем общие глобальные координаты как отправную точку для всех преобразования то кватернион нам не нужен. Штука в том что аппаратное обеспечение ориентировано на использование матриц, а не кватернионов. К тому же при преобразования относительно глобальной системы координат с матрицами работать быстрее с точки зрения вычислений. Лично мне кватернионы понадобились для реализации управления самолетом из кабины. Что связано с преобразованиями матрицы положения самолёта относительно его локального положения. Ну мы в кабине сидим, и если у нас право и лево зависят он положения самолета в пространстве то в зависимости от положения управление становится непредсказуемым и не естественным. В двух словах о КВАТЕРНИОНЕ с геометрической точки зрения это некоторое вращение одной системы координат относительно другой. В моем случае это было вращение самолета относительно глобальной системы координат. Но вся прелесть в том что каждое последующее преобразования кватерниона происходит относительно пред идущего. От чего и выходит что при повороте самолета скажем на 10град вправо, он повернет на 10 град по часовой стрелке относительно оси OY локальной системы координат (относительно своего текущего положения), а результатом станет ВСЕ накопленное вращение самолета относительно глобальной системы координат.
В итоге. Кватернион полезен при инкреминтальной (много последовательных преобразований) модели вращения, причем вращения применяются относительно самого кватерниона (накопленного вращения объекта). Подходит для интерполяции вращения (какая то сложная анимация вращения объекта вокруг нескольких произвольных осей).
Касательно всяких arctan2 и прочих преобразования через полярные(и больших размерностей) сферические координаты.
Если разобраться в способах вычисления тригонометрических функций через ряды до некоторой погрешности. У вас волосы встанут дыбом от необходимого кол-ва операций. А матрицы сводят кол-во таких операций к минимуму.

#18
12:38, 21 июня 2016

Clor
> Кватернион полезен при инкреминтальной (много последовательных преобразований)
> модели вращения, причем вращения применяются относительно самого кватерниона
> (накопленного вращения объекта).
С матрицами будет ровно так же. Домножай просто на матрицу и все.

#19
12:43, 21 июня 2016

MrShoor
> С матрицами будет ровно так же.
Не будет. Для правильной интерполяции вращения объекта нужны кватернионы. При использовании одних матриц будет хрень.

#20
12:44, 21 июня 2016

С углами ейлера есть проблема , если вращения неограничены. Я у себя использую поворот на кватернионах, а потом все записываю в матрицу. Тоже снчало думал передавать в шейдеры кватернионы и позицыю, но оставил матрицы для удобства, так как умножения матрц попроще.

#21
12:59, 21 июня 2016

CStalker
> При использовании одних матриц будет хрень
Хрень у тебя в коде, а не в математике

#22
13:00, 21 июня 2016

Уже дошли до gimbal lock.

#23
13:01, 21 июня 2016

ну а как же. Этот эффект вызвал длительный разогрев точки опоры относительно стула.)))

#24
13:08, 21 июня 2016

Aslan
> Хрень у тебя в коде, а не в математике
ты просто ни черта в этом не понимаешь xD Почитай как нибудь про кватернионы и почему их используют.

#25
14:20, 21 июня 2016

Так-то пацаны дело говорят. Где надо брать доли трансформации - скажем, повернуть на половину угла - там храним раздельно сдвиг-поворот-масштаб (причём поворот кватернионом, иначе можно случайно узнать много нового о своей квалификации). А где достаточно применить ряд переносов по порядку, там лучше не выпендриваться и перемножить матрицы.

Кстати, накапливать много матриц, типа поворота на 1 градус 720 раз, тоже не стоит, а то плавающий питух форму попортит.

#26
16:45, 21 июня 2016

CStalker
> Не будет. Для правильной интерполяции вращения объекта нужны кватернионы.
А я и не имел ввиду интерполяцию. Я имел ввиду инкрементальный поворот. Посмотри на текст, который я цитировал.

#27
17:05, 21 июня 2016

MrShoor
ты писал, что можно просто домножать на матрицу и все. Только вот результат может быть совсем не таким же, как при использовании кватернионов.

#28
17:30, 21 июня 2016

CStalker
> Только вот результат может быть совсем не таким же, как при использовании
> кватернионов.
Будет таким же (в пределах погрешности floating point)

#29
19:14, 21 июня 2016

Прошу прощения.
Дискуссия ведется в таком ключе, как-будто видеокарты аппаратно поддерживают математику кватернионов. Или у всех software rendering или я что-то упустил...
В свое время я использовал кватернионы вместо tangent space, экономя кучу видеопамяти/ускоряя переброску через AGP-шину, ради эксперимента - сделал, получилось, понял, что прогресс памяти/видеошины быстро поглотит профит кватернионов, а матрицы все равно быстрее ввиду хардварной поддержки, забил.
Используйте в предрендеринге ту математику/технологии, которые вас устраивают (кватернионы, воксели, рейтресинг), но в конечном итоге вы все преобразуете к тому, что быстрее на видеокарте: матрицы, тристрипы оптимизированные под кэш и т.д.

Страницы: 1 2 3 4 5 6 Следующая »
ПрограммированиеФорумГрафика

Тема в архиве.