Усложним вид следа локатора, добавив к каждой сфере по пять сферок поменьше - сверху, снизу, сзади и две по бокам. Этим дополнительным сферам уготована судьба, отличная от центральных, поэтому для них создадим новое множество частиц.

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. Сделаем этот цвет зависимым от угла поворота локатора


⇐ вернуться назад | | далее ⇒