После того как вы создали частицу в трехмерном мире, необходимо придать ей движение, применив метод обновления ее положения в мире. Каждая частица имеет особенный способ обновления своих координат. Для частицы огня необходимо, чтобы она медленно поднималась и меняла свой цвет с самого горячего нахолодный (например с красного на оранжевый). Частицы дыма обычно дрейфуют по ветру, так что необходимо найти близлежащий источник ветра и использовать его для управления этими частицами.
Большинство частиц являются очень простыми по природе, и они двигаются в заданном направлении, изменяемом внешними силами. Частица имеет скорость, определяющую насколько быстро или медленно она движется. Используемые внешние силы могут увеличивать или уменьшать скорость частицы со временем, таким образом, ускоряя или замедляя ее движение.
Для каждого обрабатываемого кадра вы можете посчитать силы, действующие на скорость частицы. Эти силы могут иметь любое происхождение, будь то ветер, гравитация, сопротивление или толчок. Однако не все силы необходимы в вашем движке, они просто увеличивают реалистичность. Ваш движок должен содержать хотя бы силу тяжести и толчка, чтобы частицы могли двигаться и останавливаться на земле.
Вы можете добавить функции, которые бы применяли силы к классу частиц. Или, если вы используете другой класс для управления частицами (похожий на тот, что вы увидите ниже), вы можете поместить функции туда. А пока я просто покажу вам, как вычислять вектор силы из множества источников, прикладываемых к скорости частицы (заметьте, что силы измеряются в миллисекунду).
// силы, прикладываемые к частице(ам)
Р3РХ¥ЕСТОк3 уесРогсе = Р3РХ¥ЕСТОк3(0.0г, 0.0г, 0.0г);
// Добавить силу тяжести равную 0.02, каждую миллисекунду уесРогсе += Р3РХ¥ЕСТОк3(0.0г, -0.021:, 0.0г);
// Добавить силу ветра равную 0.01г, каждую миллисекунду уесРогсе += Р3РХ¥ЕСТОк3(0.01г, 0.0г, 0.0г);
После того как вы вычислили силу, прикладываемую к каждой частице, необходимо обновить скорость. Обновление скорости частицы является простым сложением векторов силы и скорости. Помните, что силы измеряются в миллисекундах, означая, что вы должны умножить вектор силы на количество прошедших миллисекунд с последнего движения частицы. Предположим, что величина прошедшего времени хранится в вещественной переменной TimeElapsed.
// Т1лтеЕ1арвеО = время,в миллисекундах,прошедшее с последнего движения // частицы.
Рагг1с1е.т_уес\/е1ос1гу += (т_уесРогсе * Т1теЕ1арвеО);
В добавление к использованию вектора силы для изменения скорости частицы можно использовать альтернативные методы для обновления частицы, используя более интеллектуальные методы.
⇐Оживление частиц || Оглавление || Использование интеллекта при обработке⇒