Houdini Indie

Houdini Indie

Not enough ratings
Математика в Houdini [Alpha v.0.1]
By SerQ 🔥

Гайд Очень сырой и недоработанный, на ранней стадии! Оценивать и критиковать пока не стоит, я опубликовал, просто чтобы показать некоторые анимации людям, возможны даже глупые каллиграфические ошибки. В будущем много чего добавлю и переделаю
UPD. Изза начала войны мне пришлось забросить создание этого гайда
UPD. Cервера стим заглючили и половина моих gif с инфографикой в гайде удалились

Основные математические понятия для работы в Houdini

2
   
Award
Favorite
Favorited
Unfavorite
Определение
Скалярное значение
  • Скаляр - одно число, может быть целочисленное - int, или дробное - float.

᠌ ᠌
Векторное значение
  • Вектор - трехкомпонентное значение, которое оперирует не только направлением а еще и длиной. Например когда мы рассматриваем какие то динамические процессы, нам не обойтись без манипуляции над какими то физическими параметрами, такими как направление, скорость, координаты и т.д. Большинство этих параметров являются векторами. У вектора 3 компонента - x, y, z, если нужно, можем обращаться только к одному из них. Так же вектором является цвет, с компонентами r, g, b.

Длина вектора вычисляется по указанной формуле. Из этого выходит, что вектор никогда не может иметь отрицательную длину. Например вектор скорости - v, указывает направление, а его длина означает скорость.
Большинство математических формул, не нужно запоминать наизусть и записывать вручную, для этого в Houdini есть встроенные функции[www.sidefx.com]
᠌ ᠌
Нормализированный вектор - длина которого равна 1.
normalize(vec1)

Матрицы
Матрицы это способ хранения данных. Они все квадратные, 2x2, 3x3, 4x4. Таблица чисел, которые могут быть как то использованы. Матрицы не обязательно связаны с перемещением точек в пространстве, но именно в 3D они используются для этого, в подавляющем большинстве случаев. В ней есть "строки" и "столбцы". Существуют разные термины - Rotational Matrix, Translation Matrix, Identity Matrix. И единственная разница между этими терминами, то, как мы применяем матрицу.

Единичная матрица - Identity Matrix
Квадратная матрица, элементы главной диагонали которой равны единице поля, а остальные равны нулю. И когда вы умножаете ее на позицию, позиция не меняется. Будто вы умножили позицию на единицу. Ее создают для того, что бы было над чем работать.


Операции над векторами
Скалярное произведение векторов - Dot product[www.sidefx.com]
Операция над двумя векторами, результатом которой является float, положительный или отрицательный.

Результат функции
Что значит
-1
Вектора разнонаправленные (смотрят в разных направлениях)
0
Вектора перпендикулярны
1
Вектора сонаправленные (смотрят в одном направлении)
Таблица приведена с учетом нормализированных входных значений


Эти данные могут быть использованы для разных условий. Например если объект движется в нужную нам сторону, мы к нему применяем дополнительные силы.

Если перед вычислением нормализировать вектора, то с помощью арккосинуса, мы может узнать точный угол между двумя этими векторами в радианах, и конвертировать в градусы.
degrees(acos(dot))

Векторное произведение двух векторов - Cross product[www.sidefx.com]
Умножение векторов, результатом которого будет вектор, перпендикулярный обоим исходным векторам, длина которого равна площади параллелограмма, образованного исходными векторами. Но эта длина практически никогда не используется, по этому, нужно применять нормализацию результата. Потому что, от этой функции в основном нужно только направление.

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

normalize(cross(vec1,vec2))

Сложение векторов
При сложении векторов, каждая их компонента суммируется. На примере показано направление и скорость обьекта, если на него будут влиять одновременно 2 силы.
Скорость - это длинна полученного вектора.
vec3 = vec1+vec2

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

vec3 = vec1-vec2
Операции с матрицами
Принцип работы матрицы
Представьте, будто каждая строка матрицы описывает вектор оси обьекта. И если например увеличить длину оси Z, то геометрия трансформируется по оси Z. Так и работает Scale. А если изменить ее направление - будет искажение. Матрицы относительные, если быть точным они описывают пространство относительно обьекта. Ниже представлено как работает матрица вращения по оси Y.


При повороте геометрии по оси Y, одновременно меняются направление осей X и Z в матрице. Для попорота геометрии по какой либо оси, используется функция rotate, в которую нужно подать матрицу, угол поворота в радианах и ось по которой поворачивать

rotate(matrix, rotation_amount_in_radians, axis);[www.sidefx.com] Так же есть функции Scale[www.sidefx.com] и Translate[www.sidefx.com].

2 Comments
Airat489 7 Apr, 2023 @ 3:52am 
когда продолжение?
Toxic Animal 18 Dec, 2021 @ 5:21pm 
Вау, круто. Спасибо!