Overview
Гайд Очень сырой и недоработанный, на ранней стадии! Оценивать и критиковать пока не стоит, я опубликовал, просто чтобы показать некоторые анимации людям, возможны даже глупые каллиграфические ошибки. В будущем много чего добавлю и переделаю Основные математические понятия для работы в Houdini
Определение
- Скаляр – одно число, может быть целочисленное – int, или дробное – float.
᠌ ᠌
- Вектор – трехкомпонентное значение, которое оперирует не только направлением а еще и длиной. Например когда мы рассматриваем какие то динамические процессы, нам не обойтись без манипуляции над какими то физическими параметрами, такими как направление, скорость, координаты и т.д. Большинство этих параметров являются векторами. У вектора 3 компонента – x, y, z, если нужно, можем обращаться только к одному из них. Так же вектором является цвет, с компонентами r, g, b.
Длина вектора вычисляется по указанной формуле. Из этого выходит, что вектор никогда не может иметь отрицательную длину. Например вектор скорости – v, указывает направление, а его длина означает скорость.
Большинство математических формул, не нужно запоминать наизусть и записывать вручную, для этого в Houdini есть встроенные функции[www.sidefx.com]
᠌ ᠌
Нормализированный вектор – длина которого равна 1.
Матрицы это способ хранения данных. Они все квадратные, 2×2, 3×3, 4×4. Таблица чисел, которые могут быть как то использованы. Матрицы не обязательно связаны с перемещением точек в пространстве, но именно в 3D они используются для этого, в подавляющем большинстве случаев. В ней есть “строки” и “столбцы”. Существуют разные термины – Rotational Matrix, Translation Matrix, Identity Matrix. И единственная разница между этими терминами, то, как мы применяем матрицу.
Единичная матрица – Identity Matrix
Квадратная матрица, элементы главной диагонали которой равны единице поля, а остальные равны нулю. И когда вы умножаете ее на позицию, позиция не меняется. Будто вы умножили позицию на единицу. Ее создают для того, что бы было над чем работать.
Операции над векторами
Операция над двумя векторами, результатом которой является float, положительный или отрицательный.
Таблица приведена с учетом нормализированных входных значений
Эти данные могут быть использованы для разных условий. Например если объект движется в нужную нам сторону, мы к нему применяем дополнительные силы.
Если перед вычислением нормализировать вектора, то с помощью арккосинуса, мы может узнать точный угол между двумя этими векторами в радианах, и конвертировать в градусы.
Умножение векторов, результатом которого будет вектор, перпендикулярный обоим исходным векторам, длина которого равна площади параллелограмма, образованного исходными векторами. Но эта длина практически никогда не используется, по этому, нужно применять нормализацию результата. Потому что, от этой функции в основном нужно только направление.
Функция не даст никакого результата, если вектора строго параллельны или противоположны.
При сложении векторов, каждая их компонента суммируется. На примере показано направление и скорость обьекта, если на него будут влиять одновременно 2 силы.
Скорость – это длинна полученного вектора.
Вычитание рассчитывается по тому-же принципу что и сложение – вычитаются соответствующие компоненты векторов. С помощью вычитании позиции двух объектов, можно получить вектор направления, который указывает из одного обьекта на другой
Операции с матрицами
Представьте, будто каждая строка матрицы описывает вектор оси обьекта. И если например увеличить длину оси Z, то геометрия трансформируется по оси Z. Так и работает Scale. А если изменить ее направление – будет искажение. Ниже представлено как работает матрица вращения по оси Y.
При повороте геометрии по оси Y, одновременно меняются направление осей X и Z в матрице. Для попорота геометрии по какой либо оси, используется функция rotate, в которую нужно подать матрицу, угол поворота в радианах и ось по которой поворачивать