Усложним вид следа локатора, добавив к каждой сфере по пять сферок поменьше - сверху, снизу, сзади и две по бокам. Этим дополнительным сферам уготована судьба, отличная от центральных, поэтому для них создадим новое множество частиц.
10 . Создаем пустое множество частиц с именем crossParticles командой
particle -name crossParticles; Сразу изменим тип их отображения на Spheres и зададим их радиус 0.15 - чуть меньше, чем у центральных сфер.
11 . В окне Expression Editor находим выражение trackExpression. Оно должно быть единственным выражением в сцене, но чтобы его обнаружить, в меню окна Expression Editor выберите пункт меню Select Filter -> By Expression Name. Отредактируем найденное выражение, введя в него алгоритм порождения дополнительных частиц. Теперь оно будет выглядеть следующим образом:
//Находим текущее положение локатора L в мировой системе координат
float $LPos[];
$LPos='pointPosition -w L';
// Добавляем одну частицу к множеству частиц trackParticles / / в текущем положении локатора L
emit -object trackParticles
-position ($LPos[0]) ($LPos[l]) ($LPos[2]);
// Расстояние от оси Y до локатора
float $radius=5.;
// Расстояние между центральной и боковыми сферами
float $dist=0.45;
// Вспомогательные переменные
float $kIn, $kOut, $kBack; SkIn=($radius - $dist)/$radius; $kOut =($radius + $dist)/$radius; $kBack=$dist/$radius;
//Добавляем пять частиц к множеству частиц crossParticles
emit -object crossParticles
-position ($LPos[O]) ($LPos[l]+$dist) ($LPos[2])
-position ($LPos[0]) ($LPos[l]-$dist) ($LPos[2])
-position ($kIn*$LPos[0]) <$LPos[l]) ($kIn*$LPos[2])
-position ($kOut*$LPos[01) ($LPos[l]) (Sk0ut*$LPos[2])
-position <$LPos[0)-$kBack*LPos[2]) ($LPos[l]) ($LPoS[2]+$kBack*$LPos[0]);
12.
Сейчас все наши частицы бессмертны. Исправим эту «несправедливость», изменив в редакторе атрибутов в секции Lifespan Attributes атрибут lifespanMode с Live forever на Constant и задав атрибуту lifespan значение 3
Проделаем эту безжалостную операцию для обоих множеств частиц: и для trackParticles и для crossParticles.
Проиграем получившуюся анимацию. За локатором теперь тянется довольно-таки затейливый хвост.
(Сцена emit02b.mb).
Самое время внести в сцену немного красок. Использование команды emit для рождения частиц не делает их ни в коей мере «дефектными». Если множество частиц подчинялось каким-то правилам рождения (creation expression) или правилам жизни (runtime expression), или у него имелись атрибуты со специфическими свойствами - неважно стандартные или экзотические, то каждая частица будет обладать полным набором свойств, характерных для своего множества, независимо от того, родилась ли она «in vit-ro» - с помощью команды emit, или другим, более «естественным» способом. Цвет частиц из crossParticles мы определим атрибутом самого множества частиц, и он будет однним и тем же для всех частиц. Цвет частиц из trackParticles будем определять индивидуально для каждой частицы и передавать его частицам с помощью той же функции emit. Сделаем этот цвет зависимым от угла поворота локатора