Этот пост является продолжением серии постов о WebGL. Первый начался с основ, а предыдущий был о 3D камерах.
Как весь сайт указал, практически все в WebGL
на 100% зависит от вас. За исключением нескольких предопределенных имен, как gl_Position
,
почти все в WebGL определяется вами, программистом.
Тем не менее, есть некоторые общие или полу-общие соглашения об именовании. Особенно когда речь идет о матрицах. Я не знаю, кто первым придумал эти имена. Я думаю, я узнал их из Standard Annotations and Semantics от NVidia. Это немного более формально, так как это был способ попытаться заставить шейдеры работать в большем количестве ситуаций, решив на конкретные имена. Это немного устарело, но основы все еще существуют.
Вот список из моей головы
мировая матрица (или иногда матрица модели)
матрица, которая берет вершины модели и перемещает их в мировое пространство
матрица камеры
матрица, которая позиционирует камеру в мире. Другой способ сказать это - это мировая матрица для камеры.
матрица вида
матрица, которая перемещает все остальное в мире перед камерой. Это обратная матрица матрицы камеры.
матрица проекции
матрица, которая конвертирует усеченную пирамиду пространства в пространство отсечения или некоторое ортографическое
пространство в пространство отсечения. Другой способ думать об этом - это матрица,
возвращаемая функцией perspective
и/или ortho
или
orthographic
вашей математической библиотеки матриц.
локальная матрица
при использовании графа сцены локальная матрица - это матрица в любом конкретном узле графа перед умножением с любыми другими узлами.
Если шейдеру нужна комбинация этих, они обычно перечисляются справа налево, хотя в шейдере они будут умножаться справа. Например:
worldViewProjection = projection * view * world
Две другие общие вещи, которые делают с матрицей - это взять обратную
viewMatrix = inverse(cameraMatrix)
И транспонировать
worldInverseTranspose = transpose(inverse(world))
Надеюсь, зная эти термины, вы можете посмотреть на чужой шейдер и если вам повезет, они использовали имена, которые близки или похожи на эти. Тогда вы можете надеяться вывести, что эти шейдеры фактически делают.
Теперь давайте изучим анимацию дальше.