Initial значения партикловых атрибутов
Предположим, мы установили частицам initial state или попросту создали их с определенными значениями атрибутов кропотливо вымученным скриптом, а потом захотели изменить некоторые из этих значений… Допустим, спрайты дыма имеют разный начальный скейл и увеличиваются относительно него со временем, и мы хотим их сделать в два раза меньше… Или попросту изменить в несколько раз массу осколков разлетающегося объекта (которая, предположим, предварительно высчитана с учетом объема осколка), но не производя заново вычислений, сетапов и т.п.
Проблема в том, что creation состояния у частиц уже нет. Вписать вручную начальное значение и модифицировать его для каждой из сотни частиц – не вариант, а написав в runtime экспрешен что-то вроде:
mass *= 0.5;
в каждом фрейме масса начнет сокращаться вдвое. Конечно, можно написать:
if( frame == 2 ) {
mass *= 0.5;
}
и при прохождении указанного фрейма #2 значения будут изменены, но тут есть свои неудобства…
В общем, простое решение – воспользоваться initial значением изменяемого атрибута. Все эти initial версии атрибутов называются так же как сам атрибут с добавлением нуля в конце:
mass -> mass0
position -> position0
myCustomAttrPP -> myCustomAttrPP0
Таким образом, runtime экспрешен для массы получится:
mass = mass0 * 0.5;
Ну и вообще иметь доступ к начальным значениям атрибутов бывает очень полезно – из какой координаты частица стартовала, с какой velocity и т.п.
Кстати, если такому initial атрибуту установить значение – оно запишется останется постоянно как initial state.
In: FX · Tagged with: expression, initial state, maya, particle attribute, particles, runtimeAfterDynamics, runtimeBeforeDynamics