преобразование opengl из координаты модели в мировую координату - PullRequest
0 голосов
/ 13 октября 2018

У меня проблемы с пониманием перехода от Модельной Координаты к Мировой Координате.Вот слайды, моя главная проблема в том, что такое m1, x1, x2, x3, y1, y2, y3 и z1, z2, z3.Какую ценность они представляют?и как мне это определить.

enter image description here

1 Ответ

0 голосов
/ 14 октября 2018

Они представляют собой преобразование.В частности, они представляют базисные векторы преобразованной системы координат.Чтобы понять, что это значит, я рекомендую посмотреть " Сущность линейной алгебры " от 3Blue1Brown. Она объясняет все, что вам нужно знать об этих преобразованиях, интуитивно понятным способом.

Практически, что вы 'В основном я хочу сделать 3 вещи: вы хотите масштабировать ваш объект, вы хотите вращать ваш объект, и вы хотите переместить ваш объект.Все это преобразования.Всякий раз, когда вы видите слово «преобразование», читайте его как «матрица».Все эти операции являются матрицами.

Так, например, матрица масштабирования:

sx  0  0 0
 0 sy  0 0
 0  0 sz 0
 0  0  0 1

Где sx - это величина, которую вы хотите масштабировать в направлении x и т. Д..

Матрица вращения будет зависеть от оси вращения, например, это матрица вращения, чтобы вращать объект вокруг оси x на угол t радиан, следуя правилу правой руки:

1       0      0 0
0  cos(t) sin(t) 0
0 -sin(t) cos(t) 0
0       0      0 1

Вы можете найти другие здесь .

Это матрица перевода, используемая для перемещения объекта:

0 0 0 tx
0 0 0 ty
0 0 0 tz
0 0 0  1

Вы комбинируетеэти преобразования путем умножения их вместе.Поэтому, если ваша точка (x, y, z), S - это ваша матрица масштабирования, R - ваша матрица вращения, а T - ваша матрица перевода, вы преобразуете точку следующим образом: p = T*R*S*(x,y,z,1).1 в качестве «4-го измерения» используется для проецирования.Графический процессор делит x, y и z на это значение, называемое w, после завершения обработки вершины.Исследуйте проекционные матрицы, чтобы узнать больше.

...