Книги
чёрным по белому
Главное меню
Главная О нас Добавить материал Поиск по сайту Карта книг Карта сайта
Книги
Археология Архитектура Бизнес Биология Ветеринария Военная промышленность География Геология Гороскоп Дизайн Журналы Инженерия Информационные ресурсы Искусство История Компьютерная литература Криптология Кулинария Культура Лингвистика Математика Медицина Менеджмент Металлургия Минералогия Музыка Научная литература Нумизматика Образование Охота Педагогика Политика Промышленные производства Психология Путеводители Религия Рыбалка Садоводство Саморазвитие Семиотика Социология Спорт Столярное дело Строительство Техника Туризм Фантастика Физика Футурология Химия Художественная литература Экология Экономика Электроника Энергетика Этика Юриспруденция
Новые книги
Цуканов Б.И. "Время в психике человека" (Медицина)

Суворов С. "Танк Т-64. Первенец танков 2-го поколения " (Военная промышленность)

Нестеров В.А. "Основы проэктирования ракет класса воздух- воздух и авиационных катапульных установок для них" (Военная промышленность)

Фогль Б. "101 вопрос, который задала бы ваша кошка своему ветеринару если бы умела говорить" (Ветеринария)

Яблоков Н.П. "Криминалистика" (Юриспруденция)
Реклама

Maya 5 для профессионалов - Адамс М.

Адамс М., Миллер Э. Maya 5 для профессионалов — П: Питер, 2004. — 823 c.
Скачать (прямая ссылка): Maya5dliyprofessionalov2004.pdf
Предыдущая << 1 .. 146 147 148 149 150 151 < 152 > 153 154 155 156 157 158 .. 294 >> Следующая


float Jdistance = mag («-20.42.3» - «10.5.0»);

Функция mag всегда возвращает положительное число, так как расстояние между частицей А и фиксатором будет одним и тем же вне зависимости от того, вычитаете вы координату частицы из координаты фиксатора или наоборот.

Скорость перемещения частицы вычисляется следующим образом:

float lspeec = mag (velocity);

Теперь, когда вы знаете направление и скорость движения частицы, нужно определить дайну хвоста и количество частиц, из которого он будет состоять. К объекту particle нужно добавить два новых атрибута: длину хвоста (tailLength) и его плотность (density). На данный момент присвойте первому атрибуту значение 1, а второму — 0,1.

430

Глава 14" Частицы и динамика

Затем добавьте команду emit в выражение для рабочего цикла частицы:

string SemitCmd = "emit -object blobbyTra’J Part ides ' .

Начните цикл for:

for ($1 = 0:Si < Sspeed * density:++Ji){

Число испускаемых частиц зависит от скорости их перемещения и желаемой плотности хвоста. Когда исходные частицы замедляют свое движение, уменьшается количество частиц, формирующих хвост. Когда частицы останавливаются (speed = 0), создание хвоста прекращается. Это простое соотношение между скоростью и плотностью гарантирует, что вне зависимости от скорости перемещения частицы хвост сохранит свою плотность.

Функция linstep

Функция linstep также крайне важна при работе с математическими выражениями для частиц. Подобно функции unit она нормализуетчислоиой диапазон, указывая в процентах величину пройденного пути между двумя точками. Например, координата 7,5 лежит на полпути между координатами 5 и 10. Это можно обнаружить с помощью функции linstep, написав:

float Sperceritage = linstepC5,l0.7.5):

.// Результат: 0.5 //

При формировании хвоста требуете я, чтобы испускаемые дополнительные частицы отстояли от нее на некоторое расстояние. Поэтому нужно знать число испускаемых частиц и их местонахождение в этом диапазоне:

X float $weight = linstep (O.ispeed* density,Si):

Теперь, зная вес частицы, ее можно переместить в направлении, заданном вектором скорости, на значение, которое указано как длина хвоста. Вес определяет величину перемещения каждой конкретной частицы:

vector InewPosition = position -«tailLength * $weight * $direction.x. tailLength * Jweight * Sdirection.у, tailLength * Sweight * !direct і on. z»:

С помощью команды emit добавим новые положения:

SemitCmd += (" -position " + tnewPosition.x + " " +

SnewPositі on.у + " " + tnewPosition.z):

В завершение используется цикл for и с помощью функции eval выполняется команда em it:

}

if (Jspeed * density > 0)eval SemitCmd.

Как показано на рис. 14.29 и 14.30, частицы хвоста отстают от частий, испускаемых генератором. Это связано с тем, что по умолчанию Мауа вычисляет выражение перед пересчетом динамики. Поэтому в момент, когда выражение для эмиссии уже вычислено, на положение частицы еще не влияет однородное поле и прочие

Визуализация частиц

431

задействованные в сцене поля. То есть в основном используется положение частицы из предыдущего кадра. Чтобы исправить ситуацию, нужно установить для частиц флажок Expressions After Dynamics (Выражения после динамики) в разделе General Control Attributes (Общие управляющие атрибуты) диалогового окна Attribute Editor (Редактор атрибутов).

и» Etl ЗДіеІ« I*'I tj ftiwflw 4пч*иИ ir.yr-n stotaoi З* п цпці-ті. ' nr;"Ии ; ¦¦¦ ¦ " ‘ '' L " ... -

I=BrgiOeiI м «t«*»|s *|fc? з * ft ? a ' t i( S *. a, * і 0 i#a« I Й js ; affig

' Sub&e ррваипаИм? 4fnria*er JFefiwrtr-Ji РшйЗй«й| oe№ } GukJfe.| L . 9

Рис. 14.29. Хвостовые частицы движутся позади сферических частиц, испускаемых генератором

Хвостовые частицы в данный момент представляют собой всего лишь трубки (без всякого заострения) для сферических частиц. Чтобы создать заостряющийся хвост, нужнодобавитьатрибутьіорасіїуРР (Непрозрачностьна однучастицу) и radiusPP (Радиус на одну частицу), которые представляют собой массивы с плавающей точкой. Кроме того, нужно добавить объекту blobbyTailParticle скалярные атрибуты с плавающей точкой Opacity (Непрозрачность) и Radius (Радиус).

tenntCrnd += (" -attribute radiusPP -TloatValue " +

(blobbyTaiIParticlesShape.radius Ml - !weight))): ternitCrnd += (" -attribute opacityPP -floatValue " +

(blobbyTailParticlesShape.opacity * (1 - !weight)));

Требуется, чтобы частицы были большими в начале хвоста и уменьшались к его концу. За это отвечает параметр radiusPP (Радиус на одну частицу). Следовательно, нужно поменять веса частиц таким образом, чтобы первая частица с весом 0 получила значение I (1 - 0). Кроме того, по мере заострения хвоста частицы должны становиться более прозрачными. То есть частицам нужно добавить параметр opacityPP (Непрозрачность на одну частицу), меняющиеся с расстоянием.

432

Глава 14 • Частицы и динамика

Рис. 14.30. Теперь, после установки флажка Expression After Dynamics, хвостовые частицы выровнены с частицами, испускаемыми генератором
Предыдущая << 1 .. 146 147 148 149 150 151 < 152 > 153 154 155 156 157 158 .. 294 >> Следующая