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

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

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

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

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

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

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


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

Результатом размывания небольших быстро перемещающихся объектов обычно является полоса. В случае частиц типа Cloud (Облако), которые относятся к объем-

428

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

ным частицам, подобный результат можно получить путем использования вместо них частиц типа Tube (Трубка). Последние аналогичны аппаратно визуализируемым частицам типа Streaks (Полосы) в том смысле, что длина трубки зависит от скорости частицы. Чем быстрее перемещается частица, тем длиннее трубка. Пользователь может также контролировать радиус конца (radiuul) и радиус основания (radiusO), то есть создавать конические трубки. В результате получается вполне достоверная имитация размывания в движении.

Для частиц типа Blobby Surface (Сферические частицы) обходной путь сложнее. При этом используется примерно тот же подход, что и в случае с дубками, то есть создание заостренного хвоста за частицей.

Функция emit

Функция emit позволяет пользователю добавлять частицы к уже существующему генератору. При использовании внутри выражения для рабочего цикла частиц или для их создания эта функция позволяет помещать частицы в определенное место с определенными атрибутами. В зависимости от ее места в выражении вычисления могут потребовать значительных ресурсов.

Обычно MEL-команда с функцией emit используется, капример, в цикле for:

for ($1 = 0;Ї-| < 1000:++ЇІ){ vector SrandPos = sphrand (1);

emit -object particlel -position (irandPos.x) (frandPos.y) (irardPos.z):

}

Хотя этот фрагмент работает совершенно корректно, он вызывает функцию emit 1000 раз. Представьте, что в сцене присутствует 1000 частиц, использующих этот фрагмент. В результате функция emit будет вызвана миллион раз.

Эффективнее написать одну длинную команду и выполнить ее один раз:

string Scmd = "emit -object particlel for <$i - 0:Si < vector JrandPos - sphrand (1);

Scrnd += (" -position 1 + ($randPos.x) + " + (JrandPos.y) + " " +

(irandPos.z)):

}

eval $cmd;

В этом случае функция вызывается единственный раз три вычислении выражения.

Для создания хвоста у частиц типа Blobby Surface (Сферическиечастицы) нужна информация о текущей частице, ее положении и скорости. Затем на основе некоего выражения требуется вычислить хвост.

Для начала создается новый объект-частица с названием blobbyTrailParticles. который также будет испускаться генератором waterEmitter. Если бы частицы испускались внутрь какого-то объекта, они, в свою очередь, иену скали бы частицы, что привело бы к быстрому росту частиц в сцене.

В диалоговом окне Script Editor (Редактор сценариев) введите выражение: particle -n 'blobbyTrailParticles'':

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

429

Вам нужно открыть диалоговое окно Attribute Editor (Редактор атрибутов) длятоль-ко что образованных частиц blobbyTrailParticles и выбрать в раскрывающемся списке Particle Render Type (Тип визуализации частиц) вариант Blobby Surface (Сферические частицы). Щелкните на расположенной под этим списком кнопке Current Render Type (Текущий тип визуализации), чтобы добавить атрибут Radius (Радиус), и введите в появившееся поле значение ОД.

Выделите объект waterEmitter и выберите в раскрывающемся списке Particle Render Туре (Тип визуализации частиц) вариант Point (Точки) или любой другой вариант непрограммно визуализируемых частиц. Это требуется, потому что сферические частицы, созданные с помощью команды emit, не будут слипаться друг с другом, в результате частицы и их хвост не соединятся в один объект.

Кроме того, вам нужно выбрать в раскрывающемся списке Lifespan Mode (Режимі периода существования) для частиц blobbyTrailParticles вариант Constant (Постоянный) и ввести в поле Lifespan (Период существования) значение 0,03, что эквивалентно существованию в течение одного кадра.

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

vector td1 recti on == unit (velocity);

Функция unit

Функция unit возвращает нормализованный вектор, то есть вектор, который указывает в том же направлении, что и аргумент функции, но и имеет единичную дл н-ну. Если частица перемещается в направлении оси X со скоростью 10 единиц в секунду, ее скорость будет равна <10,0, 0>. Но если нужно узнать только направление перемещения частицы безотносительно ее скорости, используйте функцию unit В указанном случае она вернет значение <1, 0, 0>.

Функция mag

В свою очередь, функция mag возвращает скорость частицы. Она требуется достаточно часто, так как в большинстве случаев перемещение частицы осуществляется относительно всех трех осей одновременно. Кроме того, эта функция позволяет определять расстояние или длину. Если частица А имеет координату <10, 5, (.)>, а вы хотите знать, как далеко она находится от фиксатора с координатой <-20,42, 3>, достаточно написать:
Предыдущая << 1 .. 145 146 147 148 149 150 < 151 > 152 153 154 155 156 157 .. 294 >> Следующая