О С В О Е Н И Е MAYA®8.5
Дж.
Кундерт-Гиббс М. Ларкинс
Д. Деракшани Э. Кунзендорф
Диалектика Москва • Санкт-Петербург • Киев 2007
ББК 32.973.26-018.2.75 0-72 УДК 681.3.07 Компьютерное издательство "Диалектика" Зав. редакцией СЛ. Тригуб Перевод с английского И.В. Берштейна, Т. Каранух, В.А. Коваленко, АЛ. Мраморнова, В А. Швеца Под редакцией В.А. Коваленко По общим вопросам обращайтесь в издательство "Диалектика" по адресу:
[email protected] , http://www.dialektika.com 115419, Москва, а/я 783; 03150, Киев, а/я 152 Кундерт-Гиббс, Джон, Ларкинс, Майк, Деракшани, Дариус, Кунзендорф, Эрик, и др. 0-72 Освоение Maya 8.5.: Пер. с англ. - М.: ООО "И.Д. Вильяме", 2007. - 928 с.: ил. - Парал, тит. англ. ISBN 978-5-8459-1301-2 (рус.) Задачей авторов и редакторов этой книги было создание удобного первоисточника, который по зволит обобщить опыт ведущих мастеров разработки в одном из самых мощных и наиболее попу лярных пакетов анимации. Новичкам книга позволит быстро ознакомиться с процессом моделиро вания, а опытным пользователям узнать о дополнительных возможностях системы, улучшающих ре зультат и облегчающих работу. Maya — это очень мощная система, которая предоставляет пользователю практически безгра ничные возможности. В данной книге содержится не только вводный курс по использованию про граммного пакета Maya, но и описание роли этого программного обеспечения в творческом и техни ческом процессе, известном как рабочий конвейер компьютерной графики. Чтобы заинтересовать читателей, авторы постарались изложить именно творческие моменты рабочего процесса (то, что на их взгляд является редкостью в книгах по программному обеспечению), а именно: практические рекомендации, советы, секреты мастерства и различные приемы процесса создания реали стичной компьютерной графики, а также способы упрощения и ускорения процесса работы, настройки параметров и методов администрирования, которые несущественны для маленьких упражнений, но критически важны в реальных проектах создания трехмерной анимации. Независимо от уровня подго товки и опыта, практически в каждой главе читатель найдет ценную информацию, захватывающие сек реты, советы и новые подходы, которые позволят облегчить работу и улучшить ее результат. ББК 32.973.26-018.2.75 Все названия программных продуктов являются зарегистрированными торговыми марками соответствующих фирм. Никакая часть настоящего издания ни в каких целях не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами, будь то электронные или механические, включая фотокопирование и запись на маг нитный носитель, если на это нет письменного разрешения издательства Wiley US. Copyright © 2007 by Dialektika Computer Publishing. Original English language edition Copyright ©2007 by Wiley Publishing, Inc., Indianapolis, Indiana All rights reserved including the right of reproduction in whole or in part in any form. This translation is published by ar rangement with Wiley Publishing, Inc. No part of this publication may be reproduced, stored in a retrieval system or transmitted in any form or by any means, electronic, mechanical, photocopying, recording, scanning or otherwise, except as permitted under Sections 107 or 108 of the 1976 United States Copyright Act, without either the prior written permission of the Publisher. Wiley, the Wiley Publishing, and the Sybex logo and related trade dress are trademarks or registered trademarks of John Wiley & Sons, Inc. and/or its affiliates, in the United States and other countries, and may not be used without written permis sion. Autodesk, Maya and Autodesk Maya are trademark of Autodesk, Inc. in the USA and/or other countries . All other trade marks are the property of their respective owners. Wiley Publishing, Inc., is not associated with any product or vendor men tioned in this book. ISBN 978-5-8459-1301-2 (рус.) ISBN 978-0-470-12845-9 (англ.)
© Компьютерное изд-во "Диалектика", 2007, перевод, оформление, макетирование © Wiley Publishing, Inc., Indianapolis, Indiana, 2007
Оглавление
От издателя
17
Об авторах
17
Введение
21
Глава 1. Интерфейс Maya
29
Глава 2. Быстрое начало: создание анимации в Мауа8.5
81
Глава 3. Полигональное моделирование
129
Глава 4. Моделирование с использованием N U R B S
179
Глава 5. SDS-поверхности
233
Глава 6. Плавные модификации: дополнительные средства моделирования
255
Глава 7. Основы анимации
285
Глава 8. Постановка и оснащение персонажа
309
Глава 9. Анимация персонажа
343
Глава 10. Нелинейная анимация
373
Глава 11. Освещение при анимации
399
Глава 12. Тонирование и текстурирование при анимации
427
Глава 13. Основы визуализации
497
Глава 14. Улучшенная визуализация с помощью mental ray
545
Глава 15. Система Toon Shading
605
Глава 16. Встроенный язык Maya (MEL)
625
Глава 17. Система Paint Effects
655
Глава 18. Анимация твердого тела
707
Глава 19. Использование частиц
733
Глава 20. Система Fluid Effects
775
Глава 21. Система Maya Hair
809
Глава 22. Система Maya Fur
841
Глава 23. Моделирование ткани с использованием системы nCloth
877
Предметный указатель
913
Содержание От издателя
17
Об авторах
17
Введение
21
Что можно извлечь из этой книги Для кого предназначена книга Как пользоваться книгой Структура книги Требования к аппаратному и программному обеспечению Что содержится на CD Что дальше Соглашения, принятые в книге От издательства
21 22 23 23 26 27 27 27 28
Глава 1. Интерфейс Maya
29
Интерфейс Краткий обзор Рабочее пространство Навигация Панель главного меню Строка состояния Панель Панель инструментов Панель каналов Редактор слоев • Ползунок времени и ползунок диапазона Командная строка и строка справки Работа в панелях представления Режимы тонирования, текстурирования и освещения Вспомогательные средства представления Манипуляторы Окно оперативного доступа Маркированные контекстные меню Наборы меню Основные окна Maya Окно редактора атрибутов Иерархическая структура Гиперграф Редактор связей Окно Multilister Гипершейдер Редактор анимационных кривых
29 30 32 33 35 36 41 42 43 45 46 47 48 49 51 51 54 55 56 57 57 59 61 66 67 68 71
.
Содержание
7
Редактор сценариев Настройка интерфейса Предпочтения пользователя Цвета Панели Комбинации клавиш Маркированные контекстные меню Диспетчер дополнений Резюме
74 75 75 77 77 78 79 80 80
Глава 2. Быстрое начало: создание анимации в Мауа8.5
81
Структура проекта Maya Инкрементное сохранение Молоток и гвоздь, часть первая: параметры проекта Создание и редактирование объектов Организация объектов Режимы объектов и компонентов Молоток и гвоздь, часть вторая: модели объектов Опорные точки и положение Молоток и гвоздь, часть третья: опорные точки Структура узла Maya , История создания Молоток и гвоздь, часть четвертая: исследование узлов Применение материалов с помощью гипершейдера Поверхностные материалы Узлы и гипершейдер Молоток и гвоздь, часть пятая: создание и применение материалов Анимация по ключевым кадрам Как установить ключевой кадр Блокировка каналов Молоток и гвоздь, часть шестая: анимация Простое освещение Молоток и гвоздь, часть седьмая: освещение Визуализация кадров Параметры визуализации Визуализация пробных кадров Визуализация анимации Молоток и гвоздь, часть восьмая: визуализация Резюме
81 82 83 83 84 87 89 92 93 95 96 98 102 103 103 106 109 110 117 117 121 121 122 123 125 126 126 128
Глава 3. Полигональное моделирование
129
Что такое многоугольник Иллюстрация к направлению поверхности Принципы полигонального моделирования Создание Машизмо Начнем с плана и подготовки
129 130 131 132 132
8
Содержание
Линейные кривые NURBS — лучшие друзья разработчика полигональных моделей Создание линейного шаблона Завершение шаблона Моделирование тела Машизмо Рабочий процесс моделирования с применением разделенного упрощения Редактирование тела Разделение многоугольников — это вовсе не тонкости! Седловина плеча и отверстие для шеи Создание плеча Усовершенствование живота Выдавливание поясницы и ноги Завершение создания колена Создание руки Присоединение руки к телу Завершение тела А что делать с кистью руки? Очистка! Резюме
133 135 139 142 143 146 149 154 156 158 160 163 166 169 172 174 176 177
Глава 4. Моделирование с использованием N U R B S
179
Концепция NURBS Кривые Параметризация NURBS-поверхности Моделирование МакГизмо Переднее колесо Моделирование заднего колеса с помощью инструментов Circular Fillet и Trim Создание двигателя Моделирование корпуса и крыла Завершение корпуса ' Обтяжка крыла Присоединение двигателя Соединение крыла с корпусом Отсечение и оформление ниш шасси Установка кабины Очистка Резюме
179 180 182 185 187 187 191 200 205 216 218 220 222 224 228 229 231
Глава 5. SDS-поверхности
233
Концепция SDS-поверхностей Начнем с шаблона Моделирование головы Создание рта Моделирование лба и бровей Завершение создания носа и глаз Завершение полигональной версии головы
233 235 237 243 244 244 246
Содержание
9
Детали, детали и SDS-поверхности Резюме
247 253
Глава 6. Плавные модификации: дополнительные средства моделирования
255
О плавных модификациях Сборка Машизмо Голову — долой! Невероятная машина плавных модификаций Плавные модификации: ухмылки, моргания и улыбки Форма N o s e S n e e r Форма L o w e r L i p U p Форма U p p e r L i p U p Форма E y e C l o s e d Форма E y e W i d e O p e n Форма Eyebrow_Up Форма Smile/MouthWide Остальные формы Штамповка плавных модификаций целой головы А теперь — правая сторона Исправление ошибок Инструмент нанесения весовых коэффициентов Резюме
255 256 259 264 268 268 270 271 272 274 274 275 275 276 279 281 281 283
Глава 7. Основы анимации
285
Типы анимации Анимация с использованием ключевых кадров Создание ключевых кадров Установка разделяющих ключевых кадров Ползунок времени и ползунок диапазона Концепция рабочего процесса анимации Практика: отскакивающий мяч Отскакивающий мяч Настройка временных характеристик с помощью монтажного стола Кадры с нецелыми номерами Создание и редактирование ключевых кадров в редакторе анимационных кривых Добавим растяжение и сжатие Отклоним его немного от вертикали! Преобразование циклической анимации в кривые Резюме
285 286 286 287 288 290 291 292 294 296
Глава 8. Постановка и оснащение персонажа
309
Типы деформаторов Скелеты Кластеры Решетки Прямая и инверсная кинематика
309 310 312 313 314
297 302 303 304 307
10
Содержание
Использование решателя ikRP Использование решателя ikSC Использование маркера сплайнового решателя Использование решателя ikSpring Решатель инверсной кинематики человека (hik) Переключение между прямой и инверсной кинематикой Практика: создание скелета Создание прототипа структуры скелета с использованием кривых Создание скелета Добавление к скелету инверсной кинематики всего тела Настройка инверсной кинематики всего тела Привязка персонажа и нанесение весовых коэффициентов Резюме
316 317 318 319 321 322 323 324 326 330 331 336 342
Глава 9. Анимация персонажа
343
Отойдем от компьютера! Справочные средства Процесс анимации Практика: анимация Джо Дженерика Постановка: приведем Джо Дженерика в движение Расслабленная поза Поза упреждения Поза сжатия Поза задержки движения Поза развертывания Верхняя поза Поза контакта Поза удара Первая и вторая позы остановки Инсценировка и постановка Хронометраж С чего начинать? Уточнение полученной анимации Исправление движения ступней Смещение ключевых кадров ступней Добавление запаздывания и опережения к движению головы Резюме , .
343 344 347 348 348 351 353 353 354 355 356 356 356 357 357 359 359 366 366 369 370 372
Глава 10. Нелинейная анимация
373
Что такое персонаж Работа с позами Работа с клипами Создание клипов Модификация клипов Смешение клипов Совместное использование клипов Использование геометрического кэша
373 375 377 378 380 383 387 390
Содержание
11
Практика: работа с анимационной оснасткой с помощью системы Full Body IK Резюме
392 398
Глава 11. Освещение при анимации
399
Концепция освещения Качества света Применение освещения Основной рабочий процесс постановки освещения Интерактивная фотореалистическая визуализация Основные и заполняющие источники света Интерактивное размещение света Типы источников света Рассеянный свет Источники света: направленный, точечный и прожектор Плоский свет Объемный свет Свойства источников света Манипулятор света Использование теней Мягкие тени Трассированные тени Световые эффекты Туман Оптические эффекты Практика: создание анимированных затенений с помощью графических эффектов Резюме
399 400 400 401 401 401 401 402 403 403 404 405 405 410 412 412 414 416 416 421
Глава 12. Тонирование и текстурирование при анимации
427
Концепции текстурирования в Maya Гипершейдер Создание простых сетей тонирования Тонирование МакГизмо Тонирование обтекателя двигателя с помощью узла градиента Тонирование турбин и носового обтекателя Покрытие остальной части МакГизмо Чтение текстур с помощью гипершейдера Тонирование Машизмо: основа UV Удачная карта UV Зеркальное отражение геометрических форм и расположение фрагментов карты Создание текстуры Машизмо Освещение Резюме
427 428 430 435 437 451 453 459 460 461
Глава 13. Основы визуализации
497
Визуализация объекта
498
423 425
485 490 491 496
12
Содержание
Создание и анимация камер Использование инструмента Show Manipulators Просмотр плоскостей отсечения Настройка камеры и разрешения Установка разрешения Плоскости изображений и настройки окружения Глубина резкости Добавление размытости Использование окна параметров визуализации Программная визуализация Maya Сглаживание и качество изображения Визуализация в Maya с использованием полей Трассировка лучей при программной визуализации Параметры визуализации Параметры памяти и производительности Дополнительные параметры Аппаратная визуализация и аппаратный буфер визуализации Векторная визуализация Использование окна просмотра визуализации Использование интерактивной фотореалистичной визуализации (IPR) Визуализация слоев, композиция и редактирование Визуализация для Photoshop Пакетная визуализация , Основной контрольный список визуализации Резюме
498 501 502 504 506 509 510 512 513 519 519 521 521 523 524 525 525 527 530 532 533 542 543 543 544
Глава 14. Улучшенная визуализация с помощью mental ray
545
Введение в mental ray Изучение параметров визуализации Средства визуализации Раздел Anti-Aliasing Quality Раздел Raytracing Специальные тонеры mental ray Применение специальной текстуры Применение специального тонера Источники света, тени и туман mental ray Источники плоского света Тени Туман Размытость в mental ray Управление размытостью Управление затвором Регулировка качества Размытые тени и трассировка лучей Непрямое освещение Глобальное освещение и солнечные зайчики Освещенность
545 547 547 548 551 553 554 555 557 557 560 565 567 569 569 570 570 571 571 572
Содержание
13
Окончательная сборка Визуализация глобального освещения Солнечные зайчики Визуализация окончательной сборки Освещение на основании анализа изображений, физическое освещение и HDRI Моделирование неба и солнца Рассеивание Аппроксимация поверхностей и карты смещений Предустановленные наборы, метод аппроксимации и стили Карты смещения в mental ray Резюме
572 573 578 582 587 590 595 598 599 602 604
Глава 15. Система Toon Shading
605
Концепция Toon Shading Применение заполнений Создание мультипликационных линий Технологии мультипликационных линий Применение штрихов Paint Effects для мультипликационных контуров Модификаторы мультипликационных линий Резюме
605 606 609 613 616 619 623
Глава 16. Встроенный язык Maya (MEL)
625
Основные принципы языка MEL Что такое язык сценариев Редактор сценариев Что такое атрибут Справочная система MEL Практика: постановка света с помощью MEL Переменные, циклы и переходы Переменные , Циклы Переходы Отладка сценариев MEL Комментарии Создание GUI Применение процедур и сценариев Процедуры Сценарии Резюме
625 626 626 630 633 635 637 637 639 641 644 645 646 650 650 652 653
Глава 17. Система Paint Effects
655
Концепция Paint Effects Штрихи и кисти Рисование в системе Paint Effects Панель инструментов и основы рисования Управление штрихами Рисование на плоском холсте
655 657 661 662 664 666
14
Содержание
Использование кистей в двухмерном пространстве Дополнительные параметры настройки плоских кистей Создание и нанесение текстур на объекты Трехмерные графические эффекты Рисование на геометрических объектах Кисть типа ThinLine Совместное использование и распространение кистей Использование кривых управления Кисти типа Mesh и карты смещения Освещение и текстурирование кисти Нажим штриха Промежутки Система Paint Effects и анимация Потоковая анимация Пружинная анимация Изучение туб: практический пример розового куста Создание исходного розового куста Все о тубах Раздел Growth: управление ветвлением туб Преобразование объектов Paint Effects в объемные геометрические формы Резюме
.
667 671 674 675 676 676 678 679 681 683 689 690 690 691 691 692 692 693 695 703 705
Глава 18. Анимация твердого тела
707
Основы динамики твердых тел Создание простого твердого тела Использование решателя твердого тела Ускорение вычислений с помощью дополнительных решателей Ускорение вычислений с помощью управления взаимодействиями Работа с полями и импульсами Анимация в активном и пассивном режимах Создание объектов Настройка моделирования Анимация сцены Добавление ограничителей к твердому телу Преобразование анимации твердого тела в анимацию по ключевым кадрам (фиксация) Резюме
707 708 712 715. 716 719 723 723 725 725 727
Глава 19. Использование частиц
733
Что такое частицы Использование частиц для создания эффектов Продолжительность существования частиц Атрибуты массива частиц Управление частицами с помощью полей и целей Использование множества полей с частицами Кэш частиц Цели
733 734 735 737 745 745 749 750
730 732
Содержание
15
Атрибуты цели отдельных частиц Динамика мягких тел Спрайты и экземпляры Создание экземпляров частиц Усложненные выражения частиц Резюме
753 754 758 761 762 773
Глава 20. Система Fluid Effects
775
Что такое жидкости в Maya Перетаскивание жидкостей Создание и редактирование жидкостей Создание двухмерной жидкости Взаимодействие жидкости с другими объектами Создание трехмерной жидкости Редактирование атрибутов жидкости Рисование в контейнерах Создание эффекта океана Создание эффекта водоема Практика: создание исчезающего эффекта облака для Машизмо Резюме
775 779 781 782 783 783 784 795 797 802 803 807
Глава 2 1 . Система Maya Hair
809
Основы систем волос Активные и пассивные фолликулы Начальная, текущая позиции и позиция покоя Как создавать волосы Создание волос Нанесение фолликулов волос Предустановленные образцы волос и их трансплантация Практика: нанесение волос на голову Создание фолликулов на голове Добавление ограничителей взаимодействий Создание прически Добавление волосам густоты и объема Динамика волос и взаимодействия Ускорение общего рабочего процесса Взаимодействия Настройка видимости Настройка моделирования Кэш Визуализация волос Система Paint Effects Геометрия Нанесение текстур волос Освещение и тени Технология mental ray для Maya
809 810 810 811 811 813 814 815 815 817 819 826 828 830 830 830 831 831 832 832 833 835 835 835
16
Содержание
Использование волос для управления скелетной системой Резюме
836 839
Глава 22. Система Maya Fur
841
Создание меха Параметры отображения меха Коррекция описания меха (причина выделения непонятна) Продолжение создания прически могавк Карты атрибутов меха Редактирование карт атрибутов меха Разъединение карт атрибутов меха Создание движения меха с помощью системы Hair Нанесение меха на персонаж Нанесение меха на голову Нанесение теней меха Визуализация меха с помощью технологии mental ray Нанесение меха на уши Нанесение меха на руки Нанесение меха на ноги Нанесение меха на хвост Резюме
841 842 844 847 854 855 857 857 862 863 868 869 871 872 873 874 875
Глава 23. Моделирование ткани с использованием системы nCloth
877
Что представляет собой система nCloth Моделирование в системе nCloth Свойства ядерного решателя Свойства системы nCloth Свойства поверхности Динамические свойства Другие параметры Нанесение значений параметров кистью в системе nCloth Ограничители Поля Кэширование в системе nCloth Практика: модель рваной рубашки и брюк в системе nCloth Проверка анимации Кэширование анимации Постановка одежды из ткани Изменение параметров ткани и решателя Кэширование анимации Управление красивой тканью Резюме
877 879 883 885 885 888 890 893 895 897 899 901 903 903 905 908 909 910 911
Предметный указатель
913
От издателя Спасибо за то, что выбрали книгу Освоение Maya 8.5 Эта книга относится к катего рии высококачественных книг издательства Sybex по компьютерной графике, которые написаны высококвалифицированными авторами, обладающими как практическим опы том работы, так и талантом преподавания. Издательство Sybex было основано в 1976 году, и на протяжении этих более чем три дцати лет мы старались выпускать исключительно ценные книги. Коллектив издательст ва упорно трудился над каждым из изданий по графике, чтобы установить новый стан дарт качества. Работая с художниками и мастерами, издательство стремилось предоста вить читателю наилучшее качество графики из возможного. Я очень надеюсь, что все наши старания будут заметны на страницах данной книги. Я очень заинтересован услышать ваши комментарии и отзывы о нашей работе. Чтобы сообщить свое мнение об этой или любой другой книге издательства Sybex, пишите мне по адресу n e d d e @ w i l e y . com или, если в книге обнаружена ошибка, посетите, пожалуй ста, сайт h t t p : / / w i l e y . c u s t h e l p . c o m . Обратная связь с читателями крайне важна для работы издательства Sybex. С наилучшими пожеланиями,
Нейл Едд (Neil Edde), Вице-президент издательств Sybex и Imprint of Wiley
Об авторах Книга Освоение Maya 8.5 написана группой авторов, каждый из которых является признанным мастером в своей области, а также обладает не только академическими зна ниями, но и практическими навыками работы с системой Maya. Джон Кундерт-Гиббс — ассоциативный профессор анимации кафедры театральной и кинематографической постановки уни верситета штата Джорджия. Джон написал ряд книг по Maya и темам, свя занным с трехмерным моделированием, включая серию книг Освоение Maya и несколько книг по Maya из серии Secrets of the Pros. Он также явля ется автором нескольких мультимедийных и сценических проектов. Док тор Кундерт-Гиббс гордится заслуженными дипломами, как и большинст во его коллег, работающих в лучших студиях специальных эффектов. Майк Ларкинс (Mick Larkins) — технический и художественный руко водитель компании Hi-Rez Studios в Атланте, штат Джорджия, а также автор серии книг Освоение Maya и Maya 8 at a Glance. Майк является экспертом по волосам, тканям и разработке игр. Его вклад в искусство анимации был высоко оценен такими организациями, как Eurographics Animation Theatre, а также на фестивалях South Eastern Digital Animation Festival и Cineme International Film Festival. Майк хотел бы поблагодарить свою замечательную жену Меган и друга Фоззи за со-
18
Об авторах
действие при работе над www.micklarkins.com.
этой
книгой.
Посетите
его
Web-сайт
по
адресу
Эрик Кунзендорф (Eric Kunzendorf) — преподаватель факультета изящных цифровых искусств художественного институт в НьюХэмпшире. Сейчас он является сопредседателем отделения Electronic Arts по специальностям "компьютерная анимация", "цифровые муль тимедиа" и "цифровое искусство" колледжа искусств в Атланте, где он преподает компьютерную графику и анимацию на протяжении по следних тринадцати лет. Ранее он преподавал вычислительную тех нику в школе визуальных искусств университета города Саванна. Он имеет степень-ба калавра искусств по истории изобразительных искусств Колумбийского университета и степень магистра изящных искусств в области графики университета штата Джорджия. Эрик был одним из авторов книги Maya 5 Savvy и Mastering Maya 7, а также первого из дания книги Secrets of the Pros. Его мультфильмы "Окончание проекта" (Final Project Assignment) и "Мим в кубе" (Mime in a Box) были представлены на фестивале компью терной анимации "Siggraph" в 1999 и 2000 годах соответственно. Дариус Деракшани (Dariush Derakhshani) — лауреат премии в области анимации Maya, а также автор множества работ, начиная с телесериала "Южный парк" и заканчивая музыкальными клипами. Дариус — лауреат премии в области анимации в Maya, а также автор нескольких бестселлеН ров по Maya, включая Introducing Maya 8:3D for Beginners, Maya Secrets of the Pros, а также один из авторов книги Introducing 3ds Max 9: 3D for Beginners. На протяжении почти десятилетия он работал над игровыми фильмами ("Фантастическая четверка" (Fantastic Four), "Посещение" (The Visitation), "Приключения мальчика-акулы" (The Adventures of Shark Boy) и "Девочка-лава" (Lava Girl)), над телевизионной рекламой на национальном уровне (BMW и Lexus), над видеоклипами музыки {Cake и Linkin Park). В 2003 году Дариус был удостоен премии в Лондоне за визуаль ные эффекты в рекламе, а также награды (Bronze Plaque) на Колумбийском кинематографи ческом фестивале, и благодарности от кинокомпании Paramount Pictures. Дариус имеет сте пень MFA школы кинематографии USC, где он преподает анимацию в Maya. Эрик Келлер (Eric Keller) использует Maya от Autodesk для создания профессиональной анимации, начиная с ее первого выпуска. В настоящее время он создает высококлассную анимацию для кинемато графа, телевидения и научных исследований. Его клиентами являюттакие компании, как Disney, ESPN, Hewlett-Packard, CBS и ABC. До этого он создавал анимацию для ряда всемирно известных иссле довательских программ в Медицинском институте Говарда Хьюза (Howard Hughes). Эрик является автором книги Maya Visual Effects: The Innovator's Guide, а также серии книг Освоение Maya. Боз Ливни (Boaz Livny) больше десяти лет работал с трехмерной анима цией для кинематографии, телевидения и мультимедиа. Специализиру ясь в основном на освещении и визуализации, он к тому же имеет огром ный опыт работы на всех этапах рабочего процесса. Его нью-йоркская студия Vision Animations Inc. ( h t t p : / / w w w . v i s i o n a n i m a t i o n s . c o m ) предоставляет коммерческие услуги многим клиентам, а также оказывает
Об авторах
19
помощь различным студиям. Боз является профессором мастер-классов NYU С ADA (Center for Advanced Digital Applications — Центр передовых цифровых приложений). Он регулярно публикует статьи в журнале HDRI 3D, посвященные передовым методам моделирования в Maya (таким как mental ray), а также является автором книги mental ray with Maya, XSIand3D studio max: A 3D Artist's Guide to Rendering, выпущенной издательством Wiley. В настоящее время Боз создает учебный центр по компьютерным технологиям и искусствам в Нью-Йорке. Вся информация доступна по адресу h t t p : //www. 3DArts. o r g . Марк E. А. де Суза (Mark E.A. de Sousa) — специалист по компьютер ной графике, руководитель проектов Cloth и Hair компании Sony Pictures Imageworks. Его последней работой является полная адаптация возможностей компонента CG для кластера Beowulf. Марк продолжает участвовать в проекте по тканям Open Season. Он создавал ткани и по верхности больше чем для четырнадцати фильмов, среди которых "Биоволк" (Beowulf), "Сезон охоты" (Open Season), "Человек-паук-2" (Spider-Man II), "Полярный экспресс" (Polar Express), "Стюарт Литл-2" (Stuart Little II), "Гарри Поттер и философский камень" (Harry Potter and the Sorcerer's Stone), "Человекневидимка" (Hollowman) и "Звездный путь: Восстание" (Star Trek: Insurrection). Марк преподает также в Голливудской школе визуальных эффектов Gnomon и является по четным руководителем программы компьютерной анимации центрального колледжа То ронто (Канада). Эд Сиомакко (Ed Siomacco) — технический директор проектов Cloth и Hair компа нии Sony Pictures Imageworks. К его последним работам относятся "Человек-паук-3", "Сезон охоты" и "Хроники Нарнии". Он дипломированный специалист Государственно го университета северной Каролины и Клермонтского университета. Посетите его Webсайт по адресу www. i d g i t . com.
Введение В книге Освоение Maya 8.5 описана новейшая версия одной из наиболее популярных книг по Maya. Данная книга предназначена для пользователей с любым опытом работы в Maya и компьютерной графике вообще. Новичкам она позволит быстро ознакомиться с процессом моделирования, а более опытным пользователям узнать о дополнительных возможностях системы, улучшающих результат и облегчающих работу. В книге рассматриваются важнейшие теоретические вопросы, лежащие в основе всех основных компонентов программного обеспечения Maya, а также подробно описаны приемы выполнения всех основных задач процесса разработки, от моделирования до ви зуализации. Каждая глава снабжена простыми упражнениями, специально разработан ными авторами так, чтобы, переходя от простого к сложному, ознакомить читателя с наиболее передовыми методами разработки. Коллектив авторов надеется, что читателю понравится структура и содержимое этой книги. Однако важнейшим результатом ознакомления с книгой Освоение Maya 8.5 будет углубление знаний о Maya и ее роли в компьютерной графике. Maya — это очень мощная система, которая предоставляет пользователю практически безграничные возможности. Однако ни один из способов работы не лучше другого, поэтому — мышь в руки и за дело. Наилучший и единственный способ научиться компьютерной графике — это работать с ней практически. Авторы книги надеются, что примеры и уроки этой книги помогут на чать и продолжить образование в данной области.
Что можно извлечь из этой книги Что узнает читатель из этой книги? Здесь содержится не только вводный курс по ис пользованию программного пакета Maya, но и описание роли этого программного обес печения в творческом и техническом процессе, известном как рабочий конвейер компью терной графики. На страницах этой книги можно найти разнообразную информацию: от обсуждения качества моделирования ткани и меха до таких тем, как методы редактиро вания и композиции. Чтобы заинтересовать и новичков, и опытных специалистов, авто ры постарались изложить именно творческие моменты рабочего процесса (то, что, на их взгляд, является редкостью в книгах по программному обеспечению), а именно: практи ческие рекомендации, советы, секреты мастерства и различные приемы процесса созда ния реалистичной компьютерной графики, а также упрощения и ускорения процесса ра боты, настройки параметров и методов администрирования, которые несущественны для маленьких упражнений, но критически важны в реальных проектах создания трехмерной анимации. Короче говоря, здесь описано применение Maya для создания больших или маленьких, но всегда эффектных изображений и мультфильмов, которые ныне столь по пулярны в кино и на телевидении. Освоение Maya 8.5 — это исчерпывающее руководство и богатейший первоисточник по такому популярному и постоянно развивающемуся программному пакету, как Maya. В данной книге нет описания того, как щелкать на каждом конкретном переключателе или элементе управления, здесь основное внимание уделено тому, почему следует изме-
Введение
22
нить те или иные параметры и откорректировать некоторые каналы, используя инстру менты Maya. Этот подход позволит лучше изучить основные причины и способы приме нения инструментов, а уже впоследствии, после овладения каждым инструментом, про должать самостоятельное обучение и эксперименты. Кроме того, после выполнения предложенных практических упражнений и приобретения навыков наиболее эффектив ного применения Maya их можно впоследствии применить в собственных проектах. Нынешнее путешествие к вершинам знаний начинается с изучения интерфейса Maya и структуры узла. Затем авторы рассмотрят, как применять при моделировании NURBS, многоугольники и SDS-поверхности, как использовать эти средства моделирования для создания моделей, пригодных для анимации. Далее авторы с читателем изучат способы оснастки модели (придание ей способности двигаться) и ее анимации, включая освеще ние, текстурирование и визуализацию (с учетом систем визуализации Toon Shading и mental ray). Будет также описано применение языка MEL (Maya Embedded Language — встроенный язык Maya), выражений, частиц и твердого тела для автоматизации работы и усовершенствования создаваемой анимации. Чтобы создать уникальные эффекты, для которых обычно применяется специальное программное обеспечение, воспользуемся та ким средством, как Paint Effects, а также высокотехнологичными инструментальными средствами моделирования Maya Unlimited, включая Fluid Effects, Hair, Fur и новую систему nCloth.
Д Л Я КОГО
предназначена книга
Эта книга предназначена для самых широких слоев пользователей Maya, от новичков, нуждающихся в учебнике, до экспертов, которым необходимы советы по некоторым те мам или рекомендации по применению отдельных технологий, способных улучшить процесс разработки. В книге Освоение Maya 8.5 каждый найдет что-нибудь интересное для себя, но рассчитана она в основном на читателей среднего уровня квалификации, а не на абсолютных новичков. Авторы подразумевают, что большинство людей, приобре тающих профессиональные средства разработки трехмерной графики (и аппаратные средства для его размещения), серьезно относятся к трехмерной анимации. Подразуме вается также, что читатель уже имеет некоторое понятие о трехмерном моделировании, анимации и визуализации, а теперь готов повысить свою квалификацию и воспользо ваться преимуществом тех возможностей, которые предоставляет Maya. Возможно, чи татель уже знаком с подобной системой разработки, или тренировался с обучающей про граммой, или работал в смежных областях и готов теперь перейти к трехмерному моде лированию и анимации. Среди читателей могут быть и те, кто всегда интересовался трехмерной анимацией и, получив бесплатную версию Maya PLE (Personal Learning Edition — версия для персонального обучения), решил-таки сделать решающий шаг и изучить этот наилучший из инструментов. В любом случае и новичок, и гуру найдут здесь что-нибудь интересное для себя, будь то описание применения интерфейса Maya или новых способов решения сложных задач. Если читатель скорее новичок или в его подготовке по основным принципам Maya и трехмерной анимации есть существенные пробелы, то эту книгу имеет смысл читать с начала и до конца. Так можно изучить интерфейс Maya и каждый этап работ по созданию трехмерной анимации.
Введение
23
Для пользователей средней квалификации, которых интересует нечто большее, чем осно вы, предназначены те главы, в которых описаны дополнительные возможности для реали стичного моделирования, включая оснащение персонажей, визуализацию с помощью систе мы mental ray, динамику частиц и жесткого тела, а также ткани, меха и жидкости. И наконец, пользователи, имеющие опыт работы в другом анимационном пакете, та ком как 3d Мах или Light Wave, смогут легко перейти на Maya, используя эту книгу как руководство, открывающее новые способы выполнения привычных задач в новом пакете. Но независимо от уровня подготовки и опыта, практически в каждой главе читатель найдет ценную информацию, захватывающие секреты, советы и новые подходы, которые позволят облегчить работу и улучшить ее результат.
Как пользоваться книгой Освоение Maya 8.5 — это не просто учебник. Поскольку среди ее авторов есть практи ческие мультипликаторы, мастера трехмерной графики и преподаватели, им прекрасно известно, что простого описания пунктов меню и диалоговых окон не достаточно ни для эффективной самостоятельной работы, ни даже для того, чтобы начать накапливать соб ственный опыт. Как известно, наилучшим для изучения сложного программного обеспе чения является практический подход, который позволяет не только освоить необходи мую информацию, но и закрепить полученные знания. Каждая глава снабжена упражне ниями, которые иллюстрируют соответствующую концепцию и позволяют сразу и собственноручно опробовать каждый новый метод. Для реализации этого подхода авторы написали книгу, полностью интегрированную с CD. Прилагаемый к книге CD содержит все необходимые материалы: файлы сцен Maya, изображения T I F F и JPEG, сценарии MEL и необходимые ресурсы. Это ускорит изучение каждой главы, а также позволит проверять полученный результат работы по мере приближения к законченной версии. Большинство упражнений предназначено для того, чтобы позволить читателю закре пить пройденный материал. Обучение проходит значительно проще, когда полученная информация закрепляется на практике, поэтому читайте эту книгу, находясь поближе к компьютеру, чтобы, закончив непродолжительную вводную часть, можно было перейти к выполнению упражнений. Несмотря на то что последовательность описания рабочего процесса в книге остается традиционным, т.е. от моделирования до визуализации, ее главы не обязательно читать по порядку: на CD есть промежуточные файлы сцен, которые позволяют пропустить процесс, выполняемый в любом упражнении, и перейти к другой главе. Подобно любому другому справочнику, здесь читатель может сосредоточиться лишь на тех темах, которые его интересуют, а также на задачах, которые он считает первоочередными. Это особенно важно для опытных мультипликаторов. Однако, если книга окажется захватывающей и ее прочитают от начала и до конца, авторы не будут в обиде!
Структура книги В зависимости от интересов и уровня квалификации, читатели могут либо читать все главы подряд, либо выбрать только необходимые. Поэтому ниже приведены названия всех глав и краткое описание их содержимого.
24
Введение
Глава 1, "Интерфейс Maya", знакомит со элементами управления и средствами модели рования, включая различные окна, меню и другие составляющие Maya с их полным описа нием. При необходимости в процессе изучения книги к этой главе можно вернуться. Глава 2, "Быстрое начало: создание анимации в Maya 8.5", позволит приступить непо средственно к делу, а также поможет ознакомиться со структурой узлов и с другими фундаментальными компонентами Maya. Совместно главы 1 и 2 позволят изучить осно вы работы в Maya. Глава 3, "Полигональное моделирование", позволит получить первый опыт создания модели в Maya, начиная с принципов моделирования и заканчивая созданием полноцен ного персонажа. В этой главе на примере каждого этапа создания персонажа Машизмо (Machismo) описаны все составляющие его части. Глава 4, "Моделирование с использованием NURBS", открывает мир моделирования NURBS. Здесь описаны все элементы, составляющие кривую или поверхность NURBS, способы их редактирования и, наконец, применение этой концепции на примерах. Глава 5, "SDS-поверхности", демонстрирует основные этапы создания и редактирова ния полигональных и SDS-поверхностей. Для демонстрации применяемых методов здесь совершенствуется модель, созданная в главах 3 и 4. В этой главе создается голова персонажа Машизмо. Глава 6, "Плавные модификации: дополнительные средства моделирования", излагает способы применения плавных модификаций и создания модели с помощью менее тради ционных методов построения геометрических форм, особенно для анимации. Глава 7, "Основы анимации", позволит узнать все, что необходимо для начала созда ния, управления и редактирования анимации в Maya. Упражнения этой главы знакомят с применением монтажного стола и хронометража, а также с безграничными возможно стями редактора анимационных кривых. Глава 8, "Постановка и оснащение персонажа", демонстрирует применение таких деформаторов, как решетки и суставы, для организации движения частей оболочки завер шенной модели. Здесь также рассматриваются сплайны и маркеры IK (Inverse Kinematics — инверсная кинематика). Эта глава демонстрирует практический подход к подготовке персонажа для анимации, включая его отделку с использованием цветовых коэффициентов и создание элементов управления анимацией. В главе также рассматри вается применение выражений для автоматизации оснастки персонажа. Глава 9, "Анимация персонажа", знакомит с принципами и нюансами анимации на примере полностью оснащенного персонажа. В ней также описаны наиболее эффектив ные способы позиционирования, блокировки и детализации персонажа в процессе соз дания анимации. Глава 10, "Нелинейная анимация", демонстрирует методы создания анимационных клипов, в которых персонажи и сцены могут как принимать участие, так и использовать их. Здесь создан цикл ходьбы, а также описаны методы работы с клипами при анимации сложной сцены. Глава 11, "Освещение при анимации", рассматривает систему освещения Maya, дос тупные типы теней, а также применение источников света для создания световых эффек тов и освещения сцены. Здесь также описано, как сбалансировать глубину и качество те ней, когда использовать мягкие или резкие тени. Кроме того, в главе рассмотрены разно образные световые эффекты, объемное освещение и пламя. Глава 12, "Тонирование и текстурирование при анимации", представляет собой ввод ный курс по созданию и редактированию текстур и материалов в Maya. В этой главе опи-
Введение
25
сано применение гипершейдера, способы применения тонера для создания практически любых эффектов тонирования. Кроме того, продемонстрировано создание и редактиро вание UV для текстурирования полигональных моделей. Глава 13, "Основы визуализации", демонстрирует возможности Maya по визуализа ции изображения, а также знакомит с работой IPR (Interactive Photorealistic Rendering — интерактивная фотореалистичная визуализация) и камеры. Кроме того, здесь описаны концепции плоскости изображения, глубины резкости и слоев визуализации. Глава 14, "Улучшенная визуализация с помощью mental ray", знакомит с системой визуализации mental ray, которая в Maya 8.5 была существенно изменена. Здесь проде монстрированы все возможности визуализации с помощью mental ray: от системы Final Gather до общего освещения и солнечных зайчиков. Глава 15, "Система Toon Shading", содержит описание модуля Maya Toon Shading и его применения для закраски, создания линий, штрихов и других художественных эф фектов в мультипликации. Глава 16, "Встроенный язык Maya (MEL)", рассматривает язык MEL и демонстриру ет, как можно использовать написанные на нем сценарии для увеличения продуктивно сти и автоматизации процесса разработки. Здесь также описано, как создавать выраже ния для управления анимацией и организации взаимодействия объектов на сцене. Глава 17, "Система Paint Effects", знакомит с этим прекрасным инструментом Maya для создания сцен. Здесь описаны возможности приложения Paint Effects и сотни его ат рибутов, позволяющих наиболее полно раскрыть его потенциал. Глава 18, "Анимация твердого тела", демонстрирует способы анимации с помощью процессора динамики Maya, отличные от традиционных методов ключевых кадров. В этой главе описано, что представляют собой твердые тела, как ими управляют и как ис пользуют. Кроме того, здесь рассматривается, как использовать поля и силы для получе ния необходимых результатов и как "фиксировать" анимацию, когда она завершена. Глава 19, "Использование частиц", посвящена мощнейшей системе частиц Maya. В этой главе продемонстрирована работа с эмиттерами и полями, а также создание вы ражений для управления частицами. Кроме того, здесь описано применение линейчатых текстур для управления поведением частиц и организации их взаимодействий. Глава 20, "Система Fluid Effects", представляет процессор моделирования жидкостей пакета Maya Unlimited. Здесь очень кратко рассматриваются сложнейшие теоретические вопросы, положенные в основу этого инструмента, а затем продемонстрировано его при менение (и настройка) для корректировки встроенных, предварительно заданных сцен Maya, а также создание собственных, достаточно сложных эффектов, таких как штормо вой океан, с помощью инструмента Maya Ocean Shader. Глава 21, "Система Maya Hair", демонстрирует применение динамических кривых Maya для создания фантастических эффектов и динамического моделирования, а также использование возможностей визуализации Maya Hair для создания реалистичных при чесок разрабатываемого персонажа. Глава 22, "Система Maya Fur", посвящена созданию и изменению меха и его атрибу тов. Чтобы читатель хорошо усвоил материал этой главы, рассматривается пример соз дания прически персонажа, а также динамическое управление движением меха с помо щью аттракторов. Глава 23, "Моделирование ткани с использованием системы nCloth", представляет средство моделирования объектов, схожих с тканями, начиная с простыней и заканчивая
26
Введение
рубашками в клетку. Здесь будет продемонстрировано, как создавать и редактировать ткани для сцен и моделей.
Требования к аппаратному и программному обеспечению Поскольку аппаратные средства компьютеров совершенствуются очень быстро, а программное обеспечение Maya 8.5 предназначено для работы на трех разных операци онных системах (Windows, Linux и Macintosh), необходимо указать, на каких именно из них компоненты Maya будут работать, а на каких возникнут проблемы. К счастью, Webсайт компании Autodesk предоставляет список аппаратных средств, рекомендуемых для работы c Maya по каждой операционной системе (http://usa.autodesk.com/adsk/servlet/index?siteID=123112&id=7639522).
Щелкните на ссылке Maya 8.5 и выберите свою операционную систему из списка, предоставленного на этой странице. Хотя на этих Web-страницах и можно найти подробные рекомендации по аппарат ным средствам, имеет смысл привести некоторые общие соображения о том, какая имен но платформа наилучшим образом подходит для Maya. Сначала убедитесь в том, что процессор (или процессоры, если двух- или четырехпроцессорная машина читателю по средствам) обладает достаточной частотой; Maya весьма требовательна к мощности про цессора, поэтому быстрый процессор весьма важен. Далее, необходимо большое количе ство оперативной памяти. Для работы Maya необходимо как минимум 1 Гбайт, но 2 - 4 Гбайт будет как раз, особенно если предстоит работать с большими файлами сцены. Для качественного просмотра сцен Maya необходим мощный GPU (Graphics Processing Unit — графический процессор), или видеокарта. Хоть Maya и не откажется работать со слабой видеокартой, перерисовка экрана у сложных сцен будут происходить очень мед ленно, что безусловно раздражает. Большой жесткий диск тоже очень важен, но боль шинство современных компьютеров и так комплектуются дисками огромной емкости. Рекомендованными конфигурациями на момент написания книги считались следующие. Windows или Linux • Процессор AMD Athlon ХР; RAM 2 Гбайт; видеокарта NVIDIA Quadro FX5500 или ATI FireGL V7350; жесткий диск 400 Гбайт. • Процессор Intel Pentium 4 3.2 ГГц с HyperThreading; RAM 2 Гбайт; видеокарта NVIDIA Quadro FX5500 или ATI FireGL V7350; жесткий диск 400 Гбайт. Mac OS X • Процессор Mac Pro quad core; RAM 2 Гбайт; видеокарта NVIDIA Quadro FX 4500; жесткий диск 500 Гбайт. К счастью для пользователей, компьютерные аппаратные средства совершенствуются столь быстро, что Maya сейчас хорошо работает даже на ноутбуках. (На самом деле, ра ботая над этой книгой, авторы использовали Maya на ноутбуках.) Сейчас вполне доступ ны прекрасные ноутбуки от Apple, Boxx, Dell и HP. Кроме того, даже те аппаратные средства, которые официально не рекомендуются компанией Autodesk, зачастую вполне могут работать с Maya, только не следует рассчитывать на помощь со стороны службы технической поддержки, если используемая система не соответствует минимально до пустимым требованиям. Кроме того, вероятно, придется смириться со случайными
Введение
27
сбоями представления, если используются такие годящиеся только для игр видеокарты, как GeForce или Radeon.
Что содержится на CD Прилагаемый к книге CD был проверен на машинах с операционными системами Windows и Macintosh. Он должен работать с большинством конфигураций этих систем. Прилагаемый CD содержит все примеры изображений, мультфильмов, код и файлы, необходимые для работы над проектами книги Освоение Maya 8.5, а также главу по сис теме Classic Cloth для тех пользователей Maya, которым нужна совместимость с преж ними версиями. Кроме того, там содержится ссылка, позволяющая загрузить версию Maya для персонального обучения (Maya Personal Learning Edition). Если читатель еще не купил полнофункциональную версию Maya, он может устано вить программное обеспечение Maya Personal Learning Edition — специальную бесплат ную версию Maya, которая не предназначена для коммерческого применения. Она рабо тает с Windows2000 Professional, WindowsXP Professional и Mac OS X (10.3 или выше). Бо лее подробная информация по этой теме приведена по адресу www. a u t o d e s k . com/maya.
Что дальше Изучение книги Освоение Maya 8.5 является хорошим шагом на пути к вершинам мастерства. В нескольких главах есть рекомендации первоисточников для дальнейшего изучения по темам, связанным с анимацией и трехмерной графикой, а также ссылки на некоторые из наиболее важных Web-сайтов по этим темам. Имеет смысл посетить не только эти Web-сайты, но и Web-сайт компании Wiley (www. s y b e x . com), где можно найти обновления для Maya, а также дополнительные материалы и информацию. По мере изучения этой книги, а также в ходе собственной работы в Maya у читателя, скорее всего, появятся вопросы по темам, которые он хотел бы увидеть в следующих из даниях этой книги. Свои предложения и замечания можно передать авторам на Webсайте www. wi l e y . com. Ждем ваших предложений! Теперь, ознакомившись с большинством возможностей предложения Maya, следует подумать о максимально эффективном использовании этого инструмента. Никогда не унывайте, упорно трудитесь и не забывайте, что самым важным инструментом художни ка является его воображение, используйте его для достижения успеха!
Соглашения, принятые в книге При оформлении книги использованы соглашения, общепринятые в компьютерной литературе. •
Новые термины в тексте выделяются курсивом. Чтобы обратить внимание читателя на отдельные фрагменты текста, также применяется курсив.
•
Текст программ, функций, переменных, URL Web-страниц и другой код представлен моноширинным шрифтом.
•
Все, что придется вводить с клавиатуры, выделено полужирный моноширинным шрифтом.
28
Введение
•
Знакоместо в описаниях синтаксиса выделено курсивом. Это указывает на необхо димость заменить знакоместо фактическим именем переменной, параметром или другим элементом, который должен находиться на этом месте BINDSIZE= ( максимальная ширина колонки) * {номер колонки).
•
Пункты меню и названия диалоговых окон представлены следующим образом: Menu Option (Пункт меню).
От издательства Вы, читатель этой книги, и есть главный ее критик и комментатор. Мы ценим ваше мнение и хотим знать, что было сделано нами правильно, что можно было сделать лучше и что бы еще вы хотели увидеть изданным нами. Нам интересно услышать и любые дру гие замечания, которые вам хотелось бы высказать авторам. Мы ждем ваших комментариев. Вы можете прислать письмо по электронной почте или просто посетить наш Web-сервер, оставив на нем свои замечания, — одним словом, любым удобным для вас способом дайте нам знать, нравится или нет вам эта книга, а также выскажите свое мнение о том, как сделать наши книги более подходящими для вас. Посылая письмо или сообщение, не забудьте указать название книги и ее авторов, а также ваш e-mail. Мы внимательно ознакомимся с вашим мнением и обязательно учтем его при отборе и подготовке к изданию следующих книг. Наши координаты: E-mail: WWW:
[email protected] http://www.dialektika.com
Интерфейс Maya На первый взгляд интерфейс Maya кажется чересчур сложным, и возникают даже опасения, что никогда не удастся запомнить, что где расположено. Как будет продемон стрировано в этой книге, наилучшим способом изучения Maya является применение ее для решения практических задач. Впоследствии эту главу можно использовать как спра вочник по интерфейсу и многочисленным окнам и функциям, которые предстоит ис пользовать в работе. Не торопитесь обращаться к средствам настройки клавиш, панелям и диалоговым ок нам; пока что доступ ко всем командам и функциям будет осуществляться с помощью меню. Безусловно, из этого правила будет сделано несколько исключений, особенно в главе 2, "Быстрое начало: создание анимации в Maya 8.5", однако в первое время настоя тельно рекомендуется пользоваться исключительно системой меню. В этой главе изложены способы доступа к функциям, а также приведено довольно пол ное описание наиболее часто используемых окон Maya и способов их применения. Итак, без излишних проволочек приступим к изучению интерфейса Maya и его назначения. •
Интерфейс
•
Краткий обзор
•
Окна сцены
•
Компоновка окон
•
Окно оперативного доступа
•
Меню и панели
•
Иерархическая структура и гиперграф
•
Панель каналов и редактор атрибутов
•
Временная шкала
•
Командная строка, строка ответа и редактор сценариев
•
Настройка интерфейса
Интерфейс Почти каждую задачу в Maya можно выполнить несколькими способами. Однако наиболее популярным способом доступа к функциям и инструментам являются меню (menu). Кроме меню, для обращения к функциям можно использовать пиктограммы (icon), расположенные на панелях, а также комбинации клавиш (hot key), маркированные
30
Глава 1
контекстные меню (marking menu) и окна оперативного доступа (hotbox). Наравне с другими преимуществами Maya это позволило ей стать одним из наиболее популярных инструментов создания компьютерной графики на рынке. Адаптируемость к индивиду альным предпочтениям разработчика и выполняемым задачам делает это программное обеспечение великолепным инструментом для творчества. Однако для новичков это ско рее не преимущество, а недостаток, поскольку им зачастую трудно запомнить, где и что расположено и как его применить. Тем не менее до конца данной главы все эти возмож ности будут описаны. Авторы настоятельно рекомендуют ознакомиться сначала с меню, а затем переходить к более эффективным способам. Те, кто уже имеют опыт работы с другим программным обеспечением компьютерной гра фики, обнаружат, что использование этой главы как справочника существенно облегчает пе реход на Maya. Профессионалы, которые ранее использовали другие пакеты, говорят, что процесс разработки на Maya и ее интерфейс требует внимательного изучения, поскольку они могут предоставить более быстрые и эффективные способы выполнения тех же действий. Поскольку новички в Maya еще не успели выработать персональные предпочтения, им имеет смысл возвратить все параметры интерфейса в состояние по умолчанию, чтобы его внешний вид соответствовал описанию в упражнениях этой книги. Выберите в меню W i n d o w --- Settings/Preferences (Окно---Параметры/Предпочтения) пункт Preferences
(Предпочтения). В окне Preferences (Предпочтения) вберите Edit---Restore Default Settings (Правка---Восстановить параметры по умолчанию). Это должно вернуть пара метры в их первоначальное состояние. На многопользовательском компьютере будьте внимательны, чтобы не сбросить предпочтения какого-либо другого пользователя. А теперь рассмотрим, какие элементы составляют экран Maya в состоянии по умол чанию. Обратите внимание именно на интерфейс в состоянии по умолчанию, поскольку эк ран Maya допускает полную перенастройку и позволяет переиначить рабочую среду в соответствии с предпочтениями пользователя. По мере приобретения опыта работы в Maya можно перенастроить интерфейс так, как нравится. Однако в процессе обучения имеет смысл оставить все настройки в состоянии по умолчанию, чтобы они соответство вали рисункам, приведенным в книге. Кроме того, Maya полностью поддерживает применение второго дисплея на системах с несколькими мониторами — хватило бы возможностей видеокарты. Имейте в виду, что для эффективной работы системы OpenGL на обоих дисплеях должно быть установлено одинаковое разрешение и одинаковая частота обновления. Квалифицированные пользователи могут сразу перейти к разделу "Настройка ин терфейса" далее в этой главе.
Краткий обзор Давайте немного подробней рассмотрим пользовательский интерфейсе и его элементы. В верхней части экрана (см. рис. 1.1) расположены главное меню (main menu bar), строка состояния (Status line) и панели (shelf), обеспечивающие доступ к большинству функций Maya. Вертикальная панель в левой части экрана — это панель инструментов (Tool Box), которая позволяет быстро выбирать наиболее популярные инструменты управления объектами. В левой части экрана расположены панель каналов (Channel Box) и редактор слоев (Layer Editor), а иногда и редактор атрибутов (Attribute Editor) (последний на рис. 1.1 не представлен). Эти средства обеспечивают доступ к информа ции об объектах на сцене и позволяют манипулировать ею.
Интерфейс Maya
31
Рис. 1.1. Интерфейс Maya 8.5 Внизу экрана, горизонтально, расположены ползунок времени (Time Slider) и ползунок предназначенные для доступа к различным функциям Maya и обратной связи с ней. Посередине, в окружении всех этих элементов, расположено рабочее пространство (workspace), которое содержит панели видов (view panel) (или окна сцены (scene window)) и их собственные меню сцены (scene menu). В некоторых пакетах трехмерного моделирова ния эти панели известны также как виды (view) или области просмотра (view-port). Меню сцены каждой из панелей предоставляют доступ к параметрам, специфическим для данной панели, а также позволяют управлять ее видом, т.е. способом отображения объектов. По существу, именно в этих панелях создаются трехмерные сцены и выполняется манипули рование ими. На рис. 1.1 панели представлены с отображаемой сеткой (grid), которая пред ставляет собой наземную плоскость трехмерного пространства и весьма полезна для ори ентации в пространстве, особенно в перспективных представлениях. диапазона ( R a n g e Slider),
Глава 1
32
Рабочее пространство При первом запуске Maya рабочее пространство занято полноэкранным перспективным представлением (perspective), как показано на рис. 1.2. Это представление, по существу, яв ляется видом сквозь камеру, которое демонстрирует реальную картину моделируемой сце ны, включая глубину и перспективу. Данное, окно используется для просмотра сцены в объеме. Чтобы прочувствовать пропорции и глубину, перспективное представление допус кает возможность перемещения по сцене в реальном масштабе времени.
Рис. 1.2. Полноэкранное перспективное представление Чтобы переключить полноэкранное перспективное представление на обычную четырехпанелыгую компоновку (см. рис. 1.1), нажмите клавишу пробела. Четырехпанельная компоновка, кроме перспективного представления, содержит также три ортогональных представления (вид сверху (top), вид спереди (front) и вид сбоку (side)), каждое из кото рых демонстрирует сцену со своей стороны. Снова нажав клавишу пробела, переведите текущую панель представления в полноэкранный режим. Обычно ортогональные представления используют в процессе моделирования и раз мещения объектов на сцене, поскольку в отличие от перспективного представления они точнее передают размеры объектов и их взаиморасположение (рис. 1.3). Хотя все кубы на этой сцене имеют одинаковый размер, в перспективном представлении ближайшие кубы выглядят большими, а удаленные — маленькими. Ортогональные представления отображают размеры правильно, поэтому здесь все четыре куба имеют одинаковый раз мер и форму, а их взаимное расположение соответствует позиции на сцене. Для настройки расположения элементов на экране можно воспользоваться любой из шести предварительно заданных компоновок, которые можно выбрать в панели инстру ментов, расположенной в левой части окна. Для изменения компоновки можно также воспользоваться главным меню, выбрав в меню W i n d o w (Окно) пункт Saved Layouts
Интерфейс Maya
33
(Сохраненные компоновки). Кроме того, для смены представления любой панели можно выбрать необходимый вид в ее меню Panels (Панели), показанном на рис. 1.4 (такие ме ню есть в верхней части всех панелей). Для моделирования можно выбрать любо пред ставление: ортогональное (Orthographic), перспективное (Perspective) или любое другое, которое лучше подходит для конкретного процесса разработки. И наконец, перетаскивая границы между панелями, можно изменять их размеры.
Рис. 13. Четырехпанельная компоновка
Рис. 1.4. Вид панели можно изменить с помощью ее собственного меню В панелях отображается сетка, которую можно использовать для выравнивания объ ектов относительно друг друга и для других целей при размещении объектов на сцене. Размер и параметры сетки можно настроить в меню Display • Grid • (Представление • Сетка • ) . Фактически ячейки сетки соответствуют текущим единицам измерения, кото рые можно изменить. Выберите в меню W i n d o w (Окно) пункты Settings/Preferences • Preferences (Параметры/Предпочтения • Предпочтения) и в разделе Settings (Параметры) появившегося диалогового окна Preferences (Предпочтения) внесите не обходимые изменения.
Навигация Чего стоят все эти представления и элементы пользовательского интерфейса, если между ними нельзя переключаться? Подобно любому другому программному продукту, для взаи модействия с Maya используется клавиатура и мышь, хотя здесь они, пожалуй, используются чаще, чем в других приложениях. Для перемещения между рабочими окнами в Maya обычно используется клавиша
. Кроме того, для работы с Maya нужна мышь с тремя кнопками, даже на системе Macintosh. На Macintosh клавиша дублирует клавишу . Для перемещения по сцене вместе с клавишей используются кнопки мыши.
34
Глава 1
Элементы управления мыши Левая кнопка мыши (Left Mouse button — LM) — главная кнопка выбора в Maya, и вполне очевидно, что она используется чаще других. Но при движении в перспективном представле нии (вид камеры) по сцене, когда левая кнопка мыши используется совместно с клавишей , она отвечает за наклон и поворот. Правая кнопка мыши (Right Mouse button — RM) в большинстве других программ активизирует контекстные меню, которым в Maya соответст вуют маркированные контекстные меню (marking menu). (Более подробная информация о маркированных контекстных меню приведена далее в этой главе.) На сцене правая кнопка мыши позволяет также приближаться или отдаляться. Наезд (dollying) перемещает камеру ближе к объекту на сцене или отдаляет ее. Это вовсе не увеличение (zoom), с которым его за частую путают, — при увеличении изменяется фокальное расстояние объектива камеры, а при наезде происходит физическое перемещение камеры относительно объекта съемки. И нако нец, средняя кнопка мыши (Middle Mouse button — ММ), используемая совместно с клавишей , позволяет перемещаться по сцене горизонтально и вертикально. Кроме того, она вы ступает в качестве виртуального ползунка (virtual slider). Пример виртуального ползунка при веден ниже, при обсуждении панели каналов. Кроме того, если среднее колесико мыши позволяет щелкать, его можно также ис пользовать в Maya для наезда при просмотре сцены, достаточно лишь прокрутить его вперед или назад. Это аналогично перемещению мыши с нажатой правой кнопкой мыши (перетаскиванию) при нажатий клавише . Чтобы колесико мыши при нажатии ве ло себя как средняя кнопка, возможно, придется настроить функции мыши (с помощью ее драйвера или непосредственно).
Компас вида Компас вида (View C o m p a s s ) , показанный на рис. 1.5, позволяет переключать пред ставление текущей панели. Речь, безусловно, идет об одной из панелей представления. В Maya рабочее пространство составляют ее панели представления и пользовательский интерфейс. Щелкнув на одной из осей компаса, представленных голубым, красным, зе леным и синим конусами, можно быстро заменить текущее представление соответст вующим ортогональным представлением. Щелчок на голубом кубе в основании компаса вернет вид к перспективному представлению.
Рис. 1.5. Компас вида Терминология д в и ж е н и я к а м е р ы
Каждый способ перемещения камеры имеет свое название. Ниже описаны способы движе ния камеры и их краткое описание. • Поворот (rotate) или наклон (tumble) камеры в перспективном представлении. Чтобы вращать камеру, находясь в окне перспективного представления, следует перемещать мышь, удерживая нажатыми клавишу < Alt > и ее левую кнопку. Это действие физиче ски перемещает камеру вокруг объекта съемки и может быть применимо только в пане ли перспективного представления. •
Движение (move) вида означает перемещение любой камеры. Для этого в любом окне сцены следует перемещать мышь, удерживая нажатыми клавишу и ее среднюю
Интерфейс Maya
35
кнопку. В результате камера будет перемещаться по сцене горизонтально или верти кально, как будто панорамируя ее. •
Наезд (dollying) похож на увеличение и применим для любой камеры. Для этого следует перемещать мышь, удерживая нажатыми клавишу и ее правую кнопку. Можно также перемещать мышь в любом окне сцены, удерживая нажатыми ее левую и сред нюю кнопки, чтобы изменить увеличение (или масштаб) представления.
Итак, нажатие клавиши < Аlt> и левой кнопки мыши приведет к повороту, нажатие клави ши и средней кнопки мыши — к смещению, а нажатие клавиши и правой кнопки мыши — к увеличению.
Панель главного меню С первого взгляда на главное меню (рис. 1.6) можно заметить несколько элементов, хорошо знакомых по многим другим приложениям, а именно: меню File (Файл), Edit (Правка) и Help (Справка).
Рис. 1.6. Панель главного меню В Maya конкретный вид доступных элементов меню зависит от текущего набора меню (menu set). Переключение набора меню сопровождается заменой доступных инструмен тальных средств соответствующим набором. Сначала это может показаться странным, однако на практике возможность замены меню и инструментов в соответствии с задачей, решаемой в данный момент, весьма удобна. Версия Maya Complete предоставляет набо ры меню Animation (Анимация), Polygons (Многоугольники), Surfaces (Поверхности), Dynamics (Динамика) и Rendering (Визуализация), а версия Maya Unlimited, кроме этих четырех, предоставляет также наборы меню Classic Cloth (Классическая ткань), nCloth и Maya Live. Для доступа к наборам меню применяется строка состояния (Status line), речь о которой пойдет в следующем разделе. Первые шесть элементов главного меню, File (Файл), Edit (Правка), Modify (Изменить), Create (Создать), Display (Представление) и W i n d o w (Окно), остаются не изменными независимо от текущего набора меню. Последнее меню, Help (Справка), также отображается постоянно. Назначение всех этих меню описано ниже. Меню File (Файл). Содержит все файловые операции, от сохранения и открытия до оптимизации размера сцены и экспорта/импорта. Меню Edit (Правка). Предоставляет доступ к функциям редактирования характери стик сцены, включая удаление или дублирование объектов, а также отмену или повторе ние действий. Меню Modify (Изменить). Позволяет редактировать такие характеристики объектов на сцене, как их положение, масштаб и расположение опорных точек. Меню Create (Создать). Позволяет создавать новые объекты, такие как геометриче ские примитивы, кривые, камеры и т.д. Меню Display (Представление). Содержит средства настройки элементов GUI (графический интерфейс пользователя) Maya, а также объектов на сцене, позволяя ото бражать и скрывать некоторые элементы и компоненты объектов, такие как вершины, поверхности, центры и т.д. Меню Window (Окно). Предоставляет доступ к различным окнам, с которыми придется работать, например к редактору атрибутов (Attribute Editor), иерархической структуре
36
Глава 1
(Outliner), редактору анимационных кривых (Graph Editor), гиперграфу (Hypergraph), и раз личным вложенным меню, содержащим функции визуализации и анимации. Меню Help (Справка). Предоставляет доступ к обширной справочной документации Maya в формате HTML. Обратите внимание на две пиктограммы, расположенные справа от некоторых пунк тов меню: стрелку и квадрат. Щелчок на стрелке (=>) открывает следующее меню, кото рое, в свою очередь, содержит другие пункты. Щелчок на квадрате ( • ) открывает диало говое окно, в котором можно задать параметры конкретного инструмента.
Извлекаемые меню Вверху каждого меню находится двойная линия, двойной щелчок на которой позво ляет извлечь меню и поместить его как панель инструментов в любом месте экрана (или экранах, если их несколько). Извлекаемые меню (tear-off menu) называют также плаваю щими меню (floating menu). Такие меню упрощают доступ к их содержимому, особенно если тот же пункт приходится использовать неоднократно. Предположим, например, что необходимо создать несколько полигональных сфер. В этом случае можно извлечь меню C r e a t e d Polygonal Primitives (Создать=> Полигональные примитивы) и поместить его на крае экрана. Теперь можно щелкать на пункте Sphere (Сфера) столько, сколько необхо димо, и не открывать каждый раз двухступенчатое меню. Ч т о б ы извлечь меню, щелкните здесь и перетащите его
Строка состояния Строка состояния (рис. 1.7) содержит несколько очень важных пиктограмм.
/ Р и с . 1 7 . Строка состояния Первым элементом строки состояния является раскрывающийся список выбора на бора меню. Как уже упоминалось ранее, выбор определенного набора меню изменит за головки в панели главного меню. Обратите внимание на черные вертикальные линии с прямоугольником или стрелкой в середине, расположенные непосредственно после рас крывающегося списка набора меню и периодически далее по строке состояния. Щелчок на таком разделителе открывает или закрывает разделы строки состояния.
Интерфейс Maya
37
Пиктограммы файловых операций сцены Первый раздел пиктограмм инструментов в строке состояния связан с файловыми операциями. Пиктограмма
Название
Описание
New Scene (Новая сцена)
Создает новый файл сцены
Open Scene (Открыть сцену)
Отображает окно, в котором можно выбрать и от крыть любой сохраненный ранее файл сцены. Щелк нув правой кнопкой мыши на этой пиктограмме, в Maya 8.5 можно отобразить список недавно сохра ненных файлов
Save Scene (Сохранить сцену)
Отображает окно, в котором можно задать имя и расположение файла вновь сохраняемой сцены. Если текущая сцена уже была сохранена ранее, то она за писывается в тот же файл
Режимы выделения Второй раздел содержит поле S e l e c t i o n M o d e (Режим выделения). Этот раскры вающийся список позволяет использовать предустановленные маски выделения (selection mask), которые позволяют выбирать объекты только одного типа (но не другого). Следовательно, на сцене можно выделить все частицы и ни одну из поли гональных моделей. Это весьма полезно, когда на сложной сцене необходимо вы брать только отдельные объекты. Возможность выбора типа объектов, которые можно выделять, существенно упрощает процесс разработки больших сцен. Это ме ню предоставляет несколько стандартных масок, которые можно использовать для оптимизации режима выделения в соответствии с текущими задачами процесса раз работки (например, на сцене можно выбирать только деформаторы или только ди намические объекты, такие как частицы). Раскрывающийся список предустановленных масок выделения работает прекрасно, но можно использовать и пиктограммы индивидуальных масок выделения, расположен ные в строке состояния. Они обеспечивают более точное управление, т.е. позволяют включить или исключить возможность выбора объектов определенных типов, например частиц, NURBS-поверхностей, полигональных поверхностей и т.д. Подробно эта тема рассматривается позже. Следующая группа пиктограмм в строке состояния позволяет применить три разных ре жима выделения. Основой Maya является иерархия объектов, где компонентами одних объ ектов являются другие объекты, компонентами которых являются другие объекты, и т.д. Эта концепция рассматривается в следующей главе. Режимы выделения позволяют также выби рать различные уровни иерархии объектов. Например, используя режим выделения, можно выбрать всю группу объектов, только один из объектов этой группы, только точки на поверхности этого объекта или многоугольники, составляющие этот объект. Основ ными режимами выделения являются режим объектов (object mode) и режим компонен тов (component mode). Например, если сгруппировано несколько объектов, то в режиме иерархии щелчок на любом из них приведет к выделению всей группы объектов. Щелчок в режиме объектов
38
Глава 1
приведет к выделению только того объекта, на котором он был выполнен. Для переклю чения между режимами объектов и компонентов нажмите клавишу < F 8 > (эта клавиша задана по умолчанию). Пиктограмма Название
Описание
Hierarchy Mode (Режим иерархии)
Выделяет группы объектов или части группы
Object Mode (Режим объектов)
Выделяет объекты по типу, например геометрические фигуры, камеры, источники света и т.д.
Component Mode
Выделяет компоненты объекта, например вершины,
(Режим компонен-
плоскости или контрольные вершины (Control
тов)
Vertices — CV) NURBS-поверхностей
Индивидуальные маски выделения Следующий набор пиктограмм относится к индивидуальным маскам выделения, ко торые позволяют уточнить, какие именно объекты или компоненты предстоит выделить. Конкретный набор отображаемых здесь пиктограмм зависит от текущего режима выде ления. Если на сцене слишком много объектов и выделить курсором те из них, которые обладают некоторым типом, довольно трудно, то применение следующих фильтров су щественно упростит задачу. Пиктограмма
Название
Set Object Selection Mask (Установить маску выделения объектов) Select By Handles (Выделять по маркерам)
Описание
Разрешает или запрещает выби рать пиктограммы выделения Выделяет маркеры объектов
Select By Joints (Выделять по суставам)
Выделяет суставы
Select By Curve (Выделять по кривым)
Выделяет кривые
Select By Surfaces (Выделять по граням)
Выделяет грани
Select By Deformations (Выделять по деформаторам)
Выделяет решетки и другие деформаторы
Select By Dynamics (Выделять по дина мическим объектам)
Выделяет частицы и динамиче ские объекты
Select By Rendering (Выделять по узлам визуализации)
Выделяет узлы визуализации, а также такие объекты, как камеры и источники света
Select By Miscellaneous (Выделять поразному)
Выделяет разные объекты, такие как локаторы и размерности
Lock Selection (Блокировать выделение)
Фиксирует выделенные объекты, т.е. блокирует выделение
Highlight Selection Mode (Подсветка ре жима выделения)
Отключает автоматическое представление компонентов при выборе в режиме выделения
Чтобы быстро узнать, каково назначение любой из пиктограмм, достаточно навести на нее курсор мыши и прочитать всплывающую подсказку. Фактически это самый про-
39
Интерфейс Maya
стой способ изучения пользовательского интерфейса Maya, за исключением подробного чтения этой главы, разумеется.
Функции привязки, или привязка "Пиктограммы с магнитом" называют привязками (snap). Они позволяют привязы вать (или блокировать) курсор или объект к определенным точкам на сцене. Используя эти пиктограммы, можно организовать привязку к другим объектам, контрольным вер шинам, вершинам, пересечениям сетки и т.д. Для некоторых видов привязки можно ис пользовать также соответствующие комбинации клавиш. Когда нажата соответствующая клавиша, курсор из квадрата превращается в круг. Пиктограмма
Название
Клавиша
Описание
Snap То Grids (Привязка к сетке)
<х>
Привязывает объекты к пере сечениям сетки вида
Snap То Curves (Привязка к кривым) Snap to Points (Привязка к точкам)
Привязывает объекты к кри вой
Привязывает объекты к точ кам объектов, например к вершинам
Snap То View Planes (Привязка к плоскостям про смотра)
Привязывает объекты к плос костям просмотра
Make The Selected Object Live (Активизация выбранного объекта)
Эта пиктограмма не имеет никакого отношения к при вязке. Она позволяет созда вать такие объекты, как кри вые линии,непосредственно на поверхности
Входящие и исходящие связи Две пиктограммы справа от фильтров соответствуют входящим (input) и исходя щим связям (output connection) объекта, а третья является переключателем записи истории создания (construction history). Объекты в Maya могут быть связаны друг с другом по разным причинам, от анимации до визуализации. Когда объект находится под влиянием каких-либо атрибутов другого объекта или узла, считается, что он имеет входящую связь. Если собственный атрибут (атрибуты) узла влияет на другой объект, то считается, что этот узел имеет исходящую связь. Как правило, типичный процесс разработки не предполагает использования этих пиктограмм, однако нужно знать об их назначении. Более подробная информация о входящих и исходящих свя зях приведена в тех главах книги, где рассматриваются оснащение сцены для анима ции и создание тонеров. Третья пиктограмма включает и выключает запись истории создания. История соз дания отслеживает узлы и атрибуты при создании объекта, что упрощает правку тех объ ектов, которые имеют историю.
Пиктограмма
Название
Описание
Input Connections (Входящие связи)
Выбирает и редактирует все входящие связи выделенного объекта, т.е. можно выбрать и отредактировать любой объект, который непосредственно воздействует на выделенный объект
Output Connections (Исходящие связи)
Выбирает и редактирует исходящие связи или объекты, на которые воздействует выделенный объект
Construction History (История создания)
Переключает (вкл/выкл) запись истории создания
Элементы управления визуализацией Следующие три пиктограммы позволяют управлять процессом визуализации. Пиктограмма
Название
Описание
Render Current View (Визуализировать те кущий вид)
Визуализирует текущий кадр текущей области просмотра
IPR Render Current View (Визуализировать теку щий вид в режиме IPR)
Визуализирует текущий кадр текущей области просмотра в режиМе интерактивной фотореали стичной визуализации (Interactive Photorealistic Rendering — IPR). Здесь можно изменять некото рые параметры тонирования визуализации и текстурирования, а затем сразу просматривать об новленный результат в окне IPR
Render Settings (Параметры визуали зации)
Открывает окно параметров визуализации, таких как разрешение, тип файла, диапазон кадров и т.д.
Поле ввода .
Нововведением Maya 8.5 является поле ввода (input box), позволяющее бы стро перемещать, переименовывать или выбирать объекты и компоненты. Щелкнув на пиктограмме со стрелкой слева от поля ввода, можно выбрать следующие операции. Пиктограмма Название
Описание
Absolute Transform (Абсолютное перемещение)
Перемещает объект или компонент по опреде ленной оси относительно исходной позиции его создания
Relative Transform (Относи тельное перемещение)
Перемешает объект или компонент по опреде ленной оси относительно его текущей позиции
Rename (Переименование)
Позволяет изменить имя выбранного объекта
Select By Name (Выбор no имени)
Позволяет выбрать объект по имени. Исполь зуя звездочку в тексте, можно выделить все объекты с определенным префиксом или постфиксом
Интерфейс Maya
41
Панель каналов и редактор слоев Последняя часть строки состояния связана с областью панели каналов и редак тора слоев. Эти три пиктограммы переключают доступные представления пра вой области экрана. После щелчка на первой кнопке в правой части экрана отобразится редактор атрибутов (Attribute Editor), позволяющий изменять атрибуты объектов Maya. После щелчка на второй кнопке в правой части экрана откроется окно Tool Options (Параметры инструмента). Это окно предоставляет доступ к параметрам инструмента, выбранного в настоящий момент. После щелчка на последней пиктограмме отображает ся или скрывается панель каналов и редактор слоев, содержащие основные анимацион ные атрибуты текущего объекта и слои текущей сцены соответственно. Пиктограмма
Название
Описание
Show/Hide Attribute Editor (Показать/Скрыть редактор атрибутов)
Отображает редактор атрибутов текущей области
Show/Hide Tool Settings (Показать/Скрыть параметры инструмента)
Отображает параметры текущего инструмента
Show/Hide Channel Box/Layer Editor (Показать/Скрыть панель каналов и редактор слоев)
Отображает панель каналов и редактор слоев
Панель Панель (shelf) представляет собой область, содержащую пиктограммы инструменталь ных средств (рис. 1.8). Пиктограммы инструментов разделены в соответствии с их функ циональным назначением и размещены на разных вкладках (tab) панели. Чтобы получить доступ к набору пиктограмм инструментов, применяемых на определенном этапе процесса разработки, щелкните на соответствующей вкладке панели. На вкладке Custom (Специальные) разработчик может разместить любые инструменты по своему усмотрению.
Рис. 1.8. Панель
Чтобы настроить панель в соответствии со своими предпочтениями, щелкните на пиктограмме Menu (Меню) ( О ) . В результате откроется меню настройки панели. Чтобы добавить на панель команду, соответствующую пункту меню, выберите его в главном меню и нажмите комбинацию клавиш (на Mac — <3£+Option+Shift>). Пиктограмма этого инструмента появится на текущей панели. Чтобы удалить элемент панели, перетащите его пиктограмму средней кнопкой мыши на пиктограмму Trash (Корзина), расположенную в правой части панели. Можно создать несколько панелей и переключаться между ними, щелкая на пиктограмме Shelf T a b (Вкладки п а н е л и ) , расположенной над пиктограммой Menu (Меню) в левой части панели. Как и в строке состояния, перемещая курсор мыши над пиктограммами панели, можно просмотреть всплывающие подсказки, содержащие их названия и описания. Хорошее эмпирическое правило: чтобы узнать, где именно расположен инструмент на панели, следует ориентироваться по меню; именно поэтому новичкам в Maya имеет смысл сначала использовать меню, а потом, по мере приобретения опыта, переходить к
Глава 1
42
пиктограммам панели. Использование меню, безусловно, более трудоемко, однако оно позволит быстрее запомнить расположение средств управления Maya.
Панель инструментов Панель инструментов (рис. 1.9) содержит инструменты, используемые чаще всего: Select (Выделение), Lasso Select (Выделение петлей), Translate (Перемещение), Rotate (Поворот), Scale (Масштаб), Universal
Manipulator (Универсальный манипулятор), Soft Modification (Мягкая модификация) и Show Manipulator (Показать манипулятор). Но чаще все го для выбора этих инструментальных средств используют комбинации клавиш. Их стандартная компоновка очень проста. Наиболее используе мым инструментам (Select (Выделение), Move (Перемещение), Rotate (Поворот) и Scale (Масштаб)) соответствуют клавиши , <w>, <е> и <г>, как показано ниже. Не забывайте, что комбинации клавиш в Maya чувствительны к регистру. Все клавиши с буквами указаны в книге в нижнем регистре (хотя случайно они могут быть напечатаны и в верхнем регистре). Там, где необходим верхний регистр, в комбинации клавиш бу дет указано следующее: <Shift+клавиша>.
Пиктограмма Название
Select (Выделение)
Рис. 19. Панель инструментов
Клавиша
Описание
Выделяет объекты
Lasso Select (Выделение петлей)
Выделяет область произвольной формы
Paint Selection Tool (Выделение кистью)
Выделяет компоненты, окрашивая их кистью (нововведение Maya 8)
Translate (Перемещение) (или Move (Перемещение))
<w>
Перемещает выделение
Rotate (Поворот)
<е>
Поворачивает выделение
Scale (Масштаб)
Масштабирует выделение
Universal Manipulator (Универсальный манипулятор)
Единый инструмент перемещения, поворота и масштабирования
Soft Modification (Мягкая модификация)
Модифицирует область с постепенным снижением воздействия
Show Manipulator (Показать манипулятор)
Отображает манипуляторы, специфические для объекта
Current Tool Display (Показать текущий инструмент)
Отображает инструмент, выбранный в текущий момент
Кроме этих общих инструментов, панель инструментов содержит пиктограммы не скольких компоновок экрана, которые позволяют быстро изменять интерфейс. Это очень удобно, поскольку для разных сцен и производственных процессов нужны разные режи мы представления. Пощелкайте в панели инструментов на пиктограммах всех шести предварительно установленных компоновок и ознакомьтесь с ними.
43
Интерфейс Maya
Панель каналов Вертикальная область в правой части экрана обычно занята пане лью каналов ( C h a n n e l B o x ) и редактором слоев (Layer Editor). Па нель каналов — это ключевой элемент Maya. Она содержит пере чень основных анимационных атрибутов выбранного объекта и по зволяет не только быстро изменять их значения, но и добавлять выражения без необходимости открывать редактор атрибутов (Attribute Editor), который представляет собой окно, содержащее перечень всех атрибутов объекта (он рассматривается далее в этой главе). Кроме того, здесь можно легко выявить входящие связи, поскольку соответствующие им атрибуты объекта выделены цветом. Таким образом, это позволяет сразу узнать, является ли данный объект анимируемым, ограничены ли его движения другим объек том, управляют ли им выражения, динамический ли он и т.д. Панель каналов и редактор слоев представлены на рис. 1.10 (на панели ка налов отображаются атрибуты выбранной полигональной сферы с несколькими связями, выделенными разными цветами).
Представление атрибутов в панели каналов
дактор В следующей таблице описано, какие цвета применяются в панели каналов для выделения атрибутов со связями.
Рис. 1.10. Панель каналов и реслоев
Входящая связь
Цвет
Описание
Ключевой кадр
Оранжевый
В некоторой точке временной шкалы для атрибута установлен ключевой кадр
Динамический или связан ный с другим атрибутом
Желтый
На объект воздействуют динамические си лы, либо значение этого атрибута совмест но используется другим объектом
Управление выражением
Фиолетовый
Значением этого атрибута управляет выра жение
Ограничение
Синий
Значение атрибута ограничено значением атрибута другого объекта
Блокированный
Серый
Значение атрибута нельзя изменить, пред варительно не разблокировав его
Приостановленная анимация
Коричневый
Данный атрибут является анимируемым, однако в настоящий момент анимация при остановлена и не воспроизводится
Смешанный (с другим атри бутом)
Зеленый
Значение этого атрибута смешано со зна чением другого атрибута
Неанимируемый
Светло серый
Этот атрибут не может быть анимирован
Изменение значений атрибутов в панели каналов Когда объект выделен, его имя появляется в заголовке панели каналов. Чтобы пере именовать выделенный объект, достаточно щелкнуть на его имени в заголовке и ввести
Глава 1
44
новое. Каналы (channel), или доступные атрибуты (attribute), этого объекта перечисле ны ниже в текстовых полях, причем имя атрибута расположено слева, а значение — спра ва. Чтобы изменить значение атрибута, щелкните на его значении и введите новое с кла виатуры. Для этого можно также использовать виртуальный ползунок (virtual slider) Maya: щелкните на имени канала в панели каналов, нажав и не отпуская среднюю кнопку мыши, перемещайте ее (т.е. мышь, а не кнопку) в панели представления влево или впра во, чтобы уменьшить или увеличить значение выбранного канала. Щелчок правой кнопкой мыши на имени атрибута в панели каналов открывает кон текстное меню, предоставляющее доступ к нескольким общим командам, таким как ус тановка ключевых кадров, блокировка и разблокировка выделенного канала (или кана лов). Здесь можно легко анимировать любой канал, щелкнув правой кнопкой мыши на имени атрибута и выбрав в появившемся контекстном меню пункт Key Selected (Установить ключевой кадр для выбранного). После щелчка правой кнопкой мыши не посредственно на значении отобразится контекстное меню со стандартными пунктами копирования и вставки. Еще одним весьма полезным пунктом контекстного меню является Break Connection (Разорвать связь), который позволяет удалить любые связи выделенных атрибутов и вернуть подсветку их значений в панели каналов к обычному белому цвету. Предполо жим, например, что для канала rotateX (канал поворота по оси X) объекта установлены ключевые кадры (соответствующее текстовое поле выделено оранжевым цветом). Если щелкнуть в панели каналов на канале rotateX правой кнопкой мыши и выбрать в поя вившемся контекстном меню пункт Break Connection (Разорвать связь), то можно уда лить ключевые кадры и вернуть текстовому полю обычный белый цвет. Подробнее эти операции рассматриваются ниже, при описании анимации. Под списком каналов расположены разделы Shapes (Формы) и Inputs (Входящие), показанные на рис. 1.10. Они соответствуют связям, которые в настоящий момент имеет выделенная полигональная сфера. В данном случае раздел Shapes (Формы) содержит узлы pSphereShapel и pShperel_scaleConstraintl (последний выбран), кото рые имеют входящие связи с выделенной сферой и помогают задать свойства объект. Не вдаваясь в подробности, скажем, что под узлами (node) в Maya подразумевают группы атрибутов, которые определяют свойства объекта, его расположение, форму и т.д. В разделе Inputs (Входящие) указаны также выражения и анимация выделен ной сферы. Щелчок на имени узла предоставит доступ к его собственным атрибутам, поэтому здесь можно быстро внести изменения в атрибуты не только выбранного объекта, но и связанных с ним узлов.
Изменение представления панели каналов и редактора слоев Хотя панель каналов и редактор слоев отображаются постоянно, щелкнув на одной из трех пиктограмм в правом верхнем углу (см. рис. 1.10), эти панели можно заменить па нелью Attribute Editor (Редактор атрибутов) или Tool Settings (Параметры инструмента), чтобы получить быстрый доступ к тем возможностям, которые нужны в данный момент. Некоторые разработчики предпочитают держать в этой области открытыми панели Attribute Editor (Редактор атрибутов) и Tool Settings (Параметры инструмента). Именно поэтому в Maya предусмотрена возможность открывать эти панели в собственных окнах. Для этого выберите в меню W i n d o w (Окно) пункты Settings/Preferences => Preferences Далее в тексте называемые также параметрами.
Интерфейс Maya
45
(Параметры/Предпочтения => Предпочтения). Открытое окно Preferences (Предпочтения) показано на рис. 1.11. В разделе Interface (Интерфейс), занимающем левую область окна, переключатели Open
Attribute
Editor (Открывать редактор атрибутов)
и Open
Tool
Settings (Открывать параметры инструмента) установлены в состояние In Separate Window (В отдельном окне).
Рис. 1.11. Окно
Preferences
Для переключения между панелью каналов и редактором слоев можно воспользо ваться пиктограммами, расположенными в левом верхнем углу (см. рис. 1.10). Пикто граммы, позволяющие переключать представления этой области, описаны ниже. Пиктограмма
Название Отображает панель каналов Отображает редактор слоев Отображает панель каналов и редактор слоев
Воспользовавшись клавишами перемещения курсора (со стрелками) или перетащив границу между областями, можно изменить относительные размеры панелей.
Редактор слоев Непосредственно под панелью каналов находится редактор слоев (Layer Editor). По добная компоновка, т.е. панель каналов и редактор слоев, подходит для большинства сцен, поскольку она обеспечивает непосредственный доступ к иерархическому представ лению сцены, а также к каналам выбранного объекта (или объектов). Редактор слоев имеет двойное назначение: представление и визуализация слоев. СЛОИ
представления
Первый и вполне очевидный аспект применения редактора слоев — это представ ление слоев. Создают слои и располагают на них объекты, как правило, для органи зации сцены. Когда объекты находятся на слоях, их представление можно разрешать и запрещать очень быстро, — достаточно щелкнуть в редакторе слоев на пиктограм ме View (Вид), расположенной рядом с именем соответствующего слоя. На рис. 1.12 представлен редактор слоев с несколькими слоями, уже добавленными к сцене. Чтобы создать новый слой, щелкните на пиктограмме C r e a t e N e w L a y e r (Создать новый слой) (И). Чтобы добавить на слой элементы, выберите в меню Layers ( С л о и ) пункт M e m b e r s h i p (Принадлежность). Можно также выбрать предназначенные для слоя объекты, а затем выбрать в меню O p t i o n s (Параметры) пункт A d d N e w O b j e c t s
Глава 1
46
То Current Layer (Добавить новые объекты на текущий слой), чтобы автоматически поместить эти объекты на текущий слой. Слои можно также использовать для того, чтобы выделить группу объектов. Д л я этого следует выбрать в меню L a y e r s ( С л о и ) пункт S e l e c t O b j e c t s In S e l e c t e d L a y e r s (Выделить объекты на
выбранных слоях). Чтобы изменить имя и цвет слоя, дважды щелкните на слое и откройте диалоговое окно Edit Layer (Редактировать слой). СЛОИ
визуализации
Подобно слоям представления (display layer), слои визуализации (render layer) позволяют разделить процесс визуализации объ ектов на несколько последовательных этапов или слоев. По Рис. 1.12. Редак слойная визуализация — очень мощное средство, поскольку оно тор слоев, демон допускает последующее редактирование композиции в таких стрирующий слои пакетах, как After Effects или Shake, а следовательно, предос текущей сцены тавляет полный контроль над объектами сцены, включая воз можность коррекции их цвета и положения. Чтобы просмотреть слои визуализации сцены, щелкните на переключателе R e n d e r (Визуализация) и перейдите со слоев представления на слои ви зуализации. Слои визуализации создаются и корректируются так же, как и слои представления. Более подробная информация о послойной визуа лизации приведена в главе 13, "Основы визуализации".
Ползунок времени и ползунок диапазона Поперек нижней части экрана горизонтально расположены ползунок времени ( T i m e Slider) и ползунок диапазона ( R a n g e Slider), показанные на рис. 1.13. Ползу нок времени отображает диапазон кадров, которыми обладает анимация в настоя щий момент. Серая полоска на ползунке времени называется индикатором текущего времени ( C u r r e n t T i m e I n d i c a t o r ) . Ее можно перетаскивать с помощью мыши назад и вперед, перемещаясь таким образом по временной последовательности. Щелкая на ползунке времени, можно сразу переходить к необходимому кадру на временной шкале (timeline). Текстовое поле справа от ползунка времени отображает текущий кадр. Его также можно использовать для непосредственного ввода номера необходимого кадра. Р я дом с полем текущего кадра находится набор элементов управления воспроизведе нием, как у видеомагнитофона. Их можно использовать для воспроизведения ани мации. Ниже ползунка времени расположен ползунок диапазона, который можно использо вать для коррекции диапазона анимации, воспроизводимой на временной шкале выше. Текстовые поля с обеих сторон от ползунка позволяют выяснить начальный и конечный кадры сцены и выбранного диапазона, отображаемого на ползунке времени. Для того чтобы откорректировать положение и размер диапазона, надо ввести необходимые зна чения в текстовые поля либо воспользоваться маркерами на концах панели ползунка диапазона.
47
Интерфейс Maya
Рис. 1.13. Ползунок времени и ползунок диапазона При изменении диапазона корректируется лишь просматриваемый диапазон кадров сцены, никакие изменения в мультфильм не вносятся. Это лишь упрощает просмотр и работу с длительными фрагментами анимации. Корректировка фактического хроно метража (удлинение или сокращение мультфильма) осуществляется иначе, как описано в главе 8, "Постановка и оснащение персонажа", и главе 10, "Нелинейная анимация". Справа от ползунка диапазона расположены меню Character Set Selection (Выбор набора персонажа), применяемое при автоматизации работы с анимационными персо нажами и объектами, кнопка Auto Keyframe (Автоматическая установка ключевых кад ров), позволяющая автоматически устанавливать ключевые кадры при анимации, и кнопка Animation Preferences (Предпочтения анимации), после щелчка на которой от крывается окно Preferences (Предпочтения), показанное на рис. 1.11.
Командная строка и строка справки
!
В основе Maya лежит язык MEL (Maya Embedded Language — встроенный язык Maya). Фактически все функции и команды интерфейса Maya приводят к вызову соот ветствующих команд MEL. Язык программирования MEL доступен для пользователей, что обеспечивает Maya ее гибкость и практически неограниченные возможности. Язык MEL позволяет создавать собственные команды или сценарии и вводить их ли бо с помощью командной строки ( C o m m a n d line), либо окна, называемого редактором сценариев (Script Editor). Командную строку, белое текстовое поле внизу панели (рис. 1.14), используют для ввода одиночных команд MEL непосредственно с клавиату ры. В сером поле панели, правее командной строки, отображаются ответы на команду и сообщения программы. Попробуйте ввести в командную строку слово sphere, и новая сфера появится в панелях Maya. Таким образом одна команда MEL позволила создать простую сферу. Чтобы удалить сферу, выберите ее, а затем введите команду Delete. Командная строка
Строка ответа
Кнопка редактора сценариев
Строка справки
Рис. 1.14. Командная строка и строка справки Если щелкнуть на пиктограмме в конце командной строки, откроется окно редактора сце нариев (Script Editor), в котором можно вводить более сложные команды MEL и сценарии. Ниже командной строки расположена строка справки (Help line). Когда курсор мы ши находится над пиктограммой, в строке справки отображается информация о ней. Это
48
Глава 1
потрясающий способ изучения пользовательского интерфейса (UI). Строка справки ин формирует также о следующем возможном шаге или запрашивает необходимые дейст вия для завершения задачи. Это большая помощь в изучении работы некоторых инстру ментов, а также в том случае, когда нет уверенности в следующем действии или команде, например, какой объект выбрать или какую клавишу нажать, чтобы выполнить команду. Читая отображаемые здесь подсказки, просто удивляешься, сколько нового можно уз нать о функциях или возможностях инструмента.
Работа в панелях представления Чтобы получить представление о панелях представления, выполним небольшое уп ражнение. Создайте сферу NURBS, выбрав в меню Create (Создать) пункты N U R B S Primitives => Sphere • (Примитивы NURBS =>Сфера • ) . (В Maya 8 примитивы обычно создают, выбирая их в меню Create (Создать), с последующим перетаскиванием на ин терфейс.) В результате посередине панелей представлений появится сфера (рис. 1.15). Обратите внимание на ее первичные атрибуты в панели каналов. Нажмите клавишу <2>, и каркасная сетка (wireframe mesh) станет плот ней, как показано на рис. 1.15, посередине. Нажмите клавишу <3>, и сетка станет еще плотней, как на рис. 1.15, снизу. Все объекты NURBS можно рассматривать на трех уровнях представления, как эту сферу. Нажимая клавиши <1>, < 2 > и <3>, можно переключаться между уровнями детализации любого выбранного объекта NURBS. Как будет продемонстрировано в главе 4, "Моделирование с использованием NURBS", NURBS является типом поверхности Maya, позволяющим при необходимости менять уровень детализации в любой момент времени. Переключение режимов с помощью кла виш <1>, <2> и <3> срабатывает только для объектов NURBS. При работе в трехмерных представлениях объемные объекты можно просматри вать как каркасные модели (см. рис. 1.15) или как заполненные, визуализированные в серых тонах модели, которые называют находящимися в режиме тонирования (shaded mode) (рис. 1.16). Каркасное представление экономит ресурсы графической системы компьютера при работе с большой сценой, а также позволяет видеть через каркас одного объекта другой объект (это удобно при сравнении и позиционирова нии объектов). Перевод панелей представления в режим тонирования или текстурирования существенно увеличивает нагрузку на видеокарту. Это не проблема, пока сцена достаточна простая, од нако по мере усложнения можно заметить, что компьютер реагирует все медленней. Чтобы повысить скорость работы над сложной сценой, попробуйте уменьшить нагрузку на видео плату, переключившись на каркасное представление и отключив при необходимости де тальные слои представления. В режиме тонирования есть несколько параметров, позволяющих помочь в работе. Чтобы облегчить процесс моделирования и управления объектами каркасную сетку можно отобразить поверх тонированного представления. Чтобы включить отображе ние тонированного каркаса, выберите в меню сцены Shading (Тонирование) пункт Wireframe On S h a d e d (Каркас поверх тонирования). На рис. 1.17 представлены куб и сфера с каркасом поверх тонированного представления. В панели тонированный объ ект можно сделать полупрозрачным, чтобы сквозь него можно было видеть другие объекты, но оставить ощущение объема. Для перехода в режим рентгеновского пред-
49
Интерфейс Maya
ставления выберите в меню Shading (Тонирование) пункт X-Ray (Рентген). На рис. 1.18 продемонстрирован рентгеновский, каркасный и тонированный режимы представления. В меню S h a d i n g (Тонирование) режим представления можно изме-нить на плоское тонированное (flat shaded), которое обрабатывается быстрее, чем про стое тонированное, или на режим рамки (bounding box), который отображает только габариты объектов и является самым быстрым, или даже точечное (points), которое отображает только точки объектов.
Рис. 1.15. Гладкость представления NURBS-поверхности
Рис. 1.16. Гладкость представления тонированной NURBS-поверхности
Режимы тонирования, текстурирования и освещения Исходя из текущих задач, представление можно переключить на разные степени детализации тонирования, текстурирования и освещения объектов. Для циклического перебора и установки уровней детализации применяются клавиши < 4 > - < 7 > . Клави ша < 4 > используется для режима каркаса, клавиша < 5 > — для режима тонирования,<6> — для тонирования текстуры, < 7 > — для режима освещения. Переход в ре жим освещения возможен только из режима тонирования ( < 5 > ) или тонирования тек стуры ( < 6 > ) . Нажав клавишу < 7 > в режиме тонирования текстуры, можно перейти в режим освещения текстуры. Эти режимы позволяют получить упрощенное представ ление об освещении и текстурах.
50
Глава 1
Рис. 1.17. Каркас поверх тонированного представления позволяет уви деть структуру поверхности тонированного объекта
Рис. 1.18. Рентгеновское представление позволяет видеть сквозь объект при частичном сохранении его тонирования и даже каркаса, как в дан ном случае Режим тонирования текстуры ( < 6 > ) отображает фактические изображения текстур, которые применены к объекту, если разрешено использование аппаратного текстурирования (hardware texturing). (Чтобы удостовериться в этом, выберите в панели представ ления пункт меню Shading => Hardware Texturing (Тонирование =>Аппаратное текстурирование).) Режим освещения ( < 7 > ) — это аппаратный предварительный просмотр объ-
Интерфейс Maya
51
екта (или объектов) в их состоянии на сцене. Его точность зависит от установленных на компьютере графических аппаратных средств (видеокарты). Клавиша
Назначение
<4>
Переключение в режим каркаса
<5>
Переключение в режим тонирования
<6>
Переключение в режим текстуры
<7>
Переключение в режим освещения
Чтобы получить представление об объеме и форме объектов, имеет смысл переклю чаться между режимами каркаса ( < 4 > ) и тонирования ( < 5 > ) . Кроме того, режим осве щения ( < 7 > ) очень удобен при выборе направления освещения и подсветки объектов при предварительной постановке освещения сцены. Он позволяет увидеть направление источников света на сцене без использования регулярной визуализации кадров. Количе ство источников света, отображаемых в окне моделирования, зависит от графических и общих возможностей используемого компьютера. Чтобы просмотреть модели в режиме высококачественного текстурирования, следует перейти в режим представления High Quality Rendering (Высококачественная визуали зация). Для этого, находясь в панели представления, выберите пункт меню Renderer => High Quality Rendering (Система визуализации => Высококачественная визуа лизация). Это позволит получить хорошее представление о текстурах и освещении сце ны, однако за счет скорости.
Вспомогательные средства представления В меню View (Вид) панели представления находятся два очень удобных вспомога тельных средства пользовательского интерфейса — Frame All (Показать все), клавиша <А>, Frame Selection (Показать выбранное), клавиша < F > , а также их близкий "родственник" Look At Selection (Просмотр выбранного). Выбор режима Frame Аll (Показать все) позиционирует представление камеры или ортогональное представление так, чтобы были видны все объекты на сцене. Режим Frame Selection (Показать выбран ное) позиционирует представление камеры или ортогональное представление так, чтобы можно было сосредоточиться только на выбранном объекте или центре выбранных объ ектов. Режим Look At Selection (Просмотр выбранного) располагает выбранный объект в середине представления, не приближаясь к нему. Если описанные выше комбинации клавиш не работают, убедитесь, что не нажата клавиша < Caps Lock >. Некоторые комбинации клавиш имеют разные значения для нижнего и верхнего регистров того же символа, поэтому имеет смысл проверить клавишу < Caps Lock >.
Манипуляторы Манипуляторы (manipulator) — это специальные маркеры на экране, которые ис пользуют для непосредственного манипулирования (manipulate) выбранным объектом. На рис. 1.19 показаны четыре наиболее популярных манипулятора Maya, применимых для всех объектов: Move (Перемещение), Rotate (Поворот), Scale (Масштаб) и Universal Manipulator (Универсальный манипулятор). Маркеры (handle) на манипуляторах ис пользуют для корректировки состояния объекта в реальном масштабе времени по любой
Глава 1
52
из осей, как будет описано далее в этом разделе. Некоторые инструментальные средства и объекты имеют специальные манипуляторы, которые позволяют в интерактивном ре жиме корректировать некоторую частность атрибутов объекта или инструмента, напри мер угол конуса направленного источника света.
Рис. 1.19. Манипуляторы позво ляют с легкостью управлять по зицией, поворотом и масштабом выбранного объекта Для доступа к манипуляторам можно воспользоваться пиктограммами панели инст рументов или следующими клавишами. Клавиша
Назначение
<W>
Выбирает инструмент Move (Перемещение)
< Е>
Выбирает инструмент Rotate (Поворот)
< R>
Выбирает инструмент Scale (Масштаб)
Отменяет выбор любого инструмента преобразования. Скрывает его манипу лятор и выбирает инструмент Select (Выделение)
Интерфейс Maya
53
Стандартные комбинации клавиш, расположенных подряд в левой части клавиатуры, позволяют выбирать такие инструменты преобразования, как Move (Перемещение), Rotate (Поворот), Scale (Масштаб) и Universal Manipulator (Универсальный манипу лятор). Безусловно, эти комбинации клавиш можно переназначить по своему усмот рению. (Подробно об этом речь пойдет в конце данной главы при обсуждении на стройки интерфейса.) Для каждой из осей манипулятор имеет отдельный маркер, выделенный соответст вующим цветом: красный — для оси X, зеленый — для оси Y и синий — для оси Z. Ось го лубого цвета указывает направление свободного перемещения в обоих направлениях те кущей панели представления. Выбранный маркер выделяется желтым цветом. После этого объект можно перемещать (масштабировать, вращать) только по этой оси. Как показано на рис. 1.19, сверху инструмент Move (Перемещение), или просто инст румент перемещения, отображает стрелки, соответствующие осям движения. Чтобы пе реместить выделенный объект только по одной оси, достаточно выбрать соответствую щий ей маркер (линии со стрелками вдоль осей перемещения). Инструмент Rotate (Поворот), или инструмент поворота (см. второе изображение на рис. 1.19), отображает вокруг опорной точки объекта окружности, которые выступают в роли маркеров осей поворота. Чтобы повернуть выбранный объект только по одной оси, следует потянуть один из кругов в соответствующем направлении. Инструмент Scale (Масштаб), или ин струмент масштабирования (см. третье изображение на рис. 1.19), имеет маркеры в виде цветных кубов, перемещение которых позволяет изменить масштаб объекта по соответ ствующей оси масштабирования. Манипулятор Universal Manipulator (Универсальный манипулятор), или универ сальный манипулятор (см. четвертое изображение на рис. 1.19), совмещает возможности всех трех инструментов. Универсальный манипулятор, как и инструмент перемещения, позволяет использовать стрелки для перемещения объектов, изогнутые стрелки на краях манипулятора — для поворота объекта, и, наконец, выделяя и перемещая голубые ребра куба, осуществлять масштабирование. Если удерживать нажатой клавишу , то можно масштабировать объект только в одном направлении. Выбор инструментов с помощью стандартных комбинаций клавиш осуществляется значи тельно быстрее и проще, чем с помощью пиктограмм панели инструментов. Если клавиши не работают, удостоверьтесь, что клавиша не нажата. Все клавиши должны использоваться в нижнем регистре. В интерактивном режиме универсальный манипулятор демонстрирует перемещение, поворот и масштабирование объекта. По мере перемещения объекта отображаются его координаты. Аналогично, при повороте отображается градус угла поворота. И наконец, при масштабировании универсальный манипулятор отображает последнее значение масштаба. Эти четыре инструмента предоставляют два разных способа перемещения, поворота и масштабирования объектов. Следующий инструмент панели инструментов несколько отличается от них. Инструмент Soft Modification (Мягкая модификация) позволяет вы брать область поверхности или модели и откорректировать ее. Степень воздействия по степенно снижается от центра к краям, создавая эффект мягкой модификации. Создайте, например, плоскость NURBS, выбрав в меню Create => N U R B S Primitives => Plane • (Создать => Примитивы NURBS => Плоскость • ) . В открывшемся окне парамет ров для создания плоскости задайте для параметров U Patches (Фрагменты U) и V
54
Глава 1
Patches (Фрагменты V) значение 10 (можно просто переместить ползунки), а затем протащите курсор мыши, чтобы создать плоскость на сетке.
Выберите инструмент Scale (Масштаб) и измените размер плоскости до размера сет ки. Затем в панели инструментов выберите инструмент Soft Modification (Мягкая моди фикация) (кнопка В) и щелкните где-нибудь посередине плоскости. В результате поя вится специальный манипулятор (с символом S), который обеспечит мягкое перемеще ние, поворот и масштабирование выбранной области.
Выберите конический маркер и передвиньте его немного вверх — это приведет к мяг кому подъему выделенной области. Обратите внимание на то, что плоскость приподни мается постепенно, как будто приподняли салфетку.
Кубический маркер инструмента мягкой модификации позволяет изменять размер (масштабировать) выделения, а окружность — вращать его. Чтобы избавиться от мягкой модификации, достаточно выбрать другой инструмент преобразования. Используя пик тограмму в виде буквы S на поверхности, к редактированию выделения можно вернуться в любой момент и даже поставить ключевой кадр при анимации. На поверхности можно создать столько областей мягкого выделения (soft selection), сколько нужно. Чтобы изменить размер маркеров манипулятора (сделать их более заметными или менее навязчивыми), нажмите клавишу со знаком "плюс" < + > (увеличить) или "минус" <-> (уменьшить).
Окно оперативного доступа Окно оперативного доступа (hotbox), показанное на рис. 1.20, предоставляет удобный способ доступа ко всем пунктам меню Maya. Это самый быстрый способ выбора пунктов меню, поскольку не требуется обращаться непосредственно к строке меню. Это особенно полезно, когда для максимального увеличения области сцены на экране отключают стро ку меню и другие элементы пользовательского интерфейса. Чтобы открыть окно опера-
Интерфейс Maya
55
тивного доступа, находясь в панели представления, нажмите клавишу пробела. Затем можете выбирать пункты меню с помощью мыши.
Рис. 1.20. Окно оперативного доступа и его зоны Все пункты меню, доступные в панели главного меню, доступны и в окне оперативно го доступа. Чтобы обеспечить быстрый доступ лишь к тем возможностям, которые ис пользуются чаще всего, можно отображать не все, а только некоторые меню. Окно опера тивного доступа содержит пять отдельных зон, разграниченных короткими черными диагональными линиями: North (Север), East (Восток), W e s t (Запад), South (Юг) и Center (Центр). Чтобы откорректировать окно оперативного доступа по своему усмотре нию, нажмите клавишу пробела и щелкните одновременно на заголовке Hotbox Controls (Элементы управления окна оперативного доступа), расположенном справа от цен тральной зоны. Здесь можно выбрать, какие заголовки меню следует отображать. Выбор окна оперативного доступа и щелчки мышью в его зонах приводят к отобра жению наборов контекстных меню, называемых маркированными контекстными меню, которым посвящен следующий раздел.
Маркированные контекстные меню Кроме обычных меню, в окне оперативного доступа содержатся маркированные контекст (marking menu) в каждой из пяти зон. Применение маркированных контекстных меню отличается от обычных, и они позволяют быстрее обратиться к наиболее популярным средствам. Маркированные контекстные меню подразделяются следующим образом. По мере ознакомления с Maya применение окна оперативного доступа и маркирован ных контекстных меню существенно увеличат производительность. Но новичкам жела тельно начинать с доступа к обычным меню, пиктограммам строки состояния и панели
ные меню
56
Глава 1
инструментов, чтобы не запутаться во всех этих возможностях, когда основное внимание уделено другой теме. Зона
Маркированное контекстное меню
Северная зона
Позволяет выбрать компоновку экрана, подобно кнопкам компоновки панели инструментов
Восточная зона
Переключает видимость элементов пользовательского интерфейса, например строки справки или строки состояния. Сокрытие элементов пользовательского интерфейса позволяет расширить рабочую область на экране
Южная зона
Изменяет представление текущей панели на информационное окно, на пример Outliner (Иерархическая структура) или Hypershade (Гипершейдер)
Западная зона
Применяет маски выделения, как будто используются пиктограммы масок выделения в строке состояния. Избавив от необходимости обращаться к строке состояния, это маркированное контекстное меню позволяет быст рее осуществлять выбор
Центральная зона
Устанавливает в панели представления любой тип представления сцены
Наборы меню
Рис. 1.21. Рас крывающийся список набо ров меню
Как уже упоминалось, наборы меню (menu set) организованы согласно назначению. К наборам меню относятся Animation (Анимация), Polygons (Многоугольники), Surfaces (Поверхности), Dynamics (Динамика) и Rendering (Визуализация), которые доступны в Maya версии Complete и Unlimited. В Maya Unlimited доступны также наборы меню Classic Cloth (Классическая ткань), nCloth и Maya Live. Каждый набор меню предос тавляет доступ к обширным коллекциям соответствующих функцио нальных возможностей. Например, расположенный в главном меню на бор Polygons (Многоугольники) содержит все заголовки меню, которые применяются при полигональном моделировании. Наборы меню в раскрывающемся списке строки состояния представлены на рис. 1.21. Самый простой способ переключения между наборами ме ню — это использование стандартных клавиш, описанных ниже.
Клавиша
Назначение
< F2 >
Набор меню Animation (Анимация)
< F3 >
Набор меню Polygons (Многоугольники)
< F4>
Набор меню Surfaces (Поверхности)
< F5 >
Набор меню Dynamics (Динамика)
< F6 >
Набор меню Rendering (Визуализация)
Настройка наборов меню Нововведением Maya 8 является возможность настройки наборов меню. Для этого достаточно открыть редактор наборов меню ( M e n u Set Editor) и выбрать в раскрывающемся списке пункт Customize (Настроить). Редактор наборов ме-
57
Интерфейс Maya
ню (рис. 1.22) позволяет изменять существующие наборы меню и создавать новые. Что бы создать собственный набор меню, щелкните на кнопке New Menu Set (Новый набор меню) и введите имя нового набора. Чтобы добавить в набор меню, выделите справа не обходимые доступные меню, щелкните правой кнопкой мыши и появившемся контекст ном меню выберите пункт A d d to Menu Set (Добавить в набор меню).
Рис. 1.22. Можно создать собст венный набор меню или отредак тировать уже существующий На этом заканчиваем описание интерактивной части пользовательского интерфейса Maya. На первый взгляд может показаться, что здесь приведено слишком много инфор мации, однако начав применение Maya, вы быстро измените свое мнение. В принципе сейчас можно перейти к следующей главе, чтобы начать работу над простой сценой в Maya и закрепить полученные знания на практике, а затем вернуться и продолжить рас смотрение окон, используемых в Maya чаще всего.
Основные окна Maya Maya имеет несколько ключевых окон, в которых осуществляется основная часть ра бот. В этом разделе описано расположение и назначение каждого окна, а также способы их применения.
Окно редактора атрибутов Как уже упоминалось, каждый объект в некоторой степени определен набором атри бутов, которыми обладают его узлы. Некоторые из этих атрибутов можно редактировать в панели каналов, но, чтобы увидеть все атрибуты, доступные для выбранного объекта, необходим редактор атрибутов (Attribute Editor), окно которого является, вероятно, наиболее важным в Maya. С помощью этого окна можно изменять значения атрибутов объекта, устанавливать ключевые кадры, организовывать связи с другими атрибутами, применять выражения или просматривать значения атрибутов. Давайте создадим в Maya объект. Чтобы поместить на сцену сферу NURBS, выберите пункт меню Create => N U R B S Primitives => Sphere • (Создать => Примитивы NURBS => Сфера •) и щелкните в любом виде сцены. Пока сфера выделена, откройте редактор атрибутов, выбрав пункт меню W i n d o w => Attribute Editor (Окно => Редактор атрибутов) или нажав стандартную комбина цию клавиш . Теперь в окне Channel Box (Панель каналов) отображаются наиболее популярные атрибуты сферы, а в окне Attribute Editor (Редактор атрибутов) — весь набор атрибутов. Сфера и ее атрибуты представлены на рис. 1.23. Панель каналов и редактор атрибутов
58
Глава 1
содержат значения тех же атрибутов. Если переместить сферу, то значения соответст вующих атрибутов изменятся в обоих окнах.
Рис. 1.23. Значения атрибутов выделенной сферы в окнах Attribute Editor и Channel Box
Связанные узлы Обратите внимание на вкладки, расположенные в верхней части редактора атрибутов. Эти вкладки соответствуют структуре узла объекта. Каждая вкладка отображает часть атрибутов другой вкладки, некоторым образом связанных со сферой, выбранной в настоящий момент. Таким образом, можно откорректировать любой из параметров любого узла, который связан с выбранным объектом, — достаточно лишь перейти на его вкладку в редакторе атрибутов. На пример, если перейти на вкладку nurbsSpherel, то можно будет просмотреть атрибуты узла DAG (DAG node). Узел DAG — это узел положения или трансформации объекта, который за дает положение объекта, угол его поворота и масштаб. Чтобы просмотреть узел формы (shape node) сферы, перейдите на вкладку nurbsSphereShape1. Узел формы содержит атрибуты, ко торые определяют форму объекта. Чтобы получить доступ к узлу создания (creation node) сферы, перейдите на вкладку makeNurbsSpherel. Узел создания отображает атрибуты, задающие способ создания объекта. Попробуйте, например, изменить значение атрибута Start Sweep (Начало перемещения). Это изменит величину хода образующей сферы, вырезав из нее таким образом кусок, подобно инст рументу вырезания (полость окрашена оранжевым цветом), как показано на рисунке, приведенном ниже.
Интерфейс Maya
59
Но важнее всего то, что практически каждый из атрибутов любого из этих узлов (вкладки редактора атрибутов) может участвовать в анимации. Для этого необходимо лишь щелкнуть правой кнопкой мыши на атрибуте в редакторе атрибутов и выбрать в появившемся контекстном меню пункт Set Key (Установить ключевой кадр). В резуль тате на текущем кадре для этого атрибута будет установлен ключевой кадр (то же самое можно сделать в панели каналов). Е С Л И В редакторе атрибутов сфера не имеет вкладки makeNurbsSpherel, удостоверьтесь, что в строке состояния нажата кнопка Construction History (История создания). Иначе сфера окажется создана без истории, а ее узел создания будет удален сразу после завершения создания.
Примечания Внизу редактора атрибутов находится область Notes (Примечания), в которой можно вводить и сохранять комментарии. Чтобы увеличить или уменьшить область примеча ний, переместите разделитель панели, как показано на приведенном ниже рисунке. Эта область очень удобна для записей о том, как именно что-то было сделано, а также для секретных заметок по поводу шефа студии.
Множественное выделение Редактор атрибутов позволяет отображать атрибуты только одного объекта. Если вы делено несколько объектов, их можно переключать в редакторе атрибутов с помощью меню Selected (Выбрано), выбрав в нем соответствующий объект.
Иерархическая структура Окна Outliner (Иерархическая структура) и Hypergraph (Гиперграф), рассматриваемые далее, являются двумя разными решениями одной задачи: организации. В основе Maya ле жит структура узлов, т.е. каждый объект в Maya представлен узлами. Узел (node) — это коллекция атрибутов, которые определяют внешний вид объекта (не будем пока вдаваться в подробности). Чтобы сформировать более сложные объекты или предоставить лучший контроль над их формой или поведением, некоторые узлы объединяют. По мере усложнения сцены создается все больше узлов, поэтому необходим способ организации этих объектов. Кроме того, объекты можно группировать и помещать в ие рархии. Создавая группы (group), можно управлять объектами как единым блоком, все члены которого перемещаются, вращаются и масштабируются как один объект. Кроме того, подчинение (parenting) позволяет сделать один объект (дочерний (child)) зависи мым от другого объекта (родительского (parent)), чтобы управлять объектами вместе.
60
Глава 1
В иерархии с отношениями родительский-дочерний дочерний объект может двигать ся независимо от родительского, а может наследовать движения родителя. Дочерний узел наследует преобразования (движения) всех родительских узлов выше него и пере мещается (вращается, масштабируется) по мере перемещения родителя. Однако он мо жет совершать и собственные движения. Рассмотрим шарик, подпрыгивающий на те лежке. Тележка катится, а шарик подпрыгивает на ее поверхности. Шарик является до черним объектом тележки и перемещается вместе с ней, но он имеет и собственное движение относительно тележки, ведь он подпрыгивает вверх и падает вниз. Правильное создание иерархии — это основа анимации в Maya, которой и посвящена данная книга. Оба окна отображают объекты на сцене и позволяют создавать их иерархию (или группы), а также отслеживать связи между атрибутами. Окно Outliner (Иерархическая структура) отображает объекты сцены как иерархическую структуру, а окно Hypergraph (Гиперграф) использует компоновку в виде блок-схем, что обеспечивает более точное управление. Чтобы открыть окно иерархической структуры, выберите пункт меню W i n d o w • Outliner (Окно • Иерархическая структура). Окно Outliner (Иерархическая структура) отображает объекты сцены как иерархиче скую структуру (рис. 1.24). Здесь можно одним щелчком выбрать любой объект.
Рис. 1.24. Иерархи ческая структура Для реорганизации объект следует перетащить на новое место средней кнопкой мы ши. По умолчанию объекты перечислены в порядке создания. Управлять объектами сце ны совсем не сложно. •
Чтобы выбрать объект на сцене, выделите его в иерархической структуре.
•
Чтобы переименовать узел, дважды щелкните на его имени в иерархической струк туре и введите новое имя.
•
Чтобы переместить элемент объекта в иерархической структуре на другое место, пе ретащите его, удерживая среднюю кнопку мыши, так, чтобы он оказался между дву мя другими элементами.
61
Интерфейс Maya •
Чтобы подчинить один объект другому, перетащите его, удерживая среднюю кнопку мыши, на узел нового родителя.
•
Чтобы исключить объект из группы, перетащите его, удерживая среднюю кнопку мыши, в другое место иерархической структуры.
Иерархическую структуру можно разделить на два независимых представления, что весьма полезно для больших сцен с длинным списком узлов. Щелкните на разделителе панелей, который находится в нижней части окна Outliner (Иерархическая структура), перемещая его вверх и вниз, выберите соотношение окон иерархического представления. Это также удобно тогда, когда необходимо подчинить узел, расположенный внизу спи ска, узлу, расположенному в верхней части списка.
Гиперграф Гиперграф (hypergraph), представленный на рис. 1.25, использует для отображения всех объектов сцены блок-схему (flowchart) или графическое представление (graph view). Гиперграф более подробно представляет узлы и их связи друг с другом. Точно так же как в иерархической структуре, перетащив узел средней кнопкой мыши, вы можете легко подчинять объекты друг другу. Поскольку на сцене может быть несколько объектов (в действительности их бывают сотни и даже больше), необходим способ навигации в гиперграфе. Перемещение в гиперграфе осуществляется, как и в любой панели модели рования: с использованием клавиши и комбинаций кнопок мыши, включая отсле живание и изменение масштаба изображения. Чтобы открыть гиперграф выберите пункт меню W i n d o w => Hypergraph: Hierarchy (Окно => Гиперграф => Иерархия) или Hypergraph => Connections (Гиперграф => Соединения).
Рис. 1.25. Гиперграф отображает объекты в виде блок-схемы
Глава 1
Связи и гиперграф Хотя это и не очевидно при первом открытии окна гиперграфа, но возможность гра фически редактировать связи атрибутов между узлами весьма удобна при установке не которых довольно сложных отношений. Расположите на сцене рядом сферу и конус NURBS, а затем откройте окно гиперграфа. На рис. 1.26 представлена простая сцена в представлении основных узлов (main node view) гиперграфа. Гиперграф демонстрирует узлы четырех панелей представления (перспективы, вида сверху, вида спереди и вида сбоку), а также сферы NURBS (nurbsSpherel) и конуса NURBS (nurbsConel). Выберите их обоих в гиперграфе, а затем щелкните на пиктограмме Input A n d Output Selections (Выделение входящих и ис ходящих), которая показана на рис. 1.25. Появившееся представление связей (connections view) отображает все узлы, которые взаимодействуют с выделенным узлом (узлами). В данном случае, как показано на рис. 1.27, отображаются узлы DAG текущих объектов (nurbsSpherel
и
nurbsConel),
их
узлы
формы
(nurbsSphereShapel
и
NurbsConeShapel), узлы создания (makeNurbsSpherel и makeNurbsConel), а также стандартный серый тонер (initialShadingGroup). Более подробная информация о иерархиях приведена в главе 2, "Быстрое начало: создание анимации в Maya 8.5".
Рис. 1.26. Сцена в окне гиперграфа
Рис. 1.27. Гиперграф позволяет детально отображать и редактировать связи Линии, соединяющие узлы, соответствуют связям, а стрелки указывают на подчинен ность одного узла другому. В данном случае узлы создания подчинены узлам формы. Узлы DAG отображаются слева отдельно. В примере на рис. 1.27 узел nurbsConel свя зан с узлом nurbsSpherel. Эта линия отображает связь, которая была создана для обеспечения их совместного поворота. Более подробная информация по этой теме при ведена в главе 8, "Постановка и оснащение персонажа". Но, поскольку работа гиперграфа рассматривается в данной главе, создайте эту связь самостоятельно (см. рис. 1.27).
Интерфейс Maya
63
Если в этом представлении соединений перетащить средней кнопкой мыши один узел поверх другого, то Maya предоставит доступ к атрибутам связи между этими узлами. Перемещаемый узел соединится с узлом, на который он был перемещен. В данном случае с помощью средней кнопки мыши следует перетащить узел nurbsSpherel на узел n u r b s C o n e l . В результате появится контекстное меню, по казанное на рис. 1.28.
Рис. 128. Атрибуты свя зи в гиперграфе Чтобы открыть новое окно, называемое редактором соединений (Connection Editor), выберите пункт меню Other (Другое), как показано на рисунке, приведенном ниже. Про крутите окно редактора соединений вниз и выберите в обеих панелях канал Rotate.
В результате между каналами поворота сферы и конуса будет установлена связь. Вы берите конус в перспективном представлении и поверните его. Как можно заметить, сфе ра тоже вращается. Чтобы просмотреть атрибуты связи, переместите в гиперграфе кур сор мыши поверх любой из соединительных линий, как показано ниже.
Цвет линий связи также содержит информацию. Зеленая линия, как в данном приме ре, обозначает векторную связь. Векторная связь (vector connection) — это связь между такими тремя атрибутами (или каналами), как rotateX, rotateY и rotateZ. Одноканальная связь обозначается синей линией. Обратите внимание на то, что сферу теперь больше невозможно вращать непосредст венно, попробуйте выбрать сферу на сцене и повернуть ее. Поворот сферы блокирует ко нус. Но их можно разъединить либо с помощью панели каналов (щелкните правой кноп кой мыши на атрибуте в панели каналов и в появившемся контекстном меню выберите
64
Глава 1
пункт Break Connection (Разорвать с в я з ь ) , либо гиперграфа. Чтобы отключить связь в гиперграфе, щелкните на зеленой соединительной линии и нажмите клавишу . Чтобы просмотреть дополнительные связи между узлами, такие как выражения и деформаторы, выберите пункт меню Options => Display (Параметры => Представление), а за тем тип связи для просмотра. К обычному виду просмотра узлов в гиперграфе можно вернуться в любой момент, щелкнув на пиктограмме Scene Hierarchy (Иерархия сцены).
Изменение компоновки Используя описанные ранее в этой главе пиктограммы, расположенные в верхней части окна (см. рис. 1.25), можно быстро изменять представление гиперграфа. Например, если после выделения объекта в панели перспективного представления не удается найти его в представлении гиперграфа, щелкните на пиктограмме Frame Selection (Показать выбранное). Если вам больше нравится вертикальная компоновка окна, как в иерархиче ской структуре (рис. 1.29), выберите в меню гиперграфа пункт Options => Orientation => Vertical (Параметры => Ориентация => Вертикально).
Рис. 1.29. Вертикальная компоновка гиперграфа По умолчанию узлы в гиперграфе выстроены в линию. Если необходимо располо жить их на поверхности произвольно, перемещайте их по своему усмотрению, щелкая на кнопке Toggle Freeform/Automatic Layout Modes (Переключатель режимов компоновки произвольный/автоматический), как показано на рис. 1.25. В произвольном режиме для гиперграфа можно также импортировать фоновый рисунок, чтобы размещать узлы на элементах изображения. Для этого выберите пункт меню View => Show Background Image (Вид => Показать фоновое изображение), а затем загрузите изображение, выбрав пункт меню View => Set Background Image (Вид => Установить фоновое изображение). Это очень удобно при создании оснасток персонажей, поскольку позволяет расположить узлы по верх соответствующих частей тела (так и создавать проще, и выбирать быстрее).
Закладки Еще одним очень удобным средством гиперграфа являются закладки (bookmark). Выделив группу узлов в окне, ее можно отметить закладкой и впоследствии быстро вер нуться к ней. Чтобы создать закладку в представлении гиперграфа, выберите пункт меню Bookmarks => Create Bookmark (Закладки => Создать закладку) или щелкните на пикто грамме Create Bookmark (Создать закладку) (см. рис. 1.25). Теперь с помощью меню Bookmarks (Закладки) к этой группе можно обратиться в любой момент.
65
Интерфейс Maya
Глубина представления Д Л Я облегчения организации сложных иерархий соединений при просмот ре в гиперграфе входящих и исходящих соединений можно задать глубину представления (traversal depth). Установить глубину можно, используя пиктограммы и текстовые поля в панели инструментов (рис. 1 . 3 0 ) . По умолчанию для глубины установ лено значение - 1 , соответствующее бесконечности. Чем ниже значение глубины пред ставления, тем короче отображение иерархии.
Рис. 1.30. Глубина представления сокращает ото бражаемую иерархию соединений
Контейнеры Нововведением Maya 8.5 являются контейнеры, которые обеспечивают группировку узлов внутри схемы зависимостей и позволяют таким обра зом упростить организацию узлов. Узлы, представляющие собой контейнеры, отличают ся от других узлов более толстым контуром, как показано на рис. 1 . 3 1 .
Рис. 1.31. Контейнеры позволяют груп пировать в гиперграфе подобные узлы без изменения их входящих и исходящих , соединений Чтобы создать контейнер, выделите в гиперграфе узлы, подлежащие группировке, а затем выберите пункт меню Edit => Create Container (Правка => Создать контейнер). Чтобы просмотреть содержимое контейнера, дважды щелкните на его узле. Чтобы добавить узел в контейнер, перетащите его поверх узла контейнера, нажав комбинацию клавиш . Аналогично, чтобы удалить узел из контейнера, перетащите его за пределы i
66
Глава 1
контейнера, нажав комбинацию клавиш . Узлы внутри контейнера не изме няют своей иерархии или соединений — они действуют как организационная группа.
Редактор связей Редактор связей (Connection Editor), доступный после выбора пункта меню W i n d o w => General Editors => Connection Editor (Окно => Общие редакторы => Редактор свя зей), можно использовать для создания связей между атрибутами любых двух объектов (рис. 1.32), подобно обсуждавшемуся ранее гиперграфу. В данном примере рассматрива ется связь между поворотом сферы и конуса. Но поскольку эта связь чересчур простая, рассмотрим более сложный пример. Попробуем, например, сделать так, чтобы высота куба (ось Y) управляла объемом красной составляющей в цвете сферы. Сложные прие мы анимации рассматриваются в главе 8, "Постановка и оснащение персонажа", когда речь пойдет об оснастке сцены при подготовке к анимации.
Рис. 1.32. Редактор связей
Создание и редактирование связей Редактор связей имеет две вертикальные панели, каждая из которых представляет один из двух связываемых объектов. Выделив объект и щелкнув на кнопке Left Reload (Перезагрузить левую), в левую панель редактора связи можно загрузить все атрибуты выбранного объекта. Выделив второй объект и щелкнув на кнопке Reload Right (Перезагрузить правую), в правую панель можно загрузить атрибуты второго объекта. Как уже было продемонстрировано ранее, щелкая на атрибутах в обоих столбцах, можно создавать прямые связи между атрибутами двух объектов. Если необходимо отредактировать связи, уже установленные между атрибутами или каналами, щелкните на атрибуте одного из объектов, чтобы отобразить канал другого объ екта, с которым он связан. При выборе атрибута объекта в одной из панелей Maya сама вы делит связанный канал в другой панели. Чтобы отключать связь с помощью редактора свя зей, щелкните на канале, а затем на выделенном канале (каналах) другого объекта. Связи — это краеугольный камень анимации, поэтому в Maya им уделяется много внимания. Чтобы обеспечить возможность создания очень сложной, взаимосвязанной анимации, Maya позволяет устанавливать любые виды отношений между любыми атри бутами почти всех объектов.
67
Интерфейс Maya
Фильтрация представления связей Поскольку даже два объекта имеют очень много атрибутов, а связей между ними мо жет быть установлено еще больше, редактор связей позволяет отфильтровывать их по типу, скрывая или отображая некоторые атрибуты. Обратиться к фильтрам представле ния можно из меню окна. Чтобы переключить отображаемые связи, используйте меню панелей Left Display (Левое представление) или Right Display (Правое представление). Фильтр каналов
Описание
Readable (Читаемые)
Отображает все атрибуты объекта, независимо от того, допус кают они установку ключевых кадров или нет
Outputs Only (Только исходящие)
Отображает только те атрибуты, которые могут быть источни ком связи с другими узлами
Inputs Only (Только входящие)
Отображает атрибуты, которые могут быть связанными
Non-Keyable (Не до пускающие установку ключевых кадров)
Отображает атрибуты, которые не допускающие установку клю чевых кадров
Connected Only (Только соединенные)
Отображает атрибуты, которые уже имеют связи
Hidden (Скрытые)
Отображает скрытые атрибуты выделенного узла
Окно Multilister Подобно тому как окна Outliner (Иерархическая структура) и Hypergraph (Гиперграф) содержат перечень объектов на сцене, окна Multilister и Hypershade (Гипершейдер) (последнее описано в следующий разделе) содержат перечни узлов сцены, подлежащих визуализации, включая текстуры, источники света, камеры и т.д. В терминологии Maya наложение текстур на объекты называется шейдингом (shading) или тонированием (в Lightwave это называется обработкой поверхности (surfacing)). Также, подобно окнам Outliner (Иерархическая структура) и Hypergraph (Гиперграф), эти окна по-разному представляют тонеры (shader) или тонеры сцены, что позволяет выбрать наилучший способ доступа к ним в процессе разработки. Небольшой пример тонирования будет приведен в следующей главе. Окно Multilister, доступное после выбора пункта меню Window => Rendering Editors => Multilister (Окно=>Редакторы визуализации =>Multilister), содержит не только тонеры, но и источники света, камеры и текстуры тонеров (рис. 1.33). Все тонеры сцены отображаются на соответствующих вкладках и представляются в виде именованных ми ниатюр (thumbnail). Двойной щелчок на любой из подписей под миниатюрами позволяет изменить имя тонера или визуализировать узел. Щелчок на самих миниатюрах позволяет выбрать то нер для применения, а двойной щелчок на миниатюре (но не на ее имени) открывает для него редактор атрибутов. Окно Multilister состоит в двух панелей, которые позволяют выбрать тип отображае мого узла тонирования или визуализации. По умолчанию верхняя панель отображает на вкладке General (Общие) все тонеры сцены, а также материалы, источники света и каме ры в соответствующих им вкладках (Materials, Lights и Cameras). Нижняя панель обыч-
68
Глава 1
но используется для отображения узлов текстур, которые уже используются или только связаны с тонерами. Миниатюры тонеров
Вкладки Группа тонеров Инструмент выбора Блокировать/Разблокировать внешний вид новых узлов Параметры _ представления
Размер
миниатюра
Рис. 1.33. Окно Multilister Чтобы отфильтровать только те узлы, которые необходимы для работы, вкладки можно добавлять и редактировать. Для этого следует выбрать пункт меню Display => Tabs (Представление => Вкладки). Здесь, используя пункт меню Create Filtered (Создать от фильтрованное), можно создавать новые вкладки со специальными фильтрами. Большинство возможностей, доступных в системе меню, доступно также и в контек стных меню, появляющихся после щелчка правой кнопкой мыши в панелях Multilister. Чтобы применить тонер, например, выберите объект, щелкните на необходимом тонере, чтобы выбрать его, а затем щелкните правой кнопкой мыши и выберите в появившемся контекстном меню пункты Edit => Assign (Правка => Применить). Щелкая на пиктограммах представления, можно настроить вид окна Multilister, изме нив, например, размер миниатюр (см. рис. 1.33). В правом нижнем углу каждая миниа тюра имеет маленькую стрелку, после щелчка на которой развернется сеть узлов связи этого тонера, если к нему присоединены текстуры или изображения. Окно Multilister незаменимо для быстрого управления и применения тонеров, однако ему недостает мощности гипершейдера, позволяющего управлять всей сетью (network) тонера, когда необходимо устанавливать и редактировать связи.
Гипершейдер Гипершейдер (hypershade), доступный после выбора пункта меню W i n d o w => Rendering Editors => Hypershade (Окно => Редакторы визуализации => Гипершейдер), отображает то неры и текстуры текущей сцены в виде графической блок-схемы (рис. 1.34), подобно ок-
69
Интерфейс Maya
ну Hypergraph (Гиперграф). Связывая и отключая атрибуты узлов визуализации, в гипершейдере можно создавать сети тонеров любой сложности. Окно Hypershade (Гипершейдер) имеет три основные области: панель создания и хранения, представление узлов визуализации и рабочую область. Три пиктограммы в верхней правой части окна позволяют переключать представление. Показывать вкладки только нижней части Показывать вкладки верхней и нижней части
Показывать вкладки только верхней части
Показывать как пиктограммы Показывать как список Размер пиктограмм Сортировка по имени Сортировка — по типу Сортировка — по времени Сортировка в обратном порядке
Рис. 1.34. Гипершейдер
Панель создания и удаления Панель Create/Bins (Создать/Буферы) расположена слева и разделена на две вклад ки: Create (Создать) и Bins (Буферы). Вкладка Create (Создать) содержит пиктограм мы, которые позволяют создавать из таких материалов, как Lambert и Blinn, узлы визуа лизации для процедурного текстурирования (procedural texture), например фракталь ный шум (fractal noise) или градиент (ramp). Чтобы создать узел, щелкните на его пиктограмме в панели Create (Создать), и он появится в представлении узлов и рабочей
70
Глава 1
области, готовый для немедленного редактирования. Пиктограммы панели Create (Создать) отсортированы по типам узлов визуализации — от поверхностных до вспомо гательных узлов. Более подробная информация об этих узлах и способах их редактиро вания приведена в главе 12, "Тонирование и текстурирование при анимации". Панель в верхней части окна позволяет выбрать вид создаваемого узла. Здесь можно переключаться между узлами тонирования Maya и узлами mental ray. Хотя система mental ray и является полностью интегрированной, перед выбором ее параметров в этой панели следует удостовериться, что система mental ray загружена и установлена. Более подробно дополнения рассматриваются далее, в разделе "Настройка интерфейса". Вкладка Bins (Буферы) позволяет хранить наборы тонеров в буферах (bin), что улучшает управляемость ими, особенно в сложных сценах. Пиктограммы в верхней час ти вкладки Bins (Буферы) позволяют организовать тонеры. Если навести курсор мыши на пиктограмму, то Maya выведет подсказку, содержащую ее описание.
Область представления узлов визуализации Созданные узлы визуализации появляются в области представления миниатюр. Щелчок на миниатюре позволит выбрать этот узел визуализации для применения, а двойной щелчок откроет его в редакторе атрибутов. Если необходимо отредактировать сеть тонера, перетащите средней кнопкой мыши его миниатюру ниже, в рабочую область. Навигация в этой области гипершейдера аналогична навигации в рабочей области гипер графа, а в рабочих окнах применимы стандартные приемы с использованием клавиши и кнопок мыши. При увеличении гипершейдер переходит с уровня на уровень, в отличие от плавного увеличения в рабочих панелях, хотя для этого тоже используется комбинация клавиши и правой кнопки мыши. Несмотря на то что в этом окне нельзя свободно "парить", комбинацию клавиши и средней кнопки мыши можно использовать для прокрутки вверх и вниз, когда тонеров достаточно много, чтобы запол нить панель. Нижняя часть панели, рабочая область, работает при навигации аналогично обычной панели представления, поддерживает панорамирование и плавное увеличение.
Рабочая область Рабочая область (work area) — это поверхность рабочего пространства, где, устанав ливая соединения между атрибутами узлов визуализации, создают сети тонирования (shading network) для сцены. Здесь создавать и редактировать сложные тонеры проще все го, поскольку блок-схема сети в этом окне представлена просто и ясно, очень похоже на уз лы объектов в представлении гиперграфа. Чтобы перевести узел тонирования в рабочую область, перетащите его из панели отображения вниз, нажав среднюю кнопку мыши. Наиболее эффективный способ работы с тонерами заключается в исполь зовании маркированных контекстных меню в панелях окна гипершейдера. Щелчок правой кнопкой мыши на пиктограмме тонера открывает маркированное кон текстное меню, которое позволяет применить тонер к текущему выбранному объекту, выбрать объекты, к которым этот тонер уже применен, или обратиться к его сети. Сеть тонера обеспечивает подробное графическое представление связей. Кроме того, подобно гиперграфу, Maya 8.5 предоставляет в рабочей области контейнеры, облегчая таким об разом группировку узлов. Более подробная информация по этой теме приведена в разде ле, посвященном гиперграфу. Возможность графического редактирования связей между узлами тонирования представлена на рис. 1.35.
71
Интерфейс Maya
Рис. 1.35. Вид сети узлов ви зуализации обеспечивает воз можность редактирования их связей Как и в гиперграфе, описанном выше, цвет стрелок и линий, обозначающих связи между узлами, имеет смысловое значение. В данном примере материал Phong имеет вхо дящие связи с узлами фрактала, градиента и картой выдавливания.
Использование гипершейдера Откройте гипершейдер и создайте тонер Phong, щелкнув на пиктограмме Phong (Фонг) в панели Create Maya Nodes (Создать узлы Maya). Чтобы открыть редактор атрибутов, дважды щелкните на пиктограмме Phong (Фонг). Щелкнув на образце цвета (color swatch) рядом с атрибутом Color или любым другим атрибутом тонера, можно изменить цвет ма териала (рис. 1.36). Чтобы применить к цвету или другому атрибуту текстуру (например, процедурную текстуру, которая полностью создается в Maya) или файл изображения, щелкните в редакторе атрибутов на пиктограмме карты (пестрая кнопка) справа от этого атрибута. В данном случае щелкните на пиктограмме карты рядом с атрибутом Color, что бы открыть окно Create Maya Nodes (Создать узлы Maya), как показано на рис. 1.37. Что бы создать для цвета текущего материала Phong узел градиента, щелкните на пиктограмме Ramp (Градиент). Если теперь открыть редактор атрибутов, то можно заметить зеленую линию, соединяющую узел нового градиента с материалом Phong. Как и в гиперграфе, чтобы просмотреть атрибуты связи, здесь можно наводить курсор мыши на соединительные линии. Чтобы отключить эти связи, выберите их линии и на жмите клавишу .
Редактор анимационных кривых Редактор анимационных кривых (graph editor) Maya, доступный после выбора пункта меню W i n d o w => Animation Editors => Graph Editor (Окно => Редакторы анимации => Редактор анимационных кривых), — мощнейший инструмент аниматора (рис. 1.38). Поскольку в цифровой форме данные трехмерных объектов хранятся в формате век торной графики, каждое получаемое в Maya движение создает изменяющуюся во време ни анимационную кривую (graph). Редактор анимационных кривых обеспечивает прямой доступ к этим кривым, созданным в ходе анимацией, позволяя корректировать, редакти ровать и даже создавать движения.
Глава 1
72
Рис. 1.36. Тонер Phong
Рис. 1.37. Окно Create Render Node
Интерфейс Maya
73
кривые красного, зеленого и синего цвета для осей X, Y и Z соответственно. Выделяя объ екты или каналы объекта в списке, можно просматривать в виде справа только его кривые. Анимационные кривые, отображаемые редактором анимационных кривых, являются графическим представлением изменения значения во времени, причем время отмечается по горизонтали, а значение — по вертикали. Ключевые кадры на кривых представлены в виде точек, которые можно перемещать, корректируя хронометраж и/или значение. Соб ственно на это аниматоры и тратят большую часть своего времени. Чтобы переместить ключевой кадр в редакторе анимационных кривых, щелкните на нем (или обведите несколько), а затем перетащите их, удерживая нажатой среднюю кнопку мыши, на новое место. Аналогично можно выбрать всю кривую или несколько кривых и переместить их с помощью средней кнопки мыши. Используя пиктограммы, представленные на рис. 1.38, ключевые кадры можно привязывать к определенным це лым числам по времени или значению. Это позволяет привязывать ключевые кадры к целочисленным номерам кадров. Навигация в редакторе анимационных кривых осуществляется как и везде: с помо щью комбинации клавиши и кнопок мыши. Это окно допускает увеличение () и панорамирование (). С помощью кнопок Normalize (Нормализовать) и Denormalize (Отменить нормали зацию) можно корректировать представление в редакторе анимационных кривых. Пред положим, например, что существует кривая перемещения По оси X со значениями, изме няющимися от 1 до 3 ° (по вертикали), и кривая поворота по оси Y со значениями от 1 до 360° (тоже по вертикали). Подробный просмотр в редакторе анимационных кривых од новременно обеих кривых крайне затруднен из-за слишком большой разницы их значе ний (чтобы увидеть значение 360°, придется очень долго прокручивать окно вверх). На рис. 1.39 представлен похожий случай, когда значения кривых существенно различают ся. На рис. 1.40 вид кривых нормализован так, чтобы полный диапазон изменения значе ний между -1 и 1 соответствовал в редакторе другой кривой, — это позволяет сравнивать кривые с очень разными диапазонами значений. Чтобы нормализовать вид, щелкните на пиктограмме Normalize (Нормализовать), показанной на рис. 1.38, а чтобы вернуться к обычному представлению, щелкните на кнопке Denormalize (Отменить нормализацию).
Рис. 1.39. Различия в диапазонах значений могут существенно затруднить сравнение анимационных кривых Имейте в виду, что нормализация не изменяет анимацию на сцене. Она позволяет лишь просматривать кривые так, чтобы их изменения относительно друг друга были за метнее. Нормализация вида особенно полезна при работе со сложными сценами, когда необходимо корректировать малейшие нюансы значений при согласовании с нескольки ми кривыми, диапазон значений которых существенно различается.
74
Глава 1
Практический пример работы с редактором анимационных кривых приведен в гла ве 7, "Основы анимации".
Рис. 1.40. Нормализация вида значительно упрощает сравнение при хронометраже
Редактор сценариев Чтобы обратиться к редактору сценариев (Script Editor), показанному на рис. 1.41, щелкните на пиктограмме в правом нижнем углу экрана, в конце командной строки, или выберите пункт меню Window=>General Editors => Script Editor (Окно => Общие редакто ры => Редактор сценариев). Поскольку практически все действия в Maya основаны на вы полнении тех или иных команд языка MEL, любое из них можно осуществить про граммно, с помощью непосредственного выполнения команд и сценариев MEL, либо присвоив значение аргументам MEL. Все это, а также история выполненных команд дос тупны в редакторе сценариев.
Рис. 1.41. Редактор сценариев Это окно можно использовать в том случае, когда необходимо обратиться к команде или аргументу, использованным ранее, либо когда необходимо прочитать слишком длинный комментарий, который не помещается полностью в строке справки. Безусловно, это окно используется также для создания сценариев (script) или макрокоманд (macros) MEL, выполняющих составные операторы. Если необходимо создать специальную процедуру, то ее код можно скопировать и вставить в этом окне, чтобы сформировать макро команду. Фактически редактор сценариев — это слишком обширная и сложная тема, чтобы рассматривать ее в одном разделе первой главы. Читая строку ответа и информацию о выпол ненных командах MEL, появляющуюся после щелчков на разных кнопках, можно узнать
75
Интерфейс Maya
много интересного о работе MEL. Maya 8.5 поддерживает команды языка Python. Более под робная информация о поддержке команд Python и других новых возможностях редактора сценариев приведена в главе 16, "Встроенный язык Maya (MEL)". Окно разделено на две половины. Верхняя половина редактора сценариев — это ис тория ответов (feedback history), а нижняя — это командная строка (command line), в которой можно вводить новые команды MEL. Выделяя код в верхнем окне, можно ко пировать и вставлять команды в командную строку. Получив набор команд, способный работать автоматически, можно добавить его на панель, выделив текст и выбрав пункт меню File => Save Script То Shelf (Файл => Сохранить сценарий на панели). Окно редактора сценариев можно использовать также для чтения сообщений об ошибках, которые слишком длинны для того, чтобы просмотреть их полностью в поле обратной связи. Если появляются сообщения об ошибках или что-то идет не так, как на до, откройте редактор сценариев и попытайтесь выяснить причину ошибок.
Настройка интерфейса В описании аспектов работы в Maya одни инструменты упоминаются чаще других. Кроме того, практически все действия в Maya можно осуществить несколькими способами, во всяком случае, для доступа к инструментальным средствам существуют два способа. Большинство команд и инструментов Maya доступны по крайней мере в двух местах. На первый взгляд это может показаться странным, но впоследствии понятным, что это очень удобно. Кроме того, это обеспечивает высокую гибкость в индивидуальной на стройке рабочей среды и обеспечении удобства в работе с Maya. Освоившись с инструментами Maya и научившись работать с ними, вероятнее всего, захо чется приспособить их и другие методы пользовательского интерфейса в соответствии с зада чами процесса разработки и собственными предпочтениями. К этому разделу, вероятно, при дется вернуться, когда возникнет необходимость осуществить серьезную настройку.
Предпочтения пользователя Для настройки интерфейса Maya применяется окно Preferences (Предпочтения), доступное при выборе пункта меню Settings/Preferences (Параметры/Предпочтения), как показано на рис. 1.42.
Рис. 1.42. Окно предпочтений Окно Preferences (Предпочтения) разделено на категории, которые определяют ас пекты программы.
76 •
Глава 1 Разделы категории Interface (Интерфейс) позволяют изменить основные аспекты пользовательского интерфейса. • Раздел Ul Elements (Элементы пользовательского интерфейса) позволяет изме нить параметры представления элементов пользовательского интерфейса. Как уже было продемонстрировано в этой главе, к этим параметрам можно также об ратиться и с помощью маркированных контекстных меню. • Раздел Help (Справка) позволяет отменить всплывающую подсказку, появляю щуюся при наведении курсора мыши на пиктограммы или кнопки, а также способ просмотра документации Maya (она поставляется в формате HTML).
•
Разделы категории Display (Представление) позволяют изменить способ представ ления объектов в рабочем пространстве.
•
Разделы категории Settings (Параметры) позволяют изменить принятые по умолча нию значения некоторых инструментов и общих операций. Наиболее существенным из них является раздел W o r k i n g Units (Используемые единицы), расположенный в самой категории Settings (Параметры). Он позволяет задать параметры и единицы измерения, используемые на сцене, включая частоту кадров. Очень важно правильно задать единицы измерения времени и частоту кадров. Здесь содержатся также сле дующие разделы. • Раздел Files/Projects (Файлы/Проекты) позволяет задать способ представления в Maya проектов и файлов. Maya хранит результаты работы как проекты. Здесь можно указать, где Maya начнет искать файл проекта при загрузке (сохранении) сцены. • Раздел Timeline (Временная шкала) позволяет задать частоту кадров при воспро изведении сцены. Имейте в виду, это не частота кадров самой сцены, а только ско рость ее воспроизведения в панелях представления Maya. • Раздел Undo (Отменить) позволяет установить размер очереди отмен. Рекомен дую задать для него значение Infinite (Бесконечно). Это позволит отменять прак тически все действия на любом этапе работы, если что-то пойдет не так. Это зай мет не слишком много памяти, поэтому имеет смысл так поступить. • Раздел Selection (Выделение) позволяет задать порядок предпочтений при выде лении. Maya имеет очередь выделения (selection queue), которая определяет, какие объекты будут более предпочтительными, чем другие. При выборе прямоугольни ком (marquee select) на сцене набора объектов разных типов Maya выберет из них наиболее важные и выделит их. Именно здесь можно задать предпочтения выде ляемых объектов.
•
В категории Modules (Модули) определены модули, загружаемые по умолчанию при каждом запуске Maya. По умолчанию загружаются модули Dynamics и Paint Effects. Это вовсе не дополнения, такие как fur и mental ray, к которым обращаются с помо щью диспетчера дополнений (Plugin Manager), описанного в следующем разделе.
•
В категории Applications (Приложения) можно задать пути приложений, которые используются совместно с Maya. Это существенно упрощает процесс разработки, по зволяя запускать такие приложения, как Photoshop, для редактирования карт тек стур непосредственно в Maya.
77
Интерфейс Maya
Цвета Если выбрать пункт меню Window => Settings/Preferences => Color Settings (Окно => Параметры/Предпочтения => Параметры цвета) и открыть окно Colors (Цвета), как показано на рис. 1.43, то в Maya можно изменить цвета практически всех элементов пользователь ского интерфейса и объектов. Для изменения предустановленного цвета достаточно щелкнуть на образце цвета или использовать ползунок. Например, чтобы изменить цвет фона панелей трехмерного представления, перейди те в раздел 3D View (Трехмерный вид) и выберите новый цвет. Вкладки Active (Активные) и Inactive (Неактивные) предоставляют доступ к цветам объектов, которые выбраны или не выбраны в текущий момент. Как будет продемонстрировано в упражнениях этой книги, элементы сцены имеет смысл организовывать по группам с разными цветами представления, отличающимися от использованных в окне Colors (Цвета). Внесенные здесь изменения распространяются на все сцены и элементы пользовательского интерфейса для данного пользователя Maya и предназначены исключительно для удобства, а не для управления сценой или ее орга низацией. Для этого применяются слои представления (display layer) и другие средства.
Панели После выбора пункта меню W i n d o w => Settings/Preferences => Shelf Editor (Окно => Параметры/Предпочтения => Редактор панелей) откроется окно, позволяющее манипу лировать панелями (рис. 1.44). Здесь можно создавать и удалять панели, а также мани пулировать их элементами и функциями.
Puc. 1.43. Откорректировать цвет элементов пользовательского ин терфейса, окон и объектов сцены очень просто
Рис. 1.44. Окно редактора панелей
В этом окне можно легко добавить или любой элемент в меню, или панель инстру ментов. •
Чтобы добавить элемент из панели инструментов, перетащите его пиктограмму средней кнопкой мыши из панели инструментов на соответствующую панель.
•
Чтобы добавить элемент из меню, нажмите комбинацию клавиш и выберите этот пункт меню.
•
Чтобы добавить элемент (команду MEL) из редактора сценариев, выделите код ко манды MEL в редакторе сценариев и перетащите его средней кнопкой мыши на па нель. В результате будет создана пиктограмма MEL, после щелчка на которой срабо тает команда.
78
•
Глава 1 Чтобы удалить элемент из панели, перетащите его пиктограмму средней кнопкой мыши на пиктограмму T r a s h (Корзина) в конце панели или выберите пункт меню W i n d o w => Settings/Preferences => Shelf Editor (Окно => Параметры/Предпочтения =>
Редактор панелей).
Комбинации клавиш Комбинации клавиш (hotkey) позволяют обратиться практически к любому инстру менту или команде Maya. Редактор комбинаций клавиш (Hotkey Editor), представлен ный на рис. 1.45, позволяет создать их еще больше.
Puc. 1.45. Редактор комбинаций клавиш В этом единственном окне можно задать практически любую комбинацию клавиш практически для любой команды Maya. Поскольку большинству инструментальных средств уже присвоены стандартные комбинации клавиш, здесь их можно просмотреть, а также принять решение, стоит ли изменять их. Но те, кто перешел на Maya из другого пакета трехмерного моделирования, возможно, захотят установить привычные комбина ции клавиш, чтобы быстрее перейти к работе. В левой панели находятся все категории меню, в средней представлены пункты меню выбранного слева, а в поле справа можно просмотреть текущую комбинацию клавиш и назначить при необходимости новую. Клавиши-модификаторы и приме нимы в комбинации с любой символьной клавишей. Имейте в виду, что Maya чувстви тельна к регистру, а следовательно, различает символы в верхнем и нижнем регистре. Например, можно назначить комбинацию клавиш , чтобы скрыть выделенный объект, a — чтобы снова отобразить его. Тем, кто собрался назначать собственные комбинации клавиш, рекомендуем сначала воспользоваться кнопкой Query (Запрос), чтобы выяснить текущую комбинацию кла виш, — возможно, она подходит лучше. В нижнем разделе этого окна отображается команда MEL, которой соответствует вы бранный пункт меню. Здесь можно также вводить собственные команды MEL, присваи вать им новые имена, изменять их категории и назначать комбинации клавиш.
Интерфейс Maya
79
Маркированные контекстные меню Настройка маркированных контекстных меню (marking menu) способна сущест венно упростить процесс разработки. Здесь можно разместить больше инструментов моделирования, чем предоставляет пользовательский интерфейс по умолчанию. Для настройки маркированных контекстных меню выберите пункт меню Window => Settings/Preferences => Marking Menus Editor (Окно=>Параметры/Предпочтения => Редактор
маркированных контекстных меню), чтобы открыть окно Marking Menus (Маркированные контекстные меню), показанное на рис. 1.46.
Рис. 1.46. Окно редактора маркиро ванных контекстных меню Маркированное контекстное меню разделено на зоны. Выберите подлежащую редак тированию зону в верхней панели и щелкните на кнопке Edit Marking Menu (Редактировать маркированное контекстное меню) (рис. 1.47).
Рис. 1.47. Редактирование северной зоны маркированного контекстного меню Чтобы изменить элемент маркированного контекстного меню, переместите его пикто грамму или пункт меню непосредственно на то место, где его следует разместить в мар кированном контекстном меню для текущей зоны.
Глава 1
80
Диспетчер дополнений Диспетчер дополнений (plugin manager), доступный после выбора пункта меню W i n d o w => Settings/Preferences => PIug-in Manager (Окно => Параметры/Предпочтения =>
Диспетчер дополнений), позволяет подключать и отключать дополнения Maya. Напри мер, дополнение mental ray for Maya обеспечивает визуализацию сцен с помощью систе мы mental ray. Для подключения дополнения щелкните на кнопке Loaded (Загружен), а чтобы отключить его, сбросьте соответствующий флажок. Если необходимо организо вать регулярную загрузку дополнения при каждом запуске Maya, установите флажок Auto Load (Автозагрузка). Для загрузки дополнений стороннего производителя щелкни те на кнопке Browse (Просмотр) внизу окна. Большинство дополнений сторонних про изводителей обладают собственными средствами для правильной установки.
Резюме После изучения работы интерфейса Maya, заданного по умолчанию, можно присту пить к его изменению и настройке по собственному усмотрению (как правило, это дает положительный результат). В этой главе приведен краткий обзор всех основных компонентов пользовательского интерфейса Maya и ее главных окон. Впоследствии, когда необходимо будет вспомнить, что и как работает, данную главу можно использовать как справочник. В настоящей гла ве описаны также интерфейс, навигация, окна сцены и их компоновка, окна оперативно го доступа, меню и панели. Кроме того, здесь рассматривалось применение иерархиче ской структуры и гиперграфа, панели каналов и редактора атрибутов, временной шкалы, командной строки, строки обратной связи и редактора сценариев. И в заключение обсу ждались возможности настройки интерфейса.
Быстрое начало: создание анимации в Maya 8.5 Maya — довольно сложный программный пакет, но очень простой в применении (если понимать его структуру!). Однако новичков может испугать интерфейс и разнооб разие возможностей. В предыдущей главе описывались основы интерфейса Maya и ее элементы управления. В этой главе рассматриваются основы создания простой анима ции от начала и до конца. Это позволит узнать структуру сцены Maya, способы анимации объектов и визуализации кадров. В основном представленная здесь информация являет ся поверхностной, так как настоящая глава посвящена описанию процесса разработки и организационной структуре Maya. Опытные пользователи могут пропустить эту главу и перейти к более сложным темам, описанным далее. •
Структура проекта Maya
•
Создание и редактирование объектов
•
Опорные точки и положение
•
Структура узла Maya
•
Применение материалов
•
Установка ключевых кадров
•
Простое освещение
•
Визуализация кадров
Структура проекта Maya Искусство трехмерного моделирования состоит из многих элементов, объединение которых позволяет создать окончательно визуализированный продукт. Сюда относится имитация различных движений, применение текстур, визуализация изображения и соз дание файлов сцен, совокупность которых составляет проект, a Maya позволяет легко ор ганизовать его. Изучение структуры и способов использования проектов чрезвычайно полезно в организационных целях, знание того, как обращаться с сотнями файлов в со ставе проекта, прежде всего в интересах самого разработчика! Проект (project) — это набор папок, которые содержат файлы, имеющие отношение к сцене. Сцена (scene) — это файл (с расширением .mb или . т а ) , содержащий все данные, необходимые Maya. В этих файлах хранятся все модели, анимация, тонирование и дру гие ресурсы, которые были созданы в Maya. Сцены и файлы их внешних ссылок автома-
82
Глава 2
тически сохраняются в проекте в соответствии со структурой папок, полученных при создании нового проекта. Чтобы начать новый проект, выберите пункт меню F i l e * P r o j e c t * N e w (Файл => Проект => Новый), как показано на рис. 2.1. Введите в поле Name (Имя) имя нового проекта. (Так будет называться корневая папка проекта.) В поле Location (Расположение) задайте папку, в которой будет сохранен проект; если не нужно определять новое расположение для проектов, используйте значение по умолчанию, \ m a y a \ p r o j e c t s .
Рис. 2.1. Окно New Project позволяет организовать все файлы, используемые сценой Maya Создавая проекты, не используйте пробелы в их именах и именах папок. Для разграничения слов используйте символы в верхнем регистре или символы подчеркивания — их Maya и ее дополнения понимают правильно. Хотя для каждой папки проекта можно задать новые имена, рекомендуется использо вать только стандартные. Для этого щелкните на кнопке Use Defaults (Использовать принятые по умолчанию), расположенной в нижней части окна New Project (Новый про ект). Для обозначения вложенной папки используют обратную косую черту ( \ ) . Maya не будет создавать папки для атрибутов, соответствующих пустым полям. Если работа осуществляется над несколькими проектами одновременно, для пере ключения между ними выберите пункт меню File => Project => Set (Файл => Проект => Установить). Выберите необходимую корневую папку проекта и щелкните на кнопке ОК. Чтобы отредактировать пути текущего проекта, выберите пункт меню File => Project => Edit Current (Файл => Проект => Редактировать текущий). В открывшемся окне, напоминаю щем окно нового проекта, отредактируйте требуемые параметры.
Инкрементное сохранение Инкрементное сохранение (incremental save) — это способ обеспечения безопасности файлов сцены (настоятельно рекомендуем воспользоваться данной возможностью). По мере создания сцена усложняется, а следовательно, увеличивается вероятность возник новения ошибок в ней! Нет ничего хуже случайной потери существенной части сцены
Быстрое начало: создание анимации в Maya 8.5
83
или повреждения файла всей сцены. При инкрементном сохранении автоматически соз даются резервные копии предыдущего файла, что позволит в случае необходимости вос пользоваться его прежними версиями. Чтобы разрешить инкрементное сохранение, выберите пункт меню File => Save Scene • (Файл => Сохранить сцену • ) . Установите флажок Incremental Save (Инкрементное сохранение). Если не указать предел инкремента, то резервные копии никогда не будут удаляться и могут занять слишком много места на жестком диске, по этому обычно устанавливают предел 5 - 1 0 копий. Учтите, что размер сцены может стать очень большим, поэтому для экономии места иногда устанавливают значения поменьше.
Молоток и гвоздь, часть первая: параметры проекта В этой главе будет создана простая анимация — молоток, ударяющий по гвоздю. Дан ное упражнение должно ознакомить читателя с системой Maya и процессом разработки в ней. Хотя используемая здесь сцена очень простая, она вполне позволит получить пред ставление о процессе создания сцен. 1.
Создайте проект для хранения и организации файлов сцены, а также файлов, свя занных с ней. Откройте Maya и выберите пункт меню File => Project => N e w (Файл => Проект => Новый).
2.
В окне New Project (Новый проект) щелкните на кнопке Use Defaults (Использовать принятые по умолчанию), а в поле Name ( И м я ) введите имя haxamar_and_nail (молоток и гвоздь) или любое другое по своему усмотрению.
3.
Чтобы создать проект, щелкните на кнопке Accept (Принять). Maya создаст папки для каждого элемента проекта. Теперь это текущий проект, все сцены которого будут сохраняться в папке h a m m e r _ _ a n d _ n a i l \ s c e n e s .
Создание и редактирование объектов Термин объект (object) применяется к любому элементу на сцене. Это весьма общий тер мин, под которым может подразумеваться фрагмент геометрической фигуры, источник света, локатор или любой другой пространственный объект, допускающий перемещение, поворот и (или) масштабирование. Меню Create (Создать) предоставляет доступ к геометрическим примитивам, источникам света и инструментальным средствам, позволяющим создать объек ты на сцене. Более подробная информация об этих объектах приведена в главах 3-6, посвя щенных моделированию, а также в главе 11, посвященной освещению. Меню Create (Создать) содержит следующие пункты. Объект
Описание
NURBS Primitives (Примитивы NURBS)
Базовые формы плоских и объемных объектов NURBS
Polygon Primitives (Полигональные примитивы)
Базовые геометрические полигональные объекты
Subdiv Primitives (Примитивы SDS)
Базовые примитивы из SDS-поверхностей
Volume Primitives (Объемные примитивы)
Объемные примитивы, такие как сфера, куб и конус
84
Глава 2 Окончание
Объект
таблицы
Описание
Lights (Источники света)
Различные типы источников освещения
Cameras (Камеры)
Различные методы создания новых камер
CV Curve Tool (Инструмент кривой CV)
Инструмент создания кривых CV
ЕР Curve Tool (Инструмент кривой ЕР)
Инструмент создания кривых ЕР
Pencil Curve Tool (Криволинейный карандаш)
Инструмент, позволяющий вручную нарисовать кривую NURBS
Arc Tools (Инструменты дуг)
Инструмент создания кривых (дуг) NURBS
Measure Tools (Инструменты измерения)
Инструмент измерения дистанций разными способами
Text (Текст)
Инструмент создания трехмерного текста
Adobe Illustrator Object (Объект Adobe Illustrator)
Инструмент, позволяющий импортировать в Maya векторные объекты из Adobe Illustrator
Construction Plane (Конструкционная плоскость)
Вспомогательное средство создания объектов, ориентированных не по плоскостям XYZ
Locator (Локатор)
Пустой объект, который не визуализируется, но имеет позицию, допускает поворот и мас штабирование
Annotation (Аннотация)
Невизуализируемое примечание или заметка, которые отображаются в трехмерном про странстве
Empty Group (Пустая группа)
Пустая группа, не содержащая никаких объектов
Sets (Наборы)
Коллекции объектов
Организация объектов Подобно тому, как проект Maya должен быть понятным и четко организованным, файлы сцены должны быть хорошо структурированными. Используя осмысленные име на объектов, групп и слоев, можно существенно улучшить восприятие сцены и повысить эффективность работы с ней. Правильная организация сцен является залогом успеха проекта, в котором могут принимать участие несколько художников.
Именование Наличие соглашения об именовании (naming convention) объектов — хороший подход для любого проекта. В Maya простые объекты не всегда имеют визуальное представление. По скольку их приходится искать в иерархической структуре или среди узлов, малопонятные имена объектов затрудняют поиск. Поскольку большинство объектов в Maya создается из примитивов, нет ничего странного в том, что щелкнув на голове персонажа узнаешь, что его именем является p C u b e l . Ни одно из соглашений об именовании объектов не является един ственно правильным, и любая рабочая группа в праве выработать собственное соглашение, подходящее именно для нее. Однако в типичных случаях для геометрических объектов ис пользуют описательные имена. По мере добавления разнообразных объектов на сцену к их
Быстрое начало: создание анимации в Maya 8.5
85
именам добавляют префиксы и постфиксы (окончания), чтобы упростить организацию. Если следовать формату, принятому в примерах данной главы, то геометрический объект имел бы имя MyObj ect, а его материал — MyObjectMaterial.
Переименовать объект очень просто: следует выбрать его в редакторе атрибутов или на панели каналов (переключаться между этими двумя редакторами позволяет комбина ция клавиш ) и изменить его имя в текстовом поле, расположенном в верхней части панели. В качестве альтернативы при работе в представлении гиперграфа можно щелкнуть правой кнопкой мыши на узле объекта и выбрать в появившемся контекстном меню пункт Rename (Переименовать). Квалифицированные пользователи могут также использовать команду r e n a m e . Например, если объект pCubel необходимо переимено вать в MyCube, достаточно ввести в командной строке команду rename pCubel MyCube и нажать клавишу <Enter>.
Иерархии сцены Объекты Maya зачастую трудно найти визуально в трехмерном окне представления, поэтому для обращения к ним существуют иерархические деревья (hierarchical tree). Хранение объектов таким образом не только упрощает структуру сцены, но и позволяет организовать движение объектов относительно друг друга. При моделировании, оснаще нии и анимации широко используются сложные группировки, а также родительские и дочерние отношения между объектами. Родительские и дочерние о т н о ш е н и я
Родительский (parent) объект управляет атрибутами другого объекта, называемого дочер ним (child). Родительский объект может иметь несколько дочерних объектов, а дочерний мо жет иметь только одного родителя. Дочерние элементы наследуют свойства родительских, а также могут иметь собственные. На рис. 2.2 в гиперграфе представлен объект pSpherel, яв ляющийся родительским для двух дочерних объектов pSphere2 и pSphere3. Если перемес тить объект pSpherel на 5 единиц влево, то оба его дочерних объекта также переместятся на 5 единиц влево. Однако дочерние элементы pSphere2 и pSphere3 способны перемещаться и самостоятельно, правда, относительно их родителя pSpherel.
Рис.22. Объект pSpherel является родительским по отношению к pSpherе2 и pSphere3. Оба дочерних элемен та наследуют движения родителя Один объект можно подчинить другому несколькими способами. В любом представ лении, где можно выбирать объекты (трехмерное представление, иерархическая струк тура, гипершейдер), следует выделить два объекта, щелкая на них и удерживая нажатой
86
Глава 2
клавишу <Shift>. Выберите пункт меню Edit => Parent (Правка*Подчинить) или нажми те клавишу < Р > . Объект, который был выделен первым, станет дочерним по отношению к объекту выделенному последним. В представлении иерархической структуры и гиперграфа достаточно перетащить средней кнопкой мыши один объект на другой. Перемещаемый объект станет дочерним по отношению к объекту, на который он был перемещен. Чтобы освободить (unparent) объект, т.е. отменить его подчинение другому объекту, выделите дочерний объект, а затем выберите пункт меню E d i t * U n p a r e n t ( П р а в к а * Освободить) или нажмите комбинацию клавиш <Shift+P>. Дочерний объект выйдет из подчинения родительского и перейдет в корневой каталог иерархии сцены. Дочерний объект можно также перетащить средней кнопкой мыши на свободное место в окне ги перграфа или иерархической структуры. Группы
Иногда необходимо, чтобы два объекта перемещались, вращались и масштабирова лись вместе, как братья (sibling), т.е. элементы одного уровня, однако подчинять их дру гому объекту или геометрическому фрагменту нежелательно. Для того чтобы получить этот эффект, объекты можно сгруппировать. Хотя узел группы (group node) фактически не является объектом, он все равно считается родителем для своих членов. Группы (group) также прекрасно подходят для хранения готовых сцен Maya. Чтобы сгруппировать объек ты, выделите их, а затем выберите пункт меню Edit => Group (Правка => Группа) или нажмите комбинацию клавиш . Чтобы удалить группу, не удаляя ее элементы, выделите группу и выберите пункт меню E d i t * U n g r o u p (Правка => Разгруппировать). По мере усложнения сцены может возникнуть необходимость в группах выделения, облегчающих доступ к наборам объектов. Группа выделения (selection set) — это группа объектов, существующая вне иерархии сцены, которая используется для кластеризации (группировки) объектов и облегчает их выбор. Группы выделения могут состоять из объектов и компонентов. Попробуйте создать несколько объектов, используя меню Create (Создать). Выделите несколько объектов, удерживая нажатой клавишу <Shift>, выберите пункт меню C r e a t e * S e t s * Q u i c k Select Set (Создать*Наборы*Группу быстрого выделения) и в появившемся окне щелкните на кнопке ОК, чтобы принять имя, заданное по умолчанию. Обратите внимание на то, что в иерархической структуре был создан новый узел s e t (набор). Теперь, если необходимо снова выбрать эти объекты, щелкните в иерархической структуре правой кнопкой мыши на группе s e t и в появившемся контекстном меню выберите пункт Select Set Members (Выделить члены группы). СЛОИ представления
Слои представления (display layer) инкапсулируют (содержат) объекты, определен ные пользователем и созданные в редакторе слоев (Layer Editor). Они подобны группам выделения, но проще в управлении. Создание слоев представления разделяет сцену на организационные модули, которые управляют видимостью объектов и допускают их вы деление или отмену выделения. В главе 1, "Интерфейс Maya", упоминалось, что новые слои представления создают в редакторе слоев, а также то, что на них можно добавлять новые объекты. Слева от имени слоя (рис. 2.3) есть три поля. Щелчок на крайнем левом поле переключает видимость слоя. Щелчок на среднем поле циклически перебирает три режима: Normal (Нормальный), пус тое поле, Template (Шаблон), символ Т, и Reference (Ссылка), символ R. В режиме
Быстрое начало: создание анимации в Maya 8.5
87
Template (Шаблон) объекты представляются как каркасы, независимо от текущего ре жима трехмерного представления. Объекты в этом режиме нельзя выделять в трехмер ных областях просмотра. Если слой представления находится в режиме Reference (Ссылка), то его члены, как правило, видимы в трехмерных областях просмотра, однако не могут быть выделены в них. Последнее поле контролирует цвет каркасов объектов. Уста новка этого значения особенно полезна на сценах, где много объ ектов в каркасных представлениях, поскольку это помогает раз личать отдельные объекты между собой. Если дважды щелкнуть на этом поле или на имени слоя, то можно выбрать цвет слоя.
Режимы объектов и компонентов Каждый геометрический объект в Maya состоит из меньших Рис. 23. Слои пред частей геометрических данных, называемых компонентами ставления позволяют (component). В режиме объектов (object mode) можно выбрать группировать объекты так, чтобы можно бы весь объект и манипулировать им. В режиме компонентов ло изменять их внеш (component mode) появляется возможность выбирать компонен ний вид в реальном ты, которые являются составляющими самого объекта, и манипу масштабе времени лировать ими. Режим объектов позволяет использовать объект как фиксированную коллекцию компонентов, а режим компонентов позволяет изменять форму объекта (в зависимости от типа выделенного компонента). Каждый объект геометрического типа имеет собственный набор компонентов. Много угольники (polygon), или полигоны, содержат массивы вершин (vertices), граней (face), точек [JV(UVs) и краев (edge). Объекты NURBS содержат массивы контрольных вершин (control vertices), поверхностных фрагментов (surface patch) и, возможно, точек на по верхности (surface point), оболочек (hull) и изопараметрических линий (isoparm). Поэкспериментируйте с обоими режимами, создав полигональный куб. Сначала перейдите в режим интерактивного создания, выбрав пункт меню Create => Polygon Primitives => lnteractive Creation (Создать => Полигональные примити-
вы => Интерактивное создание). Затем выберите пункт меню C r e a t e d Polygon Primitives => Cube • (Создать => Полигональные примитивы => Куб •) и, удерживая нажатой левую кнопку мыши, очертите в области просмотра перспективного представления основание и высоту куба. И н т е р а к т и в н о е создание
Нововведением Maya 8 является режим интерактивного создания (Created Polygon Primitives (Создать => Полигональные примитивы) и Create => NURBS (NURBS-поверхности), позволяющий задавать основные атрибуты формы примитивов, перемещая курсор мыши. Если отключить эту возможность, то примитивы будут создаваться по умолчанию, т.е. с ат рибутами, определенными заранее. Для переключения между режимами объектов и компонентов нажмите клавишу < F 8 > или щелкните на соответствующих пиктограммах пользовательского интерфейса (см. главу 1, "Интерфейс Maya"). Находясь в режиме компонентов, можно выбирать ти пы компонентов, подлежащих модификации. Можно либо выбрать пиктограмму компо нентов в строке состояния, либо использовать уникальные контекстные меню Maya.
88
Глава 2
БОЛЬШИНСТВО художников предпочитают использовать меню, чтобы быстро и просто выбирать компоненты. Чтобы открыть контекстное меню (context menu), щелкните на полигональном кубе правой кнопкой мыши. Пункты этого контекстного меню зависят от типа объекта. Выберите компонент, отпустив правую кнопку мыши. Пример такого меню приведен на рис. 2.4.
Рис. 2.4. Чтобы получить доступ к контекстному меню, щелкните на объекте правой кнопкой мыши Чтобы изменить тип компонента или отредактировать его, можно также щелкать на пиктограмме в строке состояния. Не забудьте, что эти пиктограммы видимы только в режиме компонентов (для перехода в режим компонентов нажмите клавишу < F 8 > или щелкните на пиктограмме режима компонентов в строке состояния). Пиктограмма
Название
Описание
Select Point Components (Выделять точки)
Позволяет выбирать точки и вершины объекта
Select Parm Points Components Позволяет выбирать параметрические (Выделять параметрические точки) точки и точки UV объекта Select Line Components (Выделять линии)
Позволяет выбирать изопараметрические линии и края многоугольников
Select Face Components (Выделять грани)
Позволяет выбирать грани и фрагменты
Select Hull Components (Выделять оболочки)
Позволяет выбирать оболочки NURBS
Select Pivot Components (Выделять опорные точки)
Позволяет выбирать опорные точки поворота, масштаба и суставов
Select Handle Components (Выделять маркеры)
Позволяет выбирать маркеры
Select Miscellaneous Components (Выделять разные компоненты)
Позволяет выбирать разнообразные компоненты, такие как плоскости изо бражений и локальные оси поворота
Быстрое начало: создание анимации в Maya 8.5
Молоток и гвоздь, часть вторая: модели объектов Продолжим проект, начатый в предыдущем разделе, и создадим простые модели мо лотка и гвоздя. Для создания разных частей моделей будем использовать полигональные примитивы и подчинение. 1.
В новом файле сцены Maya (выберите пункт меню File => New Scene (Файл => Новая сцена)) создайте новый полигональный цилиндр, выбрав пункт меню C r e a t e d Polygon Primitives => Cylinder (Создать=>Полигональные примитивы => Цилиндр). Этот цилиндр послужит как било молотка. Чтобы просмотреть цилиндр в режиме тонирования, нажмите клавишу <5>. Для возвращения в режим каркаса можно в любой момент нажать клавишу < 4 > . Если выбран режим интерактивного создания для полигональных примитивов, то щелкните где-нибудь на сцене и нарисуйте но вый цилиндр.
2.
Чтобы удлинить било молотка, как показано на рис. 2.5, измените с помощью панели каналов (см. главу 1, "Интерфейс Maya") значение атрибута scaleY (атрибут мас штаба по оси Y) на 1.6. Удостоверьтесь, что атрибуты translateX, translateY и translateZ имеют значение 0. Переименуйте также в панели каналов объект с pCylinderl в HammerHead (Било молотка).
Рис. 2.5. Цилиндр, вытянутый по оси У, формирует било молотка 3.
Для рукоятки создадим второй полигональный цилиндр. Переместите этот цилиндр в позицию о, о и 3 .7 единицы по осям X, Y и Z соответственно. Затем поверните его на 90° относительно оси X и измените масштаб по осям X, Y и Z на 0.5, 3 и 0.5 со ответственно. Переименуйте этот цилиндр в HammerHandle (РукояткаМолотка). Результат приведен на рис. 2.6.
90
Глава 2
9.
Рис. 2.6. Для рукоятки молотка создадим второй цилиндр 4.
Выделите объект HammerHandle, а затем, нажав клавишу <Shift>, объект HammerHead. Чтобы сгруппировать оба объекта в один, выберите пункт меню Edit => Group (Правка => Группа). Откройте иерархическую структуру, выбрав пункт меню W i n d o w => Outliner (Окно => Иерархическая структура). Щелкните на знаке "плюс" рядом с объектом group 1 и удостоверьтесь, что оба цилиндра являются до черними элементами этой группы. Переименуйте группу в Hammer (Молоток).
5.
Создайте новый слой представления, щелкнув на пиктограмме Create A New Layer (Создать новый слой) Подробную информацию о слоях см. в главе 1, "Интерфейс Maya". Дважды щелкнув на слое, переименуйте его в HammerLayer (Слой молотка).
6.
Выделите объект Hammer в иерархической структуре, щелкните правой кнопкой мыши на объекте HammerLayer в редакторе слоев и в появившемся контекстном ме ню выберите пункт A d d Selected Objects (Добавить выделенные объекты). Добавле ние объектов на слой, как здесь, позволяет организовать сцену и облегчает включе ние и выключение видимости объектов. Отключите видимость объекта HammerLayer, щелкнув в поле V рядом с именем слоя.
7.
Для гвоздя создайте полигональный конус и переименуйте его в NailBottom (Низ гвоздя). Поверните его на 180° относительно оси X, а масштаб по осям X, Y и Z изме ните на 0.2, 0.9 и 0.2 соответственно. Затем создайте полигональный цилиндр и переименуйте его в NailTop (Верх гвоздя). Переместите его на 0.9 единиц по оси Y и измените масштаб по осям X, Y и Z на 0.6, 0.05 к 0.6 соответственно. Части гвоздя представлены на рис. 2.7.
8.
Выберите обе части гвоздя и создайте новую группу Nail (Гвоздь). Создайте новый сЛой NailLayer (СлойГвоздя) и добавьте на него группу Nail. Теперь сцена имеет две группы и два слоя, содержащие объекты гвоздя и молотка.
Быстрое начало: создание анимации в Maya 8.5
91
Рис. 2.7. Объект гвоздя составляют конус и цилиндр 9.
Последний объект, который осталось создать, — это деревянный пол. Он должен быть достаточно большим по сравнению с молотком и гвоздем. Убедитесь, что види мость их слоев разрешена (в крайнем левом поле рядом с именем слоя должен быть символ V). Кроме того, для каждого слоя следует щелкать в среднем поле до тех пор, пока там не появится символ Т. Теперь объекты молоток и гвоздь должны стать невыбираемыми в трехмерном перспективном представлении и оставаться в режиме каркаса независимо от режима перспективного представления. Эти свойства были изменены для того, чтобы при изменении масштаба пола позволить просматривать объекты молотка и гвоздя, но защищать их от возможности неосторожного выбора.
10. Создайте полигональный куб и переименуйте его в Floor (Пол). Его атрибуту translateY присвойте значение - 1 , а атрибутам scaleX, scaleY и scaleZ значе ния 22, 2 и 22 соответственно. Получив этот объект, создайте новый слой FloorLayer (СлойПола), а затем добавьте на него объект Floor. Результат должен выглядеть так, как на рис. 2.8.
Рис. 2.8. Шаблонное представление слоев позволяет увидеть, как новые объекты соотносятся с существую щими объектами сцены
92
Глава 2
11. Верните представления слоев молотка и гвоздя обратно в нормальный режим, щелкая в среднем поле рядом с именами их слоев. (Нормальный режим должен включиться после двух щелчков, когда поле станет пустым.) Сохраните работу и переходите к сле дующему разделу, в котором речь пойдет о подготовке объектов к анимации.
Опорные точки и положение Каждый объект Maya может вращаться в трехмерном пространстве. Точка, относи тельно которой вращается объект, называется опорной точкой (pivot point). По умолча нию опорная точка находится в центре вновь созданного объекта. Однако по мере моди фикации объекта опорная точка не будет автоматически перемещаться в его центр. Естественно, иногда позицию опорной точки приходится изменять. В наборе из неод нородных объектов опорную точку, вероятно, придется перенести в центр тяжести, отно сительно которого будут вращаться объекты. Возможно, объект придется вращать отно сительно некоей точки на поверхности, например при опрокидывании на столе. Для переустановки опорной точки выберите объект, перейдите в режим перемеще ния, поворота или масштабирования (нажмите клавишу < W > , < Е > или < R > соответст венно), а затем нажмите клавишу , чтобы перейти в режим редактирования. Об ратите внимание на то, что теперь перемещается, вращается и масштабируется элемент управления gizmo, обладающий цветными линиями по каждой оси. Объект в режиме ре дактирования представлен на рис. 2.9. Чтобы переместить опорную точку, щелкните левой кнопкой мыши на любой из осей. Чтобы выйти из режима редактирования, снова нажмите клавишу . Чтобы установить опорную точку в центр объекта, выделите объект и выберите пункт меню Modify => CenteR Pivot (Изменить => Центрировать опорную точку).
Рис. 2.9. Чтобы изменить положение опор ной точки объекта, нажмите клавишу и переместите элемент управле ния gizmo Объект может иметь только одну опорную точку. Опорные точки не допускают уста новки ключевых кадров, т.е. они не могут участвовать в анимации. Предположим, что объект должен упасть с края стола, а затем покатиться по полу. В этом случае потребу-
Быстрое начало: создание анимации в Maya 8.5
93
ются две опорные точки (одна — для нижнего края объекта, чтобы он мог упасть со стола, а другая — в центре, чтобы он мог покатиться), но в Maya для объекта допустима только одна опорная точка. Решением является группировка объектов. Хотя группы не имеют геометрических форм, их можно перемещать, вращать и мас штабировать, подобно любому другому объекту. Этот прием позволяет использовать опорную точку группы независимо от опорной точки объекта, однако дочерний объект группы наследует поворот родительского. Таким образом, группировка объектов являет ся вполне обычным делом в сложных оснастках персонажей, которым приходится вра щаться или двигаться разными способами. М О Л О Т О К И ГВОЗДЬ,
часть третья: опорные точки
Продолжим проект с молотком и гвоздем: изменим положение опорной точки молотка и приготовим его к анимации. Организуем четыре удара по гвоздю, два слабых и два силь ных. Эти движения будут выглядеть лучше, если сначала молоток будет поворачиваться ближе к креплению рукоятки, а затем ближе к ее концу, при более сильных ударах. 1.
Продолжая предыдущее упражнение, выберите в иерархической структуре группу Hammer и перейдите в вид сбоку. (В окне трехмерного представления вы берите пункт меню Panels => OrthogRaphic => Side (Панели =>Ортогональная =>
2.
3.
Сбоку)). Упражнение в текущем состоянии можно загрузить и с прилагаемого CD, открыв файл s t e p 2 . mb. Удостоверьтесь, что установлен режим каркасного представления (клавиша < 4 > ) и перейдите в режим поворота (клавиша < Е > ) . На экране должен поя виться вращающийся элемент управления g i z m o в исходной точке. Это и есть текущая опорная точка молотка. Поскольку необходимо установить опорную точку для сильных ударов, распо ложим ее ближе к концу рукоятки. Нажмите клавишу и переместите опорную точку по оси Z, поближе к концу рукоятки, как показано на рис. 2.10. Чтобы выйти из режима редактирования, опять нажмите клавишу .
Рис. 2.10. Чтобы добавить вторую опорную точку, сгруппируйте объект с самим собой и переместите опорную точку группы
94
Глава 2
4.
Чтобы проверить правильность положения опорной точки, откройте с помощью комбинации клавиш редактор атрибутов. Разверните разделы Pivots (Опорные точки) и Local Space (Локальное пространство). Здесь можно просмот реть точные значения перемещения опорной точки в локальном пространстве. Вве дите для параметров Local Rotate Pivot (Локальная опорная точка поворота) и Local Scale Pivot (Локальная опорная точка масштабирования) по координате Z (последнее поле ввода) значение 5.8622 (рис. 2.11).
Рис. 2.11. Редактор атри бутов позволяет точно за давать положение опорных точек 5.
Поскольку молоток должен сделать несколько слабых ударов, понадобится еще одна опорная точка ближе к началу рукоятки. Пока выделена группа Hammer, создайте новую группу, выбрав пункт меню Edit => GRoup (Правка => Группа). Переименуйте эту группу в HammerSmallTaps. Для сохранения единого стиля переименуйте группу Hammer в HammerLaRgeSwings. Единый стиль имен объектов упростит впоследст вии работу со сценой.
6.
Выберите группу HammerSmallTaps и переместите ее опорную точку по оси Z так, чтобы она оказалась немного левее била молотка (рис. 2.12). Как уже было проде монстрировано на этапе 4, откройте редактор атрибутов и установите опорную точку в локальную позицию 2 .4854 по оси Z. Чтобы выйти из режима редактирования, нажмите клавишу .
7.
Поскольку для молотка была создана новая родительская группа, ее необходимо до бавить на слой HammerLayeR. Пока группа HammerSmallTaps все еще выделена, щелкните в редакторе слоев правой кнопкой мыши на слое HammerLayeR и в поя вившемся контекстном меню выберите пункт A d d Selected Objects (Добавить выде ленные объекты). Сохраните работу и переходите к следующему разделу, в котором описана структура узла Maya.
95
Быстрое начало: создание анимации в Maya 8.5
Рис. 2.12. Чтобы добавить вторую опорную точку, сгруппируйте объект сам с собой и переместите опор ную точку группы
Структура узла Maya Д Л Я организации взаимодействия объектов Maya использует систему узлов. Узел (node) — это способ инкапсуляции данных, который может иметь дочерние или роди тельские отношения с другими узлами. Как правило, родительский узел воздействует на дочерний (но это зависит от типа обоих узлов). Новичкам может показаться несколько непривычным программное обеспечение, ориентиро ванное на узлы. Maya позволяет избавить разработчика от необходимости работать с узлами, если он сам не захочет редактировать их непосредственно в иерархической структуре, гипер графе, гипершейдере или другом редакторе. Предположим, что на сцене создана сфера. Хотя сфера видна как единый объект, на самом деле Maya создала несколько узлов, которые содер жат атрибуты (attRibute) или свойства (propeRty) этой сферы. Узел формы (shape node) со держит геометрическую форму сферы, узел трансформации (transform node) управляет ее преобразованием (позиция, поворот, масштаб, видимость и т.д.), а узел группы тонирования (shading group node) указывает, какой материал будет использован для поверхности сферы. Узел формы является дочерним по отношению к узлу трансформации, который является до черним по отношению к узлу группы тонирования (рис. 2.13). Вместе эти узлы и составляют то, что видно на сцене, когда на нее помещается сфера. Подробную информацию об узлах и связанных с ними редакторе атрибутов, гипершейдере, иерархической структуре и гипергра фе см. в главе 1, "Интерфейс Maya".
Узел трансформации
Узел формы
Узел группы тонирования
Рис. 2.13. Узлы формы, преобразования и группы тонирования являются ба зовыми узлами, определяющими геометрический объект
96
V
Глава 2
Работа со структурой, ориентированной на узлы, очень удобна, поскольку она позво ляет легко создавать, удалять, копировать и вставлять одни атрибуты объекта независи мо от других атрибутов того же объекта и манипулировать ими. Она является альтерна тивой системе, основанной на хронологии, которая располагает все действия с объектом в очереди и не позволяет отменить или изменить одну из них без необходимости отме нять или изменять другие операции, выполненные позже.
История создания По мере выполнения действий с объектами создаются новые узлы. Эту сеть узлов на зывают историей создания (constriction history) объекта. В любой момент времени мож но вернуться назад и отредактировать любой из атрибутов узлов в истории создания. Пример использования истории создания приведен ниже. 1. На новой сцене Maya создайте полигональный куб, выбрав пункт меню create => Polygon Primitives => Cube • (Создать => Полигональные примитивы => Куб • ) . 2.
Выделите куб. В панели каналов щелкните левой кнопкой мыши в разделе Inputs (Входящие) на элементе polyCubel и измените значения атрибутов SubdivisionsWidth, SubdivisionsHeight и S u b d i v i s i o n s D e p t h на 2. Это рассечет
куб на грани с более высоким разрешением, как показано на рис. 2.14.
Рис. 2.14. Полигональный куб с двумя сек циями по ширине, высоте и глубине 3.
Убедитесь, что открыт набор меню Polygons (Многоугольники). Перекосите куб, выбрав пункт меню Edit Mesh => Bevel (Редактировать сетку => Перекос). Перейдите обратно в режим объектов, а затем сгладьте куб, выбрав пункт меню Mesh => Smooth (Сетка => Сгладить). Перекос (beveling) и сглаживание (smoothing) — это лишь две из многих операций, которые можно выполнять с полигональной сеткой. (Эти и другие подобные операции описаны в главе 3, "Полигональное моделирование".) Теперь объект должен выглядеть так, как на рис. 2.15, а.
4.
Пока куб выделен, обратите внимание на данные в разделе Inputs (Входящие) панели каналов (см. рис. 2.15, б). Это информация об узлах, которые составляют историю создания куба.
Быстрое начало: создание анимации в Maya 8.5
97
Поскольку Maya накладывает эти операции одна на другую, порядок их выполнения очень важен. На рис. 2.16, а представлен куб после перекоса и сглаживания, а на рис. 2.16, б, наоборот, после сглаживания и перекоса.
Рис. 2.15. Разделение, перекос и сглаживание куба (a), Maya записыва ет историю создания узлов (б)
Рис. 2.16. Куб был перекошен, а затем сглажен (а); куб был сглажен, а затем перекошен (б) Историю создания объекта время от времени необходимо удалять. По мере накопления истории Maya тратит все большее времени на вычисление узлов, а это снижает произво дительность системы. Кроме того, некоторые операции просто несовместимы с другими операциями, особенно когда речь идет о порядке деформации. (Более подробная инфор мация о деформациях приведена в главе 5, "SDS-поверхности".) Чтобы удалить историю объекта, выделите его, а затем выберите пункт меню Edit => Delete By Type => HistoRy (Правка => Удалить по типу => История). Чтобы удалить историю всей сцены, выберите пункт меню Edit => Delete All By Type => HistoRy (Правка => Удалить все по типу=>История).
98
Глава 2
(Имейте в виду, что история объекта содержит как его прошлое, так и будущее. Удаление истории фиксирует объект в его текущем состоянии и удаляет все узлы создания, свя занные с этим объектом.) Чтобы полностью отключить историю создания, измените состояние кнопки ConstRuction HistoRy (История создания) в строке состояния. Однако в большинстве си туаций отключать историю не рекомендуется.
Молоток и гвоздь, часть четвертая: исследование узлов На этом этапе не будем вносить никаких изменений в сцену гвоздя и молотка, а рас смотрим, как Maya обрабатывает узлы в представлениях иерархической структуры, ги перграфа и редактора атрибутов. Хотя речь пойдет о тех же узлах, каждый редактор про демонстрирует свои преимущества в работе с узлами. Это упражнение поможет лучше понять, когда и как использовать каждый редактор в зависимости от конкретных целей. УЗЛЫ И
гиперграф
Разработчики предпочитают использовать гиперграф (HypeRgRaph) тогда, когда необ ходимо быстро создать, удалить или отредактировать отношения между узлами. Нович ку гиперграф может показаться немного сложным, поскольку он отображает те узлы, ко торые обычно не видны ни в иерархической структуре, ни в трехмерном представлении. Опытный пользователь Maya использует гиперграф для создания, улучшения и органи зации сложных отношений в иерархии сцены. 1. Продолжим предыдущий пример (можно воспользоваться файлом s t e p 3 .mb на прилагаемом CD). Откройте гиперграф, выбрав пункт меню W i n d o w => HypeRgRaph: HieRaRchy (Окно=>Гиперграф: Иерархия).
2.
В гиперграфе щелкните на кнопке Scene HieRaRchy (Иерархия сцены) , а чтобы увидеть все объекты на сцене, выберите пункт меню View => FRame Аll (Вид => Показать все). Теперь гиперграф должен выглядеть так, как на рис. 2.17.
Рис. 2.17. Вид объектов сцены в окне гиперграфа 3.
Каждый прямоугольник в гиперграфе представляет узел, соответствую щий объекту сцены. Обратите внимание на то, что пиктограммы узлов изменяются в зависимости от типа объекта; объекты группы имеют бе лую прямоугольную пиктограмму, а полигональные объекты — синюю плоскость. Здесь можно легко просмотреть иерархическую структуру групп молотка и гвоздя, проследив соединительные линии и расположе ние узлов.
99
Быстрое начало: создание анимации в Maya 8.5 4.
Не забывайте, что геометрические объекты состоят из множества узлов, которые можно просматривать и редактировать. Выберите объект HammerHead, щелкнув на его узле левой кнопкой мыши, а затем в панели инструментов гиперграфа щелкните на кнопке Input A n d Output Connections (Входящие и исходящие связи) Я. Все зави симости и связи объекта HammerHead представлены на рис. 2.18.
Рис. 2.18. Входящие и исходящие связи геометриче ского объекта Рассмотрим каждый представленный здесь узел, а также его значение для сцены. Узел polyCylindeRl содержит информацию о цилиндре, на базе которого создан объ ект HammerHead, включая такие его атрибуты, как Radius, height, subdivisionAxis, subdivisionHeight и subdivisionCaps.
Если выбрать узел p o l y C y l i n d e R l и рассмотреть его в панели каналов, то можно увидеть те же атрибуты, но предоставленные для редактирования. Узел polyCylindeRl соединен исходящими связями с атрибутом inMesh узла HammerHeadShape. Это узел формы объекта HammerHead. Хотя он имеет только одну входящую связь, она выступает в роли "концентратора" ("centRal hub") формы объекта HammerHead. Любые дополни тельные входящие связи, воздействующие на форму объекта, будут присоединены к это му узлу формы (полигональное редактирование рассматривается в главе 3, "Полиго нальное моделирование"). Поскольку объекты должны иметь группу тонирования (shading group), чтобы камера могла осуществить их съемку, узел HammerHeadShape должен быть дочерним по отно шению к узлу initialShadingGRoup. Узел initialShadingGRoup представляет за данный по умолчанию серый материал Lambert, который можно заметить на объектах при создании. Создав новый тонер (как это сделать, описано в следующем разделе), его можно будет применить к узлу формы и изменить его материал. Узел HammerHead представляет узел трансформации объекта била молотка. При вы боре и именовании объектов в трехмерном представлении фактически модифицируются именно эти узлы трансформации. Узел HammerLayeR представляет слой, который был создан при моделировании объ екта. Когда с помощью редактора слоев на слой добавляется объект, Maya автоматически связывает слой с объектом и его дочерними узлами форм. Чтобы увидеть содержимое узла HammerLayeR, выберите его и щелкните на кнопке Input And Output Connections (Входящие и исходящие связи). Теперь узел HammerLayeR в центре внимания гипер графа и имеет шесть входящих связей: с узлами HammerHead, HammerHeadShape, HammerHandle,
HammerHandleShape,
HammerSmallTaps
и
группой
HammerLaRge-
Swings (рис. 2.19). Узел layeRManageR — стандартный узел Maya, который содержит все слои сцены.
Глава 2
100
Рис. 2.19. Компоновка гиперграфа для про смотра слоев Закончив осмотр узлов сцены, закройте гиперграф. УЗЛЫ И
редактор атрибутов
Редактор атрибутов (Attribute Editor) позволяет изменять значения атрибутов узлов сцены. Хотя он и не предлагает такой иерархии, как гиперграф, модифицируемые атри буты организованны в нем подобным способом. (Подробную информацию о редакторе атрибутов и его использовании см. в главе 1, "Интерфейс Maya".) 1.
Продолжим предыдущий пример (можно воспользоваться файлом s t e p 3 . m b на прилагаемом CD). Откройте редактор атрибутов, выбрав пункт меню W i n d o w => Attribute Editor (Окно => Редактор атрибутов).
2.
В трехмерном перспективном представлении выберите цилиндр, представ ляющий собой било молотка. Обратите внимание на то, что редактор атри бутов загружает узел HammerHeadShape как текущий и создает вкладки для всех связанных с ним узлов, как показано на рис. 2.20.
Рис. 2.20. Редактор атрибутов отображает все доступные для редактирования атрибуты узла, выделенного в текущий момент, а также создает вкладки для всех связанных с ним узлов Перейдите на вкладку p o l y C y l i n d e R l . Этот узел содержит информацию о геометрической форме цилиндра, составляющей било молотка. Здесь можно изменить те же атрибуты, которые использовались при создании цилиндра.
Быстрое начало: создание анимации в Maya 8.5 4.
101
Перейдите на вкладку HammerHeadShape и разверните раздел Render Stats (Статистика визуализации), как показано на рис. 2.21. Обратите внимание на пара метры, доступные здесь для установки. Хотя здесь и не предполагается изменять ни один из этих атрибутов, всегда полезно знать, где можно изменить для отдельного объекта основные атрибуты визуализации, такие как тип затенения и видимость. Например, при анимации ярко светящегося шарика было бы крайне неестественно, если бы при визуализации он отбрасывал тень.
Рис. 2.21. Раздел Render Stats узла формы позволяет изменить значе ния основных атрибутов визуали зации УЗЛЫ И
Иерархическая структура
Иерархическая структура ( O u t l i n e r ) — это организованный список объектов, камер, источников света и других элементов сцены. Подобно гиперграфу, Иерархическая структура отображает иерархию сцены. Здесь доступно не так много объектов, как в гиперграфе, а Иерархическая структура, как правило, не отображает узлы создания. Поэтому окно иерархической структуры достаточно компактно, чтобы его можно было оставить на экране во время работы. Большинство разработчиков оставляют его в рабочем пространстве открытым, пользуясь им как справочником по группам и именам объектов, а также как средством быстрого доступа к ним (см. в главе 1, "Интерфейс Maya"). 1.
Продолжим предыдущий пример (можно воспользоваться файлом s t e p 3 . m b на прилагаемом CD). Откройте иерархическую структуру, вы брав пункт меню W i n d o w => Outliner (Окно => Иерархическая структура).
102 2.
Глава 2 В иерархической структуре (рис. 2.22) можно увидеть заданные по умолчанию пер спективную и ортогональные камеры, группы гвоздя и молотка, а также стандартные узлы, наборы источников света и объектов. Не беспокойтесь пока об узлах defaultObjectSet и defaultLightSets; эти наборы Maya создает сама, и в на стоящий момент они не важны.
Рис. 2.22. Иерархическая структура кратко ото бражает иерархию сцены 3.
Щелкните на знаке "плюс" рядом с группой Nail. В результате должны появиться два полигональных объекта, NailTop и NailBottom, отображаемые как дочерние элементы группы Nail.
4. Иногда полезно отображать расположение объекта сцены в иерархии. Выберите в перспективном представлении маркер молотка. Обратите внимание на то, что в иерархической структуре родительский элемент (содержащий дочерний) выде лен зеленым цветом. Щелкните правой кнопкой мыши где-нибудь в иерархиче ской структуре и в появившемся контекстном меню выберите пункт R e v e a l S e l e c t e d (Показать выделенное). Родительский объект (и все расположенные выше него) разворачиваются, чтобы отобразить позицию выделенного объекта в иерархии. Гипершейдер (HypeRshade) — это еще один редактор, интенсивно использующий уз лы. Он отвечает за создание и организацию материалов, используемых объектами сцены. В следующем разделе содержится краткий обзор и описание способов применения гипершейдера.
Применение материалов с помощью гипершейдера Материал
(mateRial), известный также как тонер (shadeR), — это коллекция узлов, кото рые определяют внешний вид объекта при визуализации. Создают и редактируют мате риалы в гипершейдере (см. в главе 1, "Интерфейс Maya").
Быстрое начало: создание анимации в Maya 8.5
103
Поверхностные материалы У З Л Ы поверхностных материалов (suRface material) служат основой для внешнего ви да материала, примененного к поверхности. Они задают основной цвет, подсветку и ко эффициент отражения. Существует много типов поверхностных материалов, но чаще всего используются материалы Blinn (Блинн), Lambert (Ламберт) и Phong (Фонг), пока занные на рис. 2.23. Поверхностный материал Lambert — это основные цвета, которые поддерживают тонирование (т.е. они становятся светлее или темнее в зависимости от воздействующего на них источника света), но не имеют бликов. Блики (specular highlight) — это свет, отраженный от освещенного объекта.
Lambert
Blinn
Phong
Рис. 223. Поверхностные материалы Lambert, Blinn и Phong Несмотря на то что поверхностные материалы Phong и Blinn очень похожи, поверх ностные материалы Phong имеют резкие блики, а материалы Blinn — мягкие. Материалы обоих типов имеют недостатки: материал Phong может мерцать при визуализации ани мации, а материал Blinn требует значительно больше вычислительных ресурсов. Оба этих материала изотропны, т.е. свет от источника они отражают во всех направлениях одинаково. Чтобы создать неоднородное отражение, следует применить анизотропный тип поверхностного материала. Подробная информация о поверхностных материалах приведена в главе 12, "Тонирование и текстурирование при анимации".
Узлы и гипершейдер Гипершейдер (HypeRshade) — это ориентированный на узлы редактор, позволяющий создавать очень сложные материалы. На данном этапе изучения Maya не будем чересчур углубляться в описание множества типов узлов поверхности, имеющихся в распоряже нии разработчика. Сейчас следует рассмотреть возможности гипершейдера, исследовать базовые материалы, способы их создания, а также применение материалов к объектам. В открытом окне гипершейдера можно увидеть три заданных по умолчанию материа ла, Lambertl, paRticleCloudl и shadeRGlowl, которые Maya создает автоматически. Чтобы объекты при визуализации были видимыми, к их поверхности следует применить материалы. Материалы, названные выше, применяются к вновь созданным объектам по умолчанию. Чтобы создать новый тонер (shadeR), следует сначала щелкнуть на поверхностном узле тонера в панели create (Создать), расположенной в левой части гипершейдера (рис. 2.24). Выделив новый материал, откройте редактор атрибутов, нажав комбинацию клавиш . В этом редакторе можно отредактировать все свойства нового мате риала. Чтобы применить материал к объекту, выберите объект, щелкните в гипершейдере правой кнопкой мыши на материале и в появившемся контекстном меню выберите
104
Глава 2
пункт Assign material То Selection (Применить материал к выделенному) либо перета щите материал средней кнопкой мыши из редактора материалов гипершейдера на объект в трехмерном перспективном представлении. В трехмерной графике существуют два типа текстур: изобра зительные и процедурные. Изобразительные текстуры (image textuRe) — это плоские двухмерные изображения, которые соз даются во внешнем графическом редакторе, возможно по фото графии. Процедурные текстуры (procedural texture) создаются в Maya динамически и требуют дополнительных вычислений. Процедурные текстуры требуют, как правило, значительно больших вычислительных мощностей. Приведенное ниже упражнение демонстрирует создание мате риала из уже существующего файла плоской изобразительной тек стуры. Хотя текстуры материалам можно присваивать с помощью редактора атрибутов, в этом примере, как и в большинстве случаев, воспользуемся гипершейдером, чтобы лучше продемонстрировать ориентированную на узлы структуру Maya. Прежде чем применять к поверхности текстуры любого ви да, следует создать поверхностный материал. Сохраните пре дыдущую работу, если она не сохранена, и создайте новую сцену. В разделе гипершейдера create Maya Nodes (Создать Рис. 224. Панель create узлы Maya) выберите материал Lambert. В области представ позволяет создать в гиузла визуализации появится тонер Lambert2 першейдере новые тонеры ления (подробно об области представления узлов визуализации й рабочей области см. в главе 1, "Интерфейс Maya"). 1.
Чтобы перейти к раздельному представлению панели, щелкните на кнопке S h o w T o p A n d Bottom T a b s (Показать вкладки верхней и нижней частей), расположен ной в правой верхней части окна гипершейдера. Теперь верхняя панель содержит тонеры сцены, а нижняя представляет рабочую область, которая отображает ие рархию материалов.
2. Выберите в верхней панели тонер Lambert2. Выберите пункт меню GRaph => lnput
3.
4.
And Output Connections (Редактор кривых => Входящие и исходящие связи). Рабочая область должна отобразить узлы ввода и вывода тонера Lambert2. Поскольку ника кие дополнительные узлы еще не добавлены, видимым будет только поверхностный материал Lambert2, привязанный к узлу группы тонирования (рис. 2.25). Щелкните правой кнопкой мыши на материале Lambert2 и в появившемся контек стном меню выберите пункт Rename (Переименовать). Введите в появившемся тек стовом поле новое имя imageTextuReExample. Прокрутите панель create Maya Nodes (Создать узлы Maya) вниз и в разделе 2D TextuRes (Плоские текстуры) щелкните на кнопке File (Файл). В рабочем простран стве должен появиться узел p l a c e 2 d T e x t u R e и узел файла. Чтобы расположить их правильно, можно выбрать их левой кнопкой мыши и переместить. Узел place2dTextuRe несет ответственность за наложение текстуры на поверхность. (Подробно узел place2dTextuRe рассматривается в главе 12, "Тонирование и текстурирование при анимации".)
Быстрое начало: создание анимации в Maya 8.5
105
Рис. 2.25. Верхняя панель гипершейдера содержит все мате риалы сцены. Нижняя панель представляет собой рабочую область, позволяющую создать иерархии материалов 5.
Узел файла (file node) представляет фактическое двухмерное изображение текстуры. Его миниатюра остается черной, поскольку фактически исполь зуемое изображение еще не задано. Выберите узел файла и откройте с по мощью комбинации клавиш редактор атрибутов. Вернитесь в ра бочее пространство Maya, — теперь редактор атрибутов должен отображать атрибуты узла filel.
6.
В редакторе атрибутов щелкните на кнопке с изображением папки, расположен ной рядом с текстовым полем Image Name (Имя изображения) (рис. 2.26). В появившемся окне выбора файла перейдите к папке второй главы на прила гаемом CD и загрузите файл TextuReExample. tga (рис. 2.27).
Pwc. 2.26. Атрибуты узла файла позволяют выбрать текстуру
106
Глава 2
Рис. 2.27. Пример изобрази тельной текстуры экспорти руется из внешнего графиче ского редактора 8.
Вернитесь в окно гипершейдера, теперь изображение миниатюры, показанной на рис. 2.27, должно появиться в узле файла. В рабочем пространстве перетащите сред ней кнопкой мыши узел filel на узел ImageTextuReExample. В появившемся но вом меню выберите пункт Default (По умолчанию). Перемещение средней кнопкой мыши одного узла на другой приводит к установлению связи между ними, а это диа логовое окно позволяет выбрать вид связи между узлами. Выбор пункта Default (По умолчанию) указывает Maya на необходимость связать изображение с атрибутом ColoR узла ImageTextuReExample. Теперь вместо серого цвета материал имеет вид импортированного изображения.
9.
После того как создан материал с импортированным изображением, необходимо приме нить его к объекту. Сверните или сдвиньте гипершейдер. Вернитесь в рабочее простран ство Maya, создайте полигональный куб (create => Polygon Primitives => Cube • (Создать => Полигональные примитивы => Куб • ) ) и нажмите клавишу < 6 > , чтобы перейти в режим просмотра текстур. Новый куб будет иметь стандартный серый материал.
10. Выберите куб и переключитесь обратно на гипершейдер. В верхней панели щелкните правой кнопкой мыши на узле материала ImageTextuReExample и в появившемся контекстном меню выберите пункт Assign material То Selection (Применить матери ал к выделенному). Теперь в перспективном представлении текстура должна быть видна на каждой грани куба, как показано на рис. 2.28. Процедурные текстуры создаются подобным способом. Но вместо создания узла файла и импортирования изображения (этап 7 в приведенном выше примере) можно выбрать любой из узоров (patteRn), расположенных в разделах 2D TextuRes (Плоские текстуры) и 3D TextuRes (Объемные текстуры) панели create Maya Nodes (Создать уз лы Maya) гипершейдера. Несколько таких процедурных текстур будет создано в сле дующем упражнении.
Молоток и гвоздь, часть пятая: создание и применение материалов В этом упражнении с помощью гипершейдера создается несколько материалов, кото рые применяются к различным частям модели. Сети материалов останутся относительно
Быстрое начало: создание анимации в Maya 8.5
107
простыми и будут представлены лишь узлами материала. Объекты на этой сцене еще не подготовлены для анимации, но чтобы увидеть различные компоненты, включите ото бражение слоев представления.
Рис. 2.28. Материал с изобразительной текстурой применен к кубу 1. Продолжим предыдущий пример с молотком и гвоздем (можно воспользо ваться файлом s t e p 3 . m b на прилагаемом CD). Выберите в меню панели представления пункт Panels => Layouts => Three Panes Split Right (Панели =>
Компоновки => Разделение на три панели вправо). Как можно заметить, те перь рабочее пространство разделено на три панели просмотра. Настроим эти панели так, чтобы получить компоновку, подходящую для выполнения данного конкретного упражнения. 2.
При выборе компоновки Maya позволяет задать редакторы и представления, помещаемые в каждую панель. Переопределим эти панели так, чтобы рабо чее пространство выглядело, как на рис. 2.29. В левой панели выберите пункт меню Panels => Panel => Outliner (Панели => Панель => Иерархическая структура). По умолчанию эта панель слишком широкая, поэтому переместите левой кнопкой мыши ее разделитель вправо так, чтобы размер панели был таким, как на рис. 2.29.
3.
Поместите гипершейдер в верхнюю панель, выбрав пункт меню Panels => Panel=> HypeRshade (Панели => Панель => Гипершейдер). Нижнюю панель пе реключите в перспективное представление, выбрав пункт меню Panels => PeRspective => PeRsp (Панели => Перспёктива => Перспектива). Теперь компо новка должна выглядеть так, как на рис. 2.29. Одни разработчики любят работать в разделенных панелях, а другие пред почитают плавающие окна. Разделенные панели позволяют легко обращать ся к необходимым редакторам, а плавающие окна обеспечивают больше ра бочего пространства.
108 4.
Глава 2 Задача данного упражнения — создать четыре материала: для рукоятки и била мо лотка, для гвоздя и деревянного пола. Начнем с гвоздя. Блестящий, гладкий метал лический материал серого цвета прекрасно подойдет для гвоздя, поэтому в располо женной слева панели гипершейдера "create Maya Nodes (Создать узлы Maya) выбе рите материал Blinn.
Puc. 2.29. Используя компоновку, рабочее пространство можно на строить по своему усмотрению. Необходимый редактор или пред ставление можно расположить в любой панели
5.
Щелкните правой кнопкой мыши на узле материала Blinnl в верхней панели гипершейдера и в появившемся контекстно В текстовом поле введите новое имя этого материала — Nailmaterial.
6.
В иерархической структуре выберите группу Nail. Щелкните правой кнопкой мы ши на материале Nailmaterial и в появившемся контекстном меню выберите пункт Assign material То Selection (Применить материал к выделенному). Имейте в виду, что когда материал применяется к группе, он применяется ко всем ее членам. Хотя заданный по умолчанию серый материал Blinn больше всего подходит для ма териала гвоздя, его можно немного усовершенствовать. Чтобы лучше имитировать металл, цвет материала следует сделать немного светлее, а блик — шире.
7.
Выберите материал Nailmaterial и откройте редактор атрибутов (комбинация клавиш ). У атрибута ColoR переместите ползунок приблизительно на 80%, а для атрибута EccentRicity в разделе SpeculaR Shading (Бликовое тониро вание) установите значение 0.8. (Для того чтобы получить глянцевый пластмассо вый эффект, выберите низкое значение эксцентриситета блика. Для получения ме таллического эффекта выберите высокое значение эксцентриситета.)
8.
На следующем этапе создадим материал для била молотка. Создайте в гипершейдере новый материал Blinn и переименуйте его в HammerHandlematerial.
9.
Теперь опробуем новый способ применения материала. Перетащите материал Hammer Handlematerial средней кнопкой мыши на рукоятку молотка в трехмерном представ лении. Теперь рукоятка должна иметь материал HammerHandlematerial.
Быстрое начало: создание анимации в Maya 8.5
109
10. Выберите материал HammerHandlematerial в гипершейдере. В редакторе атрибу тов щелкните на образце цвета рядом с атрибутом ColoR и в окне выбора цвета вы берите по своему усмотрению оттенок коричневого цвета. 11. Создайте еще один материал Blinn и переименуйте его в HammerHeadmaterial. 12. Измените атрибут цвета материала HammerHeadmaterial на темно-серый. При жела нии можно опробовать и другие атрибуты материала, чтобы увидеть их воздействие. 13. Примените материал HammerHeadmaterial к объекту била молотка. 14. Создайте новый материал Lambert и переименуйте его в FlooRmaterial. 15. Измените атрибут цвета материала FlooRmaterial на цвет, близкий к цвету дерева, и примените его к полу. Сохраните проделанную работу и переходите к следующему разделу, чтобы научиться устанавливать ключевые кадры.
Анимация по ключевым кадрам Установка ключевых кадров (setting keyfRame) — это главный способ анимации объек тов в Maya. Ключевые кадры (keyfRame) на временной шкале устанавливают тогда, когда необходимо задать значение для некоторого атрибута объекта на данном кадре. Если ат рибут имеет разные значения в двух ключевых кадрах, то при воспроизведении кадров временной шкалы между ними значение этого атрибута интерполируется (вычисляется) для каждого промежуточного кадра. Предположим, например, что для шарика в позиции (0, о, 0) в первом кадре был ус тавлен ключевой кадр, затем в кадре 50 для него был установлен второй ключевой кадр, а позиция изменена на (0, 10, 0). Теперь при воспроизведении анимации шарик будет пе ремещаться из позиции (о, 0, 0) в позицию (0, 10, 0) на протяжении 50 кадров. Таким образом, в кадре 25 позиция шарика составит (0, 5, 0). Для успеха анимации следует правильно установить предпочтения анимации на сце не. Чтобы получить доступ к предпочтениям, щелкните на прямоугольной пиктограмме справа от изображения ключа в правом нижнем углу рабочего пространства Maya (рис. 2.30).
Рис. 2.30. В окне Preferences можно изменить конфигурацию анимации сцены, например задать диапазон вре менной шкалы и параметры воспроиз ведения
110
Глава 2
Здесь можно задать диапазон временной шкалы сцены, заполнив поля Playback End Time (Время конца воспроизведения) и End Time (Время конца), расположенные справа от временной шкалы (рис. 2.31). Для примера в этой главе в обоих полях задано значение 3 00. (Подробную информацию об использовании временной шкалы см. в главе 1, "Интерфейс Maya".)
Рис. 2.31. Текстовое поле Playback End Time (слева) позволяет задать конец диапазона воспроизведения, а текстовое поле End Time (справа) устанавливает конец диапазона анимации
Как установить ключевой кадр Ключевые кадры можно создавать несколькими способами. В следующих разделах обсуждаются все эти способы, а также рассматриваются их преимущества и недостатки.
Подход S Самый простой способ установить ключевой кадр — это выделить объект и нажать клавишу <S>. В результате будет создан ключевой кадр для каналов позиции, поворота, масштаба и видимости объекта. Хотя нажимать клавишу < S > каждый раз, когда необхо дим ключевой кадр, очень просто, это не лучший подход, поскольку при анимации зачас тую необходимо устанавливать ключевые кадры на каналы независимо от друг друга. Пример подхода S и его ограничения демонстрирует следующий пример. 1.
На новой сцене Maya создайте полигональный куб, выбрав пункт меню create => Polygon Primitives => Cube • (Создать => Полигональныепримитивы => Куб • ) .
2.
Удостоверьтесь, что первым является кадр 1, а последним — кадр 300. (Введите эти значения с обеих сторон временной шкалы.) Теперь временная шкала должна вы глядеть так, как на рис. 2.32.
Рис. 2.32. Первым указан кадр 1, а послед ним — кадр 300. Скорость воспроизведения принята по умолчанию и составляет 24 кадра в секунду. Воспроизведение этою диапазона от начала до конца займет 12,5 секунды 3.
Установите индикатор текущего времени (серая вертикальная полоса временной шкалы) на кадр 1. Чтобы установить ключевые кадры для всех каналов положения куба, нажмите клавишу <S>. Обратите внимание, что в панели каналов все эти кана лы изменили белый цвет на персиковый. Это означает, что для выделенного объекта установлен ключевой кадр.
4.
Перейдите к кадру 300, переместив на него индикатор текущего времени. Установите для атрибута t R a n s l a t e X значение 10 и нажмите клавишу <S>. В результате будет
Быстрое начало: создание анимации в Maya 8.5
111
установлен второй ключевой кадр. Если воспроизвести анимацию, щелкнув на кнопке Play (Воспроизвести), то куб переместится из позиции (0, 0, 0) в позицию (10, 0, 0) на протяжении 300 кадров. 5.
Предположим, что куб необходимо переместить по криволинейной траектории. Пе рейдите к кадру 150 и установите для атрибута tRanslateZ значение 5. Чтобы ус тановить здесь новый ключевой кадр, нажмите клавишу <S>. Теперь при воспроиз ведении анимации куб будет перемещаться по дуге от позиции (0, 0, 0) в первом кад ре к позиции (5, 0, 5) в кадре 150, а затем к позиции (10, 0, 0) в кадре 300.
6.
До сих пор установка ключевых кадров с помощью клавиши < S > работала прекрас но. Предположим, что от кадра 1 до кадра 300 куб должен совершить полный оборот (т.е. значение канала RotateY должно измениться от 0 в кадре 1 до 36 0 в кадре 300). Поскольку для значения канала RotateY уже был установлен ключевой кадр в кадре 1, то устанавливать его заново ненужно. Перейдите к кадру 300 и установите для канала RotateY значение 360. Чтобы установить здесь ключевой кадр, нажмите клавишу <S>.
7.
Воспроизведите анимацию. Обратите внимание на то, что куб не вращается до кадра 150. Дело в том, что первоначально в кадре 150 ключевые кадры были установлены для всех каналов и канал RotateY имел значение 0. Поэтому между кадрами 0 и 150 угол поворота куба не изменяется, а между кадрами 150 и 300 составляет 360°. Тра ектория куба представлена на рис. 2.33.
Рис. 2.33. Установка ключевых кадров с помощью клавиши <S> может затруд нить коррекцию и настройку анимации 8.
Исправим анимацию. Перейдите к кадру 150, установите для канала RotateY значе ние 280 и задайте ключевой кадр. Теперь при движении по траектории куб соверша ет полный оборот. Непосредственной установки значения каналу поворота в кадре 150 можно было бы избежать, если бы использовался лучший подход установки ключевых кадров.
Анимацию зачастую создают в два этапа: сначала расставляют главные ключевые кадры, а затем добавляют дополнительные между ними. Однако когда ключевые кадры
112
Глава 2
вслепую установлены для всех каналов, добавлять новые ключевые кадры и редактиро вать детали становится трудно. Используйте метод установки ключевых кадров с помо щью клавиши <S> только тогда, когда абсолютно уверены, что хотите установить клю чевой кадр для каждого канала. В следующем разделе описан самый распространенный метод установки ключевых кадров.
Установка ключевых кадров для определенных каналов При анимации ключевые кадры устанавливают только для тех каналов, которые имеют отношение к создаваемому движению. Например, при создании анимации вра щающегося глобуса значение имеет только канал поворота, который изменяет его угол. Таким образом, если впоследствии глобус понадобится перемещать, это можно будет сделать без проблем, поскольку для каналов положения никаких лишних и ненужных ключевых кадров не установлено. В следующем упражнении создадим точно такую же анимацию, как и в предыдущем примере, но будем использовать альтернативный подход. 1.
На новой сцене Maya создайте полигональный куб, выбрав пункт меню create => Polygon Primitives => Cube • (Создать => Полигональныепримитивы => Куб • ) .
2.
Удостоверьтесь, что первым является кадр 1, а последним — кадр 300.
3.
Установите индикатор текущего времени на кадр 1. Выделите куб, щелкните правой кнопкой мыши на канале tRanslatex и в появившемся контекстном меню выбери те пункт Key Selected (Установить ключевой кадр для выбранного). Теперь в кадре 1 для канала tRanslateX куба установлен ключевой кадр. Проделайте то же самое для канала translateZ. Обратите внимание на то, что персиковым цветом выделе ны только каналы translateX и translateZ.
4.
Перейдите к кадру 300. В поле канала translateX куба введите значение 10. Уста новите ключевой кадр только для этого канала. Поскольку куб в конечном счете предполагается перемещать в дуге, установите также ключевой кадр для канала translateZ. (Его значением все еще должен быть 0.) При воспроизведении анима ции (кнопка Play (Воспроизвести) в элементах управления воспроизведения) куб перемещается из позиции ( 0 , 0, 0) в позицию ( 1 0 , 0 , 0) на протяжении 300 кадров.
5.
Перейдите к кадру 150. В поле канала translateZ куба введите значение 5. Устано вите для этого канала ключевой кадр. Другие каналы пока не имеют ключевых кад ров. Если воспроизвести теперь анимацию, то куб переместится по дуге из позиции ( о , о, 0) в первом кадре в позицию ( 5 , 0, 5) в кадре 150 и завершит движение в пози ции ( 1 0 , о, 0) в кадре 300. Зачастую ключевой кадр необходимо установить сразу для всех трех каналов — по ложения, поворота и масштабирования. Комбинация клавиш <Shift+W> устанавли вает ключевой кадр для каналов tRanslateX, translateY и translateZ; <Shift+E> устанавливает ключевой кадр для каналов RotateX, RotateY и RotateZ; <Shift+R> — ключевой кадр для каналов scaleX, scaleY и scaleZ.
6.
Поскольку для каналов поворота куба никаких ключевых кадров не установлено, анимацию вращения можно создать независимо от ключевых кадров перемещения, которые были установлены ранее. Перейдите к кадру 1 и установите ключевой кадр для канала RotateY со значением 0.
Быстрое начало: создание анимации в Maya 8.5 7.
113
Перейдите к кадру 300, присвойте каналу RotateY значение 360 и установите клю чевой кадр для этого канала. Если теперь воспроизвести анимацию, то при переходе из позиции кадра 1 в позицию кадра 300 куб совершит полный оборот.
Автоматическая установка ключевых кадров Автоматическая установка ключевых кадров (auto keyfRame) — это еще один способ установки ключевых кадров. Чтобы выбрать ее, щелкните на пиктограмме с изображени ем ключа (Auto KeyfRame) в нижнем правом углу рабочего пространства Maya. Когда эта возможность разрешена (пиктограмма выделена красным цветом), Maya автоматически устанавливает ключевые кадры для каналов, значения которых изменяются при перехо де от одного кадра к другому. Чтобы продемонстрировать этот подход в действии, вос создадим пример с кубом, используя автоматическую установку ключевых кадров. 1. На новой сцене Maya создайте полигональный куб, выбрав пункт меню create => Polygon Primitives => Cube • (Создать => Полигональные примитивы => Куб • ) . 2.
Удостоверьтесь, что первым является кадр 1, а последним — кадр 300.
3. Разрешите автоматическую установку ключевых кадров, щелкнув на пиктограмме Auto KeyfRame (Автоматическая установка ключевых кадров), как показано на рис. 2.34. В результате она окрасится красным цветом.
Рис. 2.34. После щелчка на кнопке Auto KeyfRame Мауа автоматически устанавли вает ключевые кадры 4. Хотя автоматическая установка ключевых кадров и разрешена, необходимо уведо мить Мауа о каналах с исходными ключевыми кадрами. Установите индикатор те кущего времени на кадр 1. Выделив куб, щелкните левой кнопкой мыши на канале trans latex, а затем, нажав клавишу , щелкните левой кнопкой мыши на ка нале translateZ, чтобы оба они стали выделенными. Щелкните на них в панели каналов правой кнопкой мыши и в появившемся контекстном меню выберите пункт Key Selected (Установить ключевой кадр для выбранного). 5.
Перейдите к кадру 300. Введите для канала tRanslateX куба значение 10. Если воспроизвести кадры временной шкалы сейчас, то можно заметить, что Мауа автома тически создала ключевой кадр для канала translateX в кадре 300.
6. Поскольку значение канала translateZ изменялось не от 0, Мауа не устанавливала для него ключевой кадр. Хотя ключевой кадр для значения 0 по каналу translateZ в кадре 300 можно было бы установить вручную, подождем, пока Мауа сделает это автоматически. 7. Перейдите к кадру 150. Введите для канала tRanslateX куба значение 5. Если вос произвести кадры временной шкалы сейчас, то можно заметить, что куб переместил ся по дуге до кадра 150, а затем по прямой — до кадра 300.
114
Глава 2
8.
Чтобы заставить куб двигаться к цели по дуге, перейдите к кадру 300 и установите для канала translateZ значение 0. Поскольку значение канала translateZ было изменено по отношению к прежнему ключевому кадру (кадр 150), Maya автоматиче ски установит ключевой кадр в кадре 300.
9.
В кадре 300 установите для канала RotateY куба значение 360. Обратите внимание, что канал RotateY остается подсвеченным белым, пока не появятся другие ключе вые кадры, со значением которых можно сравнить его значение. Вручную установите ключевой кадр для канала RotateY и перейдите к кадру 1. Измените значение кана ла RotateY на 0. Здесь Maya должна автоматически создать ключевой кадр для ка нала RotateY. Если воспроизвести анимацию теперь, то куб, перемещаясь из пози ции кадра 1 в позицию кадра 300, совершит полный оборот.
Редактор анимационных кривых Редактор анимационных кривых позволяет визуально редактировать анимационные кривые всех допускающих установку ключевых кадров атрибутов объекта (см. главу 1, "Интерфейс Maya"). Как правило, анимация в общих чертах создается в трехмерном ра бочем пространстве, а затем подстраивается и редактируется в редакторе анимационных кривых. Здесь для анимации вращающегося куба попробуем максимально использовать возможности только редактора анимационных кривых. 1.
На новой сцене Maya создайте полигональный куб, выбрав пункт меню create => Polygon Primitives => Cube • (Создать => Полигональные примитивы => Куб • ) .
2.
Удостоверьтесь, что первым является кадр 1, а последним — кадр 300.
3.
В панели инструментов слева от рабочего пространства Maya расположен набор пик тограмм предварительно заданных компоновок. Выберите четвертую пиктограмму. (Если навести указатель мыши на эту пиктограмму, появится подсказка Persp/Graph.) Если не удается найти эту пиктограмму, выберите пункт меню W i n d o w => Saved Layouts => PeRsp/GRaph (Окно => Сохраненные компонов-
ки => Перспектива/Редактор анимационных кривых). В результате рабочее простран ство должно содержать перспективное представление в верхней панели и редакторе анимационных кривых — в нижней (рис. 2.35). Если такая компоновка панелей рабочего пространства выглядит чересчур беспоря дочной, редактор анимационных кривых можно запустить в отдельном плавающем окне, выбрав пункт меню W i n d o w => Animation Editors => GRaph Editor (Окно => Редакторы ани мации => Редактор анимационных кривых). 1.
Удостоверьтесь, что режим Auto KeyfRame (Автоматическая установка ключевых кадров) отключен. Переместите индикатор текущего времени на первый кадр, при свойте каналам куба tRanslateX, translateZ и RotateY значение 0, выделите их в панели каналов и установите для всех ключевой кадр, выбрав пункт меню Key Selected (Установить ключевой кадр для выбранного).
2.
Обратите внимание на то, что как только для каналов tRanslateX, translateZ и RotateY были установлены ключевые кадры, они появились в редакторе анимаци онных кривых (левая панель).
3.
Перейдите к кадру 300. Чтобы не вводить значения в панели каналов, установим ключевые кадры для значения 0 каналов tRanslateX, translate и RotateY. Те-
Быстрое начало: создание анимации в Мауа 8.5
115
перь в редакторе анимационных кривых должна быть видна прямая линия и две чер ные точки в кадрах 1 и 300 (рис. 2.36).
Рис. 2.35. Компоновка PeRsp/GRaph позволяет одновременно работать и в трехмерной сцене, и в редакторе анимационных кривых
Рис. 2.36. Ключевые кадры для значения О каналов translate, translateZ и RotateYустановлены на кадрах 1 и 300 4.
Если теперь воспроизвести анимацию, то никаких действий не будет, поскольку зна чения, для которых установлены ключевые кадры, одинаковы. В первую очередь для кадра 300 следует организовать перемещение куба по оси X на 10 единиц. Выделите канал translateX в левой панели редактора анимационных кривых. Чтобы выбрать ключевой кадр, щелкните на его черном маркере левой кнопкой мыши. Нажав кла вишу <Shift> (чтобы перемещать по прямой), перетащите его средней кнопкой мы ши вверх. (В перспективном представлении куб после этого переместится вниз по оси X.) Переместите маркер ключевого кадра вверх примерно до значения 10. Мож но также уменьшить его масштаб, переместив мышь влево при нажатой правой кнопке и клавише .
5.
Обратите внимание, как трудно добиться, чтобы канал tRanslateX получил именно значение 10. Для выбора режима вертикальной привязки щелкните на пиктограмме с изображением магнита, расположенной справа в меню пиктограмм редактора ани мационных кривых. Попробуйте перетащить ключевой кадр снова, и убедитесь, на сколько облегчилась привязка к целым числам. Привяжите его к значению 10, как показано на рис. 2.37.
116
Глава 2
Рис. 237. Переместите ключевые кадры в редакторе анимационных кривых, пере таскивая их маркеры средней кнопкой мыши 6.
В редакторе анимационных кривых можно также создавать ключевые кадры. Выбе рите инструмент A d d Keys Tool (Инструмент добавления ключевых кадров), щелк нув на пиктограмме в меню пиктограмм редактора анимационных кривых. Выбе рите в левой панели редактора анимационных кривых канал translateZ, а затем щелкните левой кнопкой мыши в любом месте на синей линии графика, чтобы вы брать ее.
7.
Выделенная линия станет белой. Добавьте ключевой кадр, щелкнув средней кнопкой мыши ближе к центру линии. Появится новый маркер ключевого кадра (рис. 2.38).
Рис. 238. Используя инструмент Add Keys и среднюю кнопку мыши, добавьте ключе вой кадр на линию в необходимой позиции 8.
Безусловно, есть шанс, что ключевой кадр удастся поставить точно в кадр 150. В про тивном случае щелкните левой кнопкой мыши где-нибудь на кривой и, нажав кла вишу < W > , вернитесь в режим выбора и перемещения. Щелкните левой кнопкой мыши на новом ключевом кадре, а затем, нажав клавишу <Shift> и среднюю кнопку мыши, переместите его горизонтально так, чтобы он оказался в кадре 150. (Вероятно, масштаб представления придется увеличить.)
Нажав клавишу < F > в редакторе анимационных кривых, кривую можно перемещать вер тикально и горизонтально, — так легче редактировать ключевые кадры. 9.
Нажав клавишу <Shift>, переместите с помощью средней кнопки мыши ключевой кадр вертикально вверх на 5 единиц. Теперь кривая должна выглядеть так, как на рис. 2.39.
10. И наконец, необходимо организовать вращение куба. Выберите в редакторе анима ционных кривых канал rotate , найдите его ключевой кадр, установленный для кадра 300, и установите значение 360. 1 1 . Если теперь воспроизвести анимацию, то куб, перемещаясь от кадра 1 до кадра 300, совершит полный оборот.
Быстрое начало: создание анимации в МАЗа 8.5
117
Рис. 2.39. Эта анимационная кривая соответствует изменению значения канала translateZ npu анимации
Блокировка каналов Иногда при анимации имеет смысл блокировать (lock) некоторые каналы, когда за ранее известно, что они не будут использоваться. Блокировка каналов объектов, которые должны перемещаться, вращаться или масштабироваться только по одной оси, предо хранит от случайной установки ключевых кадров для этих каналов, особенно при ис пользовании таких средств, как Key All (Установить ключевой кадр для всего) или Auto KEYFRAME (Автоматическая установка ключевых кадров). Чтобы блокировать канал, выделите его в панели каналов, щелкните правой кнопкой мыши и в появившемся контекстном меню выберите пункт Lock Selected (Блокировать выбранное). Выделенный канал окрасится серым цветом и не будет допускать ни редак тирования, ни установки ключевых кадров. Чтобы разблокировать канал, выберите его в панели каналов, щелкните правой кнопкой мыши и в появившемся контекстном меню выберите пункт Unlock Selected (Разблокировать выбранное). Существует достаточно Много других возможностей для управления каналами, опи санных в главе 7, "Основы анимации". М О Л О Т О К И ГВОЗДЬ,
часть шестая: анимация
В этом упражнении создадим анимацию молотка, забивающего гвоздь в пол. Здесь будет использовано большинство методов, описанных ранее в этом разделе. Движение будет состоять из четырех ударов — двух слабых, а затем двух сильных. Четырех ударов вполне хватит, чтобы загнать гвоздь в пол. Это упражнение состоит из многих этапов, большинство из которых повторяется. К счастью, эта анимация довольно простая, поэтому в данном случае повторенье — мать ученья. 1.
Продолжим предыдущий пример с молотком и гвоздем (можно воспользо ваться файлом step4 .mb на прилагаемом CD). Создайте новую камеру, вы брав пункт меню create => CameRas =>CameRa (Создать => Камеры => Камера). В результате в исходной точке появится новый объект камеры.
2.
Выделите камеру и выберите пункт меню Panels => Look ThRough Selected (Панели => Вид сквозь выбранное). Теперь, перемещая новую камеру по сце не, можно увидеть все, что она снимет при визуализации.
3.
Установите новую камеру в позицию -14, 5, -6 по каналам tRanslateX, tRanslateX и translateZ соответственно. Установите ее угол -17, -115, О по каналам rotate, rotate и rotate соответственно. Теперь вид
118
Глава 2 сквозь камеру должен соответствовать рис. 2.40. Заблокируйте камеру в этом поло жении, выделив ее каналы положения и поворота, щелкните правой кнопкой мыши в панели каналов и выберите в появившемся контекстном меню пункт Lock Selected (Блокировать выбранное).
Рис. 2.40. Чтобы увидеть то, что снимет определенная камера, используйте пункт меню Look THROUGH Selected 4.
В области временной шкалы главного окна МАЗа введите в поля START Time (Время начала) и Playback START Time (Время начала воспроизведения) значение кадра 1, а в поля End Time (Время конца) и Playback End Time (Время конца воспроизведе ния) — значение кадра 200.
5.
Чтобы облегчить выбор объектов при анимации, откройте иерархическую структуру, выбрав пункт меню W i n d o w => Outliner (Окно =>Иерархическая структура) или ком поновку панелей PeRsp/Outliner (Перспектива/Иерархическая структура).
6.
Выберите группу Nail и присвойте ее атрибуту tRanslateX значение 0 . 5 .
7.
Выберите группу HammerSmallTaps и присвойте ее атрибуту tRanslateX значе ние 2.5, а. атрибуту translateZ — значение 0.35. Поскольку теперь молоток оста ется только вращать, заблокируем каналы перемещения для этой группы.
8.
В данном примере есть только один объект (молоток), взаимодействующий и управ ляющий другим объектом (гвоздем). Чтобы лучше увидеть момент касания объек тов, переключим представление на ортогональный вид сбоку. Для этого выберите пункт меню Panels => ORthogRaphic =>Side (Панели => Ортогональная => Сбоку). Кроме того, перейдите в режим каркасного представления, нажав клавишу <4>. Теперь сцена должна выглядеть так, как на рис. 2.41.
9.
Перейдите к кадру 1. Снова выделите группу HammerSmallTaps и присвойте ее ат рибуту rotate значение 20. Выберите канал rotate в панели каналов, щелкните на нем правой кнопкой мыши в панели каналов и в появившемся контекстном меню выберите пункт Key Selected (Установить ключевой кадр для выбранного).
Быстрое начало: создание анимации в Maya 8.5
119
Рис. 2.41. Объекты в каркасном виде сбоку готовы к анимации 10. Перейдите к кадру 20. Установите ключевой кадр для значения 2.5 канала rotate группы HammerSmallTaps. Это послужит исходной позицией при слабом ударе по гвоздю на следующем этапе. 11. Перейдите к кадру 25. Установите ключевой кадр для значения 2.3 канала rotate группы HammerSmallTaps. 12. Оставьте молоток в этой позиции на протяжении нескольких кадров. Перейдите к кадру 35 и установите следующий ключевой кадр для значения 2 .3 канала rotate группы HammerSmallTaps. 13. Если перейти к кадру 22, то можно будет заметить, что именно в этом кадре молоток фактически вступает в контакт с гвоздем. Поскольку гвоздь должен начинать движе ние после этого кадра, установите ключевой кадр для канала tRanslateX гвоздя. 14. Перейдите к кадру 25. Установите ключевой кадр для значения 0.025 канала tRanslateX объекта Nail.
15
Перейдите к кадру 55. Установите ключевой кадр для значения 25 канала rotate группы HammerSmallTaps.
16. Перейдите к кадру 60. Установите ключевой кадр для значения -5 канала rotate группы HammerSmallTaps. 17. Вернитесь к кадру 59. Выберите объект Nail и установите ключевой кадр для его канала tRanslateX. (Он все еще должен иметь значение 0. 025, оставшееся от пре дыдущего ключевого кадра.) 18. Перейдите к кадру 60. Установите ключевой кадр для значения -0.36 канала tRanslateX объекта Nail.
120
Глава 2
19. ЕСЛИ воспроизвести анимацию, то молоток нанесет два осторожных удара по гвоздю. При каждом ударе гвоздь немного войдет в пол. Если при создании сцены по этим инструкциям возникли проблемы, ее можно загрузить с прилагаемого CD (файл step5PaRtl .mb). Этот файл можно открыть и для того, чтобы сравнить с созданной анимацией, или для продолжения остальной части этого упражнения.
Теперь создадим анимацию сильных ударов молотка. Разверните в иерархической структуре группу HammerSmallTaps, чтобы получить доступ к группе HammerLaRgeSwings. Поскольку опорная точка группы HammerLaRgeSwings установлена ближе к концу рукоятки молотка, удары получатся сильнее. 1.
Перейдите к кадру 75. Установите ключевой кадр для значения 0 канала rotate группы HammerSmallTaps.
2.
Поскольку речь идет о большем движении, молотку необходим для него более дли тельный промежуток времени. Перейдите к кадру 100 и установите ключевой кадр для значения 40 канала rotate группы HammerLaRgeSwings.
3.
Перейдите к кадру 105. Установите ключевой кадр для значения -3.5 канала
4.
Выберите в иерархической структуре объект Nail и перейдите к кадру 104. Устано вите ключевой кадр для значения - 0.36 канала tRanslateX объекта Nail.
5.
Перейдите к кадру 105. Установите ключевой кадр для значения -0.7 канала trans1ateY объекта N a i 1 .
6.
Чтобы оставить молоток неподвижным на протяжении нескольких кадров, перейди те к кадру 115, выделите группу HammerLaRgeSwings и установите ключевой кадр для канала rotate. (Он должен иметь прежнее значение - 3 . 5 . )
7.
Перейдите к кадру 135. Установите ключевой кадр для значения 40 канала rotate группы HammerLaRgeSwings.
8.
Перейдите к кадру 140. Установите ключевой кадр для значения -4 канала rotate группы HammerLaRgeSwings.
9.
Последним движением молотка будет его медленный подъем назад в воздух. Перей дите к кадру 180 и установите ключевой кадр для значения 45 канала rotate группы HammerLaRgeSwings.
rotate
группы
HammerLaRgeSwings.
10. Последним элементом анимации является движение гвоздя при последнем ударе. Перейдите к кадру 139 и установите ключевой кадр для значения -0.7 канала tRanslateX объекта Nail.
11. Перейдите к кадру 140. Установите ключевой кадр для значения -0.83 канала tRanslateX объекта Nail.
12. Верните представление назад к первой камере (CameRal), выбрав пункт меню Panels => PeRspective => CameRal (Панели =>Перспектива => Камера1), и воспроизведи-
Быстрое начало: создание анимации в МАЗа 8.5
121
те анимацию! Сохраните работу и переходите к следующему разделу, чтобы нау читься создавать освещение сцены. Хотя анимационные кривые и не редактировались, любую из них можно выбрать и просмотреть в редакторе анимационных кривых.
Простое освещение Подробно освещение рассматривается в главе 11, "Освещение при анимации", но час тично затронем его здесь, чтобы обеспечить при визуализации внешний вид созданных объектов. Наиболее популярными являются такие источники света, как прожектор (spot), точечный (point) и направленный (diRectional). На рис. 2.42 представлена сфера, визуализированная при освещении источниками света трех разных типов.
Прожектор
Точечный источник света
Направленный источник света
Рис. 2.42. Визуальный эффект при освещении прожектором, точечным источником света и направ ленным источником света Источник света типа прожектор имеет вполне определенное направление и положе ние. Его можно расположить в любом месте трехмерного пространства и направить с по мощью атрибутов rotate, rotate и rotate. Любой объект, попадающий внутрь конуса света от такого источника, становится освещенным. Для управления размером конуса света прожектора используется его параметр Cone Angle (Угол конуса). Пара метры PenumbRa Angle (Угол полутени) и DRopoff (Спад) управляют мягкостью краев светового потока и снижением его интенсивности в зависимости от расстояния. Точечный источник распространяет свет во всех направлениях и имеет определенное положение. Точечным источником света является лампочка. По мере удаления от такого источника его свет теряет интенсивность, создавая мягкое освещение. Направленные источники света, как правило, используются для имитации удаленных источников света, таких как солнце. Они не имеют определенного положения, зато име ют направление.
Молоток
И ГВОЗДЬ,
часть седьмая: освещение
В этом упражнении на сцену молотка и гвоздя будет добавлено простое освещение. Пока не будем вникать в такие подробности, как типы теней, и создадим простые источ ники света, которые осветят объекты сцены. 1.
Продолжим предыдущий пример с молотком и гвоздем (можно воспользоваться файлом step5PaRt2 .mb на прилагаемом CD). Создайте направленный источ ник света, выбрав пункт меню create => Lights => DiRectional Light (Создать => Источники света => Направленный источник света).
Глава 2
122 2.
Выделите направленный источник света и установите для его атрибутов rotate, rotate и rotate значения - 5 0 , - 7 0 и 0 соответственно. Поскольку направлен ный источник света не имеет позиции, устанавливать значения атрибутов его поло жения не нужно.
3.
Откройте редактор атрибутов. Во вкладке diRectionalLightShapel установите для ат рибута Intensity значение 0 . 5 . Интенсивность задает яркость источника света.
4.
Создайте прожектор, выбрав пункт меню create => Lights => Spot Light (Создать => Источники света => Прожектор).
5.
Выделив прожектор, установите для его атрибутов tRanslateX, tRanslateX и translateZ значения - 1 0 , Д 5 и 3, а для атрибутов rotate, rotate и rotate —
значения - 5 7 , -82 и 0 соответственно. При уменьшенном масштабе сцена в перспек тивном представлении должна выглядеть так, как показано на рис. 2.43.
Рис. 2.43. Направленный источник света и прожектор обеспечат достаточно света для визуализации анимации 6.
В редакторе атрибутов установите для атрибута Intensity прожектора значение 0.7, а для параметра PenumbRa Angle (Угол полутени) — значение 4. Эти значения обеспечат белый мягкий направленный свет по всей сцене. Сохраните работу и пере ходите к следующему разделу.
В следующем разделе описаны основы визуализации, благодаря которой можно уви деть результаты постановки освещения. Начав визуализацию и получив первые кадры, поэкспериментируйте с другими источниками света и их атрибутами.
Визуализация кадров 1
Последним этапом рабочего процесса анимации в Maya является визуализация кад ров. Визуализация (Rendering) — это процесс вычисления геометрических форм, освеще ния, материалов, специальных эффектов, движения и др. для создания изображений.
Быстрое начало: создание анимации в МАYA 8.5
123
Этой теме посвящены глава 13, "Основы визуализации", и глава 14, "Улучшенная визуа лизация с помощью mental Ray", а здесь рассматриваются лишь основы визуализации.
Параметры визуализации Прежде чем начать визуализацию, МАЗа необходимо сообщить некоторую информа цию. Визуализируется ли отдельное изображение или последовательность изображе ний? Какой размер должно иметь изображение? Следует ли пожертвовать временем, чтобы получить при визуализации более качественный результат, или нужна относи тельно быстрая визуализация при вполне приличном качестве изображения? Все эти факторы, а также многие другие можно задать в окне Render Settings (Параметры ви зуализации). Для доступа к этому окну (рис. 2.44) выберите пункт меню Window => Rendering Editors => Render Settings (Окно => Редакторы визуализации =>
Параметры визуализации).
Рис. 2.44. Окно Render Settings Параметры в первом раскрывающемся списке задают систему визуализации, исполь зуемую МАЗа. Каждая из них предназначена для собственных задач, однако пока, не вда ваясь в подробности, оставим значение Maya SoftwaRe (Программная визуализация). Первый основной раздел, Image File Output (Результирующий файл изображения), по зволяет указать, как МАЗа будет именовать и сохранять изображения, получаемые при визуа лизации. Поле File Name PRefix (Префикс имен файлов) позволяет задать имя изображения или мультфильма, получаемого в результате визуализации. Раскрывающийся список FRame/Animation Ext (Расширение кадр/анимация) позволяет уточнить имена одиночных кадров и их последовательностей (если их несколько). Раскрывающийся список Image FoRmat (Формат изображения) позволяет выбрать формат сохраняемых при визуализации
Глава 2
124
изображений. Раскрывающийся список Renderable CameRa (Визуализирующая камера) в разделе Renderable CameRas (Визуализирующие камеры) позволяет выбрать камеру, ис пользуемую при визуализации. Раздел Image SiZe (Размер изображения) позволяет задать размер и разрешение изо бражения. Обратите внимание на то, что чем больше размер изображения, тем дольше длится визуализация. Окно Render Settings (Параметры визуализации) содержит вкладки, соответствую щие выбранной системе визуализации. Чтобы ознакомиться с параметрами, относящи мися к программной системе визуализации, щелкните на вкладке Maya SoftwaRe (Программная визуализация) (рис. 2.45).
Рис. 2.45. Вкладка Maya SoftwaRe ок на Render Settings позволяет изме нить параметры системы про граммной визуализации Не будем рассматривать все параметры вкладки Maya SoftwaRe (Программная визуа лизация), затронем лишь те из них, которые могут существенно повлиять на продолжи тельность визуализации и качество результата. В первом разделе, Anti-Aliasing Quality (Качество сглаживания), можно задать общие параметры качества в раскрывающемся списке Quality (Качество). Обычно заданного по умолчанию уровня качества вполне дос таточно. Значение PReview Quality (Качество предварительного просмотра) идеально подходит для визуализации пробных кадров (подробнее об этом — в следующем разде ле), а значение PRoduction Quality (Производственное качество) обычно используют при финальной визуализации.
Быстрое начало: создание анимации в Maya 8.5
125
Выбрав параметры визуализации, соответствующие текущей задаче, закройте окно Render Settings (Параметры визуализации). Теперь при всех последующих операциях визуализации будут использованы параметры; выбранные здесь. Поскольку эти пара метры сохраняются в файле проекта, их не придется восстанавливать, если сцена будет закрыта и открыта вновь.
Визуализация пробных кадров По завершении установки параметров все готово к началу визуализации. Как прави ло, пробные кадры визуализируют для того, чтобы проверить материалы, модели, осве щение, эффекты и эффективность. Поскольку такие кадры предназначены только для проверки, для их визуализации не требуется максимально возможное качество. Чтобы визуализировать кадр, щелкните в строке состояния Maya на кнопке Render The CuRRent FRame (Визуализировать текущий кадр) Ш. В качестве альтернативы можно, выбрав пункт меню Window => Rendering Editors => Render View (Окно => Редакторы ви зуализации => Вид визуализации), открыть окно Render View (Вид визуализации) (рис. 2.46).
Рис. 2.46. Окно Render View позволяет просмотреть результат визуализации текущего кадра Чтобы визуализировать текущий кадр для данного ракурса камеры, щелкните на пикто грамме Redo PRevious Render (Повторить предыдущую визуализацию), расположенной в ле вой части панели пиктограмм окна Render View (Вид визуализации), либо выберите пункт меню Render => Render Region (Визуализация => Визуализировать область). По мере усложнения сцены время визуализации увеличивается. Иногда визуализи ровать приходится не весь кадр, особенно, если нужно проверить не всю сцену, а только ее часть. Щелчок на кнопке Render Region (Визуализировать область) позволяет нари совать на изображении прямоугольник и визуализировать только эту область. Для этого щелкните левой кнопкой мыши на изображении и нарисуйте прямоугольник, задающий визуализируемую область, а затем щелкните на кнопке Render Region (Визуализировать область) или выберите пункт меню Render => Render Region (Визуализация => Визуализировать область). Интерактивная фотореалистичная визуализация (InteRactive PhotoRealistic Rendering — IPS) позволяет быстро корректировать при визуализации такие параметры,
126
Глава 2
как атрибуты освещения и материалы. Не будем пока вдаваться в технические подробно сти IPR, заметим лишь то, что это средство полезно при выборе материала, источника света или сглаживания, без необходимости повторять весь процесс визуализации. Чтобы применить IPR, откройте окно Render View (Вид визуализации) и визуализируйте текущий кадр. С помощью левой кнопки мыши нарисуйте область на изображении, а затем щелкните на пиктограмме IPR или выберите пункт меню IPR => Redo PRevious IPR Render (IPR => Повторить предыдущую визуализацию IPR). После внесения изменений в материал, источник света или атрибут объекта область IPR будет автоматически визуализирована зано во, что позволит быстро просмотреть результат визуализации. Несмотря на то что IPR вполне подходит при изменении значений различных атри бутов, она не будет реагировать на перемещение объектов или изменение вида. При вне сении столь существенных изменений для просмотра их результатов нужна визуализа ция без IPR.
Визуализация анимации Анимация (animation) — это последовательность визуальных изображений, воспроиз веденных с определенной частой. Хотя окно Render View (Вид визуализации) позволяет визуализировать отдельные кадры, в наборе меню Rendering (Визуализация) существует пункт меню Render => Batch Render (Визуализация => Пакетная визуализация), который позволяет визуализировать последовательности изображений. Для запуска пакетной визуализации необходимо задать некоторые параметры с по мощью меню Render Settings (Параметры визуализации). Заметьте, что в разделе Image File Output (Результирующий файл изображения) окна Render Settings (Параметры ви зуализации) параметры START FRame (Начальный кадр), End FRame (Конечный кадр), By FRame (По кадру) и FRame Padding (Дополнение кадра) по умолчанию заблокированы (см. рис. 2.44). Выберите в раскрывающемся списке FRame/Animation Ext (Расширение кадр/анимация) значение name. #. ext. Это означает, что создаваемые изображения бу дут иметь формат MyScene . 0 0 1 . i f f , MyScene . 002 . i f f и т.д. После выбора допустимого значения в списке FRame/Animation Ext (Расширение кадр/анимация) параметры START FRame (Начальный кадр), End FRame (Конечный кадр), By FRame (По кадру) и FRame Padding (Дополнение кадра) станут доступны. Присвойте параметру START FRame (Начальный кадр) номер первого подлежащего визуализации кадра, а параметру End FRame (Конечный кадр) — номер последнего подлежащего ви зуализации кадра. Параметр By FRame (По кадру) позволяет задать приращение между визуализируемыми кадрами. Как правило, здесь имеет смысл оставить значение 1. Па раметр FRame Padding (Дополнение кадра) позволяет указать количество цифр, исполь зуемых в номере кадра. Например, значение 4 привело бы к созданию файлов с именами MyScene. 0 0 0 1 . i f f , а значение 2 - е именами в формате MyScene. 0 1 . i f f . Перед ви зуализацией имеет смысл проверять это значение, чтобы удостовериться в достаточности возможных имен файлов для предполагаемого количества кадров. Если имен не хватит, кадры будут перезаписаны. МОЛОТОК
и гвоздь, часть восьмая: визуализация
Теперь, когда анимация проекта завершена, можно приступать к его визуализации. Для осуществления пакетной визуализации сцены воспользуйтесь следующей последо вательностью действий.
Быстрое начало: создание анимации в Maya 8.5
127
1. Продолжим предыдущий пример с молотком и гвоздем (можно воспользо ваться файлом s t e p 6 .mb на прилагаемом CD). Откройте окно параметров визуализации, выбрав пункт меню Window=>Rendering Editors => Render Settings (Окно => Редакторы визуализации => Параметры визуализации). 2. Удостоверьтесь, что в раскрывающемся списке Render Using (Используемая система визуализации) выбрано значение Maya SoftwaRe (Программная ви зуализация), а на вкладке C o m m o n (Общие) в поле File Name PRefix (Префикс имен файлов) введено имя файла — HammerAndNail. В раскры вающемся списке FRame/Animation Ext (Расширение кадр/анимация) долж но быть выбрано значение name.#.ext. Оставьте в раскрывающемся списке формата файла значение Maya IFF. 3. Введите в поле START FRame (Начальный кадр) значение 1, а в поле End FRame (Конечный кадр) — значение 200. Измените значение параметра FRame Padding (Дополнение кадра) на 3. В результате имена результирую щих файлов будут иметь формат HammerAndNail. 0 0 1 . if f. Теперь окно параметров визуализации должно выглядеть так, как показано на рис. 2.47.
Рис. 2.47. Эти параметры визуали зации предназначены для создания набора кадров от 1 до 200 4.
В раскрывающемся списке Renderable CameRa (Визуализирующая камера) раздела Renderable CameRas (Визуализирующие камеры) выберите пункт A d d Renderable CameRa (Добавить визуализирующую камеру). Теперь ка мера CameRal стала визуализирующей. Чтобы предотвратить визуализацию
Глава 2
128
перспективного представления, щелкните на пиктограмме trashcan рядом с пиктограммой persp. 5.
Перейдите к вкладке Maya SoftwaRe (Программная визуализация). В рас крывающемся списке Quality (Качество) выберите пункт PRoduction Quality (Производственное качество). Это автоматически установит для разнооб разных параметров визуализации значения наивысшего уровня качества. Закройте окно Render Settings (Параметры визуализации). Если что-то в упражнении с молотком и гвоздем пошло не так, его сцену в текущем со стоянии можно загрузить из файла s t e p 7 . mb с прилагаемого к книге CD.
6.
Перейдите к набору меню Rendering (Визуализация). Выберите пункт меню Render => Batch Render (Визуализация => Пакетная визуализация). В резуль тате Maya визуализирует 200 кадров.
7.
По завершении визуализации (в строке ответа, расположенной в правой нижней части рабочего пространства Maya, появится надпись "Rendering Completed" (Визуализация завершена)) полученную анимацию можно просмотреть с помощью приложения FCheck, входящего в комплект Maya. В приложении FCheck выберите пункт меню File => Open Animation (Файл => Открыть анимацию) и выберите первый кадр готовой анимации в папке Hammer_and_nail\images.
Резюме Несмотря на то что в данной главе все этапы рабочего процесса рассматриваются до вольно поверхностно, она знакомит читателя с полным перечнем выполняемых работ и является хорошим подспорьем в изучении Maya. В ней описаны структура проекта, спо собы создания и редактирования объектов, а также их структура, включая опорные точ ки, структуру узла и применение материалов. Кроме того, в этой главе описана установка ключевых кадров, постановка освещения и визуализация сцены.
Полигональное моделирование В этой главе улучшенный и расширенный набор инструментальных средств Maya 8.5 для полигонального моделирования рассматривается на практическом примере. Персо нажа, которого предстоит создать в этом примере, зовут Машизмо (Machismo), это силач типа Боба Парра (Bob PaRR) из мультфильма "Суперсемейка" (The IncRedibles). Однако в отличие от мистера Супергероя (MR. IncRedible) Машизмо стремится привести свое те ло в форму, хотя его голова все еще пустая. При создании Машизмо будет использовано большинство доступных в Maya инст рументов полигонального моделирования (а возможно, и несколько сценариев MEL, расширяющих возможности Maya). Кроме того, здесь рассматриваются те области ин терфейса Maya и возможности визуального отображения, которые лучше изучать в про цессе моделирования. Прочитав эту главу, можно получить хорошее представление об инструментах и методах полигонального моделирования. •
Концепция многоугольников
•
Принципы полигонального моделирования
•
Подготовка к моделированию
•
Создание модели Машизмо
•
Моделирование тела Машизмо
Что такое многоугольник Под многоугольником (polygon) в дальнейшем будем подразумевать трехмерную ма тематическую конструкцию, состоящую из трех или более точек, имеющих координаты X, Y и Z в трехмерном пространстве. Точки имеют не только позиционные значения (positional value), но и порядок, в котором они связаны друг с другом. Этот порядок оп ределяет сторону, в которую обращена поверхность многоугольника (ориентацию). (Данная тема рассматривается в следующем разделе.) Ориентацию многоугольника ука зывают нормали к поверхности многоугольника, как показано на рис. 3 . 1 . Многоугольники — это первый способ трехмерного моделирования, существующий уже десятилетия. Практически вытесненные при разработке реалистичных персонажей, NURBS-поверхности (Non-UnifoRm Rational B-Spline — неоднородный рациональный бисплайн) недавно возродились благодаря появлению более быстрых компьютеров, деше вой RAM, мощных видеокарт и, в известной степени, SDS-поверхностей. Один из самых немногочисленных в прошлом, ныне набор инструментов полигонального моделирова-
130
Глава 3
ния Maya, развился в чрезвычайно мощные и универсальные средства работы с релье фом, позволяющие художнику создавать любые вообразимые формы.
Рис. 3.1. Два многоугольника с отобра жаемыми нормалями и порядком точек. Обратите внимание на то, что порядок точек многоугольников определяет на правление их поверхностей
Иллюстрация к направлению поверхности Давайте проиллюстрируем на простом примере фундаментальные концепции много угольников. 1. Откройте расположенный на компакт-диске файл T R i a n g l e s . m b . 2.
Выделите оба треугольника рамкой или щелкните на них, нажав клавишу <Shift>.
3.
Для этих треугольников в окне параметров Custom Polygon Display (Представление отдельных многоугольников), доступном после выбора пункта меню Display => Custom Polygon Display • (Представление => Представление
отдельных многоугольников • ) , указано отображение нормалей и номеров вершин (рис. 3.2). Номера вершин указывают порядок их создания. Обратите внимание, что вершины справа были созданы в порядке против часовой стрел ки, а вершины слева — по часовой стрелке.
Рис.32. Окно параметров Custom Polygon Display
Полигональное моделирование
131
Тонкая линия, выходящая из центра многоугольника, называется нормалью поверхно сти (suRface noRmal) и указывает направление, в котором обращен многоугольник. Соз дание многоугольника по часовой стрелке приводит к тому, что он обращен в сторону от области просмотра, а создание вершин против часовой стрелки направляет его поверх ность в сторону к области просмотра. Почему это так важно? Измените в окне параметров Custom Polygon Display (Представление отдельных многоугольников) значение параметра Backface Culling (Не пока зывать невидимые поверхности) на On (Включено) и щелкните на кнопке Apply (Применить). Обратите внимание, что треугольники, нормали которых смотрели в сторону от камеры, исчезли, поскольку обратные стороны поверхностей при отображении не должны быть видимыми. При работе со сложными моделями, чтобы ускорить отображение результата работы и облегчить выделение вершин и граней, разработчики зачастую выключают отобра жение невидимых поверхностей. Кроме того, при соединении двух полигональных объектов важно убедиться, что многоугольники обоих объектов имеют одинаковую ориентацию. Про ще всего сделать это, выбрав параметр Backface Culling или отобразив нормали.
Принципы полигонального моделирования В полигональном моделировании авторы придерживаются нескольких принципов. Они перечислены в приведенном ниже списке советов, следуя которым можно добиться успеха. Соблюдение этих принципов может занять больше времени, но избавит от не приятностей в будущем. Вот эти принципы. •
Лучше всего использовать четырехугольные многоугольники (fouR-Sided polygon), или четырехугольники (quad), как они будут называться с этого момента. Они хорошо деформируются и преобразуются в другие типы поверхностей. Кроме того, с ними хорошо работает большинство инструментальных средств редактирования Maya.
•
Если невозможно обойтись без треугольников (tRiangle) — используйте их, но если можно найти способ заменить их четырехугольниками, сделайте это.
•
Никогда не используйте многоугольники более чем с четырьмя сторонами. При ви зуализации они почти неизбежно приводят к таким проблемам, как деформация тек стуры, или даже к полному отказу системы визуализации.
•
Во время работы старайтесь не загромождать модель лишними элементами и оставь те ее топологию, основанную на четырехугольниках, это поможет сэкономить время при очистке в конце процесса. На рис. 3.3 показано несколько способов преобразова ния многосторонних многоугольников в четырехугольники.
Рис. 3.3. Преобразование 5-, 6-, 7-, 8- и 9-сторонних многоугольников (верхний ряд) в четырехугольники (нижний ряд)
132
Глава 3
•
В процессе моделирования всегда включайте запись истории создания (construction history). Это позволит впоследствии отредактировать модель с помощью раздела Inputs (Входящие) панели каналов. Корректировка атрибутов узла в разделе Inputs (Входящие) зачастую является самым быстрым способом изучения новых возмож ностей.
•
Почаще удаляйте историю. Это предотвратит замедление моделирования в резуль тате обработки ненужных узлов.
•
При необходимости обращайтесь к справке. Справочная система Maya непосредст венно связана с документацией по каждой команде. Кроме того, в окне параметров каждого инструмента есть пункт меню, который содержит сопутствующую инфор мацию.
•
Сохраняйте результат часто и инкрементно. Если моделирование зашло в тупик или произошла ошибка, от которой нельзя избавиться отменой последнего действия, возвращение к предыдущим версиям может сэкономить время. Чем дальше назад не обходимо вернуться, тем больше времени будет потеряно.
Создание Машизмо Фигура Машизмо обладает сбалансированным соотношением объема и деталей, вполне подходящим для изучения полигонального моделирования. Начнем с эскиза (drawing), который затем преобразуем в шаблон из линейных кривых NURBS. Это упро стит моделирование тела. Затем будем по частям моделировать тело, используя для это го различные имеющиеся в Maya инструменты полигонального моделирования. В главе 5, "SDS-поверхности", моделирование продолжится с использованием шаблона из линейных кривых NURBS, и, многоугольник за многоугольником, будет создана го лова. Затем преобразуем голову в SDS-поверхности и, редактируя иерархию, создадим детали поверхности. В главе 6, "Плавные модификации: дополнительные средства моде лирования", все внимание будет сосредоточено на создании плавных модификаций для Машизмо с использованием нескольких деформаторов Maya. В главе 12, "Тонирование и текстурирование при анимации", где рассматривается наложение текстур, для Машизмо будет создана карта UV.
Начнем с плана и подготовки Ни один профессиональный разработчик моделей не начинает без плана. Как только получен окончательный эскиз, художники рисуют персонаж во множестве поз, чтобы на примерах показать аниматорам специфику персонажа и что они долж ны делать. Эти эскизы помогают определить, как должен быть построен персонаж, где необходимо добавить детали или многоугольники и где можно позволить модели остаться "облегченной". Как минимум от художников следует добиться хорошей прорисовки на эскизах фаса и профиля персонажа. Что такое хороший эскиз? Первое и наиболее важное требование к эскизу заключается в том, чтобы детали одного его вида соответствовали или совмеща лись с деталями другого вида эскиза (рис. 3.4).
Полигональное моделирование
133
Рис. 3.4. Эскизное изображение тела и головы Ма шизмо. Обратите внимание на то, как совмещают ся детали, изображенные в виде спереди и сбоку
Линейные кривые NURBS — лучшие друзья разработчика полигональных моделей Перед созданием первого многоугольника, или примитива (primitive), базовой фор мы, из которых создаются полигональные поверхности, необходимо преобразовать ус ловный эскиз в форму, которую можно использовать для эффективной установки гра ней, вершин и объектов в правильных для них положениях. Обычно разработчики моде лей в качестве ориентиров для моделирования использовали эскизы, отображенные в плоскости изображения или под углом. Однако использование линейных (первой степе ни) кривых NURBS более эффективно. Настройка интерфейса
Чтобы облегчить процесс моделирования, настроим сначала интерфейс Maya. Работая в Maya, необходимо в некоторой степени изменять интерфейс. Поэтому, если уделить этому внимание в начале процесса, дальнейшие манипуляции с интерфейсом при анимации и ви зуализации станут проще. Ниже описано, как настроить интерфейс для следующих упраж нений по моделированию. 1. Выберите пункт меню Window => Settings/Preferences => Preferences (Окно => Параметры/ Предпочтения => Предпочтения). Чтобы сменить набор меню, в разделе Interface
134
2.
3.
4.
5.
6.
Глава 3 (Интерфейс) окна свойств Preferences (Предпочтения) выберите в раскрывающемся списке Menu Set (Набор меню) значение Polygons (Многоугольники). Для параметров Open Attribute Editor (Открывать редактор атрибутов) и Open Tool Settings (Открывать параметры инструмента) выберите значение Open In Separate (Открывать в отдельном окне), а для параметра Open Layer Editor (Открывать редактор слоев) выберите значение In Main Maya Window (В главном окне Maya). В расположенном слева разделе Categories (Категории) щелкните на Polygons Settings (Параметры многоугольников). Таким образом, можно получить доступ к параметрам представления всех новых полигональных объектов, это аналогично описанному ранее окну параметров Custom Polygon Display (Представление отдельных многоугольников). Сбросьте все флажки, кроме Edges Standard (Стандартные края). В расположенном слева разделе Categories (Категории) щелкните на Selection (Выделение) и в разделе Polygon Selection (Выделение многоугольника) щелкните на Select Faces With Whole Face (Выделять грани по всей грани). Это позволит выделять полигональную грань, щелкая на любой ее части. Вариант Select Faces With Center (Выделять грани по центру) требует щелкать в центре грани для ее выделения, а это не удобно. На время оставим предпочтения камеры, однако запомним, где они расположены. Что бы получить доступ к разделу Animate Camera Transitions (Анимировать перемещения камеры), выберите категорию Cameras (Камеры). Возможность анимировать изменения вида камеры — это замечательный инструмент, но его использование может привести к морской болезни. Тем не менее маломощная машина для обработки такой анимации, скорее всего, окажется чересчур медленной. Вот тут можно и отключить анимацию пе ремещения камеры, а также закрыть окно свойств Preferences (Предпочтения). Выберите пункт меню Display => Heads Up Display => Poly Count (Представление => Информационный дисплей => Количество многоугольников), чтобы отобразить полезную информацию о по лигональных компонентах на сцене, в объекте или выделенных компонентах.
Теперь есть окно моделирования, порядок в котором еще не наведен, но вполне обеспечи вающее предоставление необходимой для создания данной модели информации. Важно и то, что теперь известно, как в Maya изменить представление многоугольников. Многие моделирующие приложения могут создавать полигональные объекты, обла дающие длиной и шириной, но не глубиной. Такие объекты обычно называют ломаными линиями (polyline); разработчики моделей зачастую берут их за основу и с помощью вы давливания, добавления, обтяжки (lofting) и других операций создают многоугольники. Maya не поддерживает ломаные линии, но предоставляет взамен нечто лучшее и более гибкое: линейные (т.е. первой степени) кривые NURBS (linear NURBS curve). Линейные кривые NURBS состоят из прямолинейных отрезков, соединяющих точки редактирования (Edit Point — EP). С каждой точкой редактирования связана только од на контрольная вершина (Control Vertex — CV), поэтому каждый отрезок остается пря молинейным независимо от перемещения контрольных вершин или точек редактирова ния. Результат от перемещения этих точек по осям X, Y и Z вполне предсказуем. Для кривых NURBS второй и третьей степени это не так: от перемещаемого компонента за висит перемещение всей кривой. Но при работе с кривыми NURBS любой степени раз работчик модели может перемещаться по точкам редактирования или по контрольным вершинам с помощью клавиш управления курсором. В ортогональных представлениях это упрощает выделение отдельных точек. Многие начинают моделирование с полигональных объектов, представляющих три ортогональных вида (рис. 3.5). Для применяемых при создании Машизмо методов моде-
Полигональное моделирование
135
лирования использование такого шаблона проблематично. Чтобы продемонстрировать, на что будет похожа модель с низким разрешением при сглаживании в процессе визуа лизации, планируется создать версию Машизмо с помощью операции Maya Subdiv Proxy (Упрощение SDS). Увидеть другую сглаженную сторону модели при видимом плоском полигональном шаблоне невозможно. Для этого необходимо или повернуть окно про смотра к сглаженной стороне и обратно, что нарушает ход моделирования, или устано вить на сглаженную сторону вид со стороны камеры (camera view), что искажает пред ставление, или скрыть/показать полигональный шаблон с помощью слоев, что неприем лемо медленно. Что действительно необходимо, так это шаблон для моделирования, который может оставаться все время видимым и не закрывать обозрение. Создадим шаб лон, состоящий из линий. Чтобы импортировать изображение в определенную область просмотра или камеру, выберите пункт меню View => lmage Plane => Import Image (Вид => Плоскость изображения => Импорт изображе ния). Теперь можно манипулировать свойствами изображений в редакторе атрибутов.
Рис. 3.5. Многоугольник со схематическим эс кизом разделен на три отдельных вида и рас положен в трех ортогональных плоскостях
Создание линейного шаблона Откройте имеющейся на компакт-диске файл B o d y D r a w i n g . m b и установите в окне моделирования вид спереди, используя для этого окно оперативного досту па или меню Panels (Панели) области просмотра. Обведите вид спереди так, как описано ниже. 1. Выберите пункт меню Create => EP Curve Tool • (Создать => Инструмент кривой ЕР • ) . В раскрытом разделе ЕР Curve Settings (Параметры кривой ЕР) выберите для переключателя степени кривой (Curve Degree) значение 1 Linear (1, линейная), а для параметра Knot Spacing (Промежутки между узлами) — значение Uniform (Однородно).
136 2.
Глава 3 Увеличьте изображение так, чтобы голова, грудь и рука находились в центре области просмотра.
3.
Чтобы начать обводку, щелкните на линии центра на самой верхней точке головы.
4.
Продолжите обводку контура эскиза, как показано на рис. 3.6. Оставайтесь с наруж ной части линии и в случае ошибки возвращайтесь назад, чтобы отменить последнее действие, нажимая клавишу , или . При необходимости переместить область просмотра нажмите клавишу и переместите камеру сред ней кнопкой мыши.
Рис. 3.6. Обведите внешний контур фигуры. Обратите внимание на то, что для кривых меньшего радиуса кривизны требуется больше точек Е С Л И создаваемая линия не видна, то прежде всего убедитесь, что инструмент создания кривой (ЕР Curve) выбран. Затем переместите многоугольник вида спереди назад по оси Z. Помните, что этот инструмент создания кривой всегда работает на декартовой плоскости, перпендикулярной направлению просмотра. В данном случае это плоскость YX.
5.
Достигнув в паховой области линии центра, завершите создание линии, нажав кла вишу <Enter>. Если полученная линия не нравится, ее можно отредактировать. Для этого перейдите в режим выделения точек редактирования, щелкнув на ней правой кнопкой мыши и выбрав из появившегося контекстного меню пункт Edit Point (Точка редактирования). Затем перетащите точки в нужные позиции с помощью ин струмента Move (Перемещение), как показано на рис. 3.7. Чтобы выделить объект (линию), снова щелкните правой кнопкой мыши на линии и в появившемся контек стном меню выберите пункт Select (Выделить). В качестве альтернативы для пере ключения между режимами выделения компонентов и объектов можно использовать клавишу .
6.
Обведите все детали внутри внешнего контура линии. Голова будет смоделирована отдельно, поэтому обводить детали лица необязательно.
Полигональное моделирование 7.
137
Завершив обводку этих деталей, выделите в окне иерархической структуры (Outliner) все вычерченные кривые и сгруппируйте их, назвав группу FrontView_ CrvGrp. Область просмотра должна выглядеть так, как на рис. 3.8.
Рис. 3.7. Изменение формы кривой за счет перемещения точек редактирования
Рис. 3.8. Вид Машизмо спереди обведен, выделен и сгруппирован 8.
Для видов Машизмо сверху и сбоку повторите шаги 1-7. Получившиеся группы на зовите TopView_CrvGrp и SideView_CrvGrp соответственно.
Теперь, переместив и повернув, эти группы следует скомпоновать в готовый к приме нению шаблон. 1.
Выделите группу вида сбоку SideView_CrvGrp и, нажав клавишу < W > , выберите инструмент Move (Перемещение). Обратите внимание на то, что опорная точка этой группы имеет координаты 0, 0, 0 в пространстве XYZ. Ее необходимо поместить в центр группы. Для этого воспользуйтесь пунктом меню Modify => Center Pivot (Изменить => Центрировать опорную точку).
138
Глава 3
2. Чтобы правильно расположить группу, поверните ее на - 90° вокруг оси Y. 3.
Переместите эту группу вдоль оси X примерно на 8.786 единиц так, чтобы линия центра точно совпала с плоскостью YZ.
4.
Выделите группу вида спереди FrontView_CrvGrp и переместите ее вдоль оси X так, чтобы концы линии на вершине головы и в паховой области совместились с ана логичными точками плоскости YZ. Поскольку кривая создавалась в виде спереди, она уже находится на плоскости YX.
Существует хороший способ выделения: щелкнуть на кривой и нажать клавишу < U p > . При этом область выделения переместится вверх по иерархии, выделив расположенный выше узел группы. К сожалению, нажатие клавиши < Down > выделяет узел формы объек та, а не перемещает вниз по иерархии. 5.
Выделите группу вида сверху TopView_CrvGrp и выберите Modify => Center Pivot (Изменить => Центрировать опорную точку).
6.
Поверните группу TopView_CrvGrp на -90° вокруг оси X и правильно совместите ее, установив для канала translateX значение 0 . 5 7 , для канала translateY зна чение 5.242 и для канала translateZ — значение -. 068 (рис. 3.9).
пункт меню
Рис. 3.9. Вид сверху повернут и перемещен в позицию, как видно на виде спереди. Полигональные поверхности с эскизами скрыты, чтобы не загромождать рисунок 7.
Выделите три группы и сгруппируйте их. Назовите новую группу BodyCrvTempGrp.
8.
Создайте новый слой BodyCrvTempLyr и добавьте на него созданную группу. Должно получиться изображение, похожее на рис. 3.10.
9.
Сохраните файл как Mach_CrvTemp. mb.
Всегда присваивайте объектам, группам и слоям описательные имена. Для Мауа имя слоя и имя объекта D r a w P o l y одинаковы. Чтобы обеспечить различие между имена ми геометрических форм, групп, слоев и кривых, используйте суффиксы Geo, Grp, L y r и
DrawPoly
Полигональное моделирование
139
Crv. Так можно избежать случайного переименования и других, более опасных конфлик тов, возникающих при появлении двух объектов с одинаковыми именами. Возьмите эту хо рошую традицию за правило!
Рис. 3.10. Линейный шаблон без эскиза
Завершение шаблона Трехмерный шаблон, составленный из линейных кривых NURBS, у читателя уже есть. Если необходимо, можно начать моделирование прямо сейчас, но небольшая до полнительная работа на этом этапе в будущем обеспечит громадный выигрыш и эконо мию времени. В настоящий момент линии на ортогональных плоскостях плоские, и эта плоскостность является проблемой, так как она не всегда точно отражает действитель ные точки изменения направления контура фигуры. Больше всего это заметно в области запястья. В виде сверху рука отклонена немного назад от линии центра фигуры, но вид спереди для камеры остается плоским. Это означает, что наиболее объемной будет не средняя, а передняя часть запястья. Подобные вопросы требуется согласовать. Сделаем это следующим образом. 1. Отмените выделение всех линий, щелкнув на фоне окна моделирования. 2. Щелкните правой кнопкой мыши на линии внешнего контура кривых вида спереди и в появившемся контекстном меню выберите пункт Edit Point (Точка редактирования). 3. В режиме выделения компонентов выделите прямоугольником все точки редактиро вания, составляющие внешнюю часть кисти руки. 4. Нажав клавишу <Shift>, выделите все внутренние контурные линии, составляющие кисть руки. После этого они будут выделены как объекты. 5. Переместите все выделение назад вдоль оси Z ровно до тех пор, пока оно не станет продолжением середины запястья, как показано на рис. 3.11, а. 6. Выделите первую точку редактирования на руке и переместите ее вдоль оси Z ровно настолько, чтобы она расположилась поверх руки персонажа. Для этого необходимо
140
Глава 3 знать анатомию предплечья и где мышцы проходят в запястье. В случае сомнений используйте в качестве руководства рис. 3.11, б". Не забывайте, что далее в этой главе кривые будут обтянуты (loft). Их можно будет обвести позднее.
а
б
в
Рис. 3.11. Переместите точки редактирования кисти руки к остальным вдоль оси руки (а); откор ректируйте точки редактирования верхней части руки (б); переместите точки редактирования нижней части руки (в) 7.
Обойдите выделенные вершины верхней части руки (именно тут самое место ис пользовать клавиши управления курсором и < r i g h t > ) и по мере необходи мости переместите точки назад или вперед вдоль оси Z, чтобы они совпали с конту ром персонажа. В результате должно получиться что-то похожее на рис. 3.11, б.
8.
Повторите то же самое для нижней части руки и продолжите вниз по телу до пояса. Постарайтесь получить плавные переходы в области соприкосновения руки с телом в области мышц спины и на поясе, где контур почти полностью находится в середине тела. Полученный результат должен напоминать рис. 3.11, в. Обратите внимание на то, что самая широкая часть плеча располагается в месте утолщения бицепса, поэто му линия должна проходить по передней части руки.
Кривая вида сверху также нуждается в редактировании. Контур вдоль руки точный, но, чтобы лучше отразить толщину грудной мускулатуры Машизмо, в местах пересечения с ви дом сбоку в районе груди он должен быть ниже. Кроме того, необходимо также немного ниже переместить область кисти руки и запястья. Итак, изменим это следующим образом. 1.
Щелкните правой кнопкой мыши на кривой вида сверху и в появившемся контекст ном меню выберите пункт Edit Point (Точка редактирования).
2.
Перемещая каждую точку вдоль оси Y, создайте плавный переход между областью пересечения руки с телом и наиболее выступающей частью грудной мышцы (рис. 3.12).
Чтобы создать правую сторону шаблона, скопируем и зеркально отразим группы вида спереди и сверху — FrontView_CrvGrp и TopView_CrvGrps. 1. В окне иерархической структуры откройте группу BodyCrvTempGrp, щелкнув на знаке"'плюс", расположенном слева от имени группы.
Полигональное моделирование
141
Рис. 3.12. Отредактированные кривые вида сверху лучше отражают контуры в области грудной клетки и руки 2. Выделите группу FrontView_CrvGrp и нажатием клавиши < W > выберите инстру мент Move (Перемещение). 3. Поскольку опорная точка группы расположена не в начале глобальных координат, это необходимо изменить. Чтобы выбрать режим перемещения опорной точки, на жмите клавишу ( — на Macintosh). Обратите внимание на то, что изображение курсора изменилось. 4. Для привязки к сетке одновременно нажмите клавишу < Х > и переместите опорную точку группы в начало глобальных координат, как показано на рис. 3.13.
Рис. 3.13. Перемещение опорной точки группы вида спереди. Заметьте, что удерживание нажатой клавиши <Х> позволяет на время перейти в режим привязки к сетке 5. Чтобы выйти из режима перемещения опорной точки, еще раз нажмите клавишу . 6. Выберите пункт меню Edit => Duplicate • (Правка => Дублировать • ) . 7. Создайте зеркальную копию группы относительно оси X и подчините ее группе BodyCrvTempGrp, которой подчинена и исходная группа. Для этого введите в поле Scale X (Масштаб по оси X) (самое левое поле) значение - 1 , установите переключа тель Geometry Туре (Тип геометрической формы) в значение Сору (Копировать), а переключатель Group Under (Сгруппировать под) — в значение Parent (Подчинить). Чтобы создать копию, щелкните на кнопке Duplicate (Дублировать).
142
Глава 3
8.
Повторите шаги 2 - 7 для группы TopView_CrvGrp.
9.
Сохраните файл как Mach_CrvTmpDone. mb.
Моделирование тела Машизмо Теперь есть не только хороший план, но и хорошая основа, отталкиваясь от которой можно начать работу. Подготовка к созданию модели завершена, и теперь будет исполь зоваться относительно немного инструментов. Сначала, используя примитивы, создадим куб, который с помощью расширенного набора инструментов Мауа для редактирования многоугольников преобразуем в форму тела Машизмо. В следующих упражнениях предполагается, что при выборе каждого инструмента его па раметры установлены в значения по умолчанию. Далее параметры будут настроены, как необходимо. Начнем с создания куба для тела. 1.
Откройте файл сцены Mach_CrvTmpDone. mb. Щелкните на кнопке Four View Layout (Четырехпанельная компоновка) и установите в панелях виды сверху, спере ди, сбоку и в перспективе, если это еще не сделано.
2. Мауа предлагает такие примитивы, как Sphere (Сфера), Cube (Куб), C o n e (Конус), Plane (Плоскость), Cylinder (Цилиндр), Torus (Top), Prism (Призма) и Pyramid
(Пирамида), Pipe (Труба), Helix (Спираль), Soccer Ball (Футбольный мяч) и т.д. Для намеченной цели наибольшую гибкость планируемой формы обеспечит прими тив C u b e , поэтому выберите пункт меню Create => Polygon Primitives => C u b e •
(Создать => Полигональные примитивы => Куб • ) . 3.
Чтобы восстановить для параметров инструмента их значения по умолчанию, выберите в меню Edit (Правка) окна параметров Polygon Cube (Полигональный куб) пункт r e s e t Settings (Восстановить параметры по умолчанию). (Минимизация вероятности непред виденного поведения инструментов — хороший аргумент для того, чтобы после исполь зования сбросить значения его параметров в состояние по умолчанию.) 4.
В режиме интерактивного создания Мауа 8 можно, щелкнув кнопкой мыши, создавать и перемещать новые примитивы (эта возможность доступна в меню Create => Polygon Primitives (Создать => Полигональные примитивы)). Опробуйте это при создании куба. Щелкните на сцене и протащите курсор. Можете также щелкнуть на сцене, и куб будет соз дан в точке щелчка с параметрами по умолчанию.
5. Используя инструмент Universal Manipulator (Универсальный манипулятор), пере местите куб и измените его размеры в соответствии с рис. 3.14 При этом, чтобы лучше видеть соотношение между кубом и шаблоном, перейдите в режим каркаса, нажав клавишу <4>. К тому же, чтобы избежать случайного выделения или редакти рования шаблона, переведите его слой в режим ссылки, дважды щелкнув мышью на среднем поле возле имени слоя в редакторе слоев (рис. 3.15). После первого щелчка слой будет переведен в режим шаблона (template mode) и станет серым. После второ го щелчка линии NURBS станут черными и в рамке появится буква R, указывающая на то, что кривые слоя находятся в режиме ссылки: они видимы, но выделить их нельзя.
Полигональное моделирование
143
Рис. 3.14. После масштабирования и перемещения куб грубо подогнан под шаблон. Обра тите внимание на числовые значения, которые означают масштаб по разным осям
Рис. 3.15. Редактор слоев
Рабочий процесс моделирования с применением разделенного упрощения Одной из наиболее сильных сторон моделирования с использованием многоугольни ков в Maya является разделенное упрощение (subdiv proxy). С помощью этого инструмен та Maya дублирует исходный объект, состоящий из небольшого количества многоуголь ников (далее будем называть его упрощенным объектом (proxy object)), зеркально отра жает его, а затем сглаживает, используя узел p o l y S m o o t h P r o x y . С этого момента дубликат будем называть сглаженным объектом (smooth object). При изменении исход ной упрощенной формы автоматически обновляется сглаженная форма и получится предварительный просмотр (smoothed preview), демонстрирующий, на что будет похожа форма при сглаживании во время визуализации. Это позволяет разработчику модели работать с настолько небольшим количеством многоугольников, насколько это возмож но, и упрощает процессы оснащения (rigging), нанесения весовых коэффициентов и ани мации. Работа будет выполняться над половиной тела, поэтому зеркально отразим сгла женную форму, чтобы она всегда была на виду. Для создания разделенного упрощения выполните следующие действия.
144 1.
Глава 3 Выберите пункт меню Edit Mesh => Cut Faces Tool • (Редактировать сетку => Инструмент разрезания граней • ) . Как правило, этим инструментом делают инте рактивный разрез (interactive cut), который по существу разделяет многоугольники относительно задаваемой плоскости. В качестве альтернативы можно выбрать плос кость, в которой предстоит осуществить сечение, например YZ Plane (Плоскость YZ), ZX Plane (Плоскость ZX) или XY Plan (Плоскость XY). Выбор плоскости мо жет упростить размещение точек. В данном упражнении опробуйте плоскость YZ. Тем не менее установка флажка Extract The Cut Faces (Извлечь вырезанные грани) позволяет создавать не связанные между собой многоугольники, которые затем можно выделить в отдельные объекты, выбрав пункт меню Mesh => Separate (Сетка => Отделить). Извлеченные многоугольники можно даже сместить, введя зна чения в поля Extract Offset (Смещение извлекаемого) для трех координат. Несмотря на это, все что сейчас следует сделать, так это удалить вырезанные грани; поэтому ус тановите флажок Delete The Cut Faces (Удалить вырезанные грани).
2.
Используя компонент View Compass (Компас вида) перейдите к виду сверху, щелк нув на конусе Y.
3.
Выберите инструмент, щелкнув на кнопке Enter Cut Tool (Начать разрезание) окна Polygon Cut Faces Tool Options (Параметры инструмента разрезания граней), и в виде сверху, удерживая нажатой клавишу <Shift>, переместите мышь с нажатой кнопкой вертикально сверху вниз, как показано на рис. 3.16. Появившаяся пунктир ная линия направлена в сторону удаляемого набора многоугольников. Если необхо димо удалить многоугольники с другой стороны плоскости, переместите мышь с на жатой кнопкой в обратном направлении.
Рис. 3.16. Перемещение мыши с нажатой кнопкой вертикально сверху вниз удаляет левую сторону куба. Справа показан результат, полученный при установленном флажке Delete Cut Faces 4.
Закройте инструмент, выбрав инструмент Select (Выделение) или нажав клавишу .
5.
Выделите половину куба и выберите пункт меню Proxy => Subdiv Proxy • (Упроще ние => Разделенное упрощение • ) . Установите параметры, руководствуясь рис. 3.17, а
Полигональное моделирование
145
именно: сбросьте флажок Keep Geometry Borders (Сохранять границы геометриче ской формы) и установите переключатель Mirror Behavior (Тип отражения) в значе ние Half (Половина). Чтобы автоматически зеркально отражать сглаженную поло вину формы вдоль оси X, установите переключатель Mirror Direction (Направление отражения) в положение -X. Кроме того, чтобы сглаженный объект унаследовал ма териал исходной формы, установите переключатель Subdiv Proxy Shader (Тонер разделенного упрощения) в значение Keep (Сохранять). Можно установить флажки Subdiv Proxy In Layer (Поместить разделение упрощенного объекта на слой) и Smooth Mesh In Layer (Поместить сетку сглаженного объекта на слой). В этом слу чае обе формы будут размещены на отдельных слоях, которые можно назвать pCubelProxy и pCubelSmooth соответственно. Однако создать эти слои и помес тить на них формы можно в любой момент.
Рис. 3.17. Окно параметров раз деленного упрощения 6. Чтобы установить разделенное упрощение, щелкните на кнопке Subdiv Proxy (Упрощение SDS) (рис. 3.18).
Рис. 3.18. Сглаженный объект, находящийся слева, будет ин терактивно обновляться при выполнении действий над уп рощенным объектом, располо женным справа С данной методикой связано несколько комбинаций клавиш.
146
Глава 3
Клавиша
Действие
< ~ > (тильда)
Переключает между представлениями упрощенной и сглаженной сетки
< Shift + ~ >
Одновременно включает представление упрощенного и сглаженного объектов
Выбирает пункт меню Polygons => Subdiv Proxy (Многоугольники => Разделенное упрощение)
1
< Shift + Ctrl + ~ > Выбирает пункт меню Polygons => Subdiv Proxy • (Многоугольники => Разделенное упрощение •) <Page Up>
Увеличивает уровень разбиения сглаженного объекта
< Page Down >
Уменьшает уровень разбиения сглаженного объекта
Редактирование тела Конкретизация тела подразумевает разделение многоугольников и перемещение вершин в правильные позиции. Для эффективного разделения многоугольников необхо димо разумно использовать инструменты разделения и разрезания Мауа, а также иметь практический опыт сглаживания и разделения многоугольников. Несмотря на стремле ние иметь модель с как можно меньшим количеством многоугольников, придется созда вать еще и все необходимые детали, придающие модели хороший вид при сглаживании во время визуализации. Мауа обладает мощной, но порой сложной для управления опе рацией сглаживания. На рис. 3.19 продемонстрирована работа узла p o l y S m o o t h P r o x y Maya и показаны примеры моделирования. На рис. 3.19, а показано, как Мауа при сглаживании из двух многоугольников делает восемь, и демонстрируется, что однократное разбиение мно гоугольников в действительности увеличивает их количество в четыре раза. Вот поче му так важно овладеть навыками разумного и осторожного использования инструмен тов разделения, разрезания и подразбиения. Разделение упрощенного объекта посере дине многоугольников делает изгиб немного острей (см. рис. 3.19, б), но при переносе этого края вниз к углу изгиб в сглаженном объекте становится крутым (см. рис. 3.19, в). Фигуры на рис. 3.19, г-е демонстрируют, как уплотнить край, чтобы раз делением многоугольников возле краев восстановить резкость углов. Чем ближе друг к другу расположены края упрощенной модели, тем более острым будет угол или дру гая деталь на сглаженной модели.
Рис. 3.19. Пример разделенного упрощения, иллюстрирующий управление операцией сглажи вания в Мауа
Фактически количество зависит от метода сглаживания.
Примеч. пер.
Полигональное моделирование
147
Узел Maya p o l y S m o o t h F a c e (пункт меню Mesh => Smooth (Сетка => Сгладить)) сглаживает почти так же, как и узел Smooth Visually (Сгладить визуально), но порядок точек в объектах p o l y S m o o t h F a c e и p o l y S m o o t h P r o x y различный. При использовании деформаторов, корректная работа которых зависит от порядка точек, например BlendShape (Плавная мо дификация), этот факт оказывается критическим. При редактировании тела Машизмо имеет смысл сначала попытаться максимально отредактировать имеющиеся точки, чтобы привести их в соответствие с заданной формой, и только тогда, когда сделано все возможное, разрезать или разделить много угольники. Начинающие разработчики зачастую создают слишком сильное разбиение модели на начальном этапе работы, что приводит к необходимости в дальнейшем справляться с большим количеством точек. В данном случае разбиение и сглаживание модели будет сделано только один раз, после чего положение точек будут откорректи ровано. Подобный подход моделирования напоминает работу с глиной. Все начнется с больших общих форм и затем продолжится до моделирования конкретных деталей. Именно в этом суть блочного моделирования (box modeling). А теперь отредактируйте модель, как описано ниже. 1.
Перейдите в режим выделения вершин упрощенного объекта, щелкнув на нем пра вой кнопкой мыши и выбрав в появившемся контекстном меню пункт Vertex (Вершина). Выделяйте и перемещайте вершины так, чтобы они совпали с формой, показанной на рис. 3.20. В процессе перемещения вершин упрощенного объекта на блюдайте в правой панели за сглаженным объектом. Если на этом этапе сглаженный объект слишком грубый, то его плотность можно увеличить, нажав клавишу <PageUp>.
Рис. 3.20. Перемещение вершин в начале редактирования. Обратите внимание, как дале ко от линий шаблона простираются вершины упрощенного объекта, в то время как сглаженный объект остается почти полностью внутри контура
148
Глава 3
2.
Пока модель выделена в режиме выделения объектов, выберите пункт меню Mesh => Smooth • (Сетка => Сгладить • ) . В разделе Exponential Controls (Экспонен циальные элементы управления) сбросьте все флажки раздела Preserve (Сохра нять). Переключатель Map Borders (Границы карты) может быть установлен в зна чение Smooth Internal (Внутреннее сглаживание).
3.
Щелкните на кнопке Smooth (Сгладить). Должно появиться изображение, похожее на рис. 3.21.
Рис.321. После сглаживания количество обрабатываемых точек увеличилось, но все еще осталось вполне управляемым Теперь отредактируем объект сглаженного упрощения, используя инструмент пере мещения по нормали, а также возможность обходить (pick-walk) вершины многоуголь ника с помощью клавиш управления курсором. Редактирование модели выполните так, как описано ниже. 1.
Перейдите в режим выделения вершин упрощенного объекта, щелкнув на нем пра вой кнопкой мыши и выбрав в появившемся контекстном меню пункт Vertex (Вершина).
2.
Чтобы открыть маркированное контекстное меню инструмента Move (Перемещение), нажав и не отпуская клавишу < W > , щелкните на вершине. Выберите значение Normal (Нормаль). Этот режим обычно используется для контрольных точек NURBS. Но при вытягивании отдельных вершин его можно использовать для быст рого перемещения точек как вдоль поверхности, так и наружу, по проходящей через вершину нормали. Это может быть полезно для выполнения поставленной задачи, поскольку при редактировании зачастую имеет смысл один раз вытянуть точку вдоль нормали, а не перемещать ее вдоль всех трех координатных осей X, Y, Z.
3.
Выделите вершину, указанную на рис. 3.22. Обратите внимание, что манипулятор ориентирован по осям U, V и N. В этом режиме он полезен для редактирования от дельных точек, так как позволяет переносить точки вдоль поверхности модели.
Полигональное моделирование
149
Рис. 3.22. Выделите вершину на переднем углу модели. Затем, используя клавиши управ ления курсором, обведите модель вокруг 4. В текущем окне вида сверху (чтобы сделать его текущим, щелкните на нем средней кноп кой мыши) выделите другую вершину, нажав клавишу управления курсором . Обратите внимание на то, что оси U и V изменили свое положение. Это демонстрирует, почему установленный в режим Normal инструмент Move (Перемещение) эффективен исключительно для одиночных точек: результат одновременного перемещения сразу не скольких точек в направлении U или V будет непредсказуемым. 5.
Перемещайте три передние вершины по нормали наружу до тех пор, пока сглаженный объект не увеличится и не совпадет с шаблоном. Заметьте, что вершина линии центра при перемещении двигается не параллельно плоскости линии центра, а перекрывает сглаженный объект. Обычно это нежелательно. Возможно, ее необходимо переместить назад по оси U до тех пор, пока она снова не займет положение на линии центра.
6. Продолжите обход фигуры, выделяя при этом каждую вершину, нажимая клавиши управления курсором либо щелкая мышью. Чтобы закончить модель фигуры в соот ветствии с рис. 3.23, перемещайте вершины или вдоль нормали, или вдоль локаль ных осей (переключаться между этими режимами можно в маркированном контек стном меню, которое появится после щелчка левой кнопкой мыши при нажатии и удержании клавиши < W > ) . Обратите внимание, что точки внизу упрощенной фигу ры перемещаются вверх. Область пояса и ноги будут обработаны позднее.
Разделение многоугольников — это вовсе не тонкости! Обычный рабочий процесс эффективного блочного моделирования заключается в создании ряда краев или вершин и перемещения их в надлежащие позиции. При создании таким способом деталей будет использовано несколько инструментов. Один из них, инструмент Cut F a c e s (Разрезание граней), уже был рассмотрен ранее. Здесь используются инструменты Split P o l y g o n (Разделение многоугольника) и
150
Глава 3
Edge L o o p (Петля краев). Сначала с помощью инструмента Split Polygon создадим пет лю краев вдоль грудной клетки, плеча и спины.
Рис. 3.23. Текущее состояние модели 1.
Щелкните правой кнопкой мыши на упрощенном объекте и в появившемся контек стном меню выберите пункт Select (Выделить). Инструмент Split Polygon (Разделение многоугольника) будет работать только в режиме выделения объектов.
2.
Выберите пункт меню Edit Mesh => Split Polygon Tool • (Редактировать сетку => Инструмент разделения многоугольников • ) . Установите параметр Divisions (Интервалы) в значение 1 и сбросьте флажки Split Only From Edges (Разделение только от краев) и Use Snapping Points Along Edge (Использовать точки привязки по краю). Это не позволит разделять многоугольники от середины. Далее необходи мо будет изменить направление линии краев, для чего потребуется поместить точку в середину грани и продолжить в перпендикулярном направлении. Установленный флажок Snap To Edge (Привязка к краю) запрещает это, разрешая располагать точ ки разреза только на краях. При установленном флажке Snap To Magnets (Привязка к магнитам) на крае, на котором щелкнули мышью, помещается определенное поль зователем множество точек привязки (магнитов, расположенных на равном расстоя нии друг от друга). Привязка не позволяет поместить точку в произвольном месте края, а от этой возможности отказываться не хочется.
3.
В окне перспективного представления щелкните левой кнопкой мыши на переднем крае упрощенного объекта и удерживайте ее нажатой, как показано на рис. 3.24, а. Удерживая нажатой кнопку мыши, можно перемещать зеленую точку вдоль этого края. Имейте в виду, что эта точка представляет новую вершину модели.
4.
Установите первую точку разреза, отпустив для этого кнопку мыши. Помните, что эту точку еще можно перемещать вдоль края, перетаскивая ее средней кнопкой мы ши. Если случайно еще раз щелкнуть на точке левой кнопкой мыши, то начнется
151
Полигональное моделирование
процесс установки другой точки разреза, которую необходимо удалить, нажав кла вишу или .
а
б
Рис. 3.24. Применение инструмента
в
г
Split Polygon
5.
Чтобы установить точку, как показано на рис. 3.24, б, щелкните на следующем крае. Не забывайте, что необходимо всего лишь создать линию краев, проходящую вдоль нижнего края грудной мышцы, затем вверх вокруг внешнего края мышцы плеча и вниз к середине спины.
6.
Продолжите до следующей точки, используя в качестве ориентира шаблон (см. рис. 3.24, в).
7.
Продолжайте разделение в соответствии с рис. 3.24, г.
8. Как только полный контур будет пройден, сделайте разрез, нажав клавишу <Enter>. 9.
Перейдите в режим выделения вершин упрощенного объекта, щелкнув для этого на нем правой кнопкой мыши и выбрав в появившемся контекстном меню пункт Vertex (Вершина). Используя инструмент Move (Перемещение), переместите вершины верхней части модели торса так, чтобы получить результат, подобный показанному на рис. 3.25.
Далее следует расположить вдоль бока модели вертикальную линию краев или вер шин. Их следует поместить по центру всех краев, которые расположены вокруг и вдоль бока упрощенного объекта. Для реализации этой операции можно было бы использовать инструмент Split Polygon (Разделение многоугольника), но с этой задачей гораздо быст рее справится инструмент Edge Loop (Петля краев). 1.
Выберите пункт меню Edit Mesh => Insert Edge Loop Tool • (Редактировать сет ку => Инструмент вставки петли краев).
Нововведением Мауа 8.5 является возможность установить в поле Multiple Edge Loops (Несколько петель краев) количество добавляемых петель краев, а также коли чество петель краев в параметрах инструмента Edge Loop (Петля краев). 2.
Щелкните левой кнопкой мыши на крае и, удерживая ее нажатой (рис. 3.26), прота щите курсор вдоль этого края. Обратите внимание на пунктирную линию, проходя щую через грани с обеих сторон края (см. рис. 3.26, посередине). Именно по этой ли нии будут добавлены разделяющие края.
152
Глава 3
Рис. 325. Текущее состояние упрощенного объекта. Обратите внимание на то, что в окне пер спективного представления вид со спины модели установлен с помощью компаса вида
Рис. 326. Разделение последовательности краев по передней стороне упрощенного объекта с помо щью инструмента Edge Loop
3.
Чтобы создать петлю (loop), отпустите левую кнопку мыши. Если после того как вы отпустите кнопку мыши выяснится, что разрез следовало провести в другом месте края, то можно или отменить разрез, или изменить его расположение. В последнем случае перейдите к списку Inputs (Входящие) панели каналов Channel Box и найди те узел p o l y S p l i t r i n g a Щелкните на имени узла, чтобы отобразить поле W e i g h t (Весовой коэффициент). Щелкните на имени этого атрибута и в области просмотра с помощью средней кнопки мыши интерактивно перетащите разрез, чтобы изменить его расположение.
Полигональное моделирование 4.
153
Чтобы модель не выглядела квадратной, после ее разрезания следует переместить как точки разрезанного края, так и точки с обеих его сторон. К счастью, этот процесс можно ускорить, переключив инструмент Move (Перемещение) в режим Normal (Нормаль), что позволит перемещать вершины вдоль нормали, а не вдоль их локаль ных осей. Закруглите мышцу плеча, а также грудную клетку и область шеи. Полу ченный результат должен быть похож на рис. 3.27, слева.
Рис. 3.27. Разрезанные и отредактированные края спины. Обратите внимание на то, как закруглены вершины нижней части торса Теперь сделаем то же самое со спиной модели. Для этого можно использовать любой инструмент на выбор, с этой работой справятся и инструмент Split Polygon (Разделение многоугольника), и инструмент Edge Loop (Петля краев). Инструмент Cut Faces (Разрезание граней) для этой задачи может не подойти, потому что режет объект по плоскости, а в этом случае вершины могут оказаться далеко от тех позиций, в которых они должны быть после редактирования. Поэтому, чтобы создать линию краев, показан ную на рис. 3.27, слева, используйте инструмент Edge Loop или Split Polygon. После это го переместите точки, чтобы они соответствовали завершенному состоянию, показанно му на рис. 3.27, справа. Во время редактирования упрощенного объекта не забывайте следить за сглаженным объ ектом, который показывает, как будет выглядеть завершенная модель сразу после сглажи вания для заключительной визуализации. Помните также и о том, что необходимо будет возвращаться назад и снова редактировать предыдущие точки. Добавление детали в ло кальную область изменяет позиции вершин, установленных ранее. Чтобы ускорить процесс, давайте сразу обсудим изменения, которые предстоит вне сти. Сейчас работа над моделью в основном идет сверху вниз. Завершим области плеч и груди, после чего продолжим от них работу вниз. Создадим две линии краев, начинаю щихся выше и ниже линии основания груди, а затем используем их для создания мышц плеча и добавления деталей спины. На рис. 3.28 два первых изображения показывают необработанные разделения, а третье и четвертое — отредактированную модель после разделения. Поскольку разделение необходимо начать вплотную к линии груди и про должать его до середины граней плеча и спины, для этой операции имеет смысл восполь зоваться инструментом Split Polygon (Разделение многоугольника).
154
Глава 3
Используя инструмент Offset Edge (Смещение края), можно создать дополнитель ные петли краев с обеих сторон существующей петли. Чтобы использовать этот инстру мент, выберите пункт меню Edit Mesh => Offset Edge Loop (Редактировать сетку => Смещение петли краев).
Рис. 3.28. Следующая серия модификаций должна начаться выше и ниже линии в основании груди
Седловина плеча и отверстие для шеи Необходимо уточнить область плеча и ключицы, а также создать отверстие для шеи, по контуру которого голова будет прикреплена к телу. С помощью инструмента Split Polygon (Разделение многоугольника) создадим две линии краев вокруг верхней части торса. Сейчас передняя верхняя часть плеч представляет собой резкую прямолинейную четырехугольную конструкцию. Необходимо добавить ряд многоугольников, которые окружат шею. (Впоследствии этот ряд будет использован для создания воротника.) Для изменения последовательности этих многоугольников воспользуемся инструментом Split Polygon (Разделение многоугольника). Этот процесс продемонстрирован на рис. 3.29. Выполните следующие действия. 1.
Выберите инструмент Split Polygon (Разделение многоугольника), затем в виде сверху щелкните сначала на крае линии центра, как показано на рис. 3.29, а затем на крае, расположенном под ним (на экране), чтобы установить точки разреза.
2.
Щелкните в середине расположенной ниже грани (каждый щелчок мышью устанав ливает очередную точку). Если для инструмента Split Polygon ранее был установлен флажок привязки к краю, то точка установлена не будет.
3.
Щелкните на крае, перпендикулярном краю, через который был осуществлен вход в грань.
4.
Продолжите движение через нижний многоугольник, щелкая на каждом пересе каемом крае. Если щелчок на следующем крае не установил точку разреза, то это значит, что предыдущая точка была установлена не на краю многоугольника, а в середине грани.
5.
Щелкните в середине следующей сверху грани, а потом на ребре сверху.
6.
Продолжите вертикальное разделение и закончите опять щелчком на крае линии центра на обратной стороне упрощенного объекта (см. рис. 3.29, а). Чтобы сделать разрез, нажмите клавишу <Enter>.
155
Полигональное моделирование
а
б
Рис. 3.29. Создание линии краев для седловины плеча: изменение направления в серединах граней нижних углов создает кольцо краев (а): разделение нижних уг ловых граней от угла до угла делает их четырехугольными (б) 7.
После разреза граней в нижних углах разделения образовались многосторонние мно гоугольники. Инструментом Split Polygon (Разделение многоугольника) соедините углы созданных граней, как показано на рис. 3.29, б.
8. Как обычно, сразу после создания краев следует переместить вершины в правильные позиции, чтобы модель не имела квадратный вид. Теперь создадим отверстие для шеи. 1. Используя инструмент Split Polygon (Разделение многоугольника), создайте оваль ную линию краев внутри только что вырезанного контура (рис. 3.30, а). Попытайтесь сделать так, чтобы эта линия прошла через точки пересечения краев или граней с ли ниями шаблона. 2.
Соедините углы граней с внешними только что созданными углами (см. рис. 3.30, б). Обратите внимание на результат: добавленные края направлены не перпендикуляр но друг другу, а радиально расходятся от будущей шеи.
3. Перейдите в режим выделения граней упрощенного объекта, щелкнув на нем правой кнопкой мыши и выбрав в появившемся контекстном меню пункт Face (Грань). Выделите все грани внутри краев последнего разделения, как показано на рис. 3.30, в. 4. Чтобы создать отверстие шеи, удалите грани. Результат показан на рис. 3.30, г.
Глава 3
156
Рис. 3.30. Прорежьте линию краев внутри вырезанного в предыдущем упражнении контура (а); разделите нижние многоугольники по углам (б); перейдите в режим выделения граней и выделите грани (в); удалите выделенные грани (г)
Создание плеча Машизмо — массивный персонаж, но даже при этом его плечи требуют немного большей проработки, чем сейчас. Поэтому создадим область дельтовидной мышцы с пет лей краев и ознакомимся с весьма полезным средством редактирования многоугольни ков — Merge То Center (Объединить к центру). До этого момента моделирование велось или по горизонтали вокруг персонажа, или вертикально вверх и вниз по торсу или по ра диусу от шеи. Теперь работа пойдет независимо от названных направлений. Создадим петлю так. В окне перспективного представления выберите инструмент Split Polygon (Разде ление многоугольника) и создайте линию многоугольников вокруг области плеча. Про должите линию вокруг спины персонажа (рис. 3.31).
Рис. 3.31. Создание первой линии краев для плеча При пересечении углов четырехугольников были созданы треугольники и пяти угольники. Некоторые из них необходимо откорректировать. Для этого существуют два способа. Во-первых, можно разделить пятиугольник от центра края одной из треуголь ных граней до дальнего угла пятиугольника (рис. 3.32). В результате будут созданы три четырехугольника. Этот способ пригоден в тех случаях, когда создаваемые детали позд нее будут необходимы для модели.
Полигональное моделирование
157
Рис.332. Коррекция пятиугольника путем разделения его и треугольника на три че тырехугольника Более консервативный с точки зрения количества многоугольников способ заключа ется в том, чтобы избавиться от треугольника, стянув его край. 1.
Перейдите в режим выделения краев упрощенного объекта, щелкните на нем правой кнопкой мыши и в появившемся контекстном меню выберите пункт Edge (Край).
2.
Выделите края оснований двух треугольников спереди торса и одного треугольника на спине, как показано на двух изображениях слева рис. 3.33.
Рис. 3.33. Выделение и стягивание соответствующих краев торса спере ди (слева) и сзади (справа)
Глава 3
158 3.
Чтобы удалить треугольники и преобразовать пятиугольники в четырехугольники, выберите пункт меню Edit Polygons => Merge То Center (Редактировать многоуголь ники => Объединить к центру) (см. рис. 3.33, справа). Объединение к центру годится и для граней, где оно работает подобно черной дыре, стягивающей все точки, гранича щие с ней, в единственную точку посередине стягиваемой грани.
4.
Как всегда, после создания новых краев откорректируйте вершины, чтобы восполь зоваться преимуществами новых добавленных деталей. Переместите вершины возле области шеи так, чтобы они в общих чертах соответствовали изображению на рис.
3.34, слева.
Рис. 334. Создание мышцы плеча с помощью второго множества краев посередине.
5.
Разделите линию краев в соответствии с рис. 3.34,
6.
Откорректируйте вершины, чтобы в общих чертах получить то же самое, что и на двух небольших изображениях справа (см. рис. 3.34).
7.
Удалите историю упрощенного объекта — и плечо создано.
Можно поинтересоваться, почему не были откорректированы треугольники и пятиугольни ки на боку торса? Это будет сделано при создании руки.
Усовершенствование живота Пока что живот Машизмо содержит мало деталей. Если в дальнейшем Машизмо планируется анимировать, то следует обязательно создать новые линии краев, спо собствующие плавной деформации. Сделаем это с помощью инструмента E d g e L o o p (Петля краев). 1. При выбранном инструменте Insert Edge Loop щелкните на одном из краев. Д л я создания линии краев переместите курсор туда, где необходимо добавить край, и нажмите клавишу < E n t e r > . Результат должен напоминать изображение на рис.
3.35,
слева.
2. Чтобы начать создание бокового выступа косых мышц, отредактируйте точки спере ди и на спине торса. 3. Чтобы спереди создать легчайший намек на брюшной пресс, вдавите точки вовнутрь, и получится что-то наподобие изображения на рис. 3.35, посередине. 4.
Чтобы создать больший наклон вниз к поясу, вдавите точки спины, как показано на рис.
3.35, слева.
Полигональное моделирование
159
Рис. 335. Начало создания линии живота с помощью инструмента Edge Loop 5. Чтобы продублировать петли краев при смещении, используйте инструмент Offset Edge Loop (Смещение петли краев). Для этого выберите пункт меню Edit Mesh => Offset Edge Loop (Редактировать сетку => Смещение петли краев). 6. Щелкните левой кнопкой мыши на одном из только что созданных горизонтальных краев и не отпускайте ее некоторое время. При этом появятся две пунктирные ли нии, как показано на рис. 3.36, слева. Если, продолжая удерживать кнопку мыши, пе ремещать мышь влево или вправо, то пунктирные линии будут перемещаться ближе или дальше от исходного края. Поместите разрезы посередине соответствующих им граней и выполните разделение, отпустив кнопку мыши.
Рис. 336. Детализация области косой мышцы, живота и спины с помощью инструмента Edge Loop в режиме Duplicate Edge Loop 7.
Откорректируйте положение точек, как показано на рис. 3.36, посередине и справа.
Существует возможность обхода нескольких колец или линий вершин с исполь зованием клавиш управления курсором, благодаря чему можно существенно сэко номить время. В помощь разработчику: и н ф о р м а ц и я о количестве многоугольников
Выполняя упражнения по моделированию, имеет смысл включить отображение справочной информации Maya о количестве многоугольников (в меню Display => Heads Up Display (Представление => Информационный дисплей) установите флажок Poly Count (Количество многоугольников)), поскольку в этой информации есть несколько важных пунктов. На ри сунке, приведенном ниже, показан текущий информационный дисплей (Heads Up Display — HUD) с пятью рядами информации.
Глава 3
160
Эти ряды в некоторой степени говорят сами за себя; они сообщают о количестве вершин, краев, полигональных граней, треугольников и точек UV (UVs). Тем не менее интерес тут представляет информация в колонках. В левой колонке показано количество элементов на сцене. В средней выведено их количество в текущих выделенных объектах. При моделиро вании наиболее интересной является правая колонка — она показывает количество вершин, краев, граней, треугольников и точек UV в текущем выделении компонентов. Поэтому, на ходясь в режиме выделения компонентов, не спускайте с нее глаз, а почему это следует де лать, продемонстрировано на рисунке. Кажется, что прямоугольник в режиме выделения вершин захватил три вершины, но информационный дисплей ясно показывает, что в теку щем выделении находятся четыре вершины. Очевидно, что была выделена вершина на спине модели. Перемещение вершин в этой си туации может стать катастрофой, поэтому необходимо повернуть модель, снять выделение со случайной вершины и выполнить коррекцию. Существуют и другие возможности применения информации HUD. •
Возможность удостовериться перед выдавливанием в том, что выделено правильное количество граней и краев.
•
Возможность убедиться, что при объединении вершин вдоль краев двух объектов было объединено соответствующее количество вершин.
Выдавливание поясницы и ноги А сейчас прервем разрезания и выполним несколько выдавливаний в области пояса. (extruding) — наиболее популярный инструмент в среде разработчиков моделей, поскольку он всегда создает четырехугольники и позволяет быстро добавить простые формы в определенную область, не прибегая к петлям краев. На примере ног Машизмо, представляющих собой отростки с длинными областями относительно глад ких фрагментов, можно рассмотреть функцию Smooth (Сгладить) инструмента Sculpt Geometry (Рельеф). Но сначала выдавим (extrude) пояс.
Выдавливание
1. Перейдите в режим выделения граней упрощенного объекта, щелкнув на нем правой кнопкой мыши и выбрав в появившемся контекстном меню пункт Face (Грань). 2.
Выделите грани внизу туловища, как показано на рис. 3.37, а.
Полигональное моделирование
161
Рис. 3.37. Выдавливание и придание формы области пояса 3. Выберите пункт меню Edit Mesh (Редактировать сетку) и убедитесь, что установлен флажок Keep Faces Together (Сохранять грани вместе). 4.
Выберите пункт меню Edit Mesh => Extrude (Редактировать сетку => Выдавить), и на экране появится изображение, похожее на рис. 3.37, б, показывающее начало выдав ливания. Для перемещения выдавливаемых граней операция Extrude (Выдавить) по умолчанию использует локальное пространство (на что указывает сплошная голубая пиктограмма). Щелчок на переключателе между глобальным и локальным простран ством (World/Local Space) позволяет перейти к осям глобального пространства (пиктограмма при этом становится пустой рамкой), что существенно упрощает пе ремещение, поворот и масштабирование.
5. Перетаскивайте выдавленные грани вниз до тех пор, пока они не окажутся примерно на линии промежности, как показано на рис. 3.37, в. 6. Обратите внимание, что сглаженный объект оказался искаженным в центре. Это произошло потому, что операция Extrude (Выдавить) выдавливает все грани, в том числе и грани вдоль центральной линии. Чтобы сохранить область вдоль централь ной линии открытой, а сглаженный объект неискаженным, выделите и удалите гра ни, параллельные центральной линии. Получившаяся область пояса должна быть похожа на изображение, приведенное на рис. 3.37, г. 7. Чтобы начать построение области пояса и ягодиц, переместите точки в соответствии с рис. 3.37, д, е. 8. Удалите историю и сохраните модель. Прежде чем можно будет выдавить ногу, необходимо сформировать промежность и разделение ягодиц. 1. Используя инструмент Split Polygon (Разделение многоугольника), вырежьте две линии краев, как показано на рис. 3.38, а, г.
Глава 3
162
г д е Рис. 3.38. Детализация паховой и ягодичной области Машизмо 2.
Чтобы создать выпуклость в паховой области и складку на ягодицах персонажа, мо дифицируйте точки, как показано на рис. 3.38, б.
3. С помощью инструмента Insert Edge Loop (Вставка петли краев) разрежьте линию краев горизонтально, а затем используйте эту деталь для закругления фигуры спере ди и сзади, как показано на рис. 3.38, д, е. Бок области пояса оставьте относительно плоским. Вытягиванием точек придайте некоторый объем области между ягодицами. Теперь перейдем к ноге. 1.
Перейдите в режим выделения граней упрощенного объекта.
2.
Выделите грани снизу туловища, как показано на рис. 3.39, а.
а
б
в
Рис. 3.39. Начало выдавливания ноги 3. Выберите пункт меню Edit Mesh => Extrude (Редактировать сетку => Выдавить) и сразу же перейдите в глобальное пространство, установив переключатель Local/World Space (Локальное/Глобальное пространство).
Полигональное моделирование
163
4. Перемещайте выдавливание вниз до тех пор, пока маркер манипулятора не окажется на уровне низа паховой области (см. рис. 3.39, б). 5. Изменяйте масштаб выдавливания вниз по оси Y до тех пор, пока выдавленные гра ни не станут плоскими, т.е. параллельными плоскости ZX (см. рис. 3.39, в). При по следующих выдавливаниях это упростит формирование ноги. 6. С помощью перемещения, масштабирования и изменения точек получите форму по перечного сечения ноги (см. рис. 3.39, в). 7.
Снова перейдите в режим выделения граней и выделите те же многоугольники, что и на шаги 2.
8. Выберите Edit Mesh => Extrude (Редактировать сетку => Выдавить) и еще раз переклю читесь на глобальное пространство. Затем переместите выдавливаемые грани прямо вниз, пока они не совпадут с самой объемной частью передней части колена. 9. С помощью перемещения, масштабирования и модификации точек добейтесь пра вильного вида обрабатываемой части ноги. 10. Повторите шаги 7 - 9 и продолжайте работу вдоль ноги, пока не будет получена фор ма, как на рис. 3.40. Используя инструменты Split Polygon (Разделение многоугольника) и выдавливание, начните создание ступни (рис. 3.41). Это не сложно: просто выдавливайте, аналогично тому, как это делалось для ноги, масштабируйте и перемещайте вершины формы ступни. Завершите создание ступни согласно рис. 3.42.
Рис. ЗЛО. Создание ноги с помощью выдавливания, перемещения и масштаби рования
Завершение создания колена Сейчас нога сконструирована так, что сустав колена, вращающийся только вокруг оси X, будет деформироваться неправильно. Грани спереди колена будут неприемлемо растягиваться, а грани на обратной стороне колена — неприятно сморщиваться. Необхо димо создать место для сгиба колена, сжав грани спереди колена и одновременно растя нув грани на его обратной стороне. Это можно сделать вытягиванием точек, но сущест вует и лучший способ.
164
Глава 3
Рис. 3.41. Разрежьте грани по всему периметру вокруг обрубка ступни. Преобразуйте образо вавшиеся треугольники и пятиугольники, а за тем выделите грани для последующего выдавли вания. Выдавите первую половину ступни
Рис. 3.42. Выдавите конец ступни и вытяните внутренние грани еще дальше. Сделайте два разреза вокруг ступни инструментом Insert Edge Loop. Придайте поперечным сечениям правильную форму с помощью масштабиро вания и перемещения. Установите все верши ны основания ступни на одной плоскости. Ин струментом Insert Edge Loop откорректи руйте нижний край ступни
1. В виде сбоку разрежьте инструментом Cut Faces (Разрезание граней) ряды краев по диагонали, как показано на рис. 3.43. 2.
Выделите по одному краю среди верхних и нижних горизонтальных краев и, чтобы выделить всю горизонтальную петлю краев, выберите пункт меню Select => Select Contiguous Edges (Выделение => Выделить смежные края). Если это не сработает, выделите края вручную, как показано на рис. 3.43, посередине.
3. Чтобы удалить выделенные края вместе с их вершинами, выберите пункт меню Edit Mesh => Delete Edge (Редактировать сетку => Удалить край). После нажатия клавиши будут удалены только края, а вершины останутся на своих местах. Создайте углубление под коленом и коленную чашечку, используя инструмент Offset Edge Loop (Смещение петли краев) следующим образом. 1.
Перейдите в режим выделения краев упрощенного объекта и выделите два края с об ратной стороны колена, как показано на рис. 3.44, слева.
Полигональное моделирование
165
Рис. 3.43. Изменение направления краев колена упростит анимацию
Рис. 3.44. Использование инструмента 2.
Offset Edge Loop
для создания углубления под коленом
Выберите пункт меню Edit Mesh => Insert Edge Loop Tool • (Редактировать сет ку => Инструмент вставки петли краев). Этот инструмент позволяет локально повы сить детализацию модели, сохраняя при этом ее четырехугольную топологию. На сколько далеко от исходных выделенных краев будут расположены скопированные края, определяется смещением. При значении по умолчанию, 0.5, скопированные края помещаются в середину окружающей их грани. Сейчас их надо поместить бли же, поэтому установите для параметра значение 0.25.
3. Чтобы завершить процесс дублирования краев, щелкните на кнопке Offset Edge (Смещение края). Насколько полезным в дальнейшем окажется применение этого средства, продемонстрировано на рис. 3.45.
Рис. 3.45. Создание колена с помощью инструмента внутрь вдоль оси X используется инструмент Scale
Offset Edge Loop.
Для перемещения точек
167
Полигональное моделирование
торса, что в дальнейшем облегчит присоединение руки к телу. Кроме того, так можно не тратить громадного количества времени на построение шаблона из кривых. не удается найти необходимый пункт меню, убедитесь, что вы выбрали правильный набор меню. Кривые находятся в наборе меню surfaces (Поверхности). ЕСЛИ
Давайте обтянем (loft) руку следующим образом. 1. Переведите слой шаблона в нормальный режим, щелкнув средней кнопкой мыши на среднем поле возле имени слоя в редакторе слоев. Это позволит непосредственно ре дактировать кривые. 2.
Щелкните правой кнопкой мыши на кривой вида сверху и в появившемся контекст ном меню выберите пункт Curve Point (Точки кривой). Затем повторите то же самое для кривой вида спереди.
3. Нажав клавишу <Shift>, выделите на каждой кривой точки возле торса, но не прямо на нем, как показано на рис. 3.46.
Рис. 3.46. Выделите точки кривой в области плеч и запястья 4. Нажав клавишу <Shift>, выделите на каждой кривой точки возле запястья так, как показано на рис. 3.46. 5. Чтобы разделить кривые по выделенным точкам, выберите пункт меню Edit Curves => Detach Curves (Редактировать кривые => Разъединить кривые). В результате полу чатся четыре кривые, от которых можно начинать обтяжку. 1
6. Эти кривые следует перестроить, поскольку они имеют разное количество интерва лов и при обтяжке будут выглядеть перекошенными. Выберите пункт меню Edit Curves => r e b u i l d Curve • (Редактировать кривые => Перестроить кривую • ) . Подхо дящие значения параметров инструмента приведены на рис. 3.47. Этот инструмент, а также инструмент r e b u i l d surfaces (Перестроение поверхностей) подробно рас сматриваются в главе 4, "Моделирование с использованием NURBS". 7. Порядок выделения кривых определяет направление обтяжки. Поэтому, точно сле дуя указанному порядку, выделите переднюю, верхнюю, заднюю и нижнюю кривые. Порядок тут действительно очень важен.
168
Глава 3
Рис. 3.47. Подходящие значения параметров инструмента rebuild Curve 8. Выберите пункт меню surfaces => Loft • (Поверхности => Обтяжка • ) . Подходящие значения параметров обтяжки и результат показаны на рис. 3.48.
Рис. 3.48. Параметры обтяжки и получившаяся обтягивающая полигональная поверхность Сейчас следует точно настроить обтяжку. В процессе перестроения были получены два нежелательных результата: некоторые точки редактирования были перемещены со своих позиций, и вдоль руки была получена слишком плотная сетка. Сначала устраним последнюю проблему. 1.
Полигональный объект мешает выделить только обтянутые кривые, поэтому в нахо дящейся над окном представления строке состояния снимите маску выделения surfaces (Поверхности).
2.
Выделите прямоугольником все четыре кривые и выберите пункт меню Edit Curves => r e b u i l d Curve • (Редактировать кривые => Перестроить кривую • ) . На эк ране появится окно свойств инструмента.
3.
В поле Number Of Spans (Количество звеньев) введите значение 10 и щелкните на кноп ке r e b u i l d (Перестроить). Эта операция уменьшит плотность сетки. Обратите внимание на то, что размер многоугольников руки близок к размеру многоугольников тела.
4.
Чтобы ликвидировать проблему неверно переместившихся точек редактирования, перейдите в режим выделения компонентов, щелкнув в строке состояния на кнопке Select By Component Туре (Выделять по типу компонентов).
Полигональное моделирование 5.
169
В разделе Selection Mask (Маска выделения) щелкните правой кнопкой мыши на второй кнопке слева— Select Param Points (Выделять параметрические точки). В появившемся списке установите флажок NURBS Edit Points (Точки редактирова ния NURBS), как показано на рис. 3.49, сверху. Теперь все готово к изменению точек.
Рис. 3.49. Коррекция обтягивающей поверх ности с помощью изменения компонентов обтягиваемых кривых. Чтобы упростить присоединение руки к телу, постарайтесь со вместить с линиями шаблона верхнюю и бо ковые части руки 6. Перемещайте точки редактирования каждой кривой, пока не получится рука, напо минающая изображение на рис. 3.49, снизу. 7. Нажмите клавишу , чтобы перейти в режим выделения объектов, и установите маску выделения surfaces (Поверхности). 8. Удостоверьтесь, что все модификации завершены, выделите геометрическую форму руки, а затем удалите историю.
Присоединение руки к телу Теперь с помощью средства Combine (Объединить) и инструмента Append To Polygon (Добавить к многоугольнику) присоединим руку к телу. 1.
Поместите геометрическую форму руки на отдельный слой и снимите с нее тониро вание, выбрав в редакторе слоев пункт меню Layers => Set Selected Layers => Unshaded (Слои => Установить выделенные слои => Без тонирования).
Глава 3
170
Тонированное представление (shaded view) можно установить только для отдельных слоев, а остальные оставить без тонирования, т.е. в каркасном представлении (wireframe). Кроме того, для отдельных слоев можно установить текстурированое или не текстурированое представление, а также воспроизводить каждый слой, используя пункт меню Set Selected Layers (Установить выделенные слои).
2.
С помощью инструмента Split Polygon (Разделение многоугольника) прорежьте крайнюю часть торса, как показано на рис. 3.50, а. При этом будут исправлены два многосторонних многоугольника сбоку торса.
Рис. 3.50. Прорежьте край торса (а); выделите подлежащие удалению грани (б); не выделяйте гра ни, продолжающиеся вниз от треугольника на спине (в);удалите грани (г) 3.
Выделите грани, как показано на рис. 3.50, б и в, кроме последней линии многоуголь ников, продолжающейся от треугольника вниз; этот треугольник будет использован при добавлении деталей к плечу сзади.
4.
Чтобы создать отверстие для руки, удалите выделенные грани, как показано на рис. 3.50, г.
5.
Удалите историю торса.
6.
Удостоверьтесь, что многоугольники торса и руки имеют одинаковую ориентацию. Если это не так, то впоследствии их нельзя будет соединить инструментом Append То Polygon (Добавить к многоугольнику). Чтобы добавить руку к выделению, выбе рите ее, нажав клавишу <Shift>.
7.
Чтобы отобразить нормали, выберите пункт меню Display => Polygons => Face Normals (Представление => Многоугольники => Нормали). Возможно, появившиеся нормали будут направлены для граней торса наружу, а для граней руки — вовнутрь.
8.
Чтобы изменить направление нормалей граней руки на противоположное, выделите только руку и выберите пункт меню Normals => r e v e r s e (Нормали => Обратить). Ре зультат до и после выполнения этой операции представлен на рис. 3.51.
9.
Нажав клавишу <Shift>, выделите торс и удалите историю обоих объектов (руки и торса).
10. Создайте из выделенных объектов один, выбрав пункт меню Mesh => Combine (Сетка => Объединить). Обратите внимание на то, что сглаженный объект при этом уже не обновляется. Его можно удалить, а затем создать заново, выбрав пункт меню Proxy => Subdiv Proxy ( Упрощение => Упрощение SDS).
171
Полигональное моделирование
Рис.351. Обращение нормалей руки. Обратите внимание на направление нормалей граней торса 11. Выберите пункт меню Edit Mesh => Append То Polygon Tool • (Редактировать сетку => Инструмент добавления к многоугольнику •) и убедитесь, что флажок Keep New Faces Planar (Сохранять новые грани плоскими) сброшен, а переключатель Operation (Операция) установлен в положение A p p e n d (Добавить). 12. Щелкните на краю отверстия руки, как показано на рис. 3.52, а.
в
г
Рис. 3.52. Присоединение руки к телу с помощью инструмента Append То Polygon. Создайте пятиугольник, по очереди щелкая на краях
Глава 3
172
13. Щелкните на расположенном напротив крае руки, как показано на рис. 3.52, б. Поя вившийся розовый многоугольник указывает на то, что он готов к созданию. Если многоугольник чем-то не устраивает вас, нажмите клавишу и выберите другой край. Если все в порядке, нажмите клавишу <Enter>, и многоугольник со единит торс с рукой. Чтобы увидеть результат, взгляните на сглаженный объект. 14. Продолжите движение вокруг объекта, создавая многоугольники, соединяющие обе части (см. рис. 3.52, б). Чтобы создать пятиугольник на спине, щелкните на краях в соответствующем порядке. 15. Закончите перед, как показано на рис. 3.52, г. 16. Стяните пятый край пятиугольника на спине. Для этого выделите край и выберите пункт меню Edit Mesh => Merge То Center (Редактировать сетку => Объединить к цен тру). Откорректируйте позиции вершин, чтобы сгладить плечо. 17. Выделите торс, удалите историю и сохраните сцену в файл Mach_ArmDone03 . mb.
Завершение тела Итак, все основные части тела уже созданы. Осталось всего лишь создать такие дета ли, как подмышку, трицепс и локоть, бицепс и область груди (рис. 3.53-3.56).
Рис. 3.53. Детализация подмышки
Полигональное моделирование
173
Рис. 3.54. Создание области трицепса и локтя Рис. 3.55. Создание бицепса
Рис. 3.56. Создание внутренней части области груди и грудной клетки Сначала вырежьте линию, проходящую поперек груди и вокруг грудной клетки. За тем создайте углубление, начинающееся от нижней части бицепса и проходящее верти кально вниз вдоль тела до середины спинного отдела грудной клетки, где мышца Latissimus Dorsi соединяется со спиной. Создание области трицепса и локтя включает разделение предназначенной для локтя об ласти и добавление деталей к локтю инструментом Offset Edge Loop Tool (Инструмент сме щения петли краев). Бицепс может быть и сложным, и простым. На рис. 3.55 конец бицепса обозначен со единенными между собой диагональными разделениями. Постарайтесь избавиться от всех треугольников, или стянуть их, или соединить с отверстием шеи или с запястья.
174
Глава 3
Область груди очень сложная. Определим место соединения грудной мышцы с груд ной клеткой. Для этого соединим края паховой области с отверстием шеи. Манипулируя вершинами, определите нижний внутренний угол грудной мышцы. Чтобы впоследствии более точно создать область грудной клетки, разделите последовательность вершин, рас положенную вдоль грудной мышцы и вокруг спины. В конце добавьте детали вокруг торса, но вытяните вершины вверх, — это поможет при создании переднего отдела груд ной клетки, а также обеспечит некоторое место для сокращения граней, необходимое при анимации сгиба Машизмо в поясе.
А что делать с кистью руки? Не будем детально описывать создание руки, поскольку существует множество доступных в печати и в Web учебных пособий, посвященных этой теме. Вместо этого импортируем с компакт-диска файл HandGeo.mb и рассмотрим присоединение кисти к руке с помощью инструмента Merge Edge (Объединение края). Импортируйте кисть и подготовьте ее к присоединению так, как описано ниже. 1.
Выберите пункт меню File => lmport • (Файл => Импорт • ) . В появившемся диалого вом окне сбросьте флажки Group (Группа) и Preserve r e f e r e n c e s (Хранить ссылки), а затем щелкните на кнопке Import (Импорт). Выделите файл HandGeo.mb и импор тируйте его. В общей области возле конца руки должна появиться кисть. Если этого не произошло, измените масштаб кисти и переместите ее в надлежащую позицию.
2.
Удостоверьтесь в одинаковости ориентации многоугольников кисти и руки. Для это го выделите оба объекта и выберите пункт меню Display => Polygons => Normals (Представление => Многоугольники => Нормали). Если это не так, обратите нормали кисти, для чего выделите только кисть и выберите пункт меню Normals => r e v e r s e (Нор мали => Обратить).
3.
Чтобы объединить два объекта, выберите пункт меню Mesh => Combine (Сетка => Объединить).
4.
Выберите пункт меню Edit Mesh => Merge Edge Tool • (Редактировать сетку => Инструмент объединения края • ) . Это предотвратит привязку объединяемых краев друг к другу.
5.
Щелкните на крае руки, как показано на рис. 3.57, слева.
Рис. 3.57. Использование инструмента 6.
Merge Edge
Щелкните на крае запястья, соответствующем краю руки (см. рис. 3.57, посередине).
Полигональное моделирование
175
7. Щелкните в третий раз на любом крае, чтобы объединить края (см. рис. 3.57, справа). 8.
Выполняйте эти действия вокруг запястья до тех пор, пока не будут объединены все края.
Инструмент Sculpt Geometry (Рельеф), модифицированный в версии 8.5, позволяет сформировать сетку объекта с помощью трехмерной кисти. Этот инструмент обеспечивает пять операций: Push (Вдавить), Pull (Вытянуть), Smooth (Сгладить), r e l a x (Ослабить) и Erase (Стереть). Операция Push (Вдавить) вдавливает вершину внутрь на выделенной сетке, а опера ция Pull (Вытянуть) вытягивает ее наружу. Операция Smooth (Сгладить) перемещает вершину в соответствии с позицией соседних вершин. Так, можно пригладить резкие края модели, если имеется достаточно вершин для работы. Нововведением Мауа 8.5 является операция r e l a x (Ослабить), которая подобна опе рации Smooth, но при перемещении вершины она пытается сохранять исходную форму объекта. Операция Erase (Стереть) удаляет результат четырех предыдущих операций. Теперь с помощью инструмента Sculpt Geometry (Рельеф) разгладим искривления на запястье и увеличим объем предплечья. Воспользуйтесь инструментом Sculpt Geometry так, как описано ниже. 1.
Выделив тело, выберите пункт меню Edit Mesh => Sculpt Geometry Tool • (Редакти ровать сетку => Инструмент рельефа • ) . В разделе Sculpt Parameters (Параметры рельефа) установите переключатель Operation (Операция) в значение Smooth (Сгладить) и установите параметр Max. Displacement (Максимальное смещение) приблизительно равным 0.0442. Эти настройки помогут исправить искривление, появившееся в результате объединения двух геометрических форм.
2.
Кисть будет слишком большой, поэтому уменьшите ее размер, перемещаясь по об ласти просмотра влево, нажав и левую кнопку мыши и клавишу < В > (рис. 3.58).
3. Расправьте кистью вершины вокруг запястья. Постарайтесь при этом не переусерд ствовать. 4. Чтобы вернуть объем, потерянный при сглаживании инструментом Sculpt Geometry (Рельеф), откорректируйте вершины инструментом Move (Перемещение), установ ленным в режим Normal (Нормаль).
Рис. 3.58. Чтобы изменить раз мер кисти инструмента рельефа, переместите мышь, нажав ее ле вую кнопку и клавишу <В>
Глава 3
176
Очистка! Прежде чем назвать модель законченной, необходимо выполнить еще несколько опе раций. Именно эти операции отличают хорошую модель от хорошей модели, которую впоследствии легко использовать. Завершите создание модели, выполнив следующие действия. 1. Выделите и удалите бесполезный сглаженный объект. 2.
Выделите упрощенный объект и присвойте ему имя BodyGeo.
3.
Удалите все кривые NURBS, выбрав пункт меню Edit => Select All By Type => NURBS Curves (Правка => Выделить все по типу => Кривые NURBS).
4.
Сделайте последнюю попытку уничтожить многосторонние многоугольники. Для этого перейдите в режим выделения граней модели и выберите пункт меню Select => Select Using Constraints (Выделение => Выделение с использованием крите риев). Эта мощная утилита способна выделять любые топологии любой модели. На рис. 3.59 указаны критерии для выделения многосторонних многоугольников. В раз деле Constrain (Ограничить) щелкните на варианте All And Next (Все и следующий). Сразу же взгляните на HUD. Значение 0 в правой колонке строки Faces (Грани) озна чает, что моделирование было проведено аккуратно и больше ничего делать не нужно. Если же в этой колонке выведено ненулевое значение, то необходимо найти все много сторонние многоугольники и избавиться от них описанными выше способами.
Рис. 3.59. Окно свойств Polygon Se lection Constraint On Faces с пара метрами для выделения многосто ронних многоугольников. Чтобы выде лить все многосторонние многоуголь ники, щелкните на переключателе АLL And Next
5.
При разделении или создании новых многоугольников образующиеся новые много угольники выглядят плоскими. Чтобы сгладить их, выделите объект тела B o d y G e o и
Полигональное моделирование
177
выберите пункт меню Normals => Soften Edge (Нормали => Смягчить край). Теперь края всей модели должны смягчиться. 6.
Удалите неиспользуемые слои.
7.
В окне иерархической структуры выделите и удалите все неиспользуемые группы.
8.
Выберите пункт меню Mesh => CIeanup • (Сетка => Очистить • ) . Это окно можно ис пользовать для очистки геометрических форм, которым при работе над моделью, возможно, не было уделено должного внимания. Для уверенности в том, что эта мощная утилита не удалит необходимые в дальнейшем объекты, ее работу, впрочем, как и работу всех автоматических утилит Майя, необходимо внимательно контроли ровать, Например, в разделе Fix By Tesselation (Фиксировать по триангуляции) есть параметр, приводящий к триангуляции всех четырехугольных граней. Если выпол нить эту команду при установленном значении Select And Cleanup (Выделить и очистить) параметра Operation (Операция), то все четырехугольники сцены будут преобразованы в треугольники, что нежелательно. Как обычно, чувствуя неуверен ность в знании определенной операции, обратитесь за информацией к меню Help (Справка).
9.
В ходе моделирования использовалось разделенное упрощение, поэтому, возможно, стоит воспользоваться пунктом меню File => Optimize Scene Size • (Файл => Оптимизировать размер сцены • ) . Эта утилита удаляет только неиспользуемые уз лы сцены. При работе в Майя между узлами могут разрываться связи. При этом сами узлы остаются в файле сцены, но уже не влияют ни на какие геометрические формы, анимацию или карту текстур. Они только излишне увеличивают размер сцены и за медляют работу Майя. Выполнение этой операции поможет уменьшить файл.
10. Удалите историю и заблокируйте изменения геометрической формы. 11. Сохраните сцену в файле Mach04_BodyFin.mb.
Резюме Несмотря на то что многоугольники — старейший способ моделирования, Майя предлагает чрезвычайно мощный и гибкий набор инструментов для полигонального мо делирования. В этой главе на примере преобразования обычного куба в модель мускули стого реалистичного тела с использованием многих наиболее мощных инструментов мо делирования Майя было продемонстрировано манипулирование и создание рельефных форм, как в технике блочного моделирования, так и с помощью выдавливаний. В главе 5, "SDS-поверхности", будет рассмотрено, как многоугольник за многоугольни ком построить голову, а затем использовать SDS-поверхности для ее детализации. В главах, посвященных оснащению, создается оснастка модели, а в главе, рассматриваю щей текстурирование, для персонажа создаются карта UV и карта текстуры. В следую щей главе, посвященной моделированию с использованием NURBS, для Машизмо будет создано транспортное средство — мощный МакГизмо (Mighty MacGiZmo).
Моделирование с использованием NURBS Для моделирования реалистичных персонажей раньше предпочитали использовать NURBS (Non-Uniform rational B-Spline — неоднородный рациональный би-сплайн), но появление более мощных компьютеров, SDS-поверхностей и прочих технологических достижений вдохнуло новую жизнь в реалистичное моделирование на основе много угольников. Сегодня NURBS применяются в основном для построения зданий, космиче ских кораблей и других искусственных поверхностей. В продолжение этой тенденции рассматриваемый здесь аппарат будет построен именно в этой непростой технике. Как бы там ни было, NURBS отличаются от многоугольников тем, что для эффективной ра боты с ними требуется понимание некоторых основных концепций. Большая часть сложных математических механизмов, связанных с использованием сплайнов, скрыта внутри Майя, но для более полного понимания процесса знание некоторых основ всетаки необходимо. В этой главе описано, что такое NURBS и как их использовать для соз дания моделей. •
Кривые
•
Параметризация
• •
NURBS-поверхности Моделирование МакГизмо
Концепция NURBS Если многоугольники представляют скульптурный подход к трехмерному моделиро ванию, то NURBS являются аналогом производственного процесса. В то время как мно гоугольники режут, выдавливают, объединяют и придают им форму, NURBS сгибают, сваривают, присоединяют и перестраивают в процессе, который больше похож на сбо рочную линию. Если работа с многоугольниками близка к скульптурным процессам об работки мрамора и глины, то NURBS ближе к такой скульптурной технике, которая под разумевает сваривание листов металла. И это не совпадение, существование NURBS и всей основанной на сплайнах технологии уходит своими корнями в автомобильную про мышленность. Благодаря своей унаследованной математической точности NURBS яв ляются наиболее предпочтительной базой для большей части систем автоматизирован ного проектирования и производства ( C A D / C A M ) .
180
Глава 4
Как известно, любое программное обеспечение для работы в трехмерном пространст ве является визуальным отображением неких математических алгоритмов, заключенных в их коде. Для создания кривой не обязательно вводить математические формулы, так как все математические расчеты Майя сделает сама. Достаточно просто манипулировать контрольными вершинами (Control Vertex — CV), точками редактирования (Edit Point — ЕР) и фрагменты каркаса (hull), а кривые Майя нарисует сама. Вот с этого и начнем.
Кривые Работа с кривыми — это ключ к эффективной работе с NURBS-поверхностями, по скольку многие инструменты создания поверхностей, такие как Loft (Обтяжка), Boundary (Заполнение контура), r e v o l v e (Вращение) и Square (Создание четырехугольника), стро ят поверхности, отталкиваясь от кривых. На рис. 4.1 представлена "анатомия" кривых пер вой степени, или линейных кривых второй степени и кривых третьей степени, или кубиче ских. Дальнейшая работа в основном пойдет с кривыми первой и третьей степени, но по лезно рассмотреть и кривые второй степени, чтобы знать их отличия. Средняя и левая кривые были скопированы с кубической (третьей степени) кривой, расположенной справа. Затем они были перестроены соответственно в кривые первой и второй степени. Чтобы минимизировать искажение, в окне параметров преобразования в разделе Keep (Сохранять) был установлен флажок CVs (Контрольные вершины).
Первая степень, линейная
Вторая степень
Третья степень, кубическая
Рис. 4.1. "Анатомия" кривых NURBS первой, второй и третьей степени Обязательно прочитайте главу 3, "Полигональное моделирование", в которой описа но создание шаблона из линейных кривых NURBS. В ней рассматриваются основы рисо вания с использованием кривых NURBS первой степени, т.е. линейных. В настоящей главе эта информация будет дополнена.
Моделирование с использованием NURBS
181
Кривые NURBS: краткий с п р а в о ч н и к для н а ч и н а ю щ и х Кривые NURBS (NURBS curve) — это топология моделирования, состоящая из точек редак тирования (Edit Point — ЕР), или узлов (knot), звеньев (span), контрольных вершин (Control Vertex — CV) и фрагментов каркаса (hull). Точки редактирования, или узлы, задают коорди наты точек в пространстве, через которые проходит кривая. Звенья являются отрезками кривых между соседними точками редактирования. Контрольные вершины отвечают за градус угла кривой в этой точке и глубину ее прогиба между соседними точками редакти рования. Фрагменты каркаса — это линии, соединяющие контрольные вершины и обеспе чивающие быстрый способ выделения всей кривой. Каждая кривая имеет направление, от меченное начальной контрольной вершиной, изображаемой как пустой квадратик.
Линейная кривая состоит из девяти звеньев, кривая второй степени — из восьми, а исходная кубическая кривая имеет семь звеньев. В этом и заключается компромисс между тремя приведенными кривыми: чем выше степень кривой, тем она глаже, причем с меньшим количеством звеньев. Количество контрольных вершин для всех трех кривых одинаково, а это означает, что кривые более высокой степени имеют больше контроль ных вершин на меньшее количество звеньев. Таким образом, у кривых высших степеней больше возможностей по управлению ими. Но для получения мелких деталей, т.е. резких изменений направления, в такие кривые необходимо добавлять больше звеньев и, следо вательно, больше контрольных вершин. Давайте рассмотрим, в какой степени кривая за висит от каждой своей контрольной вершины. 1.
Откройте файл Three Curves . mb, который находится на компакт-диске.
2.
Чтобы открыть окно параметров Preferences (Предпочтения), выберите пункт меню Window =>Settings/Preferences => Preferences (Окно => Параметры/Предпочтения => Предпочтения), а затем убедитесь, что для категории Display (Представление) параметр r e g i o n Of Effect (Область влияния) установлен в положение On (Включено).
3.
Удостоверьтесь, что в строке состояния выбран режим Select By Component Туре (Выделять по типу компонентов) вместе с компонентами Points (Точки), Parm Points (Параметрические точки) и Hulls (Фрагмент каркаса), как показано на рис. 4.2, сверху (?).
4.
Нажав клавишу <Shift>, выделите все компоненты каждой линии.
5.
Нажав клавишу <Shift>, выделите все точки (см. рис. 4.2).
Часть линии, подсвеченная белым цветом, демонстрирует, на сколь большую часть линии влияют выделенные контрольные вершины. Это называется областью влияния (region of effect). Каждая контрольная вершина линейной кривой влияет только на два звена; каждая контрольная вершина кривой второй степени — на три звена, а каждая контрольная вершина кубической кривой — на четыре звена. Этот факт несколько за трудняет управление кривыми третьей степени, потому что перемещение одной кон трольной вершины деформирует достаточно большую часть кривой. Пока все идет нормально. Исходя из приведенных на данный момент сведений, мож но было бы предположить, что из трех кривых именно кривые второй степени обеспечи вают оптимальный баланс между количеством звеньев и степенью управляемости. К со жалению, в данном случае это не так, и ниже будет продемонстрировано почему.
182
Глава 4 Область влияния
Кривая первой степени
Область влияния
Кривая второй степени
Область влияния
Кривая третьей степени
Рис. 4.2. Примеры областей влияния для кривых различных степеней. С возрастанием степени кривой возрастает количество звеньев, зависящих от перемещения контрольной вершины 1.
Чтобы скрыть контрольные вершины, оставив видимыми только точки редактирова ния и фрагменты каркаса, отожмите в строке состояния кнопку Select By Points (Выделять по точкам).
2.
Убедившись, что инструмент Move (Перемещение) не установлен в режим Normal (Нормаль), выделите и переместите точку редактирования линейной кривой. Линия при этом переместится вполне предсказуемым образом.
3.
Переместите точку редактирования кривой второй степени. Вся кривая ужасно де формировалась. А ведь впоследствии, при создании поверхностей, придется переме щать точки редактирования поверхностей кривых. При использовании для создания поверхности кривых второй степени вся поверхность может деформироваться точно так же, как и эта линия.
4.
Выделите и переместите точку редактирования кубической кривой. Обратите вни мание на то, что кривая хоть и несколько деформировалась, но вполне приемлемо.
Учитывая эти факты, метод работы с кривыми будет таким: сначала используем ли нейные кривые, а затем при создании поверхностей перестроим их в кубические.
Параметризация Если говорить упрощенно, то параметризация (parameteriZation) определяет поло жение точки редактирования на кривой или поверхности. Для правильной обработки кривых и поверхностей необходима корректная параметризация, а большинство про блем, возникающих у художников при работе с NURBS, может быть связано тем или иным образом с неправильной параметризацией. При работе с кривыми их корректная параметризация важна, поскольку кривая может быть использована при создании по-
Моделирование с использованием NURBS
183
верхности вращения, при обтяжке или создании четырехугольных поверхностей. В ре зультате применения исходных кривых с правильной параметризацией получаются кор ректные поверхности. Хотя без длинных введений в параметрические уравнения и другие математические конструкции саму по себе концепцию параметризации определить и понять довольно сложно, объяснить, что такое правильная параметризация, довольно легко. Для модели рования корректность параметризации заключается в том, что каждая точка редактиро вания кривой представлена целым (х. 0), а не дробным (х.ххх) числом. В процессе мо делирования вдоль кривых и поверхностей NURBS могут быть вставлены узлы или изопараметрические линии (isoparm). Поскольку кривые и поверхности создаются между узлами или изопараметрическими линиями с целочисленными номерами, то кривые и поверхности необходимо перестраивать так, чтобы получить целочисленное количество их узлов и изопараметрических линий. Проиллюстрируем эту идею, еще раз воспользо вавшись файлом ThreeCurves. mb. 1.
Если строка справки еще не отображена, выберите пункт меню Display => UI Elements => Help Line (Представление => Элементы пользовательского интерфейса => Строка справки). Строка справки обеспечит обратную связь при параметризации кривых.
2.
Перейдите в режим выделения компонентов и отобразите точки редактирования, контрольные вершины NURBS, точки кривой и фрагменты каркаса.
3. Чтобы отобразить компоненты кубической кривой (справа), выделите ее инструмен том Select (Выделение). Если это сделать инструментом Move (Перемещение), то в дальнейшем ничего не получится. 4. Щелкните левой кнопкой мыши на любой точке правой линии и, не отпуская ее, пе ретащите указатель мыши вдоль линии. В том месте, где был сделан щелчок, появит ся желтая точка, представляющая собой точку кривой. Если, удерживая кнопку мы ши, перетаскивать указатель вдоль кривой, то точка станет красной. Посмотрите вниз, на строку справки. Там будет выведено сообщение Curve Parameter: 2.251 или что-то подобное (рис. 4.3). Данный текст означает, что текущая позиция находится примерно в четверти пути между третьей (2 . 0) и четвертой (3.0) точка ми редактирования. (Напомним, что нумерация начинается с нуля.) 5.
Теперь нарушим эту равномерно параметрическую кривую, добавив в текущую по зицию узел (т.е. точку редактирования). Выберите пункт меню Edit Curves => Insert Knot • (Редактировать кривые => Вставить узел • ) . Параметр Insert Location (Позиция вставки) определяет, где будет вставлен узел. При значении At Selection (В месте выделения) узел вставляется в выделенной точке кривой. Для значения Between Selections (Между выделениями) узел создается между двумя выделенны ми компонентами. Числовое поле Multiplicity (Кратность) определяет количество вставляемых узлов. Для текущей задачи установим переключатель Multiplicity в по зицию Increase By (Увеличить на), а для числового поля Multiplicity установим зна чение 1. Щелкните на кнопке Insert (Вставить).
6.
Узел создан в позиции и [2 . 2 5 1 ] , следовательно, параметризация кривой нарушена. Чтобы убедиться в этом, щелкните правой кнопкой мыши на линии и в появившемся маркированном контекстном меню выберите пункт Select (Выделить).
184
Глава 4
Рис. 4.3. Пример параметризации кривой. В точках редактирования параметр принимает целые значения, и нумерация начинается с пер вой контрольной вершины Любую точку поверхности можно выделить, передав в командной строке инструменту Select (Выделение) ее координаты. Чтобы выделить конкретную точку поверхности, введи те команду s e l e c t <имякривой>.u[х.ххх.]. Чтобы выделить конкретную точку редак тирования, введите команду select <имякривой>. ер [х], а чтобы выделить конкретную контрольную вершину — s e l e c t <ииякривой>,cv[x]. Для выделения диапазона любых компонентов поставьте двоеточие между значениями. Например, чтобы выделить диапазон точек редактирования, введите команду s e l e c t <имякривой>. ер [0:3]. При этом будут выделены точки, соответствующие значениям параметра о, 1, 2 и з. 7.
Откройте редактор атрибутов (комбинация клавиш ) и убедитесь, что наименьшее и наибольшее значения параметра (Min Max Value) линии равны 0 . 0 0 0 и 7 . 0 0 0 соответственно, а количество звеньев равно 8. При корректной параметри-
Моделирование с использованием NURBS
185
зации значения параметра Мах (Максимум) всегда должно равняться количеству звеньев, а наименьшее (Min (Минимум)) быть равным 0. Эту кривую следует обяза тельно перестроить. 8.
Чтобы увидеть эту операцию в действии, при все еще выделенной кривой выберите пункт меню Display => NURBS Components (Представление => Компоненты NURBS) и отобразите точки редактирования, контрольные вершины и фрагменты каркаса.
9.
Откройте окно параметров r e b u i l d Curve (Перестроение кривой), выбрав пункт ме ню Edit Curves => r e b u i l d Curve • (Редактировать кривые => Перестроение кривой •) (рис. 4.4). Процедура перестроения кривой стремится распределить узлы (точки ре дактирования) более равномерно вдоль кривой и изменить ее форму так, чтобы по возможности минимизировать их количество. Для этого установите переключатель r e b u i l d Туре (Тип перестроения) в значение Uniform (Однородно). Для переключа теля Parameter r a n g e (Диапазон параметра) выберите значение 0 То #Spans (От О до количества звеньев). Это установит наименьшее значение параметра кривой рав ным 0, а наибольшее — равным количеству звеньев. Чтобы минимизировать сопут ствующее перестроению искажение, в разделе Keep (Сохранять) установите флажок CVs (Контрольные вершины).
Рис. 4.4. До и пост перестроения кривых. Обратите внимание на измене ние расположения точек редактирования 10. Чтобы внести изменения, щелкните на кнопке r e b u i l d (Перестроить). Обратите внимание на то, что точки редактирования переместились, а контрольные вершины остались на своих местах. Перейдите в режим выделения точек кривой и протащите выделенную точку по линии возле созданной точки редактирования. Теперь точкам редактирования соответствуют целые значения параметра, что свидетельствует о правильной параметризации линии. 11. При все еще выделенной линии откройте редактор атрибутов. Наибольшее из значе ний параметров Min Max Value (Наименьшее и наибольшее значение) должно быть равным количеству звеньев.
NURBS-поверхности Кривые NURBS — это графические представления параметрических уравнений. Для NURBS-поверхностей эти уравнения распространены на второе измерение. Изначально параметризация кривых ориентирована в направлении U, а поверхности добавляют на правление V. Поэтому говорят, что NURBS-поверхность имеет направления U и V. По-
186
Глава 4
ложение точки поверхности определяют значения параметров U и V (UV); таким обра зом Майя отображает двухмерные координаты на трехмерную поверхность. При визуализации NURBS-поверхности происходит ее триангуляция (tessellation), т.е. разбиение на треугольники. Это означает, что при визуализации Майя преобразует NURBSповерхность в треугольники. Изначально NURBS-поверхности были задуманы для замены больших полигональных наборов данных. Они позволяли манипулировать поверхностью с помощью более простых элементов управления и состояли из фрагментов, разбиваемых при визуализации в совершенно гладкие формы, а потому были намного эффективнее. Все NURBS-поверхности и формы NURBS состоят из одного или многих четырех сторонних фрагментов (patch). На рис. 4 . 5 показано, что даже сферу NURBS можно рас сматривать как прямоугольный фрагмент. И это действительно невозможно изменить; при моделировании с использованием NURBS создаются исключительно четырехуголь ные фрагменты, которыми можно манипулировать по своему усмотрению. Как будет продемонстрировано далее, существуют достаточно мощные и разнообразные приемы и методы, позволяющие обойти эти ограничения, но тем не менее они их не устраняют.
Рис. 4.5. На самом деле сфера NURBS — это всего лишь один ав томатически созданный и замк нутый прямоугольный фрагмент Каждая поверхность NURBS состоит из одного или нескольких фрагментов. В свою очередь, каждый фрагмент образован пересечением двух звеньев (span), обозначенных линиями, называемыми изопараметрическими (isoparm). Эти изопараметрические ли нии являются трехмерными аналогами узлов (или точек редактирования) кривой. Одна ко в отличие от точек редактирования их нельзя перемещать в трехмерном пространстве. В процессе моделирования можно вставлять новые изопараметрические линии, что и бу дет продемонстрировано ниже. При добавлении изопараметрических линий увеличивается количество контрольных вершин, позволяющих манипулировать поверхностью формы. В этом проявляется не достаток NURBS-поверхностей: настоящей поверхностью формы NURBS невозможно манипулировать непосредственно. Единственный способ отредактировать форму — это манипулировать контрольными вершинами или группами контрольных вершин. Для ав-
Моделирование с использованием NURBS
187
томатического выделения рядов или колец контрольных вершин Maya предлагает дру гую топологию — фрагменты каркаса (hull).
Чтобы лучше изучить применение NURBS-поверхностей, применим их на практике.
Моделирование МакГизмо На рис. 4.6 представлен эскиз МакГизмо (MacGiZmo) — аппарата вертикального взле та и посадки, на котором проносится Машизмо, совершая разнообразные подвиги. На эс кизе кроме видов спереди, сбоку, сверху и снизу изображены такие детали, как ведущее и переднее колеса, а также двигатель. Штрих-пунктирные линии, проходящие через неко торые детали, — это центральные оси форм эскиза. Эти линии помогут существенно сэ кономить время при моделировании, поскольку они представляют собой оси, вращением вокруг которых будут созданы соответствующие детали (т.е. созданы как фигуры враще ния). Итак, без дальнейших вступлений приступим к созданию МакГизмо.
Рис. 4.6. Эскиз МакГизмо Для рассматриваемой задачи этот эскиз является всего лишь ориентиром. Хотя он и будет использован при обводе кривых, необходимых для построения поверхности, по ходу главы выяснится, что построенные кривые и поверхности иногда соответствуют ему не совсем точно. Несмотря на то что для систем CAD/САМ необходима более высокая степень точно сти, сейчас важнее изучить набор инструментов Maya для моделирования с использовани ем NURBS, а к любым несоответствиям можно приспособиться.
Переднее колесо Начнем с простейших форм модели, а затем перейдем к более сложным. Создадим с помощью инструмента r e v o l v e (Вращение) передние колеса и передние ниши шасси. 1.
Откройте имеющийся на компакт-диске файл M a c G i Z m o S t a r t .mb. В нем содержится единственная полигональная поверхность — плоскость с нане сенным на нее эскизом. По нему, как по шаблону, будет создан МакГизмо. Эскиз расположен так, что начало глобальных координат находится на цен-
188
Глава 4 тральной вертикальной линии переднего колеса, а ось X проходит по центральной линии, определяющей ось вращения колеса. Это позволит эффективнее использо вать инструмент r e v o l v e (Вращение).
2. Для вычерчивания по точкам редактирования линейной кривой (первой степени) выберите пункт меню Create => EP Curve Tool • (Создать => Инструмент кривой ЕР •) и в открывшемся окне параметров инструмента установите параметр Curve Degree (Степень кривой). 3.
Перейдите в вид сверху и обведите кривую колпака и оси колеса, как показано на рис.4.7, сверху. Для создания любых резких поворотов кривой обязательно ис пользуйте не меньше трех точек. На рисунке, для пояснения, показаны точки ре дактирования.
4.
Откройте окно параметров r e b u i l d Curve (Перестроение кривой), выбрав пункт ме ню Edit Curves => Rebuild Curve • (Редактировать кривые => Перестроить кривую • ) . В разделе Keep (Сохранять) установите флажок CVs (Контрольные вершины), а для переключателя Degree (Степень) выберите значение 3 Cubic ( 3 , кубическая), как показано на рис. 4.7, посередине. Чтобы перестроить кривую в изображенную на рис. 4.7, снизу, кубическую кривую, щелкните на кнопке r e b u i l d (Перестроить). Об ратите внимание, что эта операция сглаживает края углов колпака и оси колеса.
Рис. 4.7. При изменении степени кривой острые края сглаживаются 5.
Перейдите в режим выделения контрольных вершин перестроенной кривой.
6.
Чтобы сделать углы резче, выберите инструмент Move (Перемещение) и, нажав для привязки к точкам клавишу , совместите с угловой контрольной вершиной две расположенные по разные стороны от нее контрольные вершины. Операция "привязки к точке" работает как для контрольных вершин и точек редактирования,
Моделирование с использованием NURBS
189
так и для вершин (рис. 4.8). Чтобы спрямить и сделать передний край колпака колеса резче, переместите только одну контрольную вершину.
Чтобы сделать этот угол резче... ...переместите две выделенные контрольные вершины... ...поверх данной контрольной вершины
Рис. 4.8. Совмещение контрольных вершин с угловой контрольной вершиной сделает углы кривой
реже (слой DrawingLyr с полигональным эскизом для скрыт, чтобы не загромождать рисунок) Создание специальных к н о п о к панели
Окно параметров rebuild Curve (Перестроение кривой) будет использоваться часто, а от крывать его из меню или окна оперативного доступа слишком долго, поэтому создадим кнопку панели, с помощью которой оно будет открываться. 1. Убедитесь, что на переднем плане находится панель Curves (Кривые). Именно на нее будут добавляться вновь создаваемые кнопки. 2. Нажав клавиши < Shift > и , выберите пункт меню Edit Curves => rebuild Curve • (Редактировать кривые => Перестроить кривую • ) . После этого появится не окно пара метров, а новая кнопка на панели, имеющая такой же вид, как и расположенная слева от нее кнопка rebuild Curve (Перестроить кривую). Чтобы открыть окно параметров, щелк ните на этой новой кнопке. 3. Если необходимо более точно отредактировать собственные панели, откройте редактор панелей (Shelf Editor) (для этого щелкните на расположенной слева от панели пикто грамме с черной стрелкой и в появившемся контекстном меню выберите пункт Shelf Editor или пункт меню Window => Settings/Preferences => Shelf Editor (Окно => Параметры/ Предпочтения => Редактор панелей)). И еще, в этой главе операция rebuild Curve (Перестроить кривую) достаточно часто ис пользуется для преобразования линейных кривых в кубические. Этот процесс разумно бы ло бы автоматизировать. Создадим для этого кнопку панели. 1. Чтобы открыть редактор сценариев (Script Editor), выберите пункт меню Window => General Editors => Script Editor (Окно =>Общие редакторы => Редактор сценариев). 2. В поле ввода нижней панели редактора сценариев введите такой код: rebuildCurve -ch 1 - r p o 1 - r t 0 -end 1 -kr 2 -kcp 1 -kep 1 -kt 1 -a 8 -d 3 -tol 0.01;
190
Глава 4
Если в редакторе сценариев прокрутить вверх панель истории, то можно увидеть в ней та кую же строку, за исключением того, что после t o l 0. 01 указано c u r v e 1 . Это говорит о том, что операция rebuild Curve (Перестроить кривую) применялась к конкретной кривой. Чтобы избежать ошибок при наборе, можно выделить и перетащить эту строку кода сред ней кнопкой мыши (на Macintosh — клавишей < Option >) в поле ввода и удалить имя кри вой (сохранив при этом точку с запятой). 1. С помощью левой кнопкой мыши выделите всю строку кода, включая точку с запятой в конце. 2. В меню редактора сценариев выберите пункт File => Save Script То Shelf (Файл => Сохранить сценарий на панели). В появившемся диалоговом окне присвойте новой кнопке панели имя D3kcv, что означает преобразование в кубическую кривую с сохранением контрольных вер шин (D3 — сокращение от degree 3 (третья степень), kcv — сокращение от keep CV (сохранять контрольные вершины)). С этого момента для преобразования линейной кривой NURBS в кубическую просто щел кайте на этой кнопке. Таким образом, для любых часто используемых пунктов меню можно создавать специальные кнопки. Для создания кривых шины и ниши шасси повторите шаги 2 - 4 . Поскольку на данный момент созданы три подходящие и готовые к вращению кривые, создадим поверхности переднего колеса. 1.
Выделите кривую колпака колеса, как показано на рис. 4.9, слева. Обратите внимание на то, что ее опорная точка находится в начале глобальных координат.
Рис. 4.9. Использование инструмента revolve для создания колпака и оси коле са. Перемещение опорной точки группы переднего колеса Frontwheel Grp 2. Выберите пункт меню surfaces => r e v o l v e • (Поверхности => Вращение •) и в от крывшемся окне параметров установите параметр Axis Preset (Заданная ось) в по ложение X. Это задаст вращение кривой вокруг направления оси X. Как правило, кривую необходимо вращать вокруг одной из основных осей. Если переключатель Pivot (Опорная точка) установлен в значение Object (Объект), то ось вращения будет проведена через опорную точку объекта, которая в данном случае совпадает с нача лом координат. Установите переключатель surface Degree (Степень поверхности) в значение Cubic (Кубическая), а параметры Start Sweep Angle (Начальный угол по ворота) и End Sweep Angle (Конечный угол поворота) — в значения 0 и 360 соот ветственно. В результате будет создана кубическая поверхность вращения, распро страняющаяся на полный угол в 360°. Если потребуется создать половину поверхно сти, установите конечный угол поворота равным 180°. Установите параметр Segments (Сегменты) равным 8 (значение, заданное по умолчанию). Это значение подходит до тех пор, пока не потребуется большая детализация поверхности враще-
Моделирование с использованием NURBS
191
ния (revolved surface), в противном случае его следует увеличить. При создании по ловинного объекта для этого параметра следует установить значение 4, а не 8. Уста новите переключатель Output Geometry (Выходная геометрия) в положение NURBS, это свидетельствует, что в Maya инструменты создания поверхностей в результате могут создавать еще и полигональные поверхности, SDS-поверхности и даже по верхности Безье (BeZier). Обратите внимание и на то, что количество сегментов, ко ординаты опорной точки, начальный и конечный углы поворота и степень поверхно сти можно установить, изменяя соответственно в разделе Inputs (Входящие) панели каналов атрибуты Sections, Pivot X, Pivot Y, Pivot Z, Start Sweep, End
Sweep и Degree. Для этого необходимо найти и соответственно настроить узел revolver
3.
Переименуйте полученный объект в HubcapGeo (см. рис. 4.9, посередине).
4.
Удалите историю.
5.
Повторите шаги 1-4 для кривых шины и ниши шасси. Полученные объекты назови те TireGeo и Wheel Well Geo соответственно.
6.
Выделите все три поверхности вращения и сгруппируйте их, выбрав для этого пункт меню Edit => Group (Правка => Группа). Присвойте новой группе имя FrontWheelGrp.
7. Создайте новый слой FrontWheelLyr и расположите на нем эту группу. 8.
Выделите группу переднего колеса FrontWheelGrp и переместите ее опорную точку на один уровень с узким концом ниши шасси wheelWellGeo (см. рис. 4.9, справа). Для этого, нажав клавишу , переведите инструмент Move (Перемещение) в режим перемещения опорной точки, переместите опорную точку и еще раз нажмите клавишу , чтобы выйти из режима перемещения опорной точки.
9. Скройте новый слой. 10. Выделите все кривые и переместите их на слой CurvesLyr, который также скройте. На всякий случай сохраните эти кривые. 11. Сохраните файл как MacGiZmo01_FrontWheel .mb. Достаточно создать модель только одного колеса, второе можно получить, скопиро вав первое. Это будет сделано позже, когда придет время собирать все вместе.
Моделирование заднего колеса с помощью инструментов Circular Fillet и Trim Заднее колесо представляет следующий уровень сложности. На эскизе (рис. 4.10) по казан колпак колеса с пятью спицами современного дизайна, отличающегося от стан дартного диска большинства колес. Таким образом, предоставляется идеальная возмож ность использовать инструменты Circular Fillet (Круглая галтель) и Trim (Отсечение). Но сначала необходимо установить эскиз так, чтобы заднее колесо оказалось в центре сетки. 1. В виде сверху выделите поверхность с нанесенным эскизом, — это объект DrawPolyGeo.
2.
Переведите инструмент Move (Перемещение) в режим перемещения опорной точки и установите опорную точку всего эскиза точно в центре вида спереди эскиза заднего колеса (см. рис. 4.10, слева).
Глава 4
192
Рис. 4.10. Подготовка эскиза к моделированию заднего колеса 3.
Выйдите из режима перемещения опорной точки. Затем, нажав клавишу <Х>, пе рейдите в режим привязки к сетке и переместите поверхность D r a w P o l y G e o к нача лу глобальных координат (см. рис. 4.10, справа). Обратите внимание на то, что при нажатии клавиши < Х > кнопка Snap То Grids (Привязка к сетке) в строке состояния будет отжата, свидетельствуя о том, что выбран режим привязки к сетке. После того как клавиша будет отпущена, кнопка возвратится в исходное состояние.
4.
Используя панель каналов, переместите эскиз вниз вдоль оси Y до области отрица тельных значений (на рисунке используется значение - . 036), иначе вычерчиваемые на следующих этапах линии будут скрыты.
5.
Переведите слой DrawingLyr в режим ссылки, чтобы по ошибке не выделить по верхность DrawPolyGeo. Теперь, когда эскиз размещен правильно, создадим заднее колесо.
1.
Используя тот же метод, что и в предыдущем упражнении, начертите линейные кри вые для колпака колеса, внутренней части колеса, шины и ниши шасси, как показано на рис. 4.11, слева. Присвойте этим кривым соответственно имена HubcapCrv, InnerWheelCrv, TireCrvu WheelWellCrv. Обратите внимание на то, что кривая колпака колеса очерчивает контур спиц, сам колпак колеса и ось.
Рис. 4.11. Создание кривых и поверхности вращения SpokeBaseGeo При создании эскиза подразумевалась его универсальность. В зависимости от потребно стей проекта внутреннее колесо, спицы, колпак колеса и ось можно создать как одну де таль или как набор отдельных деталей. В данном случае спицы, колпак и ось имеет смысл объединить в одну деталь.
Моделирование с использованием NURBS
193
2. Перестройте кривые колпака, шины и ниши шасси в кубические и, если необходимо, откорректируйте их. Чтобы впоследствии избежать проблем с применением инстру мента Circular Fillet (Круглая галтель), обязательно закруглите внешний край формы спиц (см. рис. 4.11, посередине). Внутреннее колесо не переделывайте, поскольку при вращении необходимо будет сохранить его скосы (bevel). 3. Используя инструмент r e v o l v e (Вращение), постройте на основе кривой колпака колеса поверхность (см. рис. 4.11, справа). Сразу же удалите историю. Это звучит как припев на протяжении всей книги. 4. Присвойте созданной поверхности имя SpokeBaseGeo. Для моделирования пятизубчатого профиля спиц можно, конечно, добавить к обра зующим поверхность кривым достаточное количество звеньев, но эти неэффективные действия отнимут много времени. Maya предлагает другой способ: используя линию или поверхность, скрыть часть другой поверхности. Этот процесс называется отсечением (trimming). К сожалению, само по себе отсечение приводит к созданию идеально острых краев по линии отсечения, что придает полученным поверхностям несколько искусственный вид. К счастью, Maya позволяет скосить NURBS-поверхности, используя для этого один из трех инструментов сопряжения поверхностей (surface fillet): Circular Fillet (Круглая гал тель), Freeform Fillet (Произвольная галтель) и Fillet Blend (Смешанная галтель). Чтобы скосить спицы, используем инструмент Circular Fillet (Круглая галтель). Термин скос (bevel) не следует путать с кнопкой Edit Mesh => Bevel (Редактировать сетку => Перекос). Для полигональной поверхности это способ сглаживания общего края двух мно гоугольников. При создании скоса (фаски) или в данном случае сопряжении (filleting) NURBS-поверхностей место схождения или пересечения двух поверхностей скрывается добавляемой третьей поверхностью для создания иллюзии того, что две исходные поверх ности плавно переходят друг в друга. С помощью отсечения создадим спицы заднего колеса, а затем рассмотрим два очень мощных инструмента, Circular Fillet (Круглая галтель) и Trim (Отсечение). 1. Отсекающие поверхности будут созданы из цилиндра, поэтому для создания цилиндра выберите пункт меню Create => NURBS Primitives => Cylinder • (Создать => Примитивы NURBS => Цилиндр • ) . Установите переключатель Axis (Ось) в позицию Y, параметр radius (Радиус) должен быть равен 0.65, параметр Height (Высота) — 1.000. Щелкните на кнопке Create (Создать). Можно было бы продолжить со значениями параметров, установленными по умол чанию, а затем, используя масштабирование, установить правильные размеры ци линдра, не забывая в конце зафиксировать сделанные преобразования, выбрав пункт меню Modify => FreeZe Transformations (Изменить => Фиксировать преобразования). 2. Переместите цилиндр так, чтобы он соприкоснулся с эскизом, как показано на рис. 4.12, а. 3. Выделите цилиндр и перейдите в режим выделения изопараметрических линий. 4. Нажав клавишу <Shift>, выделите по изопараметрической линии на каждой стороне цилиндра (см. рис. 4.12, б).
194
а
Глава 4
б
в
г
Рис. 4.12. Процесс создания отсекающих объектов для спиц заднего колеса 5.
Выберите пункт меню Edit NURBS => Detach surfaces (Редактировать NURBS-поверхности => Разъединить поверхности). По умолчанию флажок Keep Original (Сохранять исходную поверхность) для этой операции сброшен. Но если исходный объект все еще существует, удалите его.
6.
Не снимая выделения с обеих частей цилиндра, выберите пункт меню Edit NURBS => r e b u i l d surfaces • (Редактировать NURBS-поверхности => Перестроить поверхно сти • ) . Установив параметры инструмента по умолчанию, в разделе Keep (Сохранять) установите флажок CVs (Контрольные вершины) и щелкните на кноп ке r e b u i l d (Перестроить).
7.
Удалите историю и зафиксируйте преобразования выделенных объектов.
8.
Удалите внешнюю часть цилиндра.
9.
Переместите опорную точку внутренней части цилиндра в начало глобальных коор динат.
10. Выберите пункт меню Edit => Duplicate Special • (Правка => Специальное дублирова ние • ) , чтобы открыть окно параметров операции. Установите угол поворота вокруг направления оси Y равным 72° (второе поле из трех полей в разделе r o t a t e (Поворот)), а параметр Number Of Copies (Количество копий) — равным 4. Устано вите переключатель Geometry Туре (Тип геометрической формы) в позицию Сору (Копировать), а переключатель Group Under (Сгруппировать под) — в позицию Parent (Подчинить). Щелкните на кнопке Duplicate Special (Специальное дублирование), и в результате получится изображение, похожее на приведенное на рис. 4.12, в. Чтобы равномерно разместить некоторое количество копий объекта вдоль окружности, разделите 360 на это количество, поместите полученное значение в одно из полей, задаю щих поворот вокруг оси в разделе rotate (Поворот), и установите параметр Number Of Copies (Количество копий) равным необходимому количеству объектов минус один (исходный объект не удаляется). 11. Нажав клавишу <Shift>, выделите исходный объект и выберите пункт меню Edit => Group (Правка => Группа) с параметрами по умолчанию. Присвойте созданной группе имя TrimObjectsGrp. Отметьте, что опорная точка этой группы располага ется точно в середине объектов и в начале глобальных координат. Именно для этого ранее подготавливался объект DrawPolyGeo.
Моделирование с использованием NURBS
195
12. Поверните группу TrimObjectsGrp на 90° относительно направления оси Z и пе ремещайте вдоль оси Y до тех пор, пока части цилиндра не пересекут поверхность вращения SpokeBaseGeo (см. рис. 4.12, г). Инструмент Circular Fillet (Круглая галтель) по ориентации поверхностей двух пере секающихся объектов определяет ориентацию, а вместе с этим и расположение относи тельно этих объектов, поверхности сопряжения (fillet), или галтели, плавно переходящей от одного объекта к другому. В документации Maya приведен отличный пример с двумя плоскостями. Тем не менее не стоит ожидать, что пользователю будут известны ориента ции поверхностей двух сопрягаемых объектов. Поэтому на практике зачастую легче соз дать круглую галтель, а потом, используя раздел Inputs (Входящие) панели каналов, от корректировать атрибуты. Найдя правильные параметры, можно настроить параметры инструмента Circular Fillet (Круглая галтель), чтобы избавиться от трех других вариан тов. Давайте создадим галтели.
1. Настройте интерфейс так, чтобы на экране отображались панель каналов и Иерархическая структура. (Для отображ ню Display => UI Elements => Channel Box/Layer Editor (Представление => Элементы
пользовательского интерфейса => Панель каналов/Редактор слоев), а для отображе ния иерархической структуры щелкните на кнопке быстрого вызова Persp/Outliner Layout (Компоновка перспективного представления/Иерархическая структура). 2. Выделите поверхность SpokeBaseGeo и один из частичных цилиндров именно в указанной последовательности, как показано на рис. 4.13, а. 3. Правильная поверхность сопряжения должна будет располагаться внутри объекта, поэтому установите в окне представления режим каркаса. 4.
Выберите пункт меню Edit NURBS => surface Fillet => Circular Fillet • (Редактировать
NURBS-поверхности => Сопряжение поверхностей => Круглая галтель • ) . В появив шемся окне параметров установите флажок Create Curve On surface (Создать кри вую на поверхности). В результате получится кривая пересечения с галтелью как на поверхности SpokeBaseGeo, так и на частичном цилиндре, что впоследствии будет использовано в операции отсечения. Флажки r e v e r s e Primary surface Normal (Обратить нормали первой поверхности) и r e v e r s e Secondary surface Normal (Обратить нормали второй поверхности) оставьте сброшенными. Затем удостоверь тесь, чтобы значение параметра r a d i u s (Радиус) было небольшим, в данном случае установите его равным 0 . 0 3 . Слишком большое значение радиуса может создать проблемы с обработкой узла галтели: галтель может быть чересчур деформирована или вообще не будет отображаться. Щелкните на кнопке Apply (Применить). В зави симости от быстродействия компьютера выполнение этой операции займет несколь ко секунд или минут. В результате должно получиться изображение, похожее на приведенное на рис. 4.13, а. Обратите внимание на то, что галтель расположена не с той стороны. 5. В разделе Inputs (Входящие) панели каналов появится узел rbfSrfl. Этим не сколько непонятным именем Maya назвала управляющий узел круглой галтели. Ес ли атрибуты узла еще не отображены, отобразите список его атрибутов, щелкнув на имени узла.
г. primaryradius - 0 . 0 3 , s e c o n d a r y r a d i u s 0.03
Рис. 4.13. Результат построения круглой галтели для четырех вариантов направле ний нормалей поверхностей
Моделирование с использованием NURBS
197
6. Измените направление галтели. Для этого, выделите поля ввода атрибутов primaryradius (Первый радиус) и secondaryradius (Второй радиус), введите в них значение -0.03 и нажмите клавишу <Enter> (см. рис. 4.13, б). 7.
Не получилось! Присвойте атрибуту primaryradius значение 0.03 и нажмите клавишу <Enter>. Появится изображение, аналогичное приведенному на рис. 4.13, в.
8.
И это все еще неправильно, но остался лишь один не опробованный вариант. При свойте атрибуту primaryradius значение -0. 03, а атрибуту secondaryradius — значение 0.03 к нажмите клавишу <Enter>. Результат будет похож на рис. 4.13, г. Это именно то, что нужно.
9. Поскольку нужная галтель была получена при отрицательном значении атрибута primaryradius, теперь понятно, какие параметры следует установить в окне пара метров Circular Fillet (Круглая галтель). Поэтому, если это окно еще не открыто, от кройте его и установите флажок r e v e r s e Primary surface Normal (Обратить норма ли первой поверхности). 10. Выделите поверхность SpokeBaseGeo и следующий частичный цилиндр в той же последовательности, как и ранее. Первый выделенный объект определяет нормали первой поверхности, а объект, выделенным вторым, — нормали второй поверхности. 11. Чтобы создать галтель, щелкните на кнопке Apply (Применить). 12. Продолжите движение вокруг поверхности SpokeBaseGeo, выделяя ее, а затем сле дующий частичный цилиндр и щелкая на кнопке Apply (Применить). Должно полу читься колесо, похожее на показанное на рис. 4.14. Операция создания круглой гал тели расположила кривые как на поверхности SpokeBaseGeo, так и на поверхностях частичных цилиндров. В дальнейшем эти кривые будут использованы при создании отсечения.
Рис. 4.14. Пять круглых галтелей во всей своей красе! Устранение неполадок п р и создании круглых галтелей
Из всех доступных в Maya операций при создании галтелей используются некоторые наи более сложные и требующие большого объема памяти операции. Эти операции мощные, но
198
Глава 4
привередливые: слишком многое может помешать появлению галтели после применения действия. Ниже приведено несколько рекомендаций для создания круглых галтелей. Как обычно при моделировании, осуществляйте очистку и корректную параметризацию геометрических форм. Некорректная параметризация и (или) чересчур длинная история может стать причиной ужасного замедления, искаженных галтелей и даже аварийного за вершения программы. Избегайте сопряжения острых краев. Это зачастую приводит к запутанным или сегменти рованным галтелям. Помните, что инструмент Circular Fillet (Круглая галтель) пытается соз дать между двумя геометрическими деталями геометрическую форму сечением в четверть окружности. Для острых углов это практически невозможно. Если галтель большого радиуса не отображается, попытайтесь или отменить ее создание, а затем повторить его, но уже с меньшим радиусом, или в разделе Inputs (Входящие) панели каналов настройте атрибут радиуса для узла r b f S r f n . Теперь следует отсечь все ненужные части поверхностей. Обычно операция отсече ния NURBS не изменяет саму поверхность, а скрывает указанную ее часть. Сейчас инст румент Trim (Отсечение) будет настроен так, чтобы сохранять заданную часть геометри ческой формы и скрывать остальные. 1.
а
Поскольку эта операция может быть выполнена в режиме тонирования (shaded mode) (клавиша < 6 > ) , отобразите перспективное представление в режиме тонирова ния. После этого объект должен выглядеть так, как на рис. 4.15, а.
б
в
г
Рис. 4.15. Отсечение формы SpokeBaseGeo
2.
Чтобы открыть панель параметров инструмента Trim (Отсечение), выберите пункт меню Edit NURBS => Trim Tool • (Редактировать NURBS-поверхности => Инструмент отсечения • ) . Чтобы восстановить параметры инструмента по умолчанию, щелкните на кнопке r e s e t Tool (Восстановить параметры инструмента по умолчанию). Уста новите переключатель Selected State (Выбранный режим) в положение Keep (Сохранять). Удостоверьтесь, что флажок Shrink surface (Сжать поверхность) сброшен, поскольку в противном случае выбранная поверхность будет сжата; именно поэтому данный флажок редко устанавливается.
3.
Щелкните в центре объекта SpokeBaseGeo, в результате появится изображение по хожее на рис. 4.15,6.
4.
Щелкните еще раз в центре объекта SpokeBaseGeo, в результате появится желтая точка, как на рис. 4.15, в. Эта точка указывает на часть выделенной формы, которая останется видимой. Напомним, что переключатель Selected State (Выбранный ре жим) был установлен в значение Keep (Сохранять).
199
Моделирование с использованием NURBS 5.
Чтобы выполнить отсечение, нажмите клавишу <Enter>. Появится пятиугольный профиль спиц, как показано на рис. 4.15, г.
6.
Чтобы получить такую же форму, как показано на рис. 4.16, повторите операцию от сечения для каждого частичного цилиндра.
Рис. 4.16. Поверхность после всех отсечений
SpokeBaseGeo
Итак, объект спиц создан, но его еще следует очистить. Каждая галтель — это геомет рический элемент с историей создания, которую следует удалить. Галтели зависят от геометрических форм, поэтому в текущем состоянии попытка переместить геометриче ские формы и галтели как единое целое приведет к медленному отображению двойных преобразований. Удаление истории разрывает эту зависимость. Давайте очистим и сгруппируем этот узел. 1.
Чтобы не допустить выделения ранее вычерченных кривых, которые необходимы для создания поверхностей вращения, в строке состояния щелкните правой кнопкой мыши на кнопке Select By Object Type: Curves (Выделять по типу объектов: кри вые) и в появившемся контекстном меню сбросьте флажок NURBS Curves (Кривые NURBS).
2. В области просмотра выделите прямоугольником весь созданный блок. Если необхо димо, в окне иерархической структуры вручную выделите каждый компонент. 3.
Удалите историю и сгруппируйте эти геометрические элементы. Присвойте группе имя DriveWheelSpokesGrp.
4. Центрируйте опорную точку созданной группы, выбрав пункт меню Modify => Center Pivot (Изменить => Центрировать опорную точку). 5.
В окне иерархической структуры выделите и удалите пустую группу T r i m G e o G r p и пять узлов c i r c u l a r F i l l e t S u r f а с е n .
А теперь завершим создание заднего колеса. 1. Выделите кривые IrmerWheelCrv, TireCrv и WheelWellCrv и вращением их вокруг оси X создайте поверхности (выберите для этого пункт меню surfaces => r e v o l v e (Поверхности => Вращение)). Выделите поверхность вращения кривой IrmerWheelCrv и откройте редактор атрибутов. Обратите внимание, что изопараметрические линии для
Глава 4
200
направления V имеют третью степень, а для направления U — первую. Это позволит, не добавляя детали и не прибегая к другим хитростям, сохранить резкий край обода. 2.
Удалите историю всех трех объектов.
3.
Переименуйте поверхности вращения в InnerWheelGeo, TireGeo и DriveWheelWellGeo соответственно.
4.
Выделите объекты DriveWheelSpokesGrp, TireGeo, InnerWheelGeo и D r i v e -
WheelWeilGeo и сгруппируйте их. Присвойте созданной группе имя Drive WheelGrp. 5. Центрируйте опорную точку группы DriveWheelGrp. 6.
Создайте новый слой и присвойте ему имя DriveWheelLyr. Поместите на него группу DriveWheelGrp, после чего скройте его.
7.
Выделите использованные кривые и поместите их на слой CurvesLyr. Кривые ис чезнут.
8.
Сохраните сцену как MacGiZmo02_DriveWheel .mb.
Создание двигателя При создании двигателя инструмент r e v o l v e (Вращение) будет применен последний раз. Здесь мы прибегнем к способу, используемому для создания кривой профиля двига теля. При ее построении будут использоваться операции Intersect Curve (Пересечь кри вую), Detach Curve (Разъединить кривую) и Attach Curve (Присоединить кривую) — предшественники используемых далее аналогичных операций для NURBS-поверхностей. Создайте кривую профиля. 1. Переместите опорную точку полигональной поверхности D r a w P o l y G e o в центр дви гателя, аналогично тому, как это ранее было сделано для заднего колеса. 2.
Начертите линейные кривые вокруг контуров носа и обтекателя двигателя (рис. 4.17, а). Начните и закончите кривую обтекателя в середине двигателя. Причин для модели рования невидимых внешнему наблюдателю геометрических форм тут нет.
а
б
в
г
д
Рис. 4.17. Процесс разьединения кривых. (На крайнем левом изображении слой с нанесенным эскизом скрыт, чтобы не загромождать рисунок.) 3. 4.
Перестройте линейные кривые в кубические. Чтобы открыть окно параметров создания окружности NURBS, выберите пункт меню Create => NURBS Primitives => Circle • (Создать => Примитивы NURBS => Окружность • ) .
Установите переключатель Axis (Ось) в положение Y, а параметру r a d i u s (Радиус) при-
Моделирование с использованием NURBS
201
свойте значение 0.2. Для параметра Number Of Sections (Количество сегментов) оставь те значение по умолчанию, т.е. 8. Чтобы создать небольшую окружность с центром в на чале глобальных координат, щелкните на кнопке Create (Создать). 5.
Переместите созданную окружность, как показано на рис. 4.17, а.
6.
Нажав клавишу <Shift>, выделите кривую обтекателя, чтобы добавить ее к вы делению.
7.
Чтобы открыть окно параметров пересечения кривых, выберите пункт меню Edit Curves => lntersect Curves • (Редактировать кривые => Пересечь кривые • ) . Восста новите параметры, заданные по умолчанию, выбрав в меню окна параметров пункт Edit => r e s e t Settings (Правка => Восстановить параметры по умолчанию). При выпол нении пересечения с такими параметрами точка пересечения будет помещена на обе кривые (см. рис. 4.17, б). Кривые создавались в ортогональных представлениях, а по тому обязательно пересекаются, что только способствует выполнению операции.
8. Перейдите в режим выделения точек окружности. 9.
Нажав для привязки к точкам клавишу , перетащите точку кривой, совместив ее с одной из точек пересечения.
10. Нажав клавиши <Shift> и , перетащите вторую точку кривой, совместив ее с другой точкой пересечения (см. рис. 4.17, в). 11. Чтобы разделить окружность на две части, выберите пункт меню Edit Curves => Detach Curves (Редактировать кривые => Разъединить кривые). Результат показан на рис. 4.17, г. 12. Чтобы разделить кривую обтекателя на две части, повторите шаги 8 - 1 1 . 13. Удалите лишние части кривой, как показано на рис. 4.17, д. 14. Сразу же перестройте кривые, сохраняя при этом их контрольные вершины. Для это го выберите пункт меню Edit Curves => r e b u i l d Curve • (Редактировать кривые => Перестроить кривую • ) , в разделе Keep (Сохранять) установите флажок CVs (Контрольные вершины) и щелкните на кнопке r e b u i l d (Перестроить). Теперь соединим эти кривые, чтобы создать профиль обтекателя двигателя. 1. Выделите две из трех кривых, как показано на рис. 4.18, а. 2. Чтобы открыть окно параметров операции Attach Curves (Присоединить кривые), выберите пункт меню Edit Curves => Attach Curves • (Редактировать кривые => Присоединить кривые • ) . Выберите для переключателя Attach Method (Способ при соединения) значение Connect (Соединять), а для переключателя Multiple Knots (Кратные узлы) — значение Keep (Сохранять). При таких параметрах кривые будут объединены с минимальным искажением формы линий. Чтобы присоединить кри вые друг к другу, щелкните на кнопке Attach (Присоединить).
Нововведением Maya 8.5 является возможность присоединения нескольких выделенных кривых в ходе одной операции, что избавляет от необходимости многократно го выбора пар кривых.
202 3.
Глава 4 Д Л Я соблюдения корректности параметризации кривой, по форме похожей на кри вую, показанную на рис. 4.18, 6, сразу же перестройте полученную кривую, сохраняя при этом ее контрольные вершины.
а
6
в
Рис. 4.18. Присоединение кривой позволяет получить профиль обтекателя 4.
Чтобы завершить присоединение, выделите, нажав клавишу <Shift>, оставшуюся кривую и повторите шаги 2-3. Получившаяся в итоге линия представлена на рис. 4.18, в.
5.
Удалите историю кривой обтекателя.
6.
Переименуйте кривые носа и обтекателя соответственно в NoseCrv и Cowl Crv.
Теперь перейдем к созданию собственно двигателя. Для создания лопастей будут ис пользованы как только что созданные кривые, так и линейная плоскость NURBS. Нач нем с турбин. 1.
Чтобы открыть окно параметров создания плоскости NURBS, выберите пункт меню Create => NURBS Primitives => Plane • (Создать => Примитивы NURBS => Плоскость • ) . Присвойте параметру Width (Ширина) значение 0.5, а параметру Length (Длина) — 1. Для переключателя surface Degree (Степень поверхности) выберите значение 1 Linear (1, линейная). Щелкните на кнопке Create (Создать).
Линейные кривые используются для создания лопастей турбины потому, что их проще ре дактировать, а их визуализация занимает меньше процессорного времени. 2.
Присвойте новой форме имя TurbineGeo.
3.
Сделайте одну сторону плоскости уже другой, перейдя для этого в режим выделения контрольных вершин и несколько уменьшив расстояние между ними.
4.
Выделите объект TurbineGeo и поверните его на 55° вокруг оси Z.
5.
Переместите объект TurbineGeo назад вдоль оси Z так, чтобы он пересек обе кри вые NoseCrv и CowlCrv (рис. 4.19, слева).
Моделирование с использованием
NURBS
203
Рис. 4.19. Создание турбин в результате модификации и дуб лирования линейной плоскости NURBS 6. Переместите опорную точку объекта TurbineGeo обратно, в начало глобальных ко ординат. 7. Выберите пункт меню Edit => Duplicate Special • (Правка => Специальное дублирова ние • ) . Поскольку необходимо создать 60 лопастей турбины, установите параметр Number Of Copies (Количество копий) равным 59 и установите поворот относи тельно направления оси X (первое поле r o t a t e (Поворот)) равным 6. Щелкните на кнопке Duplicate Special (Специальное дублирование). Появится изображение, по хожее на приведенное на рис. 4.19, справа. 8. Нажав клавишу <Shift>, выделите исходный объект TurbineGeo и сгруппируйте лопасти в группу TurbineGrp. 9. Выделите кривую носа N o s e C r v и вращением ее вокруг оси X создайте поверхность. При этом может возникнуть проблема (рис. 4.20, слева): на самом кончике носа по верхность вращения кажется примятой. Такое случается, если вращаемая кривая не сколько пересекает ось вращения. Если это так, переместите последнюю контроль ную вершину кривой N o s e C r v немного назад вдоль оси Z до тех пор, пока не исчез нет темная область вокруг носа (рис. 4.20, справа).
Рис. 4.20. Создание поверхности вращения и исправление об ласти вокруг носа 10. Переименуйте поверхность, получившуюся в результате вращения кривой NoseCrv, в NoseSrf и удалите ее историю.
204
Глава 4
1 1 . Выделите кривую обтекателя CowlCrv и вращая ее создайте поверхность. Посколь ку кривая CowlCrv была получена в ходе пересечения, разъединения и присоедине ния кривых, получившаяся в результате поверхность вращения более чем насыщена звеньями по направлению U, — ее обязательно следует перестроить. После выполне ния операции вращения обратите внимание на то, что в разделе Inputs (Входящие) панели каналов выделен соответствующий ей узел вращения (revolve node). Это по зволяет манипулировать атрибутами, но может помешать выполнению последую щих операций. Перед тем как снова редактировать поверхность вращения, еще раз щелкните на ней. И с т о р и я создания
При изменении кривой или кривых, использованных при создании поверхности, изменя ется и сама результирующая поверхность, поэтому история создания вместе с такими инструментами построения и обработки поверхностей NURBS, как revolve (Вращение), Loft (Обтяжка), Extrude (Выдавить), Boundary (Заполнение контура) и т.д., является мощ ным средством Майя. В качестве примера рассмотрим поверхность N o s e S r f . Перед уда лением истории можно было бы изменить форму кривой профиля, и это изменение пе редалось бы поверхности. Но можно было изменить и свойства линии: вставить точки редактирования, перестроить, изменить степень и т.д., — и все эти изменения также пе редались бы созданной на основе этих кривых поверхности. В качестве упражнения мо дификациями кривой N o s e C r v создайте приведенную на рис. 4.21 форму, при этом вставляйте узлы, перемещайте контрольные вершины и перестраивайте кривую с сохра нением контрольных вершин. 12. Выделите поверхность вращения и откройте редактор атрибутов. Будет видно, что, несмотря на правильную параметризацию поверхности (количества звеньев U и V (Spans U V ) совпадают с соответствующими наибольшими значениями параметров для этих направлений (Min Max r a n g e U и Min Max r a n g e V ) ) , количество звеньев по направлению U равно 37. (Для самостоятельно полученной модели это значение может быть иным.) В результате получаются длинные и тонкие фрагменты поверх ности, что не оптимально. 13. Выберите пункт меню Edit NURBS => r e b u i l d surfaces • (Редактировать NURBSповерхности => Перестроить поверхности • ) . Суть правильного перестроения по верхностей NURBS заключается в том, чтобы поверхность имела как можно меньше изопараметрических линий и одновременно с этим обязательно сохраняла свою форму. Для перестроения рассматриваемой поверхности необходимо установить пе реключатель r e b u i l d Туре (Тип перестроения) в значение Uniform (Однородно). По сле этого станут доступными расположенные ниже поля ввода параметров Number Of Spans U (Количество звеньев по направлению U) и Number Of Spans V (Количество звеньев по направлению V ) , звенья этих направлений будут равномер но распределены вдоль всех поверхностей. Чтобы перестроить поверхность с задан ным количеством звеньев, установите переключатель Parameter r a n g e (Диапазон параметра) в значение 0 То #Spans (От 0 до количества звеньев). Если установить значение 0 То 1 (От 0 до 1), то при перестроении в качестве координат будет исполь зована относительная длина хорды; такая параметризация подходит для нанесения текстур, но не для моделирования. Установленные флажки раздела Keep (Сохранять) не изменяют ни поверхность, ни ее параметризацию, поэтому пропус-
Моделирование с использованием NURBS
205
тим их. Поскольку направление U насыщенно, а направление V совершенно, устано вите переключатель Direction (Направление) в значение U. При этом поверхность будет перестроена только по направлению U. Установите параметр Number Of Spans U (Количество звеньев по направлению U) равным 18. Можно установить и меньшее значение, но тогда может исказиться округлая выпуклость, которая была с таким трудом построена и добавлена к кривой обтекателя. Конечно же, результат преобра зования должен быть в топологии NURBS, поэтому установите переключатель Output Geometry (Выходная геометрия) в положение NURBS. Чтобы увидеть ре зультат, аналогичный представленному на рис. 4.21, справа, щелкните на кнопке Apply (Применить). Обратите внимание на то, что фрагменты поверхности стали квадратными и сохранилась детализация кольца вокруг хвостовой части двигателя. Это и есть суть правильного перестроения поверхности.
Рис. 4.21. Перестроение поверхности EngineCowl с использованием окна параметров операции rebuild
surfaces
14. Удалите историю этой поверхности и переименуйте ее в EngineCowlSrf. 15. Выделите объекты EngineCowlSrf, NoseSrf и TurbineGrp и сгруппируйте их в новой группе EngineGrp. 16. Создайте слой EngineLyr и поместите на него группу EngineGrp. 17. Поместите кривые NoseCrv и CowlCrv на слой CurvesLyr. 18. Сохраните файл как MaGiZmo03_Engine .mb.
Моделирование корпуса и крыла К этому моменту уже проделано довольно много работы С использованием инстру ментов r e v o l v e (Вращение), Trim (Отсечение) и Circular Fillet (Круглая галтель). Теперь, чтобы создать относительно сложный корпус, воспользуемся инструментом Fillet Blend (Смешанная галтель), а также обширным набором инструментов Maya для редактирова ния NURBS. Но сначала необходимо создать улучшенный шаблон. 1. Переведите слой D r a w i n g L y r из режима ссылки в обычный режим. 2. Переместите полигональную поверхность DrawPolyGeo так, чтобы середина верх него вида эскиза совпала с началом глобальных координат. 3. С помощью инструмента Cut Faces (Разрезание граней) разрежьте грани, как пока зано на рис. 4.22, а.
206
Глава 4
в Рис. 4.22. Модификация полигональной поверхности с нане сенным эскизом позволяет создать трехмерный шаблон. Обратите внимание, как при совмещении видов использу ются пунктирные осевые линии
4
Моделирование с использованием NURBS 4.
207
Перейдите в режим выделения граней, извлеките и отделите грани, на которых изо бражен вид на МакГизмо сбоку и сверху (см. рис. 4.22, б). Чтобы открыть окно пара метров Extract (Извлечение), выберите пункт меню Mesh => Extract • (Сетка => Извлечение • ) . Удостоверьтесь, что установлен флажок Separate Extracted Faces (Отделять извлеченные грани) и по одной извлеките все грани.
5. Поверните и переместите многоугольники в позиции, показанные на рис. 4.22, в. Это проще сделать, если центрировать опорные точки многоугольников, поэтому выбе рите пункт меню Modify => Center Pivot (Изменить => Центрировать опорную точку). И конечно, для совмещения видов МакГизмо используйте пунктирные осевые линии. 6. Удалите историю всех полученных полигональных поверхностей и добавьте их на слой DrawingLyr. Создание корпуса начнем с использования такого примитива, как сфера. Вместо того чтобы пытаться вычертить кривые, а затем обтянуть (loft) их или заполнить (boundary) образованный ими контур, каплевидную форму корпуса можно создать более эффектив но, разделив сферу на две части и повторно соединив их инструментом Freeform Fillet (Произвольная галтель). 1. Выберите пункт меню Create => NURBS Primitives => Sphere • (Создать => Примитивы NURBS => Сфера •) и создайте сферу радиуса ( r a d i u s ) 2 с 16 секторами ( N u m b e r of Sections) и 8 звеньями (Number of Spans), расположив ее вдоль направления оси X. 2. Перейдите в режим выделения изопараметрических линий сферы и выделите изопараметрическую линию, проходящую точно по центру сферы. При этом в конце на звания окна отобразится следующее: NURBSSpherel .и [4]. Чтобы выделить изопараметрическую линию (при выделении она станет сплошной желтой), причем с це лым, без десятичных знаков, номером, очень важно щелкнуть именно на звене. В противном случае разъединение пройдет не по той кривой и станет причиной про блем при последующем перестроении и моделировании. 3. Выберите пункт меню Edit NURBS => Detach surfaces (Редактировать NURBSповерхности => Разъединить поверхности) и разделите поверхность по выделенной изопараметрической линии. 4. Сразу же перестройте обе выделенные поверхности, сохраняя при этом контрольные вершины, а затем удалите историю. 5. Расположите полусферы с обеих сторон корпуса, приведенного на полигональном эскизе МакГизмо. Полусферическим поверхностям, расположенным в носовой и хвостовой частях корпуса, присвойте имена NoseSrf и TailSrf соответственно. Перестройка поверхности с с о х р а н е н и е м контрольных в е р ш и н
После выполнения каждой операции, изменяющей количество звеньев объекта, разумно сразу же его перестроить, сохраняя при этом контрольные вершины. В результате геомет рическая форма останется простой и с корректной параметризацией. В данном случае сто ит создать кнопку панели, выполняющую следующий программный код: rebuildsurface -ch 1 -rро 1 -rt 0 -end 1 -кr 2 -кср 1 -кс 0 -su 18 -du 3 -sv 8 -dv 3 tol 0.01 -fr 0 -dir 2;. Всякий раз, когда необходимо перестроить поверхность с со хранением контрольных вершин, достаточно щелкнуть на этой кнопке.
Глава 4
208
Поскольку моделирование с использованием поверхностей будет продолжено, пона добится перемещать большие количества точек в корректные для них позиции. Чтобы этот процесс стал эффективнее, необходим способ одновременного перемещения кон трольных вершин на свои места. Попытки начать моделирование точка за точкой займут много времени и будут неэффективными, поэтому будем придерживаться следующих принципов. •
Чтобы переместить объект в стандартное положение и придать ему требуемую форму, начинайте с использования инструментов Move (Перемещение), Scale (Масштаб) и r o t a t e (Поворот).
•
Для изменения формы поверхности используйте такие деформаторы, как решетки (lattice), суставы (joint) и деформаторы оболочки (wrap deformer), не прибегая к пе ремещению компонентов. К примеру, решетки могут перемещать контрольные вер шины внутри объема самой решетки.
•
Изменение компонентов начинайте с перемещения, масштабирования и поворота Звеньев каркаса, представляющих кольца или ряды контрольных вершин.
•
Перемещайте за один раз как можно большие группы контрольных вершин.
•
Перемещайте контрольные вершины одна за другой. Следуя этим принципам, начнем преобразовывать полусферу в корпус аппарата.
1.
а
Выделите поверхность носа NoseSrf и измените ее масштаб так, как показано на рис. 4.23, а.
б
в
г
д
Рис. 4.23. Работа идет в направлении от общего к частному: масштабирование/перемещение гео метрических форм, деформирование с использованием решетки, редактирование компонентов с ис пользованием фрагментов каркаса и манипулирование точками с помощью контрольных вершин 2.
Для создания решетки с параметрами по умолчанию выберите из набора меню Animation (Анимация) пункт меню Create Deformers => Lattice (Создать деформаторы => Решетка). В разделе Shapes (Формы) панели каналов найдите и выделите узел ffdlLatticeShapenode. По умолчанию значение атрибута Т Divisions (Интервалы по направлению Т) равно 5, что слишком велико, потому измените его на 2. С практической точки зрения сложно угадать направление, в котором будет разбита решетка, поэтому просто изменяйте значения каждого атрибута до тех пор, пока не получите правильное направление. В данном случае измените значение ат рибута S Divisions на 3.
Моделирование с использованием NURBS
209
Беглый взгляд на иерархическую структуру показывает наличие на сцене двух решеток: ffdlLatti.ee и ffdiBase. Maya деформирует контрольные вершины или вершины на ос нове сравнения расположения точек решетки с расположением точек базового объекта. Это позволяет деформировать объекты с помощью решеток, не перемещая при этом их точки. Базовый объект в настоящее время скрыт, но его можно отобразить, чтобы увидеть, как это работает. 3. Чтобы получить возможность манипулировать формой решетки и перемещать ее точки, щелкните правой кнопкой мыши на решетке и в появившемся контекстном меню выберите пункт Lattice Point (Точка решетки). На экране появятся яркофиолетовые точки (см. рис. 4.23, б). 4.
Перемещайте и масштабируйте точки решетки до тех пор, пока результат преобразо вания не будет аналогичен изображениям, приведенным на рис. 4.23, в. Помните, что необходимо попытаться совместить поверхность полусферы с эскизом видов сбоку, сверху и снизу, поэтому при моделировании вращайте представление. К тому же не за бывайте, что в масштабировании могут участвовать целые ряды точек решетки; ничто не вынуждает перемещать точки по одной. Если решетка слишком сильно отклонится от формы, ее параметры по умолчанию можно восстановить, выбрав пункт меню Edit Deformers => Lattice => r e s e t Lattice (Редактировать деформаторы => Решетка => Восстановить параметры решетки).
5.
Сделав с решеткой все возможное, выделите полусферу и удалите историю, чтобы избавится от деформатора.
6. Не исключено, что деформациями решетки удастся совместить поверхность с эски зом. Но если нет, без опасений перейдите в режим выделения фрагментов каркаса полусферы и, манипулируя фрагментами каркаса, получите такую же форму, как на рис. 4.23, г. 7.
Перейдите в режим выделения контрольных вершин и, перемещая их, откорректи руйте форму точно; однако имейте в виду, что этого может и не потребоваться.
8. Повторите шаги 1-7 для полусферы хвостовой части корпуса. Когда форма примет правильный вид, работа закончена. В результате должны получиться две формы на подобие приведенных на рис. 4.24. У корпуса МакГизмо уже есть носовая и хвостовая части; теперь необходимо запол нить сам корпус. Заполним объем корпуса с помощью инструмента Fillet Blend (Смешанная галтель). Разработчики моделей NURBS используют этот инструмент для создания плавного перехода между непересекающимися поверхностями или кривыми. Это делается в том случае, когда переход между поверхностями должен обеспечивать связность (continuity) или касание (tangency) (подробнее об этом — ниже, в разделе "Что такое связность поверхности") двух поверхностей. Последнее отличает его от инстру мента Circular Fillet (Круглая галтель), создающего плавный переход между двумя пере секающимися поверхностями. Инструмент Fillet Blend (Смешанная галтель) подробно рассматривается в ходе создания корпуса. Несмотря на то что смешанную галтель можно построить непосредственно между звенья ми различных объектов, некоторые инструменты сопряжения поверхностей требуют пере хода в режим выделения изопараметрических линий; поэтому для единства стиля возьмите за правило всегда начинать с перехода в режим выделения изопараметрических линий.
210
Глава 4
Рис. 4.24. Поверхности NoseSrf и TailSrf аппарата МакГизмо 1.
2.
•
Д Л Я обоих объектов, полученных из полусфер, перейдите в режим выделения изопараметрических линий. С помощью инструмента Fillet Blend (Смешанная галтель) можно создать плавные переходы между кривыми, кривыми на поверхностях и изопараметрическими линиями. Для последних смешанная галтель наследует свойства обеих поверхностей, что и обусловливает выбор инструмента. Выберите пункт меню Edit NURBS => surface Fillet => Fillet Blend Tool • (Редактировать
NURBS-поверхности => Сопряжение поверхностей => Инструмент смешанная галтель • ) . В появившемся окне параметров инструмента восстановите параметры по умолча нию, а затем сбросьте флажки параметров Auto Normal Dir (Автоматическое опреде ление ориентации) и Auto Closed r a i l Anchor (Автоматическая привязка направ ляющих по замкнутому контуру). Щелкните на кнопке Fillet Blend Tool (Инструмент смешанная галтель). В результате этот инструмент будет выбран, а ок но параметров закрыто. 3.
Щелкните на открытом крае передней полусферы. Он будет подсвечено, как будто была выделена изопараметрическая линия, хотя текущим режимом по-прежнему бу дет режим выделения объектов.
4.
Чтобы перейти к выделению следующего края, нажмите клавишу <Enter>. Рассмат риваемый инструмент поможет создать плавный переход между совокупностями краев, а раз так, то эти совокупности краев необходимо отделить друг от друга.
5.
Щелкните на открытом крае другой полусферы, как показано на рис. 4.25 а. Он, как и ранее, будет подсвечен как выделенная изопараметрическая линия, что и требуется.
6.
Чтобы создать галтель, нажмите клавишу <Enter> (см. рис. 4.25, б).
7.
Переименуйте созданную поверхность сопряжения в BodySrf.
8.
Чтобы увидеть галтель двух других форм (см. рис. 4.25, в), выберите в меню окна просмотра пункт Shading => Wireframe On Shaded (Тонирование => Каркас поверх то-
211
Моделирование с использованием NURBS
нирования). Несмотря на то что корпус состоит из трех фрагментов, швы между ни ми не видны, и можно сказать, что фрагменты образуют связную поверхность.
в Рис. 4.25. Применение инструмента для создания корпуса МакГизмо
Fillet Blend
Что такое связность поверхности Сейчас самый подходящий момент резко отклониться от темы и объяснить концеп цию связности поверхности (surface continuity). Связность поверхностей характеризует то, как две различные кривые или поверхности зрительно проходят через общий край (это крайне важно для разработчиков моделей NURBS). Существуют три типа связно сти: связность расположения (positional), касательной (tangent) и кривизны (curvature). •
Связность расположения (GO) означает только то, что контрольные вершины края одного фрагмента имеют такие же пространственные координаты, как и контрольные вершины края другого фрагмента. Этот тип связности представлен в левой колонке
2
Глава 4 изображений на рис. 4.26. В месте схождения двух фрагментов такая связность мо жет приводить к возникновению швов или разрывов поверхности. Этот механизм проиллюстрирован направлением и расположением фрагментов каркаса.
Связность расположения
Связность касательной
Связность кривизны
Рис. 4.26. Связность расположения, касательной и кривизны на примере кривых, по верхностей с контрольными вершинами, фрагментами каркаса и тонированных по верхностей самих по себе Для связности касательной (G1) требуется не только совпадение расположения то чек края, но еще необходимо, чтобы следующий ряд контрольных вершин каждого фрагмента располагался по крайней мере на одной плоскости, а желательно — на од ной линии; поэтому кривая или поверхность выглядит плавно проходящей через край. Пример такой связности приведен в средней колонке изображений на рис. 4.26. Связность кривизны (G2) объединяет в себе связности расположения и касатель ной и еще дополнительно требует, чтобы обе кривые и поверхности выходили из края с практически одинаковыми углами. Связанные с этим методом проблемы проиллюстрированы в правой колонке изображений рис. 4.26. При достижении связности кривизны поверхность модели неприемлемо искажается из-за того, что
Моделирование с использованием NURBS
213
затрагивается большое количество точек вне края. Наиболее четко это видно на примерах кривых.
Способы получения связных поверхностей и кривых Maya предлагает множество способов достижения связности поверхностей и кривых. Знание того, как и когда использовать каждый метод, приходит по мере приобретения опыта, но понимание типов связности поможет лучше ориентироваться в случаях при менения следующих инструментов. •
Операции Align Curves (Выровнять кривые) и Align surfaces (Выровнять поверхности) совмещают одну кривую или поверхность с другой, достигая при этом связности расположения, касательной и кривизны. Однако при этом одна кривая или поверхность подгоняется под кривизну другой, что может недопустимо исказить результирующую форму. Одно превосходное применение операции Align (Выровнять) — это подгонка свободно плаваю щей кривой (free floating curve) к кривой на поверхности или производной кривой, полученной из изопараметрической линии в результате операции Duplicate surface Curves (Дублировать кривые поверхности). Выделив точ ку производной кривой и подогнав кривые с условием связности кривизны, свободно плавающую кривую можно почти точно подогнать под производ ную кривую в любой точке последней, как показано на рис. 4.27.
Рис. 4.27. Подгонка свободно плавающей кривой к кривой, произ водной от изопараметрической линии поверхности. Обратите внимание на то, что плавающая кривая подгоняется по производ ной кривой, начиная выделенной точки кривой
•
При сопряжении двух непересекающихся кривых или фрагментов получает ся геометрическая форма, автоматически обладающая связностью касатель ной с обеими исходными частями. Это означает, что для заполнения проме жутков между фрагментами можно использовать галтели. На рис. 4.28 про демонстрировано использование инструмента Fillet Blend (Смешанная галтель) для создания геометрической формы, перекрывающей промежуток между фрагментами руки и тела. (Если хотите попробовать это сделать, от кройте с компакт-диска файл C o n t i n u i t y 0 1 _ F i l l e t . mb.)
•
Как было продемонстрировано, инструмент Circular Fillet (Круглая галтель) располагает геометрическую деталь так, чтобы она касалась двух пересе кающихся поверхностей, при этом направление перехода между поверхно стями можно настроить как угодно.
214
Глава 4
Рис. 4.28. Использование инст румента Fillet Blend для соеди нения фрагментов руки с фраг ментами тела. Обратите внимание, что каждая поверхность сопряжения обладает связностью касательной как к фрагменту ру ки, так и к фрагменту тела Зачастую присоединение и разъединение кривых и поверхностей является самым простым и удобным средством достижения касания двух прилегающих поверхностей (рис. 4.29). На верхнем изображении галтель из предыдущего примера была присое динена к фрагменту руки, а затем поверхности были перестроены с сохранением контрольных вершин. Фрагмент руки удовлетворяет связности расположения, но там, где нет касания поверхностей видны швы. Перейдя в режим выделения изопараметрических линий и выделив для каждого фрагмента изопараметрическую ли нию края (это самый точный способ начала процесса присоединения), вы можете с легкостью осуществить присоединение и сразу же перестроить полученную в ре зультате поверхность с сохранением контрольных вершин. Затем отсоедините новый фрагмент (и сразу же перестройте) вдоль изопараметрической линии, по которой он только что был присоединен. Теперь связность касательной есть уже между двумя фрагментами. Присоединяя и перестраивая, продолжите движение вокруг руки и в конце с помощью операции Open/Close surface (Разомкнуть/Замкнуть поверх ность) замкните поверхность в правильном направлении. Инструмент Stitch Edges (Сшивание края) и операция Global Stitch (Глобальное сшивание) также могут создавать связность касательной между двумя или более фрагментами. Даже работая только с фрагментами, они способны закрывать проме жутки между ними, одновременно с этим достигая касания. Инструмент Stitch Edges работает с двумя фрагментами и создает между ними взаимосвязь типа "главный/ подчиненный". Первый выделенный фрагмент становится главным, а второй пере мещается в соответствии с изменениями контрольных вершин главного. Команда Global Stitch позволяет объединять несколько фрагментов с различными степенями связности. Для оптимальной работы обоих рассматриваемых средств необходимо, чтобы фрагменты были расположены как можно ближе друг к другу.
Моделирование с использованием NURBS
215
Рис. 4.29. Процесс использования опе раций
Attach/Detach
surfaces
для
достижения связности касательных •
Связность касательной можно получить и вручную, аккуратно перемещая контроль ные вершины, а также программно, выполнив сценарий MEL. Один из таких сцена риев — mAlignCVs, — написанный Мэтью Гидни (Matthew Gidney), представлен на сайте www. highend3d. com. Сценарий позволяет заранее выделить две контрольные вершины, которые будут использоваться как анкеры (anchor), и группу контрольных вершин, которые следует расположить на одной линии с анкерами. Затем сценарий вычисляет прямую между двумя анкерами и привязывает к ней выделенные верши ны. Этот процесс продемонстрирован на рис. 4.30.
Знакомство с типами связности поверхностей помогает в работе с поверхностями и кривыми. Разработчикам NURBS-поверхностей лучше всего использовать связность ка сательных, поскольку в этом случае создается плавный переход через край между двумя фрагментами, а небольшое изменение кривизны не приводит к искажению самих фраг-
216
Глава 4
ментов. Выбор средства для достижения такого плавного перехода в большинстве случа ев остается вопросом личного вкуса и опыта.
а
б
в
Рис. 4.30. Использование сценария mAlignCVs: выделите две контрольные вершины (а); выде лите одну или несколько контрольных вершин, которые следует расположить на одной линии, и выполните сценарий (б); выбранные контрольные вершины расположены на прямой, зада ваемой первыми двумя выделенными контрольными вершинами (в)
Завершение корпуса После соответствующей подготовки поверхностей NoseSrf и TailSrf, а также при менения к ним инструмента Fillet Blend (Смешанная галтель) была получена геометри ческая деталь, почти в точности соответствующая эскизу. Эту форму можно было бы создать и из сферы, добавив к ней изопараметрические линии и вытянув фрагменты кар каса и контрольные вершины, но использованный способ позволил значительно уско рить процесс. Интересно, что эта новая геометрическая деталь интерактивна благодаря своей исто рии создания. Это означает, что узел ffBlendSrf в разделе Inputs (Входящие) будет пе ремещать фрагменты каркаса и контрольные вершины фрагмента поверхности сопряже ния (т.е. галтели) в соответствии с изменениями сопрягаемых поверхностей. При анали зе модели выяснится, что контур хвоста не совсем совпадает с эскизом. Как исправить этот недостаток и как при изменении хвостового обтекателя перемещаются контрольные вершины корпуса, показано на рис. 4.31.
Рис. 4.31. Обратите внимание, как перемещаются контрольные вершины фраг мента корпуса при изменении хвостовой части. Перемещение контрольных вершин вперед приводит к расширению корпуса, а при масштабировании их наружу корпус сжимается
Моделирование с использованием NURBS
217
Этот подход вполне согласуется с объявленным ранее способом моделирования от общего к частному. При наличии таких интерактивных фрагментов, как галтели, при ре дактировании формы всей поверхности можно использовать только перемещение кон трольных вершин или фрагментов каркаса. Последнее, что осталось, — это сделать днище корпуса плоским. После построения галтели оно стало слишком выпуклым. Чтобы привести контрольные вершины вдоль днища в большее соответствие с эскизом, выделите их и с помощью перемещения или масштабирования расположите на одной плоскости. Избегайте выделения как контроль ных вершин края корпуса, так и соседних рядов по обе стороны от него, так как это мо жет нарушить связность касательной. Не беда, если связность касательной слегка нарушилась. При соединении вместе трех по верхностей все разрывы между ними будут сглажены. 1. Чтобы удалить зависимости поверхности B o d y S r f и подготовить ее к пере строению и присоединению к носу и хвосту, удалите ее историю. Если выделить поверхность и посмотреть в редактор атрибутов, то можно заметить, что в каче стве параметра для нее используется длина хорды (параметры по направлениям U и V проходят значения от 0 до 1). Обратите внимание, что для количества звеньев по направлениям U и V заданы значения 2 и 16 соответственно. Это следует изменить, одновременно увеличив детализацию корпуса. Выберите пункт меню Edit NURBS => r e b u i l d surfaces • (Редактировать NURBS-поверхности = > Перестроить поверхности • ) , установите переключатель Direction (На правление) в позицию U a n d V (U и V), а для параметров N u m b e r Of S p a n s U (Количество звеньев по направлению U) и N u m b e r Of S p a n s V (Количество звеньев по направлению V) установите значения 2 и 16 соответственно. Щелк ните на кнопке r e b u i l d (Перестроить). 2. Чтобы присоединить поверхность N o s e S r f к поверхности BodySrf, выделив обе поверхности, выберите пункт меню Edit NURBS => Attach surfaces • (Редак тировать N U R B S - п о в е р х н о с т и = > Присоединить поверхности • ) . В появившемся окне параметров установите переключатель A t t a c h M e t h o d (Способ присоедине ния) в значение Blend (Смешение) и удостоверьтесь, что сброшен флажок Insert Knot (Вставить узел). В данном случае при таких параметрах поверхности будут присоединены с минимальным искажением. Щелкните на кнопке A p p l y (Применить). 3. Перестройте полученную поверхность с сохранением контрольных вершин. 4. Удалите историю новой поверхности. Это очень важно. Оставленная история может стать причиной непоправимого искажения модели. 5.
Выделите новую деталь, а затем, нажав клавишу <Shift>, выделите поверхность TailSrf и, чтобы соединить эти поверхности, а также закрыть окно параметров, щелкните на кнопке Attach (Присоединить).
6. Перестройте полученную поверхность, сохраняя при этом контрольные вершины, и удалите историю. Переименуйте поверхность в BodySrf. 7. Зафиксируйте преобразования поверхности BodySrf.
Глава 4
218
Обтяжка крыла Поверхность крыла можно получить с помощью достаточно простой операции об тяжки. Не забывайте, что крыло должно иметь небольшую кривизну по всей длине. Тем не менее простая обтяжка двух кривых позволит выполнить большую часть работы по созданию этой детали. В данном упражнении рассматриваются дополнительные способы создания отчетливого края и наконечников формы. Сначала создадим крыло. 1. Используя инструмент создания кривой по точкам ( Е Р Curve T o o l ) пройдите в виде спереди по точкам внутреннего сечения формы крыла и создайте кривую. 2.
Перестройте полученную кривую в кубическую кривую с 12 звеньями.
3.
Чтобы преобразовать кривую из разомкнутой в циклическую, или замкнутую, выбе рите пункт меню Edit Curves => Open/Close Curves (Редактировать кривые => Разомкнуть/Замкнуть кривые). В появившемся окне параметров установите пере ключатель Shape (Форма) в состояние Blend (Смешение) и сбросьте флажок Insert Knot (Вставить узел). Щелкните на кнопке Open/Close (Разомкнуть/Замкнуть).
4.
Манипулируя контрольными вершинами кривой, приведите ее форму в соответст вие с эскизом.
5.
Чтобы создать копию поверх оригинала, выберите пункт меню Edit => Duplicate • (Правка => Дублировать •) и в появившемся окне параметров установите значения по умолчанию.
6.
Изменяйте масштаб полученной копии кривой до тех пор, пока по размеру она не совпадет с большей формой крыла эскиза.
7.
Манипулируя контрольными вершинами кривой, добейтесь ее более точного соот ветствия эскизу (рис. 4.32, а).
а
б
в
Рис. 4.32. Обтяжка левой половины крыла 8.
Выделите и переместите всю меньшую кривую, совместив ее с двигателем, как пока зано на рис. 4.32, б.
9.
Нажав клавишу <Shift>, выделите сначала большую, а затем меньшую кривую и вы берите пункт меню surfaces => Loft • (Поверхности => Обтяжка • ) . Операция Loft (Обтяжка) наращивает поверхность между несколькими кривыми различных форм. Лучше всего эта операция работает с равномерно параметризованными кривыми, уз-
Моделирование с использованием NURBS
219
лы которых расположены как можно ближе друг к другу. В данном случае выберите для параметра ParameteriZation (Параметризация) значение Uniform (Однородно), установите флажок Auto r e v e r s e (Автоматическое обращение), переключатель surface Degree (Степень поверхности) установите в положение Cubic (Кубическая), а для параметра Section Spans (Количество звеньев между обтягиваемыми кривы ми) установите значение 2. Щелкните на кнопке Loft (Обтяжка). 10. Немедленно перестройте поверхности, сохраняя при этом контрольные вершины. 1 1 . Откорректируйте все контрольные вершины, чтобы получить как можно большее соответствие с эскизом (см. рис. 4.32, в). При этом следует взглянуть на другую сто рону эскиза и постараться совместить и ее. Если возникнет необходимость изменить расположение концов поверхности, переместите кривые, и поверхность переместит ся вслед за ними. 12. После удаления истории присвойте форме крыла имя WingSrf. Поместите все ис пользованные для ее создания кривые на слой CurvesLyr. Теперь создадим две поверхности: одну — для основания крыла и еще одну отдель ную короткую деталь, которая будет сопряжена с двигателем круглой галтелью. Конеч но, в угловой точке поверхность крыла будет разъединена, но в этом и состоит рассмат риваемая в следующем упражнении обработка концов крыла. 1. Перейдите в режим выделения изопараметрических линий поверхности WingSrf и вне двигателя выделите ближайшую к нему изопараметрическую линию. При этом в строке справки должно отобразиться значение параметра V, приблизительно рав ное 1.667.
2. Разъедините поверхность по этой кривой. Сразу же перестройте поверхности, сохра няя при этом контрольные вершины. Присвойте отсоединенной поверхности имя EngineWngSrf. 3.
4.
Перейдите в режим выделения изопараметрических линий поверхности WingSrf. Выделите изопараметрическую линию направления V со значением параметра, при мерно равным 1.954. (Ее можно выделить точно, если ввести в командной строке команду select WingSrf.v[1.95].) Чтобы получить на конце поверхности WingSrf плоскую поверхность, создадим складку и вдавим контрольные вершины. Выберите пункт меню Edit NURBS => surface Editing => Break Tangent (Редактировать
NURBS-поверхности => Редактировать поверхности => Разорвать касательную). Эта операция добавит к поверхности три звена и придаст ей детализацию, достаточную для создания отчетливого края. Теперь создадим край. 5.
Перейдите в режим выделения фрагментов каркаса и выделите последний ряд контрольных вершин (можно щелкнуть непосредственно на них, а можно щелк нуть на любом ряде и с помощью клавиш управления курсором переместиться к последнему ряду).
6.
Уменьшайте масштаб выделенных вершин до тех пор, пока не будет получено отвер стие примерно такого же размера, как на рис. 4.33, слева.
7.
Поскольку со временем двигатель будет поворачиваться относительно центра боль шей части крыла и это отверстие может стать заметным, его необходимо отодвинуть (см. рис. 4.33, слева).
Глава 4
220
Рис. 4.33. Создание плоского конца поверхностей крыла. Цент рирование опорной точки поверхности EngineWngSrf суще ственно упростит ее перемещение 8. 9.
Выделите поверхность wingSrf как объект и перестройте ее, сохраняя при этом контрольные вершины. Повторите то же самое для отсоединенной части поверхности крыла (Engine WngSrf).
10. Перемещая, приблизьте поверхность EngineWngSrf к поверхности WingSrf. Должно появиться изображение, похожее на приведенное на рис. 4.33, справа.
Присоединение двигателя С помощью круглой галтели присоединим созданный ранее двигатель к поверхности EngineWngSrf, но сначала следует изменить поверхность CowlSrf. 1.
Отобразите слой EngineLyr.
2.
Измените масштаб группы EngineGrp и переместите ее в положение, указанное на эскизах вида спереди и сбоку. Чтобы совместить ее с эскизом, попробуйте выполнить масштабирование с коэффициентом 0 . 5 72.
К сожалению, устанавливать в окне оперативного доступа общий вид сбоку бесполезно, потому что многоугольник с эскизом закрывает обзор. Увидеть другую сторону позволяет инструмент навигации View Compass (Компас вида) перспективного представления, кото рым и следует воспользоваться. 3.
Поверхность EngineCowlSrf была создана таким образом, чтобы ее шов пересекал ся с поверхностью EngineWngSrf. Это может помешать построению поверхности сопряжения, поэтому шов следует переместить. Чтобы перенести шов, сначала переве дите поверхность EngineCowlSrf в режим выделения изопараметрических линий.
4.
Выделите изопараметрическую линию напротив текущего расположения шва.
5.
Выберите пункт меню Edit NURBS => Move S e a m (Редактировать NURBS-поверхнос ти => Переместить шов). При этом будет заметно, что по мере перемещения шва поверхность изгибается по всей длине. Поначалу это может сбить с толку, но движение обязательно прекратится, и поверхность сама вернется в исходное по ложение.
6.
Выделите поверхность CowlSrf. Нажав клавишу <Shift>, выделите поверхность EngineWngSrf и выберите пункт меню Edit NURBS => surface Fillet => Circular Fillet •
Моделирование с использованием NURBS
221
(Редактировать NURBS-поверхности => Сопряжение поверхностей => Круглая гал тель • ). Сбросьте флажок Create Curve On surface (Создать кривую на поверхно сти), установите флажок r e v e r s e Secondary surface Normal (Обратить нормали второй поверхности) и установите значение параметра r a d i u s (Радиус) равным 0.05, а значение параметра Tangent Tolerance (Допустимое отклонение касатель ной) — 0.001. При указанных значениях параметров будет создана гораздо более де тализированная поверхность сопряжения. Щелкните на кнопке Fillet (Построить галтель), после чего должно появиться изображение, похожее на рис. 4.34.
Рис. 4.34. Круглая галтель крыла 7. Немедленно удалите историю поверхности сопряжения. 8. В иерархической структуре найдите объект (узел) c i r c u l a r F i l l e t S u r f а с е л . (В данном примере это F i l l e t S u r f а с е 6 . ) Откройте этот узел, щелкнув на знаке "плюс" слева от его имени. 9. В иерархической структуре перетащите средней кнопкой мыши геометрическую форму (отмеченную синей пиктограммой), обозначенную NURBS, влево от имени и вверх до группы EngineGrp. Таким образом, форма будет перемещена в группу EngineGrp. 10. Сделайте то же самое с поверхностью EngineWngSrf. 11. Переместите опорную точку группы EngineGrp в середину более массивной части поверхности крыла, как показано на рис. 4.35. Это позволит техническому руководи телю по оснащению МакГизмо поворачивать при анимации весь блок двигателей, выделив и повернув группу. 12. Выделите поверхность WingSrf, нажав клавишу <Shift>, выделите поверхность EngineGrp и сгруппируйте их в новой группе WingGrp. 13. Создайте копию этой группы, скопировав ее относительно оси Z. 14. Переведите обе группы поверхности WingSrf в режим выделения изопараметриче ских линий. Выделите по одной изопараметрической линии вдоль внутреннего края каждой формы, как показано на рис. 4.36. 15. Присоедините выделенные поверхности. Для этого выберите пункт меню Edit NURBS => Attach surfaces • (Редактировать NURBS-поверхности => Присоединить поверхности • ) . В появившемся окне параметров установите переключатель Attach Method (Способ присоединения) в состояние Blend (Смешение) и удостоверьтесь, что флажок Insert Knot (Вставить узел) сброшен. Щелкните на кнопке Apply (Применить).
222
Глава 4
Рис. 4.35. Перемещение опорной точки группы Рис. 4.36. Чтобы на двух присоединяемых поEngineGrp гораздо удобнее сделать из вида верхностях выделить средние изопараметриспереди в режиме каркаса ческие линии, лучше всего выделить соседнюю со средней изопараметрическую линию и плавно передвинуть выделение к центру, как показано на данном рисунке 16. Перестройте полученную поверхность, сохраняя при этом контрольные вершины, и удалите историю. 17. В иерархической структуре откройте группу WingGrpl (это имя было присвоено ра нее созданной копии группы). 18. Переименуйте группу EngineGrp, расположенную в группе W i n g G r p l , в REngineGrp. 19. С помощью средней кнопки мыши перетащите группу REngineGrp в исходную группу WingGrp, а затем удалите группу WingGrpl. 20. Сохраните файл как MacGiZmo04_BodyWing. mb. Теперь блок крыла завершен!
Соединение крыла с корпусом Чтобы соединить крыло с корпусом, сведем сначала их поверхности вместе, восполь зовавшись инструментом Sculpt Geometry Tool (Инструмент рельефа), а затем, чтобы скрыть место пересечения, с помощью инструмента Circular Fillet (Круглая галтель) создим между ними плавный переход. 1. Необходимо добавить детали к центру поверхности WingSrf. Для этого перейдите в режим выделения изопараметрических линий и выделите две изопараметрические линии с обоих боков линии центра (рис. 4.37, слева). 2. Чтобы добавить в центре поверхности изопараметрические линии, выберите пункт меню Edit NURBS => Insert I s o p a r m s • (Редактировать NURBS-Поверхности =>
Вставить изопараметрические линии •) и в появившемся окне параметров устано вите переключатель Insert Location (Позиция вставки) в позицию Between Selections (Между выделениями). В поле # Isoparms То Insert (Количество встав ляемых изопараметрических линий) введите значение 4 и щелкните на кнопке Insert (Вставить). 3.
Сразу же перестройте поверхность, сохраняя при этом контрольные вершины.
223
Моделирование с использованием NURBS
Рис. 4.37. Вставка четырех изопараметрических линий между выделенными линиями 4.
Выберите пункт меню Edit NURBS => Sculpt Geometry Tool • (Редактировать
NURBS-поверхности => Инструмент рельефа • ) . В Maya инструмент Sculpt Geometry (Рельеф) является аналогом инструмента Sculpt Geometry (Рельеф) для NURBS-поверхностей, причем интерфейсы обоих инструментов одинаковы. В поле r a d i u s (U) (Радиус ( U ) ) введите значение 0.5. В раскрывающемся разделе Sculpt Parameters (Параметры рельефа) установите переключатель Operation (Операция) в значение Pull (Вытягивать). При таких параметрах поверхность будет вытягивать ся вдоль базисного вектора ( r e f e r e n c e Vector), который должен быть установлен в значение Normal (Нормаль). Установите параметр Max. Displacement (Максимальное смещение) равным 0.25; это значение определяет, насколько далеко сместится поверхность после каждого щелчка мышью. В раскрывающемся разделе Stroke (Штрих) установите флажок r e f l e c t i o n (Отражение) и для переключателя r e f l e c t i o n Axis (Ось симметрии) выберите значение Z. Эти параметры помогут со хранить симметрию во время работы инструмента. 5. В области просмотра перспективного представления перемещайте мышь до тех пор, пока две симметричные формы кисти не перекроются, а затем начинайте изменение рельефа. По мере работы перейдите к обратной стороне, повернув вид. Продолжайте изменение рельефа до тех пор, пока не получится такое же изображение, как на рис. 4.38, а и б. При необходимости свериться с эскизом в процессе работы отобра жайте и скрывайте слой DrawingLyr.
а
б
в
г
Рис. 4.38. Создание пересечения поверхностей WingSrf и BodySrf в результате изменения релье фа их форм и соединения круглой галтелью
224 6. 7.
Глава 4 Щелкните правой кнопкой мыши на расположенной ниже поверхности BodySrf и измените ее рельеф так, чтобы поверхности пересеклись (см. рис. 4.38, в). Выделите обе поверхности и создайте между ними поверхность сопряжения. Выбе рите пункт меню Edit NURBS => surface Fillet => Circular Fillet • (Редактировать
NURBS-поверхности => Сопряжение поверхностей => Круглая галтель • ) . Сбросьте флажки Create Curve On surface (Создать кривую на поверхности), r e v e r s e Primary surface Normal (Обратить нормали первой поверхности), r e v e r s e Secondary surface Normal (Обратить нормали второй поверхности). Установите для параметра r a d i u s (Радиус) значение 0.7, а для параметра Tangent Tolerance (Допустимое отклонение касательной) — значение 0. 01. Щелкните на кнопке Fillet (Построить галтель). Результат должен получиться, как на рис. 4.38, г. 8.
Удалите историю вновь созданной поверхности и переименуйте ее в ConnectSrf.
9.
Сгруппируйте поверхности ConnectSrf, WingSrf и BodySrf, а новую группу на зовите BodySrfGrp.
10. Поместите созданную группу на новый слой BodyLyr. 11. Добавьте группу WingGrp на слой EngineLyr. 12. Сохраните файл. В процессе создания круглой галтели было установлено малое значение параметра Tangent Tolerance (Допустимое отклонение касательной), поэтому созданная поверх ность сопряжения обладает связностью касательной к обеим поверхностям. Благодаря этому будет создаваться впечатление, что поверхности составляют единую связную по верхность.
Отсечение и оформление ниш шасси Теперь создадим ниши шасси, используя для этого операцию Trim (Отсечение). Кро ме того, с помощью операции Extrude surface (Выдавить поверхность) будет создана кромка (rim) ниши шасси. Выдавливание позволяет полностью скрыть край отсечения. По скольку края отсечения не всегда визуализируются гладко, следует ознакомиться с мето дами работы, позволяющими обойти этот недостаток. Сначала установим заднее колесо. 1.
Отобразите слой DriveWheelLyr. Перемещайте и вращайте группу DriveWheelGrp до тех пор, пока она не пересечет форму корпуса, как показано на рис. 4.39, а.
2.
Сделайте группу DriveWheelGrp дочерним объектом группы BodyGrp, перетащив ее в иерархической структуре средней кнопкой мыши на группу BodyGrp.
3.
Выделив объекты BodySrf и DriveWheelWellGeo, выберите пункт меню Edit NURBS => lntersect surfaces • (Редактировать NURBS-поверхности => Пересечь по верхности • ) . В окне параметров установите переключатель Create Curves For (Создавать кривые для) в состояние Both surfaces (Обе поверхности), а переключа тель Curve Type (Тип кривой) — в состояние Curve On surface (Кривая на поверх ности). При таких параметрах на обе поверхности будет помещена кривая пересече ния, которая затем будет использоваться для отсечения обеих поверхностей. После щелчка на кнопке Intersect (Пересечь) должна появиться кривая, подобная показан ной на рис. 4.39, б.
Моделирование с использованием NURBS
а
225
в
6
Рис. 4.39. Отсечение ниши шасси 4.
Отсеките нишу инструментом Trim (Отсечение), сохраняя при этом как внешнюю часть поверхности BodySrf, так и внутреннюю часть объекта DriveWheelWellGeo (см. рис. 4.39, в).
5. Переведите поверхности BodySrf в режим выделения краев отсечения (маска Trim Edge). Щелкнув выделите край отсечения, как показано на рис. 4.40, а.
а
б
б
в
Рис. 4.40. Выдавливание кривой профиля вокруг кромки ниши шасси 6. Чтобы создать кривую вокруг края отсечения, выберите пункт меню Edit Curves => Duplicate surface Curves (Редактировать кривые => Дублировать кривые поверхно сти). Для выдавливания кривой профиля (profile curve) ее необходимо правильно па раметризовать. Поэтому немедленно перестройте копию кривой, сохраняя при этом контрольные вершины (см. рис. 4.40, б). 7. Создайте окружность NURBS с направлением нормали вдоль оси Z. Это и будет кривая профиля. В режиме привязки перетащите ее к средней верхней точке редак тирования скопированной кривой, а затем, используя масштабирование, приведите ее к виду, показанному на рис. 4.40, в. 8. Нажав клавишу <Shift>, выделите дубликат кривой края отсечения. Она станет тра екторией, вдоль которой будет выдавлена окружность. 9. Выберите пункт меню surfaces => Extrude • (Поверхности => Выдавить • ) . В поя вившемся окне параметров установите следующие переключатели: Style (Стиль) — в положение Tube (Туба); r e s u l t Position (Положение результата) — в положение At Path (На траектории); Pivot (Опорная точка) — в положение C o m p o n e n t (Компонент) и Orientation (Ориентация) — в положение Profile Normal (Нормаль
226
Глава 4 профиля). При таких параметрах профиль будет выдавлен вдоль кривой траектории. Щелкните на кнопке Extrude (Выдавить). В результате появится поверхность напо добие приведенной на рис. 4.40, г.
10. Благодаря связанной с операцией Extrude (Выдавить) истории создания полученная выдавливанием поверхность интерактивна: она изменяется при изменениях и кри вой профиля, и кривой траектории. Поэтому на данном этапе измените масштаб или переместите окружность профиля, наблюдая при этом за воздействием изменений на выдавленную поверхность. 1 1 . Удалите историю выдавленной поверхности и переименуйте ее в DriveWheelrimSrf. 12. В иерархической структуре добавьте выдавленную поверхность и поверхность D r i v e W h e e l W e l l G e o в группу B o d y G r p , перетащив их с помощью средней кнопки мыши на группу B o d y G r p (рис. 4.41).
Рис. 4.41. Иерархическая структура до и после добавления объектов DriveWheelrimSrf пу
и
DriveWheelWellGeo
в
груп
BodyGrp
13. Удалите кривую профиля и кривую траектории. Этот метод позволяет создать для ниши шасси кромку любого вида. Теперь повторим эту процедуру для передних колес. 1.
Отобразите слой F r o n t W h e e l L y r , после чего перемещением и поворотом установи те группу F r o n t W h e e l G r p в положение, указанное на рис. 4.42, а. Обратите внима ние, что на верхнем изображении из-под днища корпуса высовывается наружу часть узкой открытой стороны ниши шасси. Если не исправить это, то невозможно будет отсечь ни одну из поверхностей.
2.
Переведите объект W h e e l W e l l G e o в режим выделения контрольных вершин. Выде лите контрольные вершины слева от ниши шасси и перемещайте их вверх до тех пор, пока они полностью не будут закрыты поверхностью B o d y S r f (см. рис. 4.42, б). Та ким образом, будет гарантировано, что кривая, полученная в результате пересечения поверхностей B o d y S r f и F r o n t W h e e l W e l l G e o , будет циклической.
3.
Скройте слой
4.
В редакторе слоев выделите слой F r o n t W h e e l L y r , щелкнув правой кнопкой мыши и выбрав в появившемся контекстном меню пункт Set Selected Layers => Unshaded (Установить выделенные слои => Без тонирования).
BodyLyr
и отобразите слой
DrawingLyr,
если он до этого был скрыт.
227
Моделирование с использованием NURBS
а
б
в
Рис.4.42. Позиционирование группы FrontWheelGrp и редактирование объекта WheelWellGeo при подготовке к операции отсечения 5. Манипулируя в виде спереди контрольными вершинами поверхности WheelWellGeo, точнее совместите форму ниши шасси с эскизом (см. рис. 4.42, в). Выполнить эту опера цию будет несколько легче, если представить слой в режиме каркаса. 6. Еще раз щелкните правой кнопкой мыши в редакторе слоев и в появившемся кон текстном меню выберите пункт Set Selected Layer => Shaded (Установить выделен ные слои => Режим тонирования). 7. Переместите опорную точку группы в начало глобальных координат. После этого сдуб лируйте группу FrontWheelGrp относительно оси Z, для чего в окне Duplicate Special (Специальное дублирование) установите масштаб по оси X равным -1. Выбор масштаба обусловлен тем, что до этого группа была повернута на 90° вокруг оси Y. 8. Переименуйте дочерние узлы копии RWheeltfellGeo соответственно.
группы
в
RHubCapGeo,
RTireGeo
и
9. Пересеките обе поверхности ниши шасси с поверхностью корпуса BodySrf и вы полните отсечения. 10. Расширьте оси, вытянув контрольные вершины форм H u b C a p G e o и RhubCapGeo в сторону корпуса, и переместите оба колеса в корпус, приблизив их к внутренней час ти ниши шасси, как показано на рис. 4.43, сверху. 11. Аналогично тому, как это было сделано с задним колесом, выдавите профиль вдоль края ниши шасси. Для этого сдублируйте край отсечения и выдавите вдоль него ок ружность, как показано на рис. 4.43, снизу. Однако окружность на этот раз создайте с направлением нормали вдоль оси X. 12. Удалите историю и переименуйте выдавленные геометрические LWbeelWellrimSrf и rwheelWellrimSrf соответственно.
формы
в
13. Переместите все объекты WheelWellGeo и WheelWellrimSrf в группу BodyGrp. Обратите внимание, что при добавлении в группу второго объекта W h e e l W e l l G e o Maya добавила в конец его имени номер.
Глава 4
228
Рис. 4.43. Установка колес и выдавли вание геометрической формы кромки 14. Переименуйте все поверхности и группы с соответствующими префиксами L (левый) или R (правый). 15. Удалите использовавшиеся в построениях кривые траектории и профиля.
Установка кабины Осталось добавить завершающий элемент — кабину, которая будет импортирована в полностью сконструированном виде. Стены кабины выдавлены из простых кривых. Вет ровое стекло получено в результате обтяжки трех кривых и вытягивания точек получен ной поверхности. Приборная панель и сиденья — простые цилиндры NURBS, установ ленные моделированием в требуемое положение и замкнутые простой плоской поверх ностью. (Достаточно выделить последнюю изопараметрическую линию и выбрать пункт меню surfaces => Planar (Поверхности => Плоская).) Но на компакт-диске есть уже готовая кабина, поэтому воспользуемся ею. Останется только добавить такие детали, как кромку вокруг кабины и ветрового стекла. 1.
Импортируйте с компакт-диска файл C o c k P i t . mb.
2.
Выделите поверхности CockPitlnteriorSrf и BodySrf.
3.
Выберите пункт меню Edit NURBS => intersect surfaces • (Редактировать NURBS-поверхности => Пересечь поверхности • ) . Как и ранее, на каждой по верхности необходимо создать кривую, по которой будет отсекаться поверх ность, поэтому установите переключатель Create Curves For (Создавать кривые для) в положение Both surfaces (Обе поверхности), а переключатель Curve Туре (Тип кривой) — в положение Curve On surface (Кривая на по
верхности). Щелкните на кнопке Intersect (Пересечь). 4.
Выполните отсечение обеих поверхностей (рис. 4 . 4 4 , а).
Моделирование с использованием NURBS
а
б
229
в
Рис. 4.44. Отсечение кабины и оформление ветрового стекла 5.
Перейдите в режим выделения краев, отсеките и выделите край, по которому только что было выполнено отсечение.
6. Сдублируйте выделенную кривую и перестройте дубликат, сохраняя при этом кон трольные вершины. 7. Создайте окружность NURBS и привяжите (нажав клавишу < V > ) к точке кривойдубликата. 8. Нажав клавишу <Shift>, выделите кривую и выполните выдавливание вдоль траек тории. 9. Переместите профиль так, чтобы не осталось неприглядных пересечений. 10. Удалите историю полученной выдавливанием поверхности и присвойте ей имя CockPi trimSrf. 11. Перейдите в режим выделения изопараметрических линий поверхности WindShieldSrf и выделите изопараметрическую линию края (см. рис. 4.44, б). 12. Чтобы создать дубликат выделения, выберите пункт меню Edit Curves => Duplicate surface Curves (Редактировать кривые => Дублировать кривые поверхности), после чего привяжите окружность к точке редактирования дубликата кривой. 13. Выдавите окружность вдоль дубликата кривой (см. рис. 4.44, е). 14. Сохраните файл как MacGiZmo06_CockPit .mb. Вот теперь работа над МакГизмо завершена!
Очистка Модель необходимо подготовить к передаче на оснащение и текстурирование. Для этого следует удостовериться, что ни у одной из поверхностей не осталось истории соз дания, что они правильно сгруппированы и что на сцене нет неиспользуемых групп или преобразований. Можно ли без этого двигаться дальше? Да! Но это тот тип очистки, ко торый профессиональные разработчики применяют для подготовки своих файлов к про изводству. 1. В иерархической структуре с помощью средней кнопки мыши переместите поверх ности WindShieldrimSrf и CockPitrimSrf в группу CockPitGrp.
2. Этим же способом поместите группу CockPitGrp в группу BodyGrp.
3.
Выделите группы RFrontWheelGrp, LFrontWheelGrp, W i n g G r p и BodyGrp и по местите их в группу BodySrfGrp.
Моделирование с использованием NURBS 4.
231
Выделите все NURBS-поверхности, выбрав пункт меню Edit => Select All By Type => NURBS surfaces (Правка => Выделить все no типу => NURBS-поверхности), и удалите их историю. Это важно для очистки истории создания всех остальных объектов.
5. Выделите все кривые NURBS, выбрав пункт меню Edit => Select All By Type => NURBS Curves (Правка => Выделить все по типу => Кривые NURBS), и удалите их. Если во время выполнения этой операции были потеряны какие-то из отсечений, отмените последнее действие и еще раз выполните шаг 4. Причиной этого было удаление кри вых до удаления истории отсечений. 6.
В иерархической структуре удалите поверхность D r a w P o l y G e o с нанесенным эски зом и все обнаруженные пустые узлы преобразования.
7. В редакторе слоев удалите все слои, кроме BodyLyr. Переименуйте его в BodyGeoLyr и поместите на него группу BodySrf Grp. 8. Этот этап может не потребоваться. Согласно эскизу, МакГизмо был смоделирован вдоль оси X. Однако задачи проекта могут требовать размещения модели вдоль оси Z. В таком случае для правильной ориентации модели поверните группу BodySrfGrp на 90° вокруг направления оси Y. В противном случае перейдите к сле дующему шагу. 9. Для группы BodySrf Grp зафиксируйте преобразования (перемещение, вращение и масштабирование). Это обнулит преобразования группы BodySrf Grp и ее дочерних узлов. 10. Выберите пункт меню File => OptimiZe Scene Size (Файл => Оптимизировать размер сцены). 11. Сохраните файл как MacGiZmo07_FinalGeo.mb.
Резюме В этой главе было продемонстрировано, насколько важна параметризация для преоб разования кривых на поверхности. В контексте построения МакГизмо было на практике опробовано множество способов работы с NURBS-поверхностями. При этом края отсе чения закрывались несколькими способами: выдавленными поверхностями или круглы ми галтелями. Были рассмотрены концепция касания, а также различные методы созда ния поверхностей сопряжения; по ходу работы история создания Майя использовалась для корректировки уже выполненных операций создания поверхностей. И в самом конце было сформулировано, что такое правильная организация объектов для передачи модели дальше по технологическому процессу. В следующей главе рассматривается вариант головы Машизмо, созданный с исполь зованием SDS-поверхности. На основе трехмерного шаблона для головы Машизмо будет создана сетка с низким разрешением, поверхность которой будет уточнена с использова нием предоставляемой Майя возможности иерархического редактирования. В заключе ние к самому низкому (базовому) уровню головы будут применены плавные модифика ции, которые покажут, как низкоуровневые изменения передаются на более высокие уровни детализации.
SDS-поверхности Многоугольники обеспечивают скульптурное моделирование, однако для создания гладких, реалистичных моделей они требуют значительного увеличения количества де талей. NURBS-поверхности обеспечивают гладкие поверхности, но требуют понимания несколько непривычных парадигм моделирования, включая такие концепции, как сши вание, параметризация и подстройка. Предоставляя парадигму, сочетающую в себе дос тоинства обоих типов моделирования, SDS-поверхности представляют собой компро мисс между гладкими NURBS-поверхностями и скульптурными возможностями поли гональных поверхностей. SDS-поверхности обычно используются в конце процесса моделирования, чтобы придать моделям гладкость и добавить детали. Если бы это было сделано ранее, то рабочий процесс потребовал бы существенно больших вычислитель ных ресурсов. В этой главе рабочий цикл представлен на примере головы Машизмо, включая моделирование в многоугольниках, предшествующее ее преобразованию в SDSповерхности для сглаживания и детализации. •
Концепция SDS-поверхностей
•
Начнем с шаблона
•
Моделирование головы
•
Детали, детали и SDS-поверхности
Концепция SDS-поверхностей SDS-поверхности (Subdivision surfaces — subDs) — это гибридная поверхность, соче тающая в себе многие преимущества как NURBS-поверхностей, так и полигональных поверхностей. Подобно NURBS-поверхностям, SDS-поверхности представляют большое количество многоугольников, которые могут быть увеличены или уменьшены по жела нию художника. Относительно небольшое количество контролирующих поверхность уз лов (контрольных точек) обеспечивает достаточный уровень гладкости, чтобы модель выглядела одинаково хорошо как при интерактивном представлении на экране компью тера, так и при визуализации с высоким разрешением для HD (High Definition Video — видео высокого качества) или кинофильма. В отличие от NURBS-поверхностей, которые ограничены применением в моделях, состоящих лишь из четырехугольных фрагментов, SDS-поверхности способны использовать полигональные (polygonal) топологии и методы моделирования. Как будет продемонстрировано вскоре, на практике имеет смысл начи нать моделирование в полигональных поверхностях, а при детализации преобразовать их в SDS-поверхности. Фактически наиболее простым является уровень редактирования
234
Глава 5
объектов SDS (уровень 0), где фигуры из SDS-поверхностей совместно используют вер шины многоугольников. Наибольшее переимущество SDS-поверхностей заключается в их иерархической природе. Они позволяют создавать уровни с нарастающей степенью детализации и переключаться при моделировании между представлениями с более высоким или более низким уровнем детали зации. Изменения, внесенные в модель при низшем уровне детализации, распространяются на представления с более высоким уровнем детализации. Кроме того, изменение уровней де тализации можно организовать так, чтобы сложные элементы поверхности и мелкие детали на ней проявлялись только по мере необходимости. Моделирование деталей с помощью NURBS-поверхностей требует увеличения количества изопараметрических линий по на правлениям U и V как для отдельного фрагмента, так и для объекта в целом. Этот подход су щественно усложняет модель, что крайне нежелательно. Однако добавление мелких деталей без увеличения сложности всего объекта потребует от разработчика высокого мастерства да же при полигональном моделировании. На рис. 5.1 показано относительное разрешение по верхности, необходимое для каждого способа моделирования. Обратите внимание на то, что в середине SDS-поверхности есть детали, добавленные только там, где необходимо. Как правило, сначала создают приблизительную полигональную версию модели низ кого разрешения, а затем преобразуют ее в состоящую из SDS-поверхностей. После пре образования сетка становится весьма гладкой, и для сохранения резкости краев зачастую используется искажение.
Рис. 5.1. NURBS-поверхность, SDS-поверхность и полигональная поверх ность, редактируемые инструментом Sculpt (Рельеф). Обратите внимание на разное разрешение каждой из них, а также на дополнительные детали в центре модели, созданной с помощью SDS-поверхности Однако SDS-поверхности обманчивы, поскольку способствуют выработке плохих привычек в моделировании. Известно, что при полигональном моделировании, как пра вило, лучше использовать прямоугольники. Треугольники также годятся, но многосто ронних многоугольников следует избегать из-за сложностей при сглаживании. SDSповерхности отлично сглаживают многосторонние многоугольники, но последние не поддерживаются модулем визуализации Maya mental ray, т.е. объекты, содержащие мно гоугольники с более чем четырьмя сторонами, не будут визуализированы и могут при вести к аварийному завершению процесса визуализации. SDS-поверхности можно редактировать в двух режимах: стандартном и упрощен ном полигональном. Стандартный режим (standard mode) позволяет редактировать секционные компоненты модели и просматривать ее как реальную SDS-поверхность. В этом режиме можно использовать стандартные секционные инструменты моделиро вания и детализировать компоненты по уровням. Однако в любой момент можно пе рейти в упрощенный полигональный режим моделирования, который позволяет ре-
235
SDS-поверхности
дактировать общую оболочку объекта, как будто это полигональная модель с низким разрешением. В этом режиме можно также использовать любые полигональные инст рументы моделирования.
Начнем с шаблона Начнем создание головы персонажа Машизмо с использования метода полигонального моделирования, а затем, по завершении процесса, преобразуем ее в SDS-поверхность, что бы с помощью нового инструмента Sculpt Geometry Tool • (Инструмент рельефа •) доба вить такие детали, как кровеносные сосуды и морщины. Но прежде всего необходимо соз дать шаблон. Создавать поверхность будем один многоугольник за другим. Поскольку для созда ния каждого многоугольника приходится размещать точки в трехмерном пространстве, этот способ иногда называют поточечным моделированием (point modeling). К сожале нию, в Maya сделать это сложно, поскольку программа пытается поместить точку на ближайшую ортогональную плоскость (orthogonal plane), и в результате довольно труд но расставить точки именно там, где они должны быть. Эту проблему можно обойти так: сначала создать кривые, а затем привязывать к ним размещаемые точки. Готовый трех мерный шаблон показан на рис. 5.2.
Рис. 52. Готовый трехмерный шаблон В книге
Maya: Secrets of the Pros 2nd Edition,
Кундерт-Гиббс
(John Kundert-Gibbs) и
коллектив авторов которой возглавляли Джон (Dariush Derakhshani) (издательство
Дариус Деракшани
Wiley, 2005), Том Капицци (Tom CapiZZi) и Кришнамурти Коста (Krishnamurti Costa) предста
вили замечательную главу, описывающую в общих чертах процесс планирования и модели рования головы персонажа. Они прекрасно обосновали необходимость планирования кон струкции головы и тщательной проработки расположения стыков петель краев (edge-loop) на ее эскизах. Создание этого шаблона не представляет сложности; можно использовать методы, рассмотренные в главе 3, "Полигональное моделирование", при работе над телом персо нажа Машизмо. Для создания трехмерного шаблона выполните следующие действия. 1.
Обведите эскиз головы кривыми линиями. Как всегда, убедитесь, что обведены все детали. Просмотрите эскиз в обоих видах и попробуйте оценить, где еще могут рас полагаться изгибы и плоские участки. Обратите внимание, что за исключением ли-
Глава 5
236
нии носа, там, по существу, нет контуров. Линии просто указывают места изменения направления поверхности. Они будут использованы для привязки многоугольников в областях без явных деталей. 2.
Точно так же, как это делалось с шаблоном тела, выберите и поверните вид сбоку так, чтобы выставить его параллельно плоскости YZ, а вид спереди переместите так, что бы он стал перпендикулярным виду сбоку (рис. 5.3, справа).
Рис. 53. Шаблон обведен и расположен в профиль. Обратите внимание на петли краев и контурные линии на изображении слева 3.
Переключите компоновку на T w o Panes Side By Side (Две панели рядом) и сделай те одну панель видом спереди, а другую ортогональным видом сбоку.
4.
Разместите линии вида сбоку и вида спереди на разных слоях. Сопоставьте их с ли ниями вида сбоку.
5.
Выделите каждую линию вида спереди и выберите по маске точки редактирования.
6.
Переместите все точки редактирования на каждую линию вида спереди. Выберите и переместите каждую точку редактирования по оси Z так, чтобы сопоставить ее с каж дой линией вида сбоку. На рис. 5.4 этот процесс показан для петли вокруг глаза. Проделайте это для каждой линии в группе вида спереди. Не забывайте, что для об хода линии можно использовать клавиши управления курсором, — это избавит от необходимости щелкать кнопкой мыши.
Рис. 5.4. Выбирайте точки редактирования на линиях в виде спе реди, но перемещайте их по оси Z в виде сбоку
237
SDS-поверхности
7. Некоторые линии, которые проходят вокруг головы (наиболее заметные линия во круг плоской вершины прически Машизмо и линия его шеи), придется вытянуть из вида сбоку, чтобы совместить с шаблоном вида спереди. 8. Вытянув все необходимые линии, вернитесь назад и удалите внутренние линии шаб лона вида сбоку. Эти линии выполнили свое назначение и больше не нужны. 9.
Сохраните файл как занный на рис. 5.2.
Head3dTemplate.mb.
Это должно напоминать шаблон, пока
Моделирование головы Для моделирования головы будем использовать преимущественно инструменты Create Polygon (Создать многоугольник) и Append То Polygon (Добавить к многоуголь нику). Не забывайте, что сначала в ходе полигонального моделирования создается внеш няя общая форма головы, а в SDS-поверхность она преобразуется к концу процесса. Начнем с глазной впадины, форма которой имеет некоторые ограничения. Неважно, ка кую форму имеет глаз на плоскости, в объеме он соответствует сферической форме глаз ного яблока. Если это не учесть сейчас, то позднее, когда будут созданы глазные яблоки и веки, это может обернуться серьезной проблемой. Так что давайте начнем моделирова ние головы с глаза, как описано ниже: Head3dTemplate.mb.
1.
Откройте файл
2.
Создайте сферу NURBS, измените ее размер и переместите в положение, по казанное на рис. 5.5, сверху в видах спереди и сбоку.
3.
Выберите сферу, щелкнув в строке состояния на кнопке Magnet (Магнит). Это превратит ее в зеленый каркас (wireframe). Теперь к ней можно привя зывать точки редактирования линии глаза.
4.
Выберите по маске точки редактирования на линии шаблона глаза, как пока зано на рис. 5.5, посередине. Обратите внимание на то, что при выборе инст румента Move (Перемещение) в центре манипулятора вместо обычного квадрата появляется окружность. Это означает, что Maya собирается огра ничить движение некоторого элемента, в данном случае активного объекта.
5.
Привяжите точки к активной поверхности, перемещая их в виде спереди не много назад и вперед. Будет заметно, как они привязываются к поверхности в виде сбоку.
6.
Продолжайте до тех пор, пока все точки редактирования не будут привязаны (см. рис. 5.5, снизу).
7.
Отредактируйте линию морщины так, чтобы она соответствовала линии гла за. На этом этапе о линии века можно не беспокоиться.
8.
Снимите все выделения и щелкните на кнопке Make Live (Активизировать), чтобы отменить выделение сферы.
9.
Удалите сферу.
10. Сохраните файл под именем
M a c h i s m o H e a d 0 1 _ E y e C a v i t y . mb.
Глава 5
238
Рис. 5.5. Процесс адаптации линии глаза шаблона к вы бранной сфере Как можно заметить, по сравнению с предыдущими главами в этой главе описания стали более общими. Они становятся короче, поскольку по мере работы накапливается опыт и уменьшается потребность в конкретных указаниях, а в некоторых случаях возможны даже вариации, что придаст персонажу индивидуальность. Теперь все готово, чтобы приступить к созданию глазной впадины. Однако не забы вайте, что шаблон здесь используется только для облегчения задач моделирования. Ре зультатом работы является не шаблон сам по себе, а модель. Поэтому если необходимо отклониться от шаблона, то спокойно изменяйте его. Имея это в виду, начнем моделиро вание области глазной впадины. 1.
Начнем эту модель с одиночного многоугольника. Выберите инструмент Mesh => Create Polygon (Сетка => Создать многоугольник). По ряду причин компания Autodesk по умолчанию не включает его в панель инструментов для работы с много угольником, поэтому добавим его туда. Перетащите, удерживая среднюю кнопку мыши, его пиктограмму из панели инструментов.
Пункт меню можно также добавить и на текущую панель, для этого перетаскивайте его, нажав комбинацию клавиш < Ctrl + Shift >. 2.
Нажав клавишу < С > , чтобы на время перейти в режим Snap То Curve (Привязка к кривой), щелкните на ранее созданной линии шаблона глаза. Таким образом, на нее будет установлена первая точка.
SDS-поверхности 3.
239
Продолжая удерживать нажатой клавишу < С > , щелкните справа от первой точки (рис. 5.6, а).
а
б
в
г
Рис. 5.6. Процесс создания первого многоугольника глазной впадины 4. Продолжая привязку с нажатой клавишей < С > , чтобы установить следующую точ ку, щелкните на краю петли брови напротив расположенной под ней петлей краев глазной впадины (см. рис. 5.6, б). Обратите внимание на появившийся розовый тре угольник, — именно так рождается форма. 5.
Удерживая нажатой клавишу < С > , щелкните на четвертой слева точке петли брови (рис. 5.6, в).
6. Удерживая нажатой клавишу < С > , перетащите с помощью средней кнопки мыши точку на другую линию, чтобы изменить ее местоположение. Будет видна привязка точки к кривой глазной впадины (см. рис. 5.6, г). 7. Чтобы создать многоугольник, нажмите клавишу <Enter>. Нажимая в процессе соз дания клавишу , можно вернуться на шаг назад. В режим Snap То Curve (Привязка к кривой) можно было бы перейти и щелчком на кнопке в строке состояния. Однако удерживание нажатой клавиши < С > для временного перехода в режим Snap То Curve дает большую гибкость, позволяя покидать его, отпуская клавишу. Это более быстрый и универсальный способ работы, несмотря на то, что он требует немно го большего проворства рук. Первый многоугольник уже готов. Помните, как в начале главы 3, "Полигональное моделирование", упоминалось, что порядок точек (порядок, в котором создаются точки многоугольника) определяет направление поверхности. Многоугольник в этом примере создавался против часовой стрелки, поэтому он обращен наружу, вне модели, что и тре бовалось. Но с этого момента многоугольники необходимо добавлять к нему только в порядке обхода против часовой стрелки. Добавьте несколько многоугольников и завер шите этот этап создания глазной впадины так, как описано ниже. 1. Выберите инструмент Edit Mesh => Append То Polygon (Редактировать сет ку => Добавить к многоугольнику) и с помощью средней кнопки мыши перетащите его пиктограммы с панели инструментов на используемую панель. 2. Если первый многоугольник еще не выделен, щелкните на нем. Обратите внимание, что при этом все края подсвечиваются сильнее обычного.
Глава 5
240 3.
Чтобы начать добавление многоугольников, щелкните на правом крае. Вдоль каждо го края, к которому можно добавлять многоугольники, будут видны указывающие на это стрелки, а в нижнем углу многоугольника появится точка (рис. 5.7, а). С этого края начнется процесс добавления.
а
б
в
г
д
Рис. 5.7. Использование инструмента Append То Polygon (Добавить к многоугольнику) для созда
ния глазной впадины 4.
Нажав клавишу < С > , щелкните правее кривой шаблона глаза. Это установит сле дующую точку (см. рис. 5.7, б). Обратите внимание, что розовая форма начинает соз даваться точно так же, как и при использовании инструмента Create Polygon (Создать многоугольник).
5.
Находясь в режиме Snap То Curve (Привязка к кривой), щелкните в нижней части петли краев брови (см. рис. 5.7, в).
6. Чтобы добавить многоугольник и повторно использовать инструмент, вместо кла виши <Enter> нажмите клавишу . Теперь все готово для повторного добавле ния. Щелкните на крае нового многоугольника (см. рис. 5.7, г). 7.
Продолжайте движение вокруг глаза, создав около тринадцати многоугольников (см. рис 5.7, д). При добавлении последнего многоугольника лучше щелкать не на кривой, а от края до края.
Данный этап создания глазной впадины завершен. Начнем моделировать нос и объе диним его с только что созданной глазной впадиной. Затем установим в правой панели режим предварительного просмотра (smooth preview), чтобы отобразить разделенную модель в упрощенном виде. Это позволит просматривать голову так, как будто она уже преобразована в SDS-поверхность. 1.
Создайте и добавьте многоугольники в центре лба сверху, как показано на рис. 5.8, а. Не забывайте щелкать в направлении против часовой стрелки. Обратите также вни мание на то, что хотя добавляемые многоугольники и привязывались к кривой на кончике носа, их края были перемещены внутрь по оси X, поскольку было необходи мо сделать нос немного острее, чем на рисунке.
2.
Выделите одновременно объекты носа и глаз, а затем выберите в меню Mesh (Сетка) пункт Combine (Объединить). В результате из выделенных поверхностей будет соз дан один объект.
3. Для создания еще одного ряда многоугольников, показанных на рис. 5.8, б, исполь зуйте инструмент Append То Polygon (Добавить к многоугольнику). Чтобы соеди нить две формы, осуществляйте добавление от края к краю. И, как обычно, не бой тесь перетаскивать вершины, если для получения желаемого результата необходимо изменить форму модели.
SDS-поверхности
241
а. Создайте и добавьте многоугольники
б. Создайте второй ряд многоугольников
в. Пример свернутого многоугольника
г. Разделите многоугольник в области глаза
д. Добавьте многоугольники в область лба
Рис. 5.8. Объединение форм носа и глаза с помощью инстру мента Append То Polygon (Добавить к многоугольнику) 4.
Если при добавлении многоугольник свернется (folds), как показано на рис. 5.8, в, немедленно отмените последнее действие, выделите все плоскости обоих объектов и выберите пункты меню Normals => r e v e r s e (Нормали => Обратить).
242
Глава 5
5.
Чтобы упростить согласование краев, с помощью инструмента Split Polygon Tool (Инструмент разделения многоугольника) отделите край от глаза, как показано на рис. 5.8, г.
6.
Добавьте еще один ряд многоугольников вдоль центра лба (см. рис. 5.8, д).
Чтобы увидеть, как будет увеличиваться разрешение модели при сглаживании в про цессе визуализации или при преобразовании в SDS-поверхности, создадим разделенное упрощение. Создание разделенного упрощения полезно, поскольку так можно просмот реть сглаженную голову без преобразования полигональной модели в SDS-поверхность. Создайте разделенное упрощение и отразите его по оси X. (Если возникнут затруднения, то обратитесь к главе 3, "Полигональное моделирование".) После установки разделенного упрощения, создадим линию многоугольников вдоль щек. Она станет основой для добавления многоугольников в область рта (рис. 5.9).
а. Добавьте многоугольники в область щеки
б. Создайте пятиугольник
в. Завершите ряд многоугольников
Рис. 5.9. Создание рядов многоугольников вокруг области щеки 1.
Для создания щеки добавьте многоугольники к носу и глазам (см. рис. 5.9, а).
2.
Создайте пятиугольник (см. рис. 5.9, б). Для этого щелкните на внутреннем крае, по местите точку на внутренней кривой, а затем на внешней кривой, после чего щелкни те на внешнем крае. Это позволит добавлять вокруг лица четырехугольники, а впо следствии разделить и преобразовать пятиугольник в четырехугольники с помощью инструментов Insert Edge Loop (Вставка петли краев) и Split Polygon (Разделение многоугольника).
3.
Добавьте четырехугольники везде вокруг области рта вплоть до линии центра. Внизу у подбородка свободно размещайте точки, устанавливая их щелчком мышью и, что бы правильно расположить, перетаскивая их с помощью средней кнопки мыши как в виде спереди, так и в виде сбоку. Обратите внимание на то, что все края исходят из одной точки и направлены ото рта наружу. Впоследствии это позволит правильно деформировать рот.
4.
Используя инструмент Insert Edge Loop (Вставка петли краев) автоматически разделите этот ряд многоугольников. Затем, используя инструмент Split Polygon (Разделение мно гоугольника), откорректируйте пятиугольник. Завершенный ряд многоугольников пока зан на рис. 5.9, в.
SDS-поверхности 5.
243
Как обычно, чтобы область впоследствии не выглядела плоско, переместите наружу вершины, созданные новым краем. Помните, что, всякий раз разделяя плоский мно гоугольник, необходимо манипулировать новым краем или вершинами, чтобы при дать поверхности некую выпуклость.
6. Удалите историю этой геометрической формы.
Создание рта Для создания области рта будет использоваться та же основная процедура. Как уже стало очевидно на настоящий момент, несмотря на всю свою мощь, метод добавления по одному многоугольнику очень медленный; поэтому там, где только возможно, будем соз давать единичный многоугольник, а потом — детализировать его края. При создании краев и внутренней части губ помните о двух вещах. Во-первых, не модели руйте губы вместе или на слишком большом расстоянии друг от друга. Постарайтесь оста вить их слегка открытыми и расслабленными. Это облегчит как расстановку весовых коэф фициентов (weighting), так и выбор вершин при создании плавной модификации ( b l e n d shape). Во-вторых, не углубляйтесь слишком далеко при моделировании внутренней части губ. Создайте лишь внутреннюю область губ. В противном случае при анимации внутренняя часть рта может выступить наружу лица. 1. Добавьте многоугольник между нижней частью носа и линией рта, как показано на рис. 5.10, а. 2. С помощью инструмента Split Polygon (Разделение многоугольника) разделите ли нию краев вниз, от кончика носа до линии рта. 3. Добавьте шестиугольник, как показано на рис. 5.10, б. Это позволит добавить четы рехугольники вокруг и внутри рта. 4.
С помощью кривых добавьте четырехугольники вокруг рта (см. рис. 5.10, в).
5.
Разделите шестиугольник, созданный на шаге 3.
6. С помощью инструмента Insert Edge Loop (Вставка петли краев) создайте узкую по лосу многоугольников вокруг внутренних краев губ, а затем завершите разделение, используя инструмент Split Polygon (Разделение многоугольника). Результат пока зан в верхнем углу рис. 5.10, г. 7. С помощью инструмента Insert Edge Loop (Вставка петли краев) разделите (см. рис. 5.10, Э) последовательность краев, которые в дальнейшем станут передней частью верхней и нижней губы. 8. Вытяните вершины на верхней и нижней губах так, чтобы они соответствовали кон турам шаблона. 9. Добавьте два ряда краев, расходящихся радиально от области губ. 10. Вытяните вершины наружу так, чтобы закруглить поверхность рта. 11. Удалите историю. Сделайте внутреннюю часть губ состоящей из трех рядов многоугольников, как пока зано на рис. 5.11. Выделите и вдавите внутренний край губ назад и вверх в рот, а затем добавьте края и выдавите их так, чтобы губы получились выпуклыми.
244
Глава 5
а. Добавьте б. Добавьте многоугольник шестиугольник между носом и ртом
в. Добавьте многоугольники вокруг рта
г. Разделите края губ
д. Разделите остальные петли краев вокруг рта
Рис. 5.10. Создание области щеки и рта с помощью инструментов Append То Polygon и Insert Edge Loop
Рис. 5.11. Выдавливание и коррекция внутренней части губ
Моделирование лба и бровей Вот где трехмерный шаблон действительно пригодится, так это для создания лба. Начнем работу вокруг брови и, чтобы упредить образование складок при преобразова нии в SDS-поверхности, в конце слегка выдавим ее. 1. Добавьте два многоугольника в углы брови так, как показано на рис. 5.12, а. 2.
Добавьте многоугольники вокруг брови (см. рис. 5.12, б) и разделите ряд многоуголь ников вдоль центра брови к глазу. Вытяните их в позицию, показанную на рис. 5.12, б. Важно, чтобы сверху и снизу от брови было одинаковое количество краев.
3. Добавьте многоугольники так, чтобы они заполнили область брови, а затем раздели те их, как показано на рис. 5.12, в. 4.
Выдавите грани брови и закруглите ее вершины (см. рис. 5.12, г).
5.
Продолжайте добавлять многоугольники и заполните бровь до линии роста волос (см. рис. 5.12, д).
Завершение создания носа и глаз Теперь необходимо выдавить ноздри и продолжить создание века. Но сначала закон чим нос. 1. Завершающая работа над созданием носа начнется с добавления ряда краев, начиная вверху над переносицей и продолжая вниз вокруг основания носа (рис. 5.13, а). 2.
Выделите и выдавите шесть граней нижней стороны носа. Первое выдавливание должно сжать внутреннюю часть относительно центра выдавливания, но не за преде лы носа. Как это сделать, показано сверху на рис. 5.13, б.
SDS-поверхности
245
а. Добавьте б. Для создания лба многоугольники во используется внутренний и внешний инструмент Append углы брови То Polygon Tool
в. Заполните бровь, добавив многоугольники
г. Выдавите поверхность брови
д. Завершите бровь, добавляя многоугольники
Рис. 5.12. Заполнение лба и бровей 3. Переместите некоторые вершины носа так, чтобы закруглить верхнюю часть ноздри (см. рис. 5.13, б). 4. Выделите эти же шесть граней и выдавите их так, как и на шаге 2. Вытяните их на ружу и закруглите бок ноздри (см. рис. 5.13, б). 5. Создайте ноздрю внизу носа, разбивая многоугольники так, как показано на рис. 5.13, в; затем удалите все края внутренней области созданной формы. При этом будет создан один многоугольник, с помощью которого выдавить ноздрю будет легче. 6. Выдавливайте ноздрю внутрь носа не меньше чем в три приема. После каждого вы давливания масштабируйте и переносите выдавливание глубже в нос. 7. Удалите центральный многоугольник, и в результате получится нечто похожее на рис. 5.13, г. И наконец, удалите историю поверхности.
а. Разделите ряд многоугольников вдоль бока и низа носа
б. Выдавите и закруглите многоугольники
в. Выделите и удалите края
г. Выдавите и удалите многосторонний многоугольник
Рис. 5.13. Завершение создания носа и ноздрей К созданию глазных впадин подойдем иначе. Глаза Машизмо, с резко выраженными мешками под ними, посажены несколько глубоко. Завершим его глаз, добавляя вокруг глазницы круговые детали и соответственно редактируя модель. 1. Вытяните все вершины глазницы из текущих позиций ровно настолько, чтобы для придания веку некоторой толщины можно было выдавить или добавить ряд много угольников. 2. Создайте этот расширяющийся назад к голове ряд многоугольников или выдавлива нием, или непосредственным добавлением краев.
246
Глава 5
3.
Немного выдавите обратный край многоугольников и вытяните их, чтобы обозначить внутренний край века. Эта операция аналогична той, которая была проделана с губами.
4.
Используя инструмент Insert Edge Loop (Вставка петли краев), разделите линию краев, окружающих внешнюю часть глазной впадины. Вершины вдоль этого края с внутренней и внешней части глаза вдавите обратно к голове, а вверху и внизу гла за — от головы.
5.
Создайте еще одну линию краев и повторите предыдущий шаг. По окончании долж но получиться нечто похожее на рис. 5.14.
Рис. 5.14. Готовый глаз. Обратите внимание на то, что на изображении слева обратная сторона век проецируется в сторону от края века
Завершение полигональной версии головы На нескольких приведенных ниже рисунках подробно показано завершение создания го ловы. Причем никакие из описанных ранее методов моделирования здесь не используются. Процедура, используемая для завершения головы, в общих чертах показана на рис. 5.15. Что бы создать пару рядов расширяющихся к затылку плоскостей, добавляйте и разделяйте мно гоугольники. Добавьте конструкцию, подобную приведенной на предпоследнем изображении головы. Впоследствии из нее будет сформировано ухо. Продолжите линию роста волос во круг затылка. Затем для формирования шеи выдавите вниз затылочную часть линии роста волос. Закончите сторону шеи и выдавите ее вниз.
Рис. 5.15. Завершение создания головы с помощью добавления, разделения и выдавливания много угольников Вершина короткой, с плоским верхом, прически Машизмо довольно проста. На рис. 5.16 показано, как добавить многоугольники к центральной кривой и затем разде лить ряд краев на расстоянии в один многоугольник от линии центра. После этого необ ходимо соединить получившиеся треугольники.
247
SDS-поверхности
Рис. 5.16. Завершение моделирования плоской стрижки Машизмо Процесс создания уха показан на рис. 5.17. Для такого стилизованного персонажа, как Машизмо, приемлемо оставить уши в виде завитков, как на верхнем среднем изображе нии, но творчески применив разделение, сокращение и удаление краев, можно создать хорошо проработанное ухо, показанное справа внизу.
Рис. 5.17. Создание уха Машизмо. Поскольку детали пока не важны, можно оставить ухо так, как оно изображено вверху в центре В заключение добавим ряд краев вокруг переднего нижнего края плоской стрижки, а также внизу вокруг коротких баков. Затем соединим их над ухом с затылочным краем линии роста волос, как показано на рис. 5.18, посередине. Вытяните баки наружу, чтобы создать край для линии роста волос (см. рис. 5.18, справа).
Детали, детали и SDS-поверхности Все основные черты головы Машизмо уже созданы, и все готово для того, чтобы пе рейти к созданию более тонких деталей, которые придадут персонажу его индивидуаль-
248
Глава 5
ный образ. Далее модель будет преобразована в SDS-поверхности, обеспечивающие воз можность редактирования на иерархическом уровне. Поэтому необходимо заранее за планировать, какие детали будут созданы на базовом уровне поверхности головы, а какие оставлены до редактирования на более высоком уровне моделирования. Фундаменталь ное эмпирическое правило создания деталей при моделировании SDS-поверхностей гла сит: если деталь будет перемещаться с помощью деформатора или плавной модифика ции, то создавать ее следует на базовом каркасе. С другой стороны, если деталь можно перенести вдоль поверхности модели, то создавать ее следует на более детализированном уровне. Выбор рассматриваемого здесь варианта основан на том, что к базовому каркасу нулевого уровня будут применяться деформаторы и плавные модификации.
Рис. 5.18. Завершение линии роста волос Способ моделирования по отдельным многоугольникам здесь был использован потому, что он позволяет создать иерархический каркас головы. Однако на данном этапе рабочего процесса модель следует сгладить. Резкие переходы должны остаться у таких деталей, как ли ния волос, морщины под глазами и крылья носа, все остальное следует сгладить. Откройте файл MachismoHead04_PolyDetail.mb и ознакомьтесь с его содержимым. Все указанные де тате добавления многоугольников на ключевые места лица. При просмотре разделенного упрощения можно заметить, что в указанных областях модели переходы достаточно рез кие. Тем не менее платой за это стало увеличение числа многоугольников. К тому же ка ждая дополнительная деталь, такая как второстепенная морщина вдоль низа глаза или на лбу, также должна быть промоделирована в основном полигональном каркасе или созда на с использованием карты выдавливания. Однако предоставляемые Майя SDS-поверхности позволяют перенести эти тонкие детали на более точный каркас, а для управления деформацией использовать более грубый, базовый каркас уровня 0. Откройте файл MachismoHead05_SubDHeadStart.mb. Это исходная еще не детализированная модель головы, отраженная и сшитая с помощью ин струмента Merge Edge (Объединение края). Итак, преобразуем голову и начнем моделирова ние деталей. Обычно процесс разработки подразумевает создание половины головы с последующим зеркальным копированием и сшиванием половин вместе. Однако поскольку этот процесс не рассматривается в данной главе, отложим его до главы 12, "Тонирование и текстурирование при анимации".
SDS-поверхности 1.
249
Выделите голову (SubDHeadGeo) и выберите в меню Modify (Изменить) пункты Convert => Polygons То Subdiv • (Преобразовать => Полигональную поверхность в SDS-новерхность • ) . Не забывайте, что значение в поле Maximum Base Mesh Faces (Максимальное количество граней базового каркаса) этой панели должно быть не меньше количества граней полигонального каркаса, который предстоит преобразо вать. Для этой головы количество граней составляет 1590. Если для данного пара метра установлено значение, большее приведенного, то преобразование завершится успешно. Меньшее значение параметра может привести к неудачному выполнению операции. При реальном моделировании устанавливать это значение намного боль ше 3000 не потребуется. По умолчанию для параметра Maximum Edges Per Vertex (Максимум краев на вершину) принято значение 32, что намного больше, чем необ ходимо при моделировании с какой бы то ни было степенью эффективности. По за вершении щелкните на кнопке Create (Создать).
2. Теперь каркас SDS-поверхности уже создан, но для того, чтобы лучше увидеть, на каком уровне происходит работа, хотелось бы установить собственные настройки. Выберите в меню W i n d o w (Окно) пункты Settings/Preferences => Preferences (Параметры/Предпочтения => Предпочтения) и в появившейся панели Categories (Категории) выберите Subdivs (SDS-поверхности). 3. Находясь в разделе Subdivs Display (Отображение SDS-поверхностей), переключите переключатель Component Display (Отображение компонента) из положения Points (Точки) на Numbers (Числа). Щелкните на кнопке Save (Сохранить), чтобы внести изменения. 4. Чтобы отобразить вершины уровня 0, выберите Vertex (Вершина). Как можно заме тить, эти вершины совпадают с исходными вершинами многоугольников модели. 5. Правой кнопкой мыши выберите Display Finer (Увеличить точность отображения). Об ратите внимание на то, что над более детализированными областями модели появились единицы. Это каркас уровня 1, который Maya создает поверх базового каркаса уровня 0. 6. Чтобы отобразить на каркасе вершины уровня 2, снова выберите Display Finer. Модель сейчас содержит немного таких вершин, но позднее их наличие сослужит хорошую служ бу. Обратите также внимание на то, что уровень отображения можно задать непосредст венно, выбрав уровень представления в маркированном контекстном меню. 7. Чтобы увидеть, как Maya создает сглаженное изображение модели головы, состоя щей из SDS-поверхностей, перейдите в режим объектов (Object Mode), выберите модель, а затем нажмите клавиши <1>, < 2 > и <3>. При моделировании SDS-поверхностями чрезвычайно важны края, поскольку, вы брав в меню Subdiv
surfaces
(SDS-поверхности) пункт Full
Crease
Edge/Vertex
(Заполнить у складок края/вершины), можно автоматически создавать складки вдоль поверхности модели. Поскольку работа идет над моделью головы в целом, в нее следует внести некоторую асимметрию . Давайте нанесем на модель складки следующим образом. 1
1
Дело в том, что зачастую сначала создают только половину головы (левую или правую), а за тем, зеркально скопировав ее, сшивают и получают целую. Однако абсолютно симметричное лицо выглядит крайне неестественным, поэтому при детализации ему обязательно придают некую
асимметрию. — Примеч. ред.
250
Глава 5
1.
Выберите края головы. Если края уровня 0 еще не отображаются, выберите Display Level 0 (Уровень представления 0).
2.
Выделите края, проходящие вдоль глубоких морщин на лбу, как показано на рис. 5.19, а.
3.
Переключитесь на набор меню surfaces (Поверхности), если он еще не выбран. Для создания складки выберите в меню Subdiv surfaces (SDS-поверхности) пункт Full Crease Edge/Vertex (Заполнить у складок края/вершины) и добавьте к глубоким морщинам топологию уровня 1. Выбранные края теперь должны быть отмечены пунктиром, как показано на рис. 5.19, б.
4.
Чтобы увидеть складки в действии, переместите их по оси Z назад, как показано на рис. 5.19, в. Однако поскольку анимация складок будет выполнена позднее, сейчас отмените это последнее действие.
а. Выделите края
б. Создайте заполненные складки
в. Оттяните края внутрь головы, чтобы создать складки
Рис. 5.19. Выделите края и создайте складки. Внизу показан результат временного перемещения заломов назад. Вверху выделенные края утол щены, чтобы они стали заметнее на рисунке Создайте складки в необходимых местах модели. Все края, которые предстоит сде лать полными складками, отмечены на рис. 5.20 белым цветом, а все частичные склад ки — черным. Все части, за исключением глаз, должны быть довольно четкими. На пе редней части век необходимо сделать частичные складки, а на задней, трущейся о глазное яблоко, — полные складки.
SDS-поверхности
251
Рис. 5.20. До нанесения складок базовая модель уровня 0 является гладкой (слева). Полные склад ки отмечены белым цветом, а частичные — черным (посередине). Завершенная модель (справа) Как отмечалось ранее, все моделируемые на более подробных уровнях детали будут подвержены деформациям, применяемым на менее подробных уровнях. Итак, усовер шенствуем базовую голову на более детализированном уровне, используя инструмент Sculpt Geometry (Рельеф). Давайте поместим на губу Машизмо шрам. 1. Откройте файл MachismoHead06_SubDHeadfin.mb или продолжите рабо ту над сценой предыдущего упражнения. 2.
Увеличьте изображение области губ, правой кнопкой мыши выберите края, а потом установите для головы первый уровень представления (Display Level 1), как показано на рис. 5.21, а.
3.
Выделите несколько краев с любой стороны, на которой необходимо изобра зить шрам, и правой кнопкой мыши выберите r e f i n e Selected (Уточнить выделенную область). В результате эта область губы получит дополнитель ные детали, которые можно выбирать (см. рис. 5.21, б). В случае ошибки не медленно отмените действие и вернитесь к более простой поверхности, вы брав в меню Subdiv surfaces (SDS-поверхности) пункт Clean Topology (Очистить топологию).
4.
Выберите в меню Subdiv surfaces (SDS-поверхности) инструмент Sculpt Geometry (Рельеф). Как и ранее, при использовании этого инструмента ус тановите подходящий размер кисти (brush Size), возможно 0.1 или около того. Используйте сплошную голубую кисть, так как необходимо получить настолько четкую впадину, насколько это возможно. Для параметра Мах Displacement (Максимальное смещение) установите небольшое значение, возможно 0.2.
5.
Перемещаясь вниз, к середине подбородка, создайте на губе рельефное уг лубление (см. рис. 5.21, в).
252
Глава 5
а. Установите для головы первый уровень представления
б. Уточните область шрама
в. Создайте шрам с помощью инструмента рельефа
г. Создайте волнистый край шрама
Рис. 5.21. Машизмо хвастается тем, что получил свой шрам во время драки в баре города Момбасса, но на самом деле он заработал его, пытаясь открыть зубами бу тылку! Комбинация клавиш инструментов рельефа
Для всех инструментов рельефа используются следующие комбинации клавиш. •
Клавиша < U > позволяет выбрать функции Push (Вдавить), Pull (Вытянуть), Smooth (Сгладить), Erase (Стереть), а также установить оси симметрии (reflection axes).
•
Перемещая мышь, удерживая нажатыми клавишу < В > и ее левую кнопку, можно вы брать диаметр кисти.
•
Перемещая мышь, удерживая нажатыми клавишу < М > и ее левую кнопку, можно ус тановить значение наибольшего смещения (Max Displacement). Оно отображается и как число, и как длина стрелки, изменяющаяся по мере перетаскивания.
•
Клавиша < N > позволяет задать непрозрачность (opacity) кисти, что в данном случае неважно, однако имеет большое значение при окрашивании.
6.
Чтобы получить правдоподобный шрам от удара бутылкой, выделите несколько краев вдоль сторон шрама и сделайте на них складку. Выделите отдельные края и преобразуйте их так, чтобы шрам приобрел неправильную волнистую форму (см. рис. 5.21, г).
SDS-поверхности 7.
253
Выберите в меню Subdiv surfaces (SDS-поверхности) пункт C l e a n T o p o l o g y (Очистить топологию), чтобы на более подробном уровне удалить ненужные детали. Завершая создание модели, удалите историю.
8. Сохраните файл. Теперь посмотрим, как эта деталь поддерживается деформатором плавной модифи кации, примененным к базовому каркасу уровня 0. 1.
Импортируйте сцену SneerBlendShape.mb с компакт-диска. Обратите внимание на то, что импортированная модель не только грубей модели из SDS-поверхностей, созданной в предыдущих упражнениях, но еще и нахо дится в полигональной форме! Зачастую, особенно на маломощных компью терах, гораздо проще создать сначала полигональную модель, а затем преоб разовать ее в SDS-поверхности.
2.
Выделите новый объект и преобразуйте его в SDS-поверхность.
3.
Для SubDHeadGeo и polyToSubdl выберите пункт меню Vertices (Верши ны), а затем установите для них нулевой уровень представления. Используя инструмент Marquee (Выделение прямоугольником), выделите новый кар кас, а потом, нажав клавишу <Shift>, выделите детализированный каркас (рис. 5.22, а). Плавная модификация не будет срабатывать до тех пор, пока не будут выделены все вершины на обоих объектах.
4.
В наборе меню Animation (Анимация) выберите пункты Create Deformers => Blend Shape • (Создать деформаторы => Плавная модификация • ) . Назови те узел LOBlendShape и убедитесь, что установлен флажок Check Topology (Проверять топологию). Щелкните на кнопке Create (Создать), чтобы соз дать на базовой голове узел плавной модификации.
5.
Выберите в меню W i n d o w (Окно) пункты Animation Editors => BlendShape (Редакторы анимации => Плавная модификация) и, открыв редактор плавной модификации (Blend Shape Editor), найдите узел в списке Inputs (Входящие) панели каналов. Измените единственное исходное значение плавной модифи кации на 1. Результат будет похож на рис. 5.22, б. Обратите внимание на то, как шрам перемещается по нижней губе. Это происходит потому, что топологии нулевого уровня обеих моделей идеально соответствуют друг другу.
Установка плавной модификации на уровне объектов привела бы топологии обоих уровней в соответствие с базовой головой, т.е. Maya поместила бы топологии уровней 1, 2, 3 и 4 на целевой объект плавной модификации. Это не только замедлило бы вы полнение операции в целом, но и привело бы к тому, что шрам и все складки исчезли бы, поскольку плавная модификация была бы применена ко всем иерархическим уров ням модели.
Резюме SDS-поверхности Maya совершенствуются с выходом каждой новой версии. В этой главе было продемонстрировано, как с их помощью можно, применив деформации на низком, более грубом уровне моделирования, перенести их на более детализированные уровни без повреждений. В топологиях, обладающих одним уровнем, таких как
254
Глава 5
NURBS или полигональная, упорядочивание точек предотвращает смешение объектов на разных уровнях детализации. В этом и заключается наибольшее преимущество SDS-поверхности.
а. Выделите вершины нулевого уровня на геометрической форме плавной модификации
б. Плавная модификация управляет движением головы из SDS-поверхностей, перемещая при этом и шрам
Рис. 5.22. Выделение обоих каркасов нулевого уровня и двух каркасов после применения плавной мо дификации
V
Плавные модификации: дополнительные средства моделирования В этой главе рассматривается уникальный метод ускоренного создания плавных мо дификаций — одной из наиболее утомительных задач, связанных с моделированием пер сонажей. Плавные модификации (blend shape) — это элементы из ряда моделей, которые могут преобразовываться друг в друга. Хотя создание таких моделей может оказаться достаточно сложным, они весьма популярны, особенно для анимации лица. В данной главе также обсуждается использование суставов (joint) для быстрого моделирования большого количества плавных модификаций. •
О плавных модификациях
•
Сборка Машизмо
•
Невероятная машина плавных модификаций
•
Инструмент Paint Blend Shape W e i g h t s
О плавных модификациях Моделирование с использованием плавных модификаций подразумевает утомитель ное создание множества вариантов базовой головы персонажа. Эти варианты обычно ог раничиваются изменением или деформацией одной конкретной части головы или лица: рта, глаз, брови, щеки и т.д., что позволяет создать ряд разных выражений лица. Одни могут потребовать значительных усилий по моделированию, а другим достаточно пере мещения лишь нескольких вершин. Зачастую разработчик модели вынужден засучить рукава и для достижения желаемо го результата вручную перемещать множество точек. Некоторые разработчики моделей для создания отдельных плавных модификаций используют такие сложные средства, как кластеры (cluster), решетки (lattice) или деформаторы каркасной сетки (wire deformer). Все они могут использоваться вместе с обсуждаемыми тут методами. Плавная модификация (blend shape) Maya — это специальный тип деформатора, кото рый деформирует вершины одного объекта, называемого базовым объектом (base object), так, чтобы привести их в соответствие с вершинами одного или нескольких целевых объ ектов (target object). В других программных пакетах этот процесс называется морфингом (morphig), или совпадением форм (shape matching). Узлы плавной модификации Майя
256
Глава 6
сравнивают позицию каждой вершины базового объекта с соответствующей вершиной целевого объекта и перемещают вершины базового объекта так, чтобы согласовать их по зиции. Узел плавной модификации вносит поправки (allowance) на смещения (offset) по зиций целевых объектов в пространстве; поэтому никогда не следует фиксировать преоб разования целевого объекта. Узел плавной модификации идентифицирует вершины согласно порядку точек (point order). В главе 3, "Полигональное моделирование", говорилось, что все вершины объекта пронумерованы; по этим номерам Maya определяет, что данная вершина базово го объекта будет контролироваться вершиной с тем же номером целевого объекта (или объектов). Таким образом, как только будут созданы целевые объекты плавной модифи кации, ни одну точку базового объекта нельзя ни добавить, ни удалить. Деформации плавной модификации аддитивны, т.е. их можно комбинировать одну поверх другой. Это может противоречить интуиции. Предположим, например, что вер шина в двух целевых объектах плавной модификации была перенесена на 0 . 5 единиц по оси Y. После применения этих двух целевых объектов к базовому объекту соответст вующая вершина базового объекта сдвинется на одну единицу по оси Y. Каждый узел плавной модификации имеет конверт (envelope), который глобально контролирует воздействие каждого весового коэффициента Целевого объекта плавной модификации на деформацию базового объекта. Конверт функционирует как множитель (multiplier) узла. Если значение конверта равно 2, то каждый весовой коэффициент (weight factor) удваивается; если это значение равно 0.5, то значение каждого весового коэффициента уменьшается в два раза. Изменяя весовые коэффициенты каждого целе вого объекта по отдельности, можно более эффективно, по сравнению с изменением зна чения конверта, получить точно такой же результат. Воздействие целевого объекта мож но увеличить в два раза, сделав его весовой коэффициент равным 2. Это намного гибче и эффективней, чем использование значения конверта. Чтобы не создавать обе стороны головы, промоделируем только половину и с помо щью деформатора оболочки (wrap deformer) Maya создадим обе половинки лица. Так можно создать намного больше плавных модификаций, чем при работе с обеими сторо нами одновременно. Далее обсудим двухэтапный процесс, в котором для создания форм полуголовы применяются ограниченные геометрией неиерархические суставы. Затем полученные плавные модификации будут использованы в деформаторе оболочки для создания окончательного узла плавной модификации полной головы, состоящей из двух симметричных половин. И, как дополнение, обсудим применение плавной модификации к части тела одноповерхностного персонажа. На самом деле это следовало бы сделать в первую очередь.
Сборка Машизмо Чтобы загрузить детализированную полигональную голову и тело, размеры ко торых изменены в соответствии со схематическим рисунком, откройте располо женный на прилагаемом компакт-диске файл Machismo01_HeadBodyStart.mb. При комбинировании собственных файлов, перед импортом головы в файл тела, прочитайте раздел "Завершение головы Машизмо с использованием многоугольников". Реальный размер не имеет значения; размер головы следует изменить в соответствии с размером тела. Вероятнее всего, количество вершин в шейной области головы не будет соответст вовать количеству вершин вокруг отверстия шеи тела. В данном случае в указанной об-
Плавные модификации: дополнительные средства моделирования
257
ласти голова имеет 13 многоугольников, а отверстие шеи — 11. Эта ситуация типична; моделируя голову и тело, практически всегда забываешь позаботиться о том, чтобы ре альные количества вершин в области шеи впоследствии совпали. Но эта проблема впол не решаема. Итак, помня об этом, присоединим голову. 1. Если между двумя объектами нельзя эффективно добавить многоугольники из-за того, что часть шеи расположена слишком близко к телу, то освободите пространст во, удалив нижний ряд многоугольников шеи. В данном случае останется много мес та сзади, но в этом нет ничего плохого: это обеспечит пространство для сжатия мно гоугольников, когда Машизмо будет поднимать голову. 2.
Выбрав пункт меню Display => Polygons => Face Normals (Представление => Много угольники => Нормали), удостоверьтесь, что нормали обоих объектов направлены одинаково. Если это не так, то обратите их для того объекта, у которого они направ лены внутрь, выделив этот объект и выбрав пункт меню Normals => r e v e r s e (Нормали => Обратить). Нормали обоих объектов должны быть направлены наружу.
3. Зафиксируйте преобразования и удалите историю обоих объектов. 4. Чтобы объединить объекты в один объект, выделите их и выберите пункт меню Mesh => Combine (Сетка => Объединить). 5.
Используя инструмент A p p e n d То Polygon (Добавить к многоугольнику), соедините два объекта, как показано на рис. 6.1. Обратите внимание на метод, которым два края головы были соединены с одной вершиной тела: для этого был создан направленный по диагонали четырехугольник, на который указывает стрелка курсора. Это распро страненный способ соединения областей с разным количеством деталей.
Рис. 6.1. Применение инструмента Append Polygon для соединения головы с телом
То
Завершение головы М а ш и з м о с использованием м н о г о у г о л ь н и к о в
Можно заметить, что присоединенная к телу голова отличается от головы, которая была получена в главе 5, "SDS-поверхности". У преобразованной в SDS-поверхности, а затем де тализированной базовой головы не было мелких деталей. Они были добавлены позднее с помощью складок и иерархического редактирования (hierarchical edit). Сейчас все это бо гатство отсутствует. Откройте файл H e a d S i d e b a r C o m p a r i s o n . m b с компакт-диска и срав ните обе головы. Внесенные изменения модели D e t a i l e d H e a d — это не более чем углубле ние впадин, примененных к существующим краям. На рис. 6.3 показано создание глубоких надбровных складок на лбу. При создании плавных модификаций эти складки действи тельно будут использованы для анимации морщин над бровями, но вместе с этим они яв ляются распространенным примером создания деталей, которые подчеркивают края, при соединяя наборы краев к существующим вершинам. Этим способом будут подчеркнуты мешки под глазами, складки у края глаз и морщины на переносице.
258
Глава 6
Остальные детали в основном состоят из совокупности рядов многоугольников, располо женных возле края, который необходимо подчеркнуть при сглаживании модели. К этим де талям относятся, главным образом, линия роста волос, брови, веки и передние края верх ней и нижней губы. Когда модель будет сглажена, эти дополнительные линии подчеркнут указанные детали. 6.
Разделите этот новый ряд многоугольников вдоль середины. Обработайте состоящие из пятиугольников и треугольников фрагменты, которые получились в результате разделения расположенного по диагонали четырехугольника. Для этого либо стяни те треугольник, либо разделите пятиугольник.
7.
Сгладьте переход от головы к телу, либо переместив точки вручную, либо применив операцию сглаживания инструмента Sculpt Geometry (Рельеф). Также можно вы брать пункт меню Mesh => Average Vertices • (Сетка => Усреднить вершины •) и ус тановить параметр Smoothing Amount (Степень сглаживания) равным 5. Сглажива ние перехода от головы к шее показано на рис. 6.2. При перемещении выделенного ряда здесь очень удобно использовать возможность обхода (обход (pick-walk) — это перебор соседних элементов текущего компонента при нажатии клавиш курсора), позволяющую быстро переносить выделение относительно текущего выделенного множества. Операция усреднения вершин перемещает выделенные вершины на но вое место, усредняя их положение относительно расположенных рядом вершин. Ко личество итераций определяет, насколько далеко переместятся выделенные верши ны при однократном применении операции усреднения. Как правило, имеет смысл начинать с небольшого количества итераций. Используя клавиши управления кур сором, обойдите голову вокруг, применяя по мере необходимости усреднение вер шин. И наконец, завершите сглаживание вершин в области груди вручную.
а. Сглаживание вершин по краю вручную
б. Обход головы
в. Сглаживание вершин по краю в области груди вручную
Рис. 6.2. Сглаживание перехода от головы к шее 8.
Чтобы избавиться от впечатления наличия граней на месте соединения (и на голове), выберите пункт меню Normals => Soften Edge (Нормали => Смягчить край) (рис. 6.3).
Плавные модификации: дополнительные средства моделирования
259
Пункты Soften Edge (Смягчить край) и Harden Edge (Заострить край) меню Normals (Нормали) фактически используют предустановленный пункт меню Set Normal Angle (Установка угла нормали). Установите для смягчения края угол нор мали 180° и пройдитесь тонером по всем граням, чтобы придать им более мягкий вид. Для заострения краев установлен угол к нормали 0, что обеспечивает угловатый внешний вид.
Рис. 63. Создание складок над бровью 9.
Удалите историю.
По завершении соединения головы и тела все готово для зеркального отражения и сшива ния половин персонажа, результатом которой будет его законченная форма. На данном этапе для обладающего единой оболочкой персонажа имеет смысл создать собственную карту UV (UV шар). Карта будет создана в главе 12, "Тонирование и текстурирование при анимации", а сейчас просто добавим несколько деталей к костюму Машизмо. Создадим вырез рубашки, края перчаток для рук, края ботинок для ног и короткие линии для трико. Это существенно упростит создание карты UV, поскольку позволит встроить в нее швы. По окончании сохра ните файл как Machismo03_HalfBodyNoUVs.mb.
Голову — долой! На настоящий момент Машизмо представляет собой одноповерхностную сетку, со стоящую из 4624 граней (face) и 4653 узлов (вершин). При создании плавных модифика ций стандартным способом для деформации любой части лица пришлось бы создать ко пию всей сетки. Вполне очевидно, что добавление в файл по 4624 дополнительные грани на каждую из 30 или 40 форм лица, необходимых даже для простого набора, приведет к существенному увеличению размера файла и необходимого Майя объема памяти. По этому при создании плавных модификаций голову следует отделить от тела. Отделение головы от остальной части тела нарушит единство поверхности, затруднит нанесение весовых коэффициентов и, если разделение пройдет посередине фрагмента
Глава 6
260
UV, существенно усложнит подгонку текстур. Поэтому голову придется снова объеди нять с телом и опять соединять вершины. Секундочку! Разве только что голова не была присоединена к телу? Зачем необходи мо снова отделять ее? Голова была присоединена к телу для того, чтобы объединить сет ки двух совершенно автономных объектов. Помните, раньше полуголова была присоеди нена к полутелу, а теперь идет работа над сеткой целого тела. Но не нарушит ли это по рядок точек головы? В конце концов, разве не добавлялись точки тела к голове базового объекта? Ответ таков: если точки головы базового объекта соответствуют точкам головы целевого объекта, то плавная модификация будет работать. Между объектами с различ ными количествами вершин можно осуществить плавную модификацию, если номера вершин модифицируемой области базового объекта соответствуют номерам вершин це левого объекта. Итак, сначала отделим голову. Эта техника довольно сложная. Убедитесь, что каждый ее этап понятен. Ошибки, допу щенные на первых этапах, могут остаться незамеченными до самого конца, пока вся работа не закончится провалом. Поэтому, следуя этой инструкции, будьте терпеливы и аккуратны. 1.
Откройте имеющийся на компакт-диске файл Machismo05_BlendShapeStart .mb. В нем содержится сетка полного тела с картами плоских текстур (UV), созданными в главе 12, "Тонирование и текстурирование при анима ции". Карты плоских текстур помогут выделить необходимые поверхности.
2.
Выберите пункт меню W i n d o w => UV Texture Editor (Окно => Редактор плоских текстур) и выделите объект BodyGeo. В результате в окне редактора плоских текстур появятся соответствующие карты.
3.
Чтобы перейти в режим выделения точек UV, в окне редактора плоских тек стур щелкните правой кнопкой мыши и в появившемся контекстном меню вы берите пункт UV (Точка UV). Выделите по одной точке UV для лица, верха го ловы и нижней части носа, как показано на рис. 6.4, а. При желании в правиль ности выбора можно убедиться в окне перспективного представления.
4.
Щелкните правой кнопкой мыши в окне редактора плоских текстур и в поя вившемся маркированном контекстном меню выберите пункт Select => Select Shell (Выделение => Выделить оболочку), как показано на рис. 6.4, б. В ре зультате будут выделены все плоские текстуры, содержащие ранее выделен ные точки UV.
5.
Снова щелкните правой кнопкой мыши и в появившемся маркированном контекстном меню выберите пункт Select => Convert Selection То Faces (Выделение => Преобразовать выделение в грани), как показано на рис. 6.4, в. Теперь окно редактора плоских текстур можно закрыть.
6.
В области перспективного представления переведите объект BodyGeo в ре жим выделения граней (см. рис. 6.4, г).
7.
Обязательно убедитесь, что установлен флажок Edit Mesh => Keep Faces Together (Редактировать сетку => Сохранять грани вместе), после чего выбе рите пункт меню Mesh => Extract (Сетка => Извлечь) (при установленном в па раметрах операции флажке Separate Extracted Faces (Отделять извлечен ные грани)). В результате будут созданы два объекта, сгруппированные под исходным именем объекта.
Плавные модификации: дополнительные средства моделирования
а. Раскладка плоских текстур для всех частей головы. Одна из карт UV выделена
б. Выделение оболочки
в. Преобразование выделения точек UV в выделение граней
261
г. Переход в режим выделения граней
Рис. 6.4. Редактор плоских текстур может оказаться полезным инструментом для выделения групп вершин, граней и плоских текстур 8.
Выделите новый объект головы и скопируйте его, поместив на верхний уровень ие рархии.
9. Переместите новую копию головы назад вдоль оси Z (на -4 единицы) так, чтобы она расположилась позади головы. Центрируйте ее опорную точку. 10. Переименуйте этот объект в HeadBlendBaseGeo. На этой голове будут проведены все дальнейшие работы по созданию плавных модификаций, что позволит избавить основную голову от этих операций. Теперь необходимо еще раз присоединить голову к телу, сохранив при этом правиль ный порядок установленных точек. 1.
Выделите объект головы, а затем, удерживая клавишу <Shift>, выделите объект тела. При объединении двух объектов Maya начинает упорядочивание точек с объекта, ко торый был выделен первым, а потому порядок выделения имеет значение.
2. Для объединения двух объектов выберите пункт меню Mesh => Combine (Сетка => Объединить). Получившийся объект назовите BodyFinalGeo. 3. Перейдите в режим выделения вершин объекта B o d y F i n a l G e o . 4. Чтобы открыть окно параметров Polygon Selection Constraint On Vertices (Критерии выделения вершин многоугольника), выберите пункт меню Select => >Select Using Constraints (Выделение => Выделение с использованием критериев). 5. В разделе Properties (Свойства) установите переключатель Location (Расположение) в состояние OnBorder (На границе), а переключатель Constrain (Ограничить) — в со стояние All And Next (Все и следующий). Это выделит все вершины на границе объ екта, в том числе вершины внутри рта, глаз и ноздрей (рис. 6.5). 6. Щелкните на кнопке Close And r e s e t (Закрыть и сбросить). При этом окно закроет ся и, что важнее всего, установленные критерии вернутся в прежнее состояние; без этого следующий этап выполнить не удастся. 7. Удерживая нажатой клавишу < C t r l > и щелкая левой кнопкой мыши (или с помо щью выделения прямоугольником), снимите выделение с вершин вокруг глаз, носа и рта. Вершины вокруг воротника должны остаться выделенными. Обратите внимание на количество выделенных вершин, посмотрев на информационный дисплей (Heads Up Display — H U D ) . (Если информационный дисплей в области перспективного
262
Глава 6 представления невидим, установите флажок Display => Heads Up Display => Poly Count
(Представление => Информационный дисплей => Количество многоугольников).)
Рис. 6.5. Модель, у которой выделены все вершины границы, как указа но в окне свойств Polygon Selection Constraint On Vertices. Объект HeadBlendBaseGeo скрыт, чтобы не загромождать изображение 7.
Выберите пункт меню Edit Mesh => Merge • (Редактировать сетку => Объединить • ) . Восстановите параметры по умолчанию и щелкните на кнопке Apply (Применить). Сразу же обратите внимание на количество вершин, отображенное на информацион ном дисплее. После выполнения этой операции количество вершин должно умень шиться ровно вдвое. Если их осталось больше половины, то расстояние между неко торыми вершинами было слишком большим, чтобы они могли быть объединены при значении параметра Distance (Расстояние) по умолчанию. Отмените последнее дей ствие, немного увеличьте значение параметра Distance (Расстояние), а затем повто рите операцию. Если вершин осталось меньше половины, значит, были объединены некоторые пары вершин. Отмените последнее действие, уменьшите значение пара метра Distance и повторите операцию, хотя трудно понять, как значение по умолча нию, равное 0.0001, могло быть слишком большим.
8.
Чтобы избавиться от многогранного вида края, выделите объект и примените к нему операцию смягчения нормалей; хотя с учетом того, что этот край соответствует про ходящей по телу линии воротника рубашки, этот шаг не обязателен.
9. Удалите историю объекта BodyFinalGeo. После повторного присоединения головы необходимо применить объект HeadBlendBaseGeo в качестве плавной модификации. Это подтвердит сохранение правиль ного порядка точек. Для того чтобы создать плавную модификацию, выполните следую щие действия. 1. Выделите объект HeadBlendBaseGeo, а затем, нажав клавишу <Shift>, выделите объект BodyFinalGeo. Помните, что плавная модификация применяется к объекту, выделенному последним. 2.
В наборе меню Animation (Анимация) выберите пункт меню Create Deformers => Blend Shape • (Создать деформаторы => Плавная модификация • ) . Присвойте узлу плавной модификации имя HeadBaseBlend, введя это имя в поле Blend Shape Node (Узел плавной модификации), и сбросьте флажок Check Topology (Проверять топо-
Плавные модификации: дополнительные средства моделирования
263
логию). В результате сброса этого флажка Maya будет игнорировать общие детали топологии объекта. Если флажок Check Topology (Проверять топологию) не сбро сить, то Maya может не создать узел плавной модификации. Чтобы создать узел плавной модификации HeadBaseBlend, щелкните на кнопке Create (Создать). 3. Выделите объект BodyFinalGeo, и в разделе Inputs (Входящие) панели каналов появятся узел HeadBaseBlend и узел настройки (tweak node). Щелчком мыши от кройте узел HeadBaseBlend. 4.
Установите в поле ввода весового коэффициента (weight) объекта HeadBlendBaseGeo значение 1 (это поле справа от имени объекта). Примите поздравления, ес ли в модели ничего не изменилось! Работающая плавная модификация создана, те перь можно продолжать. С другой стороны, если получилось что-то похожее на рис. 6.6, то, возможно, перед объединением первым был выделен объект тела. Все не обходимо начать сначала. Кроме того, к разрыву модели может привести случайное изменение порядка точек при удалении вершин одного из объектов.
Рис. 6.6. Плавная модификация не работает, если перед объединением первым выделить объект тела 5. Чтобы увидеть, как деформировался базовый объект BodyFinalGeo под воздействием созданной плавной модификации, выделите и деформируйте некоторые вершины це левого объекта. При этом соответствующие вершины объекта BodyFinalGeo должны деформироваться соответствующим образом. Этот метод работает, поскольку вершины BodyFinalGeo с номерами от 1 до 1908 в точности соответствуют вершинам с номерами от 1 до 1908 целевого объекта HeadBlendBaseGeo плавной модификации. Таким образом, описанный выше метод можно использовать только для одной части тела с одноповерхностной сеткой. Для корректи рующих плавных модификаций было бы невозможно выделить, отделить и повторно объединить руки или ноги, поскольку при этом нарушался бы порядок точек. Теперь пе рейдем к машине создания плавных модификаций.
Глава 6
264
Невероятная машина плавных модификаций Д Л Я тех, кто занимается моделированием реалистичных объектов с использованием плавных модификаций, эта система способна существенно упростить рабочий процесс. Традиционный рабочий процесс моделирования плавных модификаций заключается в ко пировании базового объекта и последующей переделке копии в целевую форму. Как это бывает, лучший метод разделения форм на их левые и правые версии, например, левую и правую форму с улыбающимся выражением лица, быстро может стать утомительным. Распространенные методы моделирования включают моделирование вершин; дефор мации решеток, каркасных сеток или кластеров и программируемую модификацию выде ленных компонентов. Все это отличные, проверенные временем методы со своими уни кальными достоинствами и недостатками; ничто не лишает их прав или делает невозмож ным их использование в конвейере моделирования плавных модификаций. Текущая цель заключается в том, чтобы обсудить новый способ моделирования, использующий неиерар хические суставы Maya для деформирования объекта полуголовы. Таким образом, при ми нимальных настройках будет получен механизм, позволяющий быстро создать множество целевых объектов, используемых в дальнейшем для модели с полной головой. А сейчас приступим к созданию этой плавной модификации и оснастки для нее. 1.
Откройте имеющийся на компакт-диске файл Machismo06_BlendMachineStart. mb. Этот файл содержит сцену, полученную в предыдущем упражнении после присоединения головы к телу.
2.
Создайте три слоя: BodyLyr, SkullLyr и SkinLyr. Поместите объект BodyFinalGeo на слой BodyLyr и скройте этот слой.
3.
Создайте копию объекта HeadBlendBaseGeo, назовите ее SkullGeo и до бавьте к слою SkullLyr. Нажав клавишу <Х>, переместите и привяжите ее к началу глобальных координат (world origin).
4.
Поместите объект HeadBlendBaseGeo на слой BodyLyr. При этом объект HeadBlendBaseGeo должен исчезнуть.
5.
Сдублируйте объект SkullGeo, присвойте копии имя SkinGeo и поместите ее на слой SkinLyr.
6.
Скройте слой SkullLyr.
7.
Переведите объект SkinGeo в режим выделения граней и удалите левую по ловину лица (рис. 6.7, слева).
8.
Выберите пункт меню Skeleton => Joint Tool (Скелет => Инструмент сустав) и, удерживая для привязки к сетке нажатой клавишу <Х>, расположите один сустав в начале глобальных координат. В дальнейшем это удержит большин ство вершин головы на своих местах. Чтобы создать один сустав и оставить выбранный инструмент, нажмите клавишу .
9.
Поместите один сустав на кончике носа (см. рис. 6.7). Чтобы создать сустав и закрыть инструмент Joint (Сустав), щелкните, нажав клавишу < V > (для привязки к вершинам), на вершине кончика носа (на центральной линии) и нажмите клавишу <Enter>.
Плавные модификации: дополнительные средства моделирования
265
Рис. 6.7. Расположение отдельных суставов, от начала глобальных коорди нат и по поверхности объекта SkinGeo 10. Выделите сустав, созданный вторым, сдублируйте его и в режиме привязки к верши нам совместите копию с вершиной центральной линии на уровне середины брови, как показано на рис. 6.7, посередине. суставы слишком малы, чтобы их увидеть или правильно выделить, измените их раз (default Size), выбрав пункт меню Window => Settings/Preferences => Preferences (Окно => Параметры/Предпочтения => Предпочтения) и изменив параметр Joint Size (Размер сустава) из категории Kinematics (Кинематика). Для суставов, показанных на рис. 6 . 7 , значение этого параметра равно примерно.24. ЕСЛИ
мер по умолчанию
11. Продолжите дублирование суставов и их расположение поверх вершин, чтобы полу чить такой же результат, как на рис. 6.7, справа. Фактически каждая книга или руководство по моделированию плавных модифика ций лица содержит несколько эскизных набросков мускулатуры лица и важные рассуж дения о том, каким образом для имитации движения этих мускулов разработчик должен адаптировать перемещение точек. В результате у него не останется реального способа имитации движений мускулатуры. Для лучшей имитации мышечной деятельности хоте лось бы сделать так, чтобы созданные суставы могли скользить вдоль поверхности SkullGeo. Для этого используем геометрический ограничитель (geometry constraint). Ограничим эти суставы объектом SkullGeo. 1. Скройте слой SkinLyr и отобразите слой SkullLyr. 2. Выделите объект SkullGeo и, удерживая нажатой клавишу <Shift>, выделите сус тав носа. 3. Выберите пункт меню Constrain => Geometry (Ограничить => Геометрия). Этот ограни читель фиксирует все, к чему он применяется, прикрепленным к поверхности моде ли. В данном случае сустав будет плавно двигаться вдоль поверхности SkullGeo, упрощая таким образом имитацию движения мускула. 4. Чтобы снять выделение с сустава носа, щелкните на нем, нажав клавишу <Shift>. 5. Для каждого сустава на поверхности модели, кроме сустава в начале глобальных ко ординат, повторите шаги 2 - 4 . Быстро это можно сделать так: нажав клавишу
266
Глава 6 <Shift>, снимите выделение с последнего ограниченного сустава; затем, продолжая удерживать нажатой клавишу <Shift>, выделите следующий сустав и для выполне ния последнего выбранного пункта меню нажмите клавишу < G > . Сустав, с которого снято выделение, должен стать фиолетовым, что указывает на то, что он как-то свя зан с все еще выделенной поверхностью.
Можно также использовать записанный на компакт-диске сценарий (script) GeoConstrain.mel. Используйте его в качестве исходного кода, выделите объект SkullGeo и прямоугольником выделите все ограничиваемые суставы. Чтобы ограничить все суставы, введите в командной строке команду G е о С о n s t r a i n . Д Л Я дальнейшего обсуждения присвоим суставам имена, соответствующие их назна чению. Если не сделать это до привяжи (binding), то такие имена нельзя будет задейство вать при нанесении весовых коэффициентов. HeadBaseJNT (сустав базовой головы)
NoseJNT (сустав носа)
BrowJNT (сустав надбровья)
BrowlnsideJNT (сустав BrowMidJNT (сустав средней внутренней части надбровья) части надбровья)
BrowOutJNT (сустав внешней части надбровья)
EyeBrowInJNT (сустав внутренней части брови)
EyeBrowMidJNT (сустав средней части брови)
EyeBrowOut JNT (сустав внешней части брови)
EyeLidTopJNT (сустав верхнего века)
EyeLidBtmJNT (сустав нижнего века)
FaceJNT (сустав лица)
SneerJNT (сустав ухмылки)
CheekTpJNT (сустав верхней части щеки)
CheekMidJNT (сустав средней части щеки)
CheekBtmJNT (сустав нижней LipTplnsJNT (сустав внутчасти щеки) ренней части верхней губы)
LipTpMidJNT (сустав середины верхней губы)
LipTpCrnr JNT (сустав уголка LipBtmCrnr JNT (сустав LipBtmMidJNT (сустав сереверхней губы) уголка нижней губы) дины нижней губы) LipBtmins JNT (сустав внут ренней части нижней губы)
Теперь необходимо привязать эти суставы к поверхности S k i n G e o . Для создания (skin cluster) полуголовы в целом будет использована операция Maya Smooth Bind • (Плавная привязка • ) . Создание оболочки (skinning) предоставляет сле дующие преимущества. кластера оболочки
•
В кластере оболочки каждый сустав функционирует по отношению к себе как кла стер, что позволяет использовать преимущества деформаторов кластеров (cluster deformer), избегая их недостатков.
•
Плавно привязанные суставы могут распространять воздействие одного или не скольких суставов настолько далеко в пределах кластера, насколько это необходимо. При этом управляющие краем рта суставы могут слегка деформировать лоб, как это бывает с настоящей плотью и кровью.
•
Как было показано, отдельные суставы можно ограничить так, чтобы они перемеща лись только вдоль черепа, имитируя тем самым мышечную деформацию оболочки.
Плавные модификации: дополнительные средства моделирования
267
•
Выбор пункта меню Skin => Go То Bind Pose (Оболочка => Перейти в позу привязки) возвращает суставы и получившуюся сетку поверхности в исходное положение.
•
Для достижения необходимого анимационного эффекта весовые коэффициенты сус тавов могут быть установлены или изменены так, как это необходимо для целевого объекта.
Использование кластеров оболочки для моделирования плавных модификаций имеет один потенциальный недостаток, относящийся к аддитивной природе плавной модифи кации. Например, у человека при улыбке двигается все лицо: незначительно смещается кожа на подбородке, щеках, ушах, лбу и бровях. Такое встроенное в целевой объект плавной модификации улыбки смещение может стать причиной проблем при объедине нии целевых объектов поднятия брови и улыбки. Поэтому такие целевые объекты плав ных модификаций следует создавать осторожно. Эту проблему можно обойти, ограничив для каждой части лица воздействие на нее, но так можно создать другую проблему, присущую использованию плавных модифика ций. Зачастую анимация, созданная исключительно с использованием плавных модифи каций лица, выглядит так, как будто каждая отдельная часть лица двигается независимо. Рот двигается, а глаза нет. Эта раздельность часто приводит к чрезвычайно пластичному и неубедительному виду анимации лица. Итак, имея в виду указанные преимущества и недостатки, привяжем суставы к голове следующим образом. 1. Скройте слой SkullLyr и отобразите слой SkinLayer. 2.
Выделите прямоугольником все созданные в предыдущем упражнении суставы.
3. Нажав клавишу <Shift>, выделите объект SkinGeo. 4.
Выберите пункт меню Skin => Bind Skin => Smooth Bind • (Оболочка => Привязать оболочку => Плавная привязка • ) . Обычно суставы упорядочивают в систему, именуе мую иерархией (hierarchy), и в текущем примере используется неИерархическая структура. Поэтому для параметра Bind to (Привязывать к) выберите из списка зна чение Selected Joints (Выделенные суставы), а для Bind Method (Метод привязки) — значение Closest Distance (Ближайшее расстояние). Чтобы в момент привязки огра ничить количество начальных воздействий на каждую точку четырьмя суставами, установите для параметра Max Influences (Максимум воздействий) значение 4. Ус тановите флажок Maintain Max Influences After Bind (Сохранять максимум воздейст вий после привязки). Таким образом, для всех вершин будет установлен постоянный предел количества воздействий, равный 4. Положительный момент такой настройки заключается в том, что находящиеся далеко от конкретной точки суставы не смогут на нее воздействовать. Но если по некоторой причине на вершину будет воздейство вать пятый сустав, то одно из первоначальных четырех воздействий, обычно с наи меньшим коэффициентом, будет удалено, а значения остальных будут перенастрое ны так, чтобы они равнялись единице. Это может привести к неожиданным резуль татам. Присвойте параметру Dropoff r a t e (Коэффициент спада) значение 10. Это создаст резкое уменьшение воздействия по мере удаления от суставов. Поскольку каждый из выделенных суставов будет использован, сбросьте флажок r e m o v e Unused Influences (Удалять неиспользуемые воздействия), а чтобы цвета не сбивали с толку, сбросьте еще и флажок ColoriZe Skeleton (Раскрашивать скелет). Чтобы соз дать привязку, щелкните на кнопке Bind Skin (Привязать оболочку).
Глава 6
268
Не забывайте, что в отличие от весовых коэффициентов, применяемых для привязки персонажа к скелету, данные суставы будут использоваться для деформирования теку щей сетки в другие формы. Таким образом, весовые коэффициенты в процессе модели рования обладают достаточной гибкостью. Кроме того, это предоставит хороший способ нанесения весовых коэффициентов позже, в процессе постановки персонажа. Теперь со храните файл либо по своему усмотрению, либо как Machismo07_WeightPaintStart.mb (иод этим именем он упоминается в следующем разделе).
Плавные модификации: ухмылки, моргания и улыбки Перед непосредственным началом нанесения весовых коэффициентов и моделированием необходимо создать зубы и глаза, чтобы использовать ссылки на них в про цессе работы. Нет ничего бесполезнее потраченного на моделирование плавных модификаций времени только для выяснения того, что некоторые из них приводят к пересечению базового объекта с внутренней геометрической формой. Итак, откройте прилагаемый на компактдиске файл Machismo07_WeightPaintStart.mb и импортируйте файл EyesandTeeth.mb. Сразу же добавьте группу FaceGeoGrp на слой EyeTeethLyr. Чтобы предотвратить случайное выделение объектов этого слоя, переведите его в режим ссылки. Конечно, нанесение весовых коэффициентов на данном этапе было бы преждевременным, потому что список создаваемых форм еще неизвестен. Сначала необходимо решить именно это. Описание моделирования полного набора плавных модификаций каждой детали лица было бы долгим и крайне избыточным. Тут самое главное — создать основные формы и спе цифические для нанесения весовых коэффициентов суставы, чтобы получить впоследствии для каждой детали лица аналоги ее дополнительных форм. Например, при нанесении весовых коэффициентов и моделировании выражения лица с улыбкой параллельно будет создана форма нахмуренного выражения лица, — так работать намного проще. Для создания таких форм придется наносить весовые коэффициенты, перемещать и даже масштабировать неко торые суставы лица. Реализуем следующий список форм: Nose_Sneer Lоwer_Lip_Up Upper_Lip_Up Eye_Closed Eye_Wide_Open Eyebrow_Up Smile/MouthWide Джейсон Осипа (Jason
Osipa) написал замечательную книгу Stop Staring: Facial Modeling and (издательство Sybex, второе издание вышло в 2007 году), в которой подробно рассматриваются формы, которые необходимо создавать, и объясняется, почему это надо делать. Хотя приемы создания форм и их усовершенствования, описанные в на стоящей книге, иногда отличаются от изложенных в его книге, они не менее ценные.
Animation Done right
Форма
Nose_Sneer
Форма Nose_Sneer (нос и ухмылка) позволяет подчеркнуть улыбку, создать види мость хорошего настроения или хмурый взгляд, свидетельствующий о глубоком отвра щении. Стандартное расположение весовых коэффициентов для суставов N o s e J N T и
Плавные модификации: дополнительные средства моделирования
269
SneerJNT показано на рис. 6.8, а, б. Далее показано, какие суставы были предварительно перенесены по оси Y для создания ухмылки. После того как будет готов набросок базо вой формы, усовершенствуем ее, откорректировав весовые коэффициенты. Например, нанесение весовых коэффициентов воздействия сустава SneerJNT заключается в за крашивании ими поверхности с помощью инструмента Paint Skin Weights (Нанесение поверхностных весовых коэффициентов) в режиме Smooth (Сгладить).
а
б
в
г
Рис. 6.8. Процесс перемещения суставов и настройки карт весовых коэффициентов для создания плавной модификации улыбки 1.
Выделив объект SkinGeo, выберите пункт меню Skin => Edit Smooth Skin => Paint Skin
Weights Tool • (Оболочка => Редактировать гладкую оболочку => Инструмент нанесе ния поверхностных весовых коэффициентов • ) . Появившееся при этом окно пара метров несколько отличается от любого другого инструмента рельефа. 2. Щелкните правой кнопкой мыши на суставе SneerJNT и в появившемся маркиро ванном контекстном меню выберите пункт Paint Skin Weights (Нанесение поверхно стных весовых коэффициентов). Результат выполнения этой операции похож на приведенный на рис. 6.8, а. Обратите внимание на резкость перехода между верши нами, в которых пересекаются края. Его необходимо смягчить. 3. Установите для параметра Paint Operation (Окрашивание) значение Smooth (Сгладить) и щелкайте на кнопке Flood (Заполнить), чтобы добиться плавности пере ходов окрашивания (т.е. распределения установленных весовых коэффициентов) во круг нескольких вершин. При этом изменение коэффициентов у основания носа станет менее резким, а карта будет похожа на изображение, приведенное на рис. 6.8, б. 4. Дорисовывая и стирая весовые коэффициенты, создайте для сустава N o s e J N T карту воздействия, похожую на изображение, приведенное на рис. 6.8, в. Чтобы лучше понять смысл осуществляемых действий, прочитайте главу 8, "Постановка и осна щение персонажа", в которой также рассматривается нанесение весовых коэффициентов. Теперь создадим плавную модификацию полуголовы. 1.
Выделите объект SkinGeo и, сдублировав его, поместите копию на верхний уровень иерархии.
Глава 6
270 2.
В находящейся справа панели каналов выделите весь список атрибутов от начала до конца.
3. Чтобы можно было переместить сетку, щелкните правой кнопкой мыши на списке и в появившемся контекстном меню выберите пункт Unlock Selected (Разблокировать выбранное). 4.
Переименуйте ее в Nose_Sneer.
5.
В панели каналов установите для атрибута translateX значение 2, для атрибута translateY — значение - 7 , а для атрибута translateZ — значение -4,
Возьмите за правило задавать положение плавных модификаций по осям в целых числах. Так будет гораздо легче упорядочить плавные модификации, поскольку набирать целые числа проще, чем числа с десятичной точкой. Завершите этот процесс, выделив прямоугольником все суставы и выбрав пункт ме ню Skin => Go То Bind Pose (Оболочка => Перейти в позу привязки), чтобы вернуть сетку в исходное положение и подготовиться к созданию следующего целевого объекта плавной модификации. •
Форма
Lower_Lip_Up
Для придания целевому объекту формы Lower_Lip__Up (нижняя губа приподнята) потребуется перемещение суставов вверх от объекта SkullGeo, а также сглаживание ве совых коэффициентов большой части поверхности. Для начала отобразите слой EyeTeethLyr в редакторе слоев, а потом создайте целевой объект, следуя нижеприве денному описанию. 1.
Выделите суставы LipBtmCrnrJNT, LipBtmMidJNT и LipBtmlnsJNT.
2.
В разделе Shapes (Формы) панели каналов найдите узел геометрического ограничи теля. Его имя должно быть похоже на LpBtmCrnr JNT_geometryConstraintl.
3.
Измените значение параметра Node State (Состояние узла) с Normal (Обычный) на HasNoEffect (Без воздействия), чтобы отключить узел и иметь возможность (?) вре менно вытягивать (?) суставы с поверхности скрытого объекта SkullGeo.
4.
Переместите суставы вверх, чтобы они оказались выше основания верхней губы (рис. 6.9, а). При этом внутренняя часть нижней губы переместится совсем немного, потому что на нее неправильно воздействуют суставы верхней губы.
При моделировании плавных модификаций обычно имеет смысл использовать последнюю версию, на которой лицо выглядело естественно. Значения весовых коэффициентов целевого объекта всегда можно еще раз настроить, чтобы совместить их с подставленной правильной частью, но трудно распространить весовые коэффициенты на еще не созданную часть. 5.
Исправьте это, увеличивая и сглаживая весовые коэффициенты с помощью инстру мента Paint Skin Weights (Нанесение поверхностных весовых коэффициентов). Можно нанести коэффициенты на все точки внутренней части губ непосредственно до ближайшего сустава нижней губы. Весовые коэффициенты внешней части губ по казаны на рис. 6.9, б-г.
6.
Нанесите также весовые коэффициенты на поверхность верхней губы, потому что иначе на эти точки будут неправильно воздействовать нижние вершины.
Плавные модификации: дополнительные средства моделирования
а
б
в
г
271
д
Рис. 6.9. Процесс создания целевого объекта Lower_Lip_Up и нанесения соответствующих весовых коэффициентов суставов 7. Чтобы сохранить объем нижней губы, поверните каждый сустав относительно локаль ной оси (local axis) X на значение от -7 до -10°. Это приведет к выпячиванию нижней гу бы и, возможно, к сожалению, неправильному движению подбородка. Исправьте это, увеличив весовые коэффициенты сустава HeadBaseJNT в данной области. 8. Выделите карту сустава HeadBaseJNT, щелкнув на ней правой кнопкой мыши и вы брав в появившемся контекстном меню пункт Paint Skin Weights (Нанесение по верхностных весовых коэффициентов). Сустав HeadBaseJNT следует использовать для перемещения точек обратно в их начальное состояние (default state). При моде лировании этот сустав не использовался, поэтому любая находящаяся под его воз действием точка будет возвращена в исходное положение. Наносите весовые коэф фициенты на область подбородка согласно изображению рис. 6.9, д. 9. Скопируйте объект SkinGeo, разблокируйте атрибуты, а затем переместите и пере именуйте сетку в Lower_Lp_Up. Однако не стоит сразу переходить к привязке поз, сначала создадим плавную моди фикацию формы Upper_Lip_Up.
Форма
Upper_Lp_Up
Форма Upper_Lip_Up соответствует приподнятой верхней губе. Чтобы судить о правильности позиции верхней губы, необходимо установить на место нижнюю губу, по этому сначала правильно установим верхнюю губу, а затем вернем в исходное положение суставы нижней губы. 1. Выделите суставы LipTpInsJNT, LipTpMidJNT и LipTpCrnrJNT, а затем вытяните их вверх вдоль оси Y. В результате они будут плавно двигаться вдоль верхней губы, удаляясь при этом от нижней. 2. Выключите для них проверку геометрических ограничений и переместите вперед, чтобы совместить с нижней губой, как показано на рис. 6.10, слева. 3. Чтобы исправить возникшее после выполнения этапа 2 искривление, увеличьте воз действие сустава NoseJNT вдоль основания носа (см. рис. 6.10, справа).
272
Глава 6
Рис. 6.10. Перемещение верхней губы на уровень нижней и исправление ис кривления носа увеличением воздейст вия сустава NoseJNT Теперь необходимо вернуть в исходное положение суставы нижней губы. Но опера ция Maya Go То Bind Pose (Перейти в позу привязки) во время привязки заставляет все суставы кластера оболочки возвращаться в исходные позиции, поэтому необходимо вве сти Maya в заблуждение, установив ключевой кадр для атрибутов позиции суставов верхней губы. 1.
Переместите индикатор текущего времени на пятый кадр временной шкалы.
2.
Выделите три сустава верхней губы. Чтобы зафиксировать на пятом кадре значения атрибутов позиции, поворота и масштаба этих трех суставов, выберите пункт меню Animate => Set Key (Анимировать => Установить ключевой кадр).
3.
Переместите индикатор текущего времени на первый кадр.
4. Чтобы вернуть все суставы в исходные позиции, выберите пункт меню Skin => Go То Bind Pose (Оболочка => Перейти в позу привязки). Обратите внимание на то, что в первом кадре также был установлен ключевой кадр. 5.
Вернитесь к пятому кадру. Как можно заметить, суставы верхней губы вернулись на свои прежние позиции, в то время как суставы нижней губы остаются в позе привязки.
6.
Сдублируйте объект SkinGeo, переместите его и переименуйте в Upper_Lip_Up.
7.
Чтобы удалить ключевые кадры, установленные на шагах 2 и 4, выделите три сустава верхней губы, а затем в панели каналов выделите имена соответствующих атрибутов. Щелкните на них правой кнопкой мыши и в появившемся контекстном меню выбе рите пункт Delete Selected (Удалить выделенное). Используя описанный выше метод, создайте плавные модификации для опускания губ.
Форма E y e _ C l o s e d Форма Eye_Closed соответствует закрытому глазу. Давайте перейдем к другой час ти тела — к глазам. Верхняя часть области глаза Машизмо плотная и закругленная. В действительности вместо века у него только закругленная область плоти, что вместе с
Плавные модификации: дополнительные средства моделирования
273
его узкими раскосыми глазами позволяет довольно просто создать рассматриваемую плавную модификацию. Для персонажа с отчетливыми веками пришлось бы искать дру гой способ закрыть глаза, поскольку плавные модификации реализуют линейное пере мещение. В этом случае при переходе глаза из открытого состояния в закрытое веко мо жет двигаться сквозь глазное яблоко. Давайте создадим эту форму. 1.
а
Выделите сустав EyelidTopJNT и перемещайте его вниз до тех пор, пока он немного не пройдет положение, в котором глаз закрыт полностью, как показано на рис. 6.11, а.
б
в
г
д
Рис. 6.11. Создание плавной модификации методом удаления и повторного нанесения воздействия 2.
Выделите объект SkinGeo и откройте окно параметров инструмента Paint Skin Weights (Нанесение поверхностных весовых коэффициентов). Выделите карту весо вых коэффициентов сустава EyelidTopJNT (см. рис. 6.11, б), щелкнув на нем пра вой кнопкой мыши и выбрав в появившемся контекстном меню пункт Paint Skin W e i g h t s (Нанесение поверхностных весовых коэффициентов). Как можно заметить, воздействие сустава распространяется слишком далеко: вверх до лба и вниз к осно ванию глаза.
3.
Выберите для параметра Paint Operation (Окрашивание) значение r e p l a c e (Заменить), а для параметра Value (Значение) установите значение 0. Щелкнув на кнопке Flood (Заполнить), полностью удалите воздействие сустава E y e l i d T o p J N T (см. рис. 6.11, в).
4.
Постепенно увеличивая малой кистью коэффициенты верхней части века с шагом (параметр Value) 0 . 1 или меньшим, получите форму, похожую на приведенную на рис. 6.11, г. При необходимости несколько сгладьте распределение коэффициентов, но будьте осторожны со сглаживающим заполнением всей карты: это может привес ти к искажению верхнего и нижнего краев глаза при распространении воздействия в эти области.
5.
Если необходимо оставить область над глазом заполненной, поверните сустав. При необходимости увеличьте коэффициенты и сгладьте их распределение.
6.
Скройте слой EyeTeethLyr и поверните вид так, чтобы увидеть внутреннюю часть головы. Изменяйте коэффициенты внутренней части века до тех пор, пока она не станет похожей на рис. 6.11, д. Если воздействие на переднюю часть глаза никогда не достигнет полной силы, то и коэффициенты на обратной стороне века также не при мут максимальных значений.
7.
Сдублируйте сетку, а затем переместите и переименуйте ее копию в E y e _ C 2 o s e d .
8. Чтобы вернуть суставы и сетку в начальное положение, выберите пункт меню Skin => Go То Bind Pose (Оболочка => Перейти в позу привязки).
274
Глава 6
Форма E y e _ W i d e _ O p e n Форма Eye_Wide_Open соответствует широко открытому глазу. Перемещение сус тава EyelidTopJNT безусловно откроет веко, но ситуация сейчас такова, что одновре менно с этим поверхность глаза подвернется под бровь, а это нежелательно. Вместо пе ремещения сустава EyelidTopJNT заранее уменьшим его масштаб по оси Y. И еще, что бы глаз открывался шире, перенесем и изменим масштаб сустава EyeLidBtmJNT. Как обычно, для уточнения деформации нанесите весовые коэффициенты. К тому же для большей свободы движения придется, вероятно, отменить проверку геометрических ог раничений для сустава EyeLidBtmJNT. Детали процесса показаны на рис. 6.12.
Рис. 6.12. Создание целевого объекта широко открытого глаза подразумевает масшта бирование и перемещение верхнего и нижнего суставов глаза с последующим нанесением весовых коэффициентов воздействия этих суставов. Следует также увеличить воздей ствие вокруг суставов глаза, а также провести их настройку И не забудьте после дублирования, перемещения и переименования сетки в Eye_Wide_Open вернуть суставы в начальное положение.
Форма E y e b r o w _ U p Форма Eyebrow_Up соответствует поднятой брови. Установите для параметра Node State (Состояние узла) трех суставов брови значение HasNoEffect (Без воздействия) и переместите их вдоль головы вверх и назад по осям Y и Z. В результате геометрическая форма сморщится в местах конфликта воздействий суставов надбровья. Поднимите три надбровных сустава вверх вдоль вертикального ряда краев на лбу. Вместе с ними в верх ней части головы переместится и линия роста волос. Для нейтрализации этого эффекта увеличьте воздействие сустава HeadBaseJNT. То, что линия роста волос перемести лась, — хорошо, но верхняя часть головы должна оставаться на месте. На рис. 6.13 пока зано, что необходимо получить в области лба. На крайнем слева изображении суставы брови и надбровья подняты, а это затрагивает верхнюю часть головы. Увеличьте на за тылке воздействие сустава HeadBaseJNT, как показано на втором слева изображении. По мере необходимости сгладьте и увеличьте коэффициенты, как показано на изобра жении посередине. Если появятся складки, похожие на складку Линии роста волос, по казанную на среднем и втором изображении справа, то проще будет сдублировать, пе реместить и переименовать сетку, а затем вытягивать точки на сделанную копию до тех пор, пока складка не будет исправлена. Помните, применение суставов в модели ровании позволяет быстро и безошибочно перемещать большое количество точек. Как только целевой объект будет завершен, перемещения отдельных точек уже ничто не сдерживает.
Плавные модификации: дополнительные средства моделирования
275
Рис. 6.13. Создание формы Eyebrow_ Up в ходе манипулирования суставами брови и надбровья с по следующим нанесением коэффициентов воздействия и исправлением складок вручную
Форма S m i l e / М о u t h W i d e Форма Smile/MouthWide соответствует широкой улыбке. На рис. 6.14, слева пока заны суставы, которые следует переместить при создании целевого объекта с широко растянутым ртом. К этому лучше всего подойти так: отмените для указанных суставов проверку геометрических ограничений и переместите их назад вдоль головы. При этом переместятся челюсть и остальная часть головы. Верните эту часть головы на место, на неся во все стороны по шее и затылку коэффициенты воздействия сустава H e a d B a s e J N T (см. рис. 6.14, справа).
Рис. 6.14. Переместите указанные суставы назад вдоль черепа, а затем уменьшите их воздействие, увеличив и сгладив воздействие от сустава HeadBaseJNT Теперь можно либо продолжить моделирование плавных модификаций и нанесение по мере необходимости весовых коэффициентов, либо сразу перейти к ос тальной части упражнения. Пример текущего состояния работы содержится на компактдиске в файле Machismo08_WeightPaintFinish.mb.
Остальные формы Обсуждаемые в предыдущих упражнениях методы можно применять для создания множества выражений лица и их вариаций. Список форм, которые можно создать, в значительной мере зависит от потребностей анимации. Безусловно, лучше соз дать слишком много, чем слишком мало. Используемый на следующем этапе этого уп ражнения файл Machismo09_HalfHeadsDone .mb, кроме сделанного ранее, содержит и следующие целевые объекты плавных модификаций: Lips_Pursed
Lips_Closed
Lips_Narrow
Lower_Lip_Dn
Upper_Lip_Dn
Frown
276
Глава 6
Lips_Curl_Up
Brow_Furrow
Squint
Eyebrow_In
Eyebrow_Dn
Eyebrow_Mid_Up
Eyebrow_Mid_Dn
Eyebrow_Out
Ear_Up
Теперь можно переходить к созданию целевых объектов плавных модификаций всей головы.
Штамповка плавных модификаций целой головы Нет, слово штамповка (molding) — это не опечатка! Применяемая техника моделиро вания будет больше похожа на вакуумную штамповку, чем на настоящее моделирование. Здесь рассматривается процедура, позволяющая быстро преобразовывать созданные по луголовы в формы левой и правой стороны целой головы. В качестве целевых объектов плавной модификации применим к копии объекта S k i n G e o все ранее созданные целевые объекты полуголовы. После чего сделаем ее деформатором оболочки, базовым объектом которой будет копия объекта S k u l l G e o . 1.
Создайте два слоя и присвойте им имена BaseHeadLyr и MoldLyr.
2.
Сдублируйте объект S k u l l G e o и переименуйте дубликат в BlendBaseGeo.
3.
Сдублируйте объект S k i n G e o и переименуйте дубликат в MoldGeo.
4.
Переместите дубликаты на соответствующие им слои.
5.
Выделите все целевые полуголовы и поместите их на слой M o l d L y r .
6.
Выделите все суставы и поместите их на слой S k i n L y r .
7.
Скройте все слои, кроме B a s e H e a d L y r и M o l d L y r .
Обратите (внимание, что на сцене из файла M a c h i s m o 0 9 _ Н а I f H e a d s D o n e .mb все плавные модификации расположены так, чтобы целевые объекты каждой части лица на ходились близко друг от друга. Это позволит выбирать части лица в логическом порядке, упрощая таким образом следующую операцию. Теперь создадим деформатор плавной модификации (blend shape deformer) для объекта M o l d G e o . 1. Выделите все плавные модификации полуголовы, нажав клавишу <Shift>. В списке целевых объектов деформатора плавных модификаций они появятся в порядке вы деления. 2.
Выделите объект M o l d G e o , нажав клавишу <Shift>. Если он находится справа свер ху от объекта B l e n d B a s e G e o , то, возможно, это действие придется выполнить в ие рархической структуре. =>
Можно также набрать в командной строке команду s e l e c t -add MoldGeo;. 3.
Создайте узел плавной модификации. Для этого выберите пункт меню Create Deformers => Blend S h a p e • (Создать деформаторы => Плавная модификация • ) , присвойте узлу плавной модификации имя FaceBlends, введя его имя в поле BlendShape Node (Узел плавной модификации), и установите флажок Check Topology (Проверять топологию). Чтобы создать узел плавной модификации, щелк ните на кнопке Create (Создать).
Плавные модификации: дополнительные средства моделирования 4.
277
Переведите объект BlendBaseGeo в режим выделения вершин и прямоугольником выделите половину головы (рис. 6.15).
Рис. 6.15. Выделите только половину вершин объекта BlendBaseGeo, а затем вы делите объект MoldGeo 5.
Нажав клавишу <Shift>, выделите объект MoldGeo, при этом вершины объекта BlendBaseGeo должны остаться выделенными.
6. Выберите пункт меню Create Deformers => W r a p • (Создать деформаторы => Оболоч ка • ). По принципу своего действия деформатор оболочки аналогичен решетке спе циальной формы. Но вместо того чтобы расположить внутренние точки на решетке, имеющей форму куба, оболочка работает как несвязная оболочка (shell), компоненты которой деформируют объект, к которому она применяется. В окне параметров па раметр Weight Threshold (Порог весового коэффициента) определяет максимально возможный коэффициент влияния объекта оболочки (wrap object), поэтому устано вим его равным . 01. Это значение вполне работоспособно, поскольку будет установ лен флажок Use Max Distance (Использовать максимальное расстояние), а парамет ру Max Distance (Максимальное расстояние) также будет присвоено значение . 01. Max Distance — это наибольшее расстояние, на которое компоненты объекта оболоч ки могут быть удалены от компонентов деформируемого объекта. При условии, что каждая точка объекта MoldGeo находится на том же месте, где и соответствующая точка объекта BlendBaseGeo, это значение может быть небольшим. Чтобы создать объект оболочки, щелкните на кнопке Create (Создать). Теперь объект M o l d G e o деформирует половину вершин объекта B l e n d B a s e G e o . Для создания плавных модификаций целой головы используем узел плавной моди фикации. 1. Скройте слой MoldLyr. Единственным видимым слоем должен быть BaseHeadLyr. 2.
Щелкнув правой кнопкой мыши на кнопке быстрого вызова Layout (Компоновка), перейдите в двухпанельную компоновку, в одной из панелей которой расположен редактор плавных модификаций (Blend Shape Editor), а в другой — перспективное представление, содержащее объект BaseHeadGeo (рис. 6.16).
Глава 6
278
Рис. 6.16. Наиболее подходящая компоновка панелей для создания плавных модифи каций. Обратите внимание на то, что редактор плавных модификаций расположен горизонтально. Для целевого объекта Моuth_ Wide установлен коэффициент 1 Редактор занимает на экране слишком много места, поэтому обычно для редактирования плавной модификации следует использовать либо узлы плавной модификации из списка Inputs (Входящие), либо специальные атрибуты, связанные с элементами управления анима цией. Тем не менее в данном случае редактор Blend Shape Editor (Редактор плавных моди фикаций) позволяет изменять коэффициенты целевых объектов без выделения конкретно го объекта. Остальные методы редактирования плавных модификаций тут неэффективны, поскольку требуют выделения конкретного объекта. 3.
Переместите бегунок, соответствующий объекту Mouth_Wide, до упора вправо. Де формация объекта MoldGeo под воздействием плавной модификации в точности пе редается объекту BlendBaseGeo. На рис. 6.16 показано, как это работает.
4.
Сдублируйте объект BlendBaseGeo и переименуйте копию в Mouth WideL. Пе реместите ее вверх и в сторону, но в направлении, противоположном формам полу головы. Помните о необходимости максимальной организованности сцены, потому что еще предстоит обработать немало форм.
Нажав клавишу < Т а Ь > , от переименования можно перейти вниз по списку атрибутов в панели каналов. Так значительно проще вводить числовые значения непосредственно, а не щелкать мышью на каждом поле. 5.
В редакторе плавных модификаций верните весовой коэффициент целевого объекта Mouth_Wide в значение 0.
6.
Повторите шаги 3 - 5 для каждого целевого объекта из списка. В конце, как показано на рис. 6.17, должно получиться 22 целевых объекта. Добавьте суффикс _L в конец имен этих голов, так как они представляют левую часть формы.
Эти целевые объекты плавных модификаций можно сделать не такими абсолютно симмет ричными, введя в поле Weight (Весовой коэффициент) редактора плавных модификаций значение 1 . 1 или . 95. Это немного деформирует форму.
4
Плавные модификации: дополнительные средства моделирования
279
Рис. 6.17. Машизмо и 22 уродца! Выделен объект BaseHeadGeo и отображены все целевые объекты плавных модификаций
А теперь — правая сторона Теперь необходимо создать плавные модификации правой стороны, но сначала необ ходимо очистить текущую сцену. 1. Создайте новый слой, присвойте ему имя HeadBlendsLyr и поместите на него все 22 целевых объекта. При желании, выделив целевые объекты, можно изменить цвет каркаса, выбрав пункт меню Display => Wireframe Color (Представление => Цвет карка са), а затем выбрать особый цвет для левой стороны голов и щелкнуть на кнопке Apply (Применить). 2. Чтобы предотвратить случайное выделение целей, переведите слой H e a d B l e n d s L y r в режим ссылки. 3. Отобразите слой MoldLyr, так как это необходимо для выделения объекта MoldGeo. 4. Выделите объект BlendBaseGeo. Нажав клавишу <Shift>, выделите объект M o l d G e o и выберите пункт меню Edit Deformers => W r a p => r e m o v e Influence
(Редактировать деформаторы => Оболочка => Удалить воздействие). 5.
При все еще выделенном объекте BlendBaseGeo (в результате выполнения опера ции r e m o v e Influence (Удалить воздействие) выделение с объекта MoldGeo будет снято) удалите историю. Такое удаление деформатора оболочки очистит любую ис пользуемую им базовую геометрическую форму, а последующее удаление истории полностью удалит узел оболочки.
6. Зеркально отразите объект BlendBaseGeo относительно локальной оси X. Для это го в поле ввода атрибута scaleX панели каналов введите значение -1. 7. Переведите объект BlendBaseGeo в режим выделения вершин. Снова будет выде лена половина головы, но в отличие от предыдущего случая вершины вдоль линии центра останутся невыделенными (рис. 6.18). 8. Нажав клавишу <Shift>, выделите объект MoldGeo. 9. Выберите пункт меню Create Deformers => W r a p (Создать деформаторы => Оболочка) с такими же параметрами, как и ранее. Сейчас оболочка применяется именно к этим вершинам, потому что иначе везде, где вершины центральной линии переходят как в правую, так и в левую плавную модифика цию, может возникнуть проблема двойного преобразования. Этого можно избежать, ос тавив эти вершины за пределами множества вершин данной плавной модификации. Те перь создадим целевые объекты правой стороны.
280 1.
Глава 6 Установите, как раньше, двухпанельную компоновку с редактором плавных моди фикаций с одной стороны и перспективным представлением — с другой.
Рис. 6.18. Обратите внимание на то, что выделены все вершины объекта BlendBaseGeo, кроме центральных 2.
Как и прежде, переместите бегунок весового коэффициента для целевого объекта Mouth_wide до конца вправо, установив значение 1.
3.
Сдублируйте объект BlendBaseGeo.
4.
Переименуйте дубликат в Mouth_Wide_R.
5.
Установите значение атрибута scaleX равным 1. Обратите внимание, как деформи рованная часть формы переворачивается на правую сторону.
6.
Поместите эту модель непосредственно над целевой моделью Mouth_Wide_L, как показано на рис. 6.19. Процедура размещения созданных целевых объектов такова: поместите их выше или ниже соответствующего им целевого объекта левой стороны. Это позволит при применении к основной голове легко выделить целевые объекты как левой, так и правой сторон в правильном порядке.
Рис. 6.19. Манипулирование объектами MainHeadBlendShape и HeadBlendBaseGeo для создания выражений лица 7. Для всех целевых объектов из списка повторите шаги 2-6. » 8. В конце выделите все новые головы и поместите их на слой HeadBlendsLyr.
Плавные модификации: дополнительные средства моделирования
281
9. Сохраните файл как MachismolO_BlendsDone.mb. Все, что теперь осталось, — это применить все 44 полученных целевых объекта к ос новной голове. Помните, в начале процесса голова была отделена для использования ее в качестве базового объекта. Применим к этой голове деформатор плавных модифика ций следующим образом. 1. Скройте все слои, кроме слоя HeadBlendsLyr, для которого следует установить обычный режим отображения. 2.
Нажав клавишу <Shift>, выделите левые и правые части пар целевого объекта. Пер вой выделите ту пару целевых объектов, которую хотелось бы видеть на вершине списка. У каждой выделяемой пары сначала выделяйте ее левый объект, а потом пра вый; повторяйте это до тех пор, пока все пары не будут выделены.
3.
Отобразите слой BodyGeoLyr и, нажав клавишу <Shift>, выделите объект HeadBlendBaseGeo. Это базовый объект, к которому будет применяться узел плавной модификации.
4.
Выберите пункт меню Create Deformers => Blend Shape • (Создать деформаторы => Плавная модификация • ) . В поле ввода имени узла введите MainHeadBlendShape и установите флажок Check Topology (Проверять топологию). Щелкните на кнопке Create (Создать).
5.
Выделение узла MainHeadBlendShape в списке Inputs (Входящие) панели каналов предоставляет постоянный доступ к весовым коэффициентам целевых объектов. Чтобы создать многообразие выражений лица, манипулируйте этими коэффициен тами, как показано на рис. 6.19.
6. Сгруппируйте все созданные геометрические формы в соответствии с предъявляе мыми требованиями. Откройте файл Machismoll_BlendFinal.mb, чтобы увидеть окончательный результат.
Исправление ошибок Ошибки не всегда проявляются до окончания процесса. Хороший пример тому — формы Eye_Wide_Open_L и Eye_Wide_Open_r. На рис. 6.20, слева показаны проблем ные области в уголках глаз. Решение этой ситуации сводится к простому выделению на рушающих спокойствие вершин и применению двенадцати итераций операции Mesh => Average Vertices • (Сетка => Усреднить вершины • ) , как показано на рис. 6.20, посереди не и справа. Затем откорректируйте позицию вершин. Чтобы избавиться от узлов усред нения вершин, удалите историю. Повторите эти действия для формы правой стороны.
Инструмент нанесения весовых коэффициентов В Майя можно устанавливать весовые коэффициенты для плавных модификаций, подобно суставам, кластерам или другим деформаторам. Но механизм нанесения весо вых коэффициентов несколько иной. Весовые коэффициенты определяют не для ло кальной области целевого объекта, а устанавливают равными 1 для всего объекта.
282
Глава 6
Рис. 6.20. Усреднение вершин в уголке века исправляет запутанные вершины Это позволяет пользователю буквально наносить формы кистью! При этом открыва ются до сих пор неисследованные возможности для анимации и бесконечные возможно сти для создания плавных модификаций. В предыдущем упражнении были созданы формы полуголовы и использован метод создания плавных модификаций двух симметричных целевых объектов всей головы. Но некоторые могут предпочесть моделировать целую голову (т.е. не половину) симметрично или закладывать в основу целевых объектов плавных модификаций, пред ставляющих отдельные эмоции, полные головы. Нанесение на плавную модификацию ве совых коэффициентов позволяет заново объединить целые головы, чтобы при необходимо сти создать совершенно новые формы или отделить формы каждой детали лица. Давайте сначала исследуем выделение форм полуголовы. Откройте файл BlendWeightToolExample.mb, расположенный на прилагаемом компакт-диске, и начнем. 1. Выделите объект BaseObjectGeo. Для этой головы имеется узел плавной модификации, целевыми объектами которого являются три головы, расположенные справа от нее. 2.
Выберите пункт меню Edit D e f o r m e r s => Paint B l e n d S h a p e W e i g h t s T o o l • (Ре
дактировать деформаторы => Инструмент нанесения весовых коэффициентов плав ной модификации • ) . Базовый объект сразу же станет белым, так как воздействие выделенной цели для всего объекта равно 1. Здесь необходимо помнить о различии концепций весовых коэффициентов целевого объекта и коэффициентов воздействия целевого объекта. Целевой объект может не иметь никакого воздействия, что сводит на нет любой его весовой коэффициент. 3.
В списке целевых объектов окна параметров инструмента выберите объект Smug.
4.
В списке Inputs (Входящие) панели каналов установите для целевого объекта Smug весовой коэффициент целевого объекта равным 1 (поле ввода справа от S m u g ) . Ба зовый объект при этом изменится.
5.
Вернитесь
к
окну
свойств
инструмента
Paint
Blend
Shape
Weights
Tool •
(Инструмент нанесения весовых коэффициентов плавной модификации • ) . Устано вите переключатель Paint Operation (Окрашивание) в состояние r e p l a c e (Заменить), а для параметра Value (Значение) установите значение 0. Щелкните на кнопке Flood (Заполнить). В результате все воздействие целевого объекта Smug бу дет устранено. 6. Чтобы вернуть воздействие в область рта, довольно большой кистью увеличьте зна чение коэффициентов воздействия примерно на 0.12. Затем, чтобы смягчить воз действие, выберите операцию кисти Smooth (Сгладить) и щелкните на кнопке Flood
Плавные модификации: дополнительные средства моделирования
283
(Заполнить) (см. рис. 6.20). Если необходимо уменьшить воздействие, замените зна чение на 0, при непрозрачности не более 0.1. В этом случае можно получить хоро шую степень контроля над воздействием деформации. 7.
Чтобы создать новый целевой объект плавной модификации, сдублируйте объект BaseObjectGeo.
А теперь рассмотрим создание для полной головы новой плавной модификации с частями каждой из этих трех целевых объектов. 1. Увеличьте значение параметра Opacity (Непрозрачность) до 2, установите параметр Value (Значение) равным 0 и с помощью заполнения замените воздействие целевого объекта Smug. (Это обнулит воздействие объекта Smug.) 2. При тех же значениях параметров Opacity (Непрозрачность) и Value (Значение) за мените с помощью заполнения воздействие остальных двух целевых объектов, выде ляя их в списке Targets (Цели). 3. В списке Inputs (Входящие) панели каналов установите весовые коэффициенты всех трех целевых объектов в значение 2. 4.
Нанесите на область рта воздействие от объекта Simpering, как показано на край нем слева изображении на рис. 6.21.
Рис. 6.21. Создание совершенно нового целевого объекта плавной модификации с помощью инстру мента Paint Blend Shape Weights с использованием локального воздействия трех отдельных плав ных модификаций 5. На правую бровь нанесите воздействие от объекта Smug, как показано на втором елева изображении рис. 6.21. 6. Нанесите на левую бровь воздействие от объекта Scared, как показано на втором справа изображении рис. 6.21. 7. В конце получится совершенно новый целевой объект плавной модификации, пока занный на крайнем справа изображении рис. 6.21.
Резюме При нетрадиционном способе использования в этой главе деформаторов суставов и оболочек Майя обнаружилась масса возможностей для моделирования плавных моди фикаций. Они предлагают чрезвычайно полезную возможность быстро перемещать большое количество точек. В этой главе для быстрого получения желаемых результатов
284
Глава 6
они использовались с необходимой степенью управления. Комбинирование плавных мо дификаций с возможностью Maya наносить весовые коэффициенты на целевые объекты плавных модификаций позволяет создать почти неограниченное множество образов и эмоциональных вариаций. В следующей главе рассматриваются основы анимации в Maya 8.5, а также обсужда ются доступные типы анимации, в том числе и основы создания анимации с помощью установки ключевых кадров на временной шкале. Кроме того, будет продемонстрирова но применение монтажного стола и редактора анимационных кривых для создания ани мации вращающегося и прыгающего мяча.
Основы анимации Эта глава содержит введение в основы анимации Maya. В ней описано, что означает установка ключевых кадров (keyframing) в Maya, а также обсуждаются инструменты соз дания и манипулирования ключевыми кадрами (keyframe). Обучение анимации в Maya проходит по нарастающей, от простых способов установки ключевых кадров для отдель ных атрибутов до "оживления" персонажей с помощью анимации их действий; создания специальных эффектов с использованием анимации частиц (particle), меха (fur) и т.д.; создания выражений и сценариев MEL, предоставляющих аниматору абсолютный кон троль над каждым аспектом анимационного контекста; а также управления и редактиро вания сеансов захвата движений (motion capture), позволяющих создать чрезвычайно реалистичную анимацию для игр, телепередач или фильмов. Эта глава посвящена сле дующим фундаментальным концепциям. •
Типы анимации
•
Анимация с использованием ключевых кадров
•
Концепция рабочего процесса анимации
•
Отскакивающий мяч
•
Преобразование циклической анимации в кривые
Типы анимации Maya предлагает широкий выбор типов анимации. Анимация с использованием ключевых кадров (keyframe animation) записывает из менения значений атрибутов во времени. Записанные значения, расположенные на ани мационной кривой, называют ключами (key). Наиболее известными формами этого типа анимации являются развевающиеся логотипы и символы. Динамическая анимация (dynamic animation), или анимация эффектов (effects animation), включает в себя имитацию объектов или природных явлений с использова нием законов физики на основании внутренних процессоров моделирования Maya. Примерами являются жидкости (fluid), эффекты частиц (particle effect) (такие, как дым), а также волосы (hair), мех (fur) и ткань (cloth). Анимация вдоль траектории (path animation) позволяет задать кривую NURBS в ка честве траектории движения объекта или персонажа. Благодаря этому типу анимации можно получить передвижение автомобиля по земле или полет космического корабля в пространстве по указанному маршруту.
286
Глава 7
Захват движения (motion capture) — тип анимации, в котором движения живого пер сонажа записываются в виде набора данных, используемых при управлении скелетом, который в свою очередь способен управлять персонажем. При создании спортивных игр, например, разработчики зачастую используют захват движений спортсменов. Нелинейная анимация (nonlinear animation) позволяет аниматору в редакторе доро жек Майя манипулировать группами ключевых кадров, известных как клипы (clip), и редактировать их почти как при редактировании видеоклипов в нелинейном видеоприло жении (video application). Зацикливание и смешение клипов позволяет аниматору из не большой по объему анимации получать более длинные анимационные действия. Более подробная информация о нелинейной анимации и использовании редактора дорожек приведена в главе 10, "Нелинейная анимация". Техническая анимация (technical animation) включает в себя использование управ ляемых ключей (driven key), связей узлов (node connections) и выражений (expression) для создания элементов управления анимацией (animation control), позволяющих аниматору с высокой степенью точности управлять персонажами и эффектами. Поэтому квалифи цированным аниматорам нужны глубокие знания встроенного языка Майя (Майя Embedded Language — MEL), описанного в главе 16, "Встроенный язык Maya (MEL)". В этой главе основное внимание уделяется анимации с использованием ключевых кадров и анимации вдоль траектории. Другие способы анимации рассматриваются в по следующих главах.
Анимация с использованием ключевых кадров С технической точки зрения установка ключевых кадров — это запись изменений ат рибутов во времени, но это тривиальная интерпретация. Правильнее определить анима цию как совокупность ключевых кадров, воспроизводимых в течение установленного пе риода времени, что создает эффект оживления неживых объектов. Такое оживление ста новится возможным благодаря тому, что в ключевых кадрах записываются небольшие срезы действия, а их воспроизведение во времени создает анимацию. Концепция анима ции довольно проста, но, чтобы овладеть искусством установки ключевых кадров с под ходящими промежутками между ними, необходим опыт.
Создание ключевых кадров Майя предлагает множество способов установки ключевых кадров. Каждый метод преследует собственную цель, но некоторые из них быстрее и эффективнее других. •
Клавиша < S > является наиболее популярным способом создания ключевых кадров при установленных в значения по умолчанию параметрах, доступных в окне, которое открывается после выбора пункта меню Animate => Set Key • (Анимировать => Установить ключевой кадр • ) . После нажатия этой клавиши ключевой кадр уста навливается для всех допускающих установку ключевых кадров (keyable) атрибутов конкретного объекта. Благодаря удобству использования (только одна клавиша) этот метод стал основным средством создания ключевых кадров при анимации.
•
В панели каналов можно устанавливать ключевые кадры для отдельных атрибутов, непосредственно щелкая на выделенном атрибуте правой кнопкой мыши и выбирая в появившемся контекстном меню пункт Key Selected (Установить ключевой кадр для выбранного). Это позволяет с большой степенью точности управлять ключевы-
Основы анимации
287
ми кадрами, устанавливая их непосредственно для выделенного атрибута или груп пы атрибутов. Выбор пункта меню Key Selected представлен на рис. 7.1. •
Включение автоматической установки ключевых кадров позво ляет Maya автоматически записывать изменения для атрибутов, что безусловно полезно для тех, кто забывает устанавливать ключевые кадры, хотя большинство аниматоров отвергают этот инструмент, предпочитая не записывать изменения атрибутов до тех пор, пока они не закончат работу с ними. Чтобы вклю чить автоматическую установку ключевых кадров, щелкните на черной кнопке с изображением ключа в нижнем правом углу главного окна (когда автоматическая установка ключевых кад ров разрешена, кнопка становится красной).
•
Установка ключевых кадров на анимационную кривую непо средственно в редакторе анимационных кривых (Graph Editor) позволяет эффективнее настроить анимацию. Поскольку это действие обычно предназначено для небольшого изменения анимационной кривой, в общем процессе расстановки ключе вых кадров оно не используется.
•
Редактор атрибутов (Attribute Editor — АЕ) позволяет уста7.1 Выбор пункнавливать ключевые кадры для некоторых атрибутов, достаточ- та меню Key Selected но глубоко скрытых в структуре узлов Maya. Однако поскольку эта возможность применима только для отдельно взятых атрибутов, он более подхо дит для других способов анимации.
Все указанные способы позволяют устанавливать ключевые кадры лишь для допус кающих это атрибутов, которые перечислены в панели каналов. Стандартный список та ких атрибутов ограничен лишь наиболее популярными, а полный список допускающих установку ключевых кадров атрибутов можно увидеть в диалоговом окне Channel Control (Управление каналами). В этом окне можно блокировать атрибуты или разре шить для них установку ключевых кадров, причем последнее делает видимым такие ат рибуты в панели каналов основного интерфейса Maya. В качестве упражнения создайте простую сферу и откройте окно Channel Control (выберите пункт меню W i n d o w => General Editors => Channel Control (Окно => Общие редакторы => Управление каналами)), чтобы получить представление о том, какие каналы доступны для этой операции. Кроме того, интерфейс окна Channel Control (Управление каналами) позволяет отобразить ка налы, не допускающие установку ключевых кадров. На рис. 7.1 можно заметить, что не посредственно во всплывающем контекстном меню можно скрыть (hide), блокировать (lock), разблокировать (unlock), разрешить (make keyable) или запретить установку ключевых кадров (make nonkeyable), выключить (mute) и включить (unmute) выделен ные атрибуты.
Установка разделяющих ключевых кадров Вызываемая из меню Animate (Анимировать) операция Set Breakdown (Установить разделяющий ключевой кадр) во многом аналогична операции Set Key (Установить ключевой кадр), за исключением того, что вместо ключевых кадров она устанавливает разделяющие ключевые кадры (breakdown). Для разделяющих ключевых кадров отноше-
288
Глава 7
ние интервалов времени до ключевых кадров по обеим сторонам от них сохраняется по стоянным. Например, если поставить разделяющий ключевой кадр на 5-й кадр (frame) между 1-ми 10-м ключевыми кадрами, а затем переместить последний ключевой кадр с 10-го кадра на 8-й, то разделяющий ключевой кадр автоматически переместится на 4-й кадр, поддерживая соотношение между расстояниями до двух соседних ключевых кад ров. Но зачастую разделяющие ключевые кадры попадают на нецелые кадры, т.е. кадры с дробными номерами. Чтобы гарантировать правильность визуализации поз, разде ляющие ключевые кадры, необходимо привязывать к ближайшему кадру (щелкая пра вой кнопкой мыши в панели Time Slider (Ползунок времени) и выбирая из контекстного меню пункт Snap (Привязка)). Во всем остальном они функционируют точно так же, как обычные ключевые кадры.
Ползунок времени и ползунок диапазона Майя предлагает три основных элемента управления для редактирования ключевых кад ров: Time Slider (Ползунок времени), Graph Editor (Редактор анимационных кривых) и Dope Sheet (Монтажный стол). На рис. 7.2 представлен ползунок времени и различные элементы управления анимацией, многие из которых можно установить в окне, которое открывается после щелчка на кнопке Animation Preferences (Предпочтения анимации). На рис. 7.3 пока заны элементы управления воспроизведением анимации. Многими из представленных функ ций можно управлять с помощью комбинаций клавиш, приведенных ниже. (ДЛЯ Macintosh )
Переключить между воспроизведением и остановом
<Esc>
Остановить воспроизведение
< . > (точка)
Перейти к следующему ключевому кадру
<, > (запятая)
Перейти к предыдущему ключевому кадру
(точка) (для Macintosh < Option + .>)
Перейти к следующему кадру
< Alt +, > (запятая) (для Macintosh < Option +, >)
Перейти к предыдущему кадру
Рис. 7.2. Ползунок времени, элементы управления воспроизведением, командная строка, строка справки и строка ответа
Основы анимации
289
Рис. 7.3. Элементы управления воспроизведением анимации Ползунок времени (Time Slider)' и связанные с ним элементы управления представ ляют собой непосредственные, хотя и не самые точные, элементы управления анимацией и занимают совсем небольшую часть экрана, в отличие от двух других редакторов. Пол зунок времени в сочетании с ползунком диапазона ( r a n g e Slider) позволяют задавать начало и конец диапазона воспроизведения анимации, а также установить текущее время в числовом виде и интерактивно. Щелчок на ползунке времени перемещает индикатор текущего времени (Current Time Indicator) на указанный кадр, который становится при этом текущим. Щелчки и перетаскивание левой кнопкой мыши ползунка времени позволяют интерактивно пере меститься на нужный кадр (jog) или вручную управлять воспроизведением (scrub) ани мации. При этом качество воспроизведения зависит от сложности сцены. Наличие на сцене большого количества многоугольников, деформаторов, текстур высокого разреше ния (high-resolution texture) или источников света уменьшает плавность воспроизведе ния, но именно возможность перехода на нужный кадр сцены лучше всего позволяет оценить перемещения объекта. Чтобы переместить индикатор текущего времени на другой кадр, не обновляя при этом сцену в области просмотра и не изменяя значения атрибутов в панели каналов, щелкните и перетащите средней кнопкой мыши ползунок времени. Это мощный способ копирования ключевых кадров. Помните, что установка ключевого кадра эквивалентна записи изменений атрибутов во времени, но если атрибуты не изменялись, то при уста новке следующего ключевого кадра предыдущий ключевой кадр фактически копируется. Эта особенность будет широко использоваться при создании анимации в этой главе. После щелчка правой кнопкой мыши на ползунке времени отобразится всплывающее меню редактирования ключевых кадров (Edit Key), предлагающее стандартный набор операций редактирования ключевых кадров (обсуждаемый далее в этой главе). Кроме того, оно обеспечивает доступ к следующим вложенным меню.
•
Вложенное меню Display Key Ticks (Показать отметки ключевых кадров) позволяет отображать отметки ключевых кадров для текущего объекта или выделенных в пане ли каналов атрибутов или полностью отключать их отображение.
•
Вложенное меню Playback Looping (Циклическое воспроизведение) позволяет за ставить Майя воспроизводить анимацию однократно, повторять непрерывно или, как маятник, воспроизводить сначала вперед, а потом назад между начальным и конеч ным моментом времени.
•
С помощью вложенного меню Set r a n g e То (Установить диапазон равным) можно разнообразными способами управлять диапазоном воспроизведения. В нем имеется
Так теперь называется временная шкала. — Примеч. ред.
290
Глава 7 одна полезная установка — Sound Length (Длительность звукового сопровождения), которую можно также использовать для определения длительности звукового файла, который был импортирован на сцену.
•
Вложенное меню Sound (Звук) позволяет отображать, скрывать или переименовы вать любые импортированные звуковые файлы.
•
Функция Playblast реализует предварительный просмотр получившейся анимации в виде мультипликационных клипов реального времени. Такой предварительный про смотр широко используется в главе 9, "Анимация персонажа".
Непосредственно под ползунком времени находится ползунок диапазона, также со держащий поля для изменения времени начала и конца анимации и воспроизведения. Ползунок диапазона позволяет интерактивно изменять диапазон кадров, отображаемых ползунком времени. Чтобы уменьшить или увеличить размер ползунка и соответственно изменить диапазон отображаемых кадров, щелкните и протащите указатель мыши за прямоугольник возле числа на любом из концов ползунка диапазона. Проделав то же са мое непосредственно с самим ползунком, можно переместить целый диапазон кадров, отображаемых в ползунке времени. Пара внутренних полей по обе стороны от ползунка диапазона устанавливают кадры начала и конца воспроизведения, а пара внешних по лей — кадры начала и конца анимации.
Концепция рабочего процесса анимации Подходя к любой задаче анимации, разумно иметь план создания действий объекта. Громадная ошибка новичков заключается в том, что они приступают к анимации, пер вым делом начиная устанавливать ключевые кадры где попало. Рекомендуется придер живаться следующей методологии, поскольку она подходит почти для всех анимаций, от простых до сложных. •
Начинайте с установки предпочтений для удобства создания конкретной анимации. Анимации для Web, телевидения и кино имеют разные параметры; и для каждого типа получаемой анимации нужны разные настройки рабочего пространства и вре менных параметров. Чтобы упростить создание конкретной анимации, в самом начале процесса измените эти параметры в окне, которое открывается после щелчка на кнопке Animation Preferences (Предпочтения анимации). Если необходимо получить резуль тат для нескольких типов вывода, то установите предпочтения для вывода самого вы сокого качества, чтобы сначала получить результат для него (например, у вывода для телевидения качество выше, чем для Web, поэтому ориентировать свои предпочтения при анимации для обеих мультимедийных систем следует по телевидению).
•
Создавайте ключевые кадры в области просмотра и грубо регулируйте время, ис пользуя ползунок времени. В следующем упражнении ключевой кадр будет установ лен для одного конкретного атрибута примера оснастки мяча. В большинстве случа ев ключевой кадр устанавливается для всех атрибутов, управляющих анимацией персонажа, в крайних позициях его движения.
•
И наконец, уточните и откорректируйте движения с помощью редактора анимаци онных кривых (Graph Editor). В следующем упражнении, используя тангенциальные манипуляторы (tangent handle) и изменяя их типы, перенастроим интерполяцию значений атрибутов на промежуточных кадрах, расположенных между ключевыми.
Основы анимации
291
Теперь давайте на практике ознакомимся с элементами управления анимацией Майя и применим обсуждавшийся ранее рабочий процесс к классическому упражнению "отскакивающий мяч".
Практика: отскакивающий мяч Откройте файл и начните с настройки рабочего пространства для данной анимации. 1.
Откройте имеющийся на компакт-диске файл BallSetup.mb. В нем содер жится простая анимационная оснастка мяча, на примере которой будут рас смотрены некоторые основные концепции установки ключевых кадров.
2.
Выберите пункт меню W i n d o w => Settings/Preferences => Preferences (Окно => Параметры/Предпочтения => Предпочтения). Предпочтения позволяют на строить рабочее пространство и, что более важно, временную шкалу (timeline) анимации. Рассмотрим параметры, которые следует изменить.
3.
Выбрав категорию Interface (Интерфейс), установите для переключателей O p e n Attribute Editor (Открывать редактор атрибутов) и O p e n Tool Settings
(Открывать параметры инструмента) значение In Separate W i n d o w (В от дельном окне), а для переключателя Open Layer Editor (Открывать редактор слоев) выберите значение In Main Maya W i n d o w (В главном окне Maya). 4.
Выбрав категорию UI Elements (Элементы пользовательского интерфейса), установите отображение всех видимых элементов пользовательского интер фейса (Visible UI Elements), установив все флажки указанного раздела. В разделе Editor in Main W i n d o w (Редактор в главном окне) установите фла жок Show (Показать), а в качестве самого редактора выберите Channel Box/Layer Editor (Панель каналов/Редактор слоев).
5.
Выбрав категорию Settings (Параметры) в разделе Working Units (Используемые единицы), в качестве единицы времени ( T i m e ) выберите N T S C [30 fps] (NTSC [30 кадров в секунду]). Эта частота кадров подходит для телевидения. При работе с файлами, которые имеют разрешающую спо собность кинопленки, следует установить кинематографическую частоту Film [24 fps] (Фильм [24 кадра в секунду]).
6.
В разделе Settings/Animation (Параметры/Анимация) установите флажок Auto Key (Автоматическая установка ключевых кадров). В разделе Tangents (Касательные) для параметров Default In Tangent (Входящая касательная по умолчанию) и Default Out Tangent (Исходящая касательная по умолчанию) выберите значение Clamped (С фиксацией). Касательные и их связь с ани мацией в Майя обсуждаются ниже, при рассмотрении редактора анимацион ных кривых (Graph Editor).
7.
Выбрав категорию Settings/Timeline (Параметры/Временная шкала), уста новите для параметров Playback Start/End (Начало/Конец воспроизведе ния) значения 0 и 90 соответственно; а для параметров Animation Start/End (Начало/Конец анимации) — значения 0 и 120. Выберите для переключате ля Height (Высота) значение 1х (Одна строка), а для переключателя Key Ticks (Отметки ключевых кадров) — значение Active (Активно). Установите ширину отметки равной 2. В разделе Playback (Воспроизведение) установи-
292
Глава 7 те параметр Update View (Обновлять представление) в значение Active (Активно). Это задаст обновление только текущего представления, ускоряя тем самым процесс воспроизведения анимации. Для переключателя Looping (Зацикливание) выберите значение Continuous (Непрерывно), для параметра Playback Speed (Скорость вос произведения) — значение r e a l - t i m e [30 fps] (В реальном времени [30 кадров в се кунду]). Все это обеспечит наиболее точные параметры воспроизведения рассматри ваемого файла. Не забывайте, что при наличии импортированного и воспроизводи мого звукового сопровождения следует использовать именно реальный масштаб времени.
Выше были приведены основные настройки, необходимые для начала работы над анимацией для телевидения. Когда появится уверенность в последовательном измене нии параметров открытого файла, можете установить и другие, собственные значения параметров, чтобы в следующий раз файл открывался с индивидуальными настройками.
Отскакивающий мяч Создание отскакивающего мяча кажется простой задачей, однако это не просто переме щение мяча вверх и вниз с одновременным его масштабированием. Файл BallSetup.mb содержит относительно простую сцену, в которой можно разделять движение относительно различных осей, а также использовать предоставляемый Maya деформатор сжатия (squash deformer) для создания более убедительного деформирования мяча при отскоках. Давайте реализуем отскок. 1.
Установите индикатор текущего времени на кадр 1.
2.
Выделите кривую ControlBoxCrv, а затем щелчком мыши выделите атрибут Bounce_Down_Up. Этот атрибут связан с каналом translateY управляющим вер тикальным движением мяча группы UpDnGrp. Более подробная информация о свя зывании атрибутов приведена в главе 8, "Постановка и оснащение персонажа".
3.
Чтобы переместить мяч вверх по оси Y, щелкните в области просмотра средней кнопкой мыши справа от мяча и перемещайте его до тех пор, пока в поле атрибута Bounce_Down_Up не отобразится значение 7.
4.
Щелкните правой кнопкой мыши на атрибуте Bounce_Down_Up и в появившемся контекстном меню выберите пункт Key Selected (Установить ключевой кадр для выбранного). В результате ключевой кадр будет установлен для данного специаль ного атрибута (custom Attribute). Теперь кадр 7 должен иметь оранжевый фон, озна чающий, что его атрибут участвует в анимации.
5.
Перейдите к кадру 15, щелкнув на нем.
6.
Так же как и на шаге 4, установите ключевой кадр для атрибута Bounce_Down_Up.
7.
Перейдите к кадру 8.
8.
Установите значение атрибута Bounce_Down_Up равным 0. Поскольку кнопка Auto Key (Автоматическая установка ключевых кадров) нажата (кнопка с красным клю чом справа), при изменении значения атрибута ключевой кадр будет установлен ав томатически.
9.
Воспроизведите анимацию вручную (с помощью ползунка времени).
293
Основы анимации
10. Нажав клавишу <Shift>, выделите мышью на ползунке времени кадры от 1 до 14, чтобы выделить этот диапазон (рис. 7.4). 11. Чтобы ограничить ползунок времени периодом отскока мяча, щелкните на нем пра вой кнопкой мыши и в появившемся контекстном меню выберите пункт Set r a n g e To => Selected (Установить диапазон равным => Выбранному). 12. Чтобы просмотреть анимацию, щелкните на кнопке Play Forward (Воспроизводить в прямом направлении). Чтобы остановить воспроизведение, либо еще раз щелкните на той же самой кнопке (которая теперь стала кнопкой Stop Play (Остановить вос произведение)), либо нажмите клавишу <Esc>. Получившаяся анимация выглядит механической и нереалистичной, поскольку мяч, достигнув вершины отскока, сразу же несется вниз. Попробуем изменить скорость, доба вив несколько разделяющих ключевых кадров. 1. На ползунке времени перейдите к кадру 2. 2. Выделите атрибут Bounce_Down_Up кривой ControlBoxCrv и, чтобы установить на этом кадре разделяющий ключевой кадр, щелкните на атрибуте правой кнопкой мыши и в появившемся контекстном меню выберите пункт Breakdown Selected (Установить разделяющий ключевой кадр для выбранного). При этом отметка соот ветствующего ключевого кадра на ползунке времени станет зеленой. 3. Чтобы выделить разделяющий ключевой кадр, выделите кадр 2, нажав клавишу <Shift>. Отпустите кнопку мыши и снова нажмите ее, а потом, не отпуская, перета щите выделенный разделяющий ключевой кадр на кадр 5 (рис. 7.5).
Рис. 7.4. Нажав клавишу <Shift>, выделите диапазон кадров на пол зунке времени. Обратите внима ние на то, что появляющиеся при этом числа точно указывают диапазон выделенных кадров
Рис. 7.5. Перемещение разде ляющего ключевого кадра с кадра 2 на кадр 5
4. Перейдите в ползунке времени к кадру 14 и установите на нем разделяющий ключе вой кадр, повторив шаг 2. 5. Переместите на ползунке времени разделяющий ключевой кадр с кадра 14 на кадр 11. 6. Чтобы увидеть изменения, воспроизведите анимацию. Записывая значение атрибута Bounce_Down_Up для кадра непосредственно до и по сле верхней точки отскока и перемещая эти значения дальше от этого момента, была соз дана видимость того, что, перед тем как начать падать и удариться о землю, мяч немного завис, т.е. на подходе к верхней точке траектории (и непосредственно после нее) движе ние мяча замедляется. Это намного более выразительный отскок, чем то механическое движение, с которого все началось.
294
Глава 7
Настройка временных характеристик с помощью монтажного стола Теперь с помощью
монтажного стола
(dope sheet), доступного после выбора пункта
меню W i n d o w => Settings/Preferences => Dope Sheet (Окно => Параметры/Предпочтения =>
Монтажный стол), отрегулируем общий хронометраж (timing) времени отскока. Это бу дет весьма упрощенная задача для монтажного стола. Обычно он используется для на стройки хронометража большого количества объектов или атрибутов. Монтажный стол обладает уникальной способностью регулировать хронометраж объекта в целом, а затем уточнять полученное распределение времени для отдельно взятых атрибутов. Используя только монтажный стол, можно настроить хронометраж целого персонажа, что будет продемонстрировано в главе 9, "Анимация персонажа". На рис. 7.6 показаны монтажный стол и его функциональные элементы. Открыв мон тажный стол на экране, обратите внимание на то, что зеленый цвет разделяющего ключе вого кадра сложно различить среди оттенков синего в рабочей области и практически не возможно увидеть сквозь зеленый цвет объектов фона. Чтобы сделать цвета более контраст ными, выберите пункт меню Window => Settings/Preferences => Colors (Окно => Параметры/ Предпочтения => Цвета) и, щелкнув на раскрывающемся разделе Animation Editors (Редакторы анимации), отрегулируйте цвета для Summary Object (Сводный объект) и Object (Объект), чтобы сделать изображение в окне монтажного стола более понятным.
Рис. 7.6. Представление на монтажном столе атрибутов кривой ControlBoxCrv и ее дочерних объектов
Основы анимации
295
Теперь настроим хронометраж. 1. Прокрутите окно монтажного стола (нажав среднюю кнопку мыши и клавишу < A l t > ) так, чтобы справа внизу области просмотра появился кадр 30. ( Д л я пе ремещения по области просмотра и изменения ее масштаба используйте гори зонтальное перетаскивание средней или правой кнопкой мыши при нажатой клавише .) 2. Выделите последний ключевой кадр (в кадре 15), щелкнув на нем левой кнопкой мыши. 3. Нажав клавишу < W > , выберите инструмент Move (Перемещение). 4.
С помощью средней кнопки мыши перетащите выделенный ключевой кадр на кадр 21. Разделяющий ключевой кадр при этом сместился, чтобы сохранить свое положе ние относительно среднего и последнего ключевых кадров.
5.
Выделите ключевой кадр и с помощью средней кнопки мыши перетащите с кадра 8 на кадр 11.
Перемещение ключевых кадров на монтажном столе корректирует хронометраж отско ка, позволяя замедлить темп анимации. Удостоверьтесь, что откорректировали временную шкалу так, чтобы воспроизвести все кадры (21) новой, более медленной анимации.
Кадры с нецелыми номерами Общий хронометраж отскока уже отрегулирован, и сейчас следует устранить про блему, возникшую при перемещении ключевых кадров, окружающих разделяющие клю чевые кадры. Расположение последних регулируется автоматически, но они почти нико гда не попадают на кадры с целыми номерами и устанавливаются на нецелочисленных кадрах (partial key), т.е. кадрах не с целыми, а с дробными номерами. Это может вызвать проблемы у нескольких процессов Майя, выполняемых дальше по анимационному конвейеру. Например, искаженным может выглядеть рассчитываемое на основе группы кадров размытие (motion blur), если попытаться вычислить его для клю чевых кадров с нецелыми номерами. Поэтому следует исправить ситуацию. 1. Выделите разделяющий ключевой кадр между средним и последним ключевыми кадрами. 2. На монтажном столе, нажав и не отпуская клавишу < К > , левой кнопкой мыши пе реместите индикатор текущего времени на кадр 15. Обратите внимание на то, что в поле Stats (Статистика) указано, что ключевой кадр установлен примерно на време ни 15.29 и что значение атрибута Bounce_Down_Up для этого кадра приблизительно равно 5.89. Но, взглянув на панель каналов, можно обнаружить, что в поле атрибута Bounce_Down_Up выведено значение 5 . 636. Несложно понять, что такие различия могут стать причиной проблем при любой обработке, визуализации или вычислении выражений, основанных на получении конкретных значений для конкретных ключе вых кадров. 3. Щелкните правой кнопкой мыши на разделяющем ключевом кадре и в появившемся контекстном меню выберите пункт Edit => Snap • (Правка => Привязка • ) . В окне для переключателя Time r a n g e (Временной диапазон) выберите значение АLL (Весь) и, что наиболее важно, установите параметр S n a p (Привязка) в значение Times
296
Глава 7 (Времена). Необходимость выбирать для этого параметра значение Values (Значения) возникает редко, если вообще возникает, поскольку в этом случае потен циально возможно неожидаемое изменение анимации. Чтобы привязать выбранный ключевой кадр к ближайшему целому числу, щелкните на кнопке Snap keys (Привязка ключевых кадров).
4. Теперь в поле Stats (Статистика) отображается число 15, что и требовалось. Масштабируя группы ключевых кадров на ползунке времени, монтажном столе и в редак торе анимационных кривых, можно расположить все ключевые кадры выделения на неце лочисленных временных значениях. И хотя все вместе они могут быть привязаны к целым значениям, риск угробить хронометраж анимации все равно остается. Группы ключевых кадров лучше никогда не масштабировать, а переносить их по отдельности. 5.
Привяжите первый разделяющий ключевой кадр, выделив его и повторив действия шага 3. Сейчас этот ключевой кадр расположен на кадре 6,715, а будет привязан к кадру 7, в то время как операция привязки первого кадра округлила номер ключево го кадра с 15,29 до 15.
Создание и редактирование ключевых кадров в редакторе анимационных кривых Редактор анимационных кривых Graph Editor — это один из наиболее популярных и мощных инструментов Майя, предназначенный для редактирования и создания ключе вых кадров. Он предоставляет доступ к ключевым кадрам и интерполяции значений ат рибутов (каналов) на промежуточных кадрах между ними. Как уже упоминалось, ключе вой кадр фиксирует значения атрибутов объекта в определенный момент времени. В цел лулоидной анимации (cel animation) ключевой кадр — это рисунок, на котором изображена ключевая (главная) поза персонажа или объекта. Затем ведущий аниматор (lead animator) передает набор ключевых рисунков (кадров) ассистентам, которые для завершения анимации рисуют промежуточные кадры (in between frame, inbetween). Ис ходя из полученных от ведущего аниматора инструкций ассистенты домысливают то, как должны выглядеть промежуточные кадры. Майя выполняет функции ассистента анима тора, так как она на основе выданных ей инструкций интерполирует движение объекта. Дальнейшие усилия будут направлены на то, как правильно проинструктировать Майя. В математике интерполировать означает вычислять промежуточные значения между двумя известными значениями. Это в точности то, что делает Майя между ключевыми кад рами, а редактор анимационных кривых позволяет управлять вычислением интерполяции. На рис. 7.7 показан редактор анимационных кривых (для его вызова выберите пункт меню Window => Animation Editors => Graph Editor (Окно => Редакторы анимации => Редактор анимационных кривых)) с изображенной в его области просмотра анимационной кривой атрибута Bounce_Down_Up. Квадратные точки на кривой соответствуют ключевым кад рам, а расположенные между ними фрагменты кривой представляют собой вычисленное Майя изменение положения мяча во времени (движение) между ключевыми кадрами. Коричневые точки на концах линий, расходящихся от каждого маркера ключевого кадра, называют тангенциальным манипулятором ключевого кадра (key tangent handle). Они управляют прохождением кривой через ключевой кадр и позволяют аниматору проинст руктировать Майя, как именно следует рисовать промежуточные кадры между ключе выми. Пользователям программных продуктов Adobe Illustrator, Macromedia Freehand
Основы анимации
297
или инструмента Pen из Photoshop знакомы сплайновые кривые, используемые в редак торе анимационных кривых. Однако давайте рассмотрим предлагаемые Maya типы каса тельных в ключевом кадре. Spline (Сплайн). Касательная к сплайну (spline tangent) сохраняет плавность кривой при ее прохождении через маркер ключевого кадра. При этом маркер ключевого кадра имеет манипуляторы зависимости от весовых коэффициентов касательной, которые до пускают настройку, аналогично кривым Безье (BeZier). Такие касательные обеспечивают плавную интерполяцию между ключевыми кадрами, но при этом имеют недостаток: на них могут непосредственно воздействовать расположение и значение некоторых преды дущих и последующих ключевых кадров. Последнее может привести к сдвигу сплайна (spline drift), в котором кривая сдвигает последнее намеченное значение ключевого кадра перед тем, как опять пройти через следующий маркер ключевого кадра.
Рис. 7.7. Редактор анимационных кривых Linear (Линия). Касательные к прямой (linear tangent) задают постоянный коэффи циент изменения значения между двумя ключевыми кадрами с различными значениями. Используйте этот тин касательных для анимации изменения механических действий или текстуры, требующих постоянной скорости или коэффициента. При анимации живых существ касательные к кривой должны иметь плавные стыки. Clamped (С фиксацией). Некоторые считают, что наиболее универсальными из всех типов касательных являются именно касательные с фиксацией (clamped tangent), по скольку они объединяют лучшие свойства касательных к сплайнам и горизонтальных касательных. Касательные с фиксацией плавно интерполируют кривую между ключе выми кадрами с различными значениями, но на участках между ключевыми кадрами с одинаковым значением остаются горизонтальными. Рассмотрите применение касатель ных с фиксацией там, где обычно используются касательные к сплайнам. Во многих слу чаях они вносят меньшее искажение, чем последние. Flat (Горизонтально). Горизонтальные касательные (flat tangent) — это простые каса тельные, которые горизонтальны с обеих сторон ключевого кадра. Они гарантируют отсут ствие движения между ключевыми кадрами с одинаковыми значениями, особенно, когда
Глава 7
298
исходящая касательная предыдущего ключевого кадра и входящая касательная следующе го также горизонтальные и значение для всех трех ключевых кадров одинаковое. Stepped (Ступенчатая). На первый взгляд кажется, что от ступенчатых касательных
(stepped tangent) мало толку. Для этого типа касательной значение кривой постоянно до тех пор, пока она не достигнет следующего ключевого кадра, в котором значение атрибута перепрыгивает на следующее значение. Но как будет показано в главе 9, "Анимация персо нажа", такие касательные позволяют отделить движение от распределения времени. Fixed (Фиксированный). Фиксированные касательные (fixed tangent) жестко задают направление и длину входящей и исходящей касательной неполного ключевого кадра, установленного как Fixed (Фиксированный). Это означает, что неважно, как изменяются ключевые кадры или разделяющие ключевые кадры с каждой стороны фиксированной касательной, — она все равно не изменится. Plateau (Плато). Касательные к плато (plateau tangent) заставляют кривые учиты вать наибольшее и наименьшее значение ключевого кадра вдоль кривой и не выходить из этого диапазона. Кроме того, они также сохраняют горизонтальность между ключевыми кадрами с одинаковыми значениями. На практике существует всего лишь небольшое различие между ключевыми кадрами, для которых в точках экстремальных значений были установлены горизонтальные касательные или касательные к плато, однако каса тельные к плато способны уменьшить необходимость в ликвидации дрейфа кривой, что безусловно удобно. Нововведением Майя8 является некоторое расширение возможностей ре дактора анимационных кривых, обеспечивающее его большую примени мость и полезность. Для начала любой анимационной кривой теперь можно назначить оп ределенный цвет по своему желанию, что может быть очень удобно, если при работе над анимацией необходимо выделить некоторую кривую. Выделите любую кривую (или кри вые), а затем выберите пункт меню Edit => Change Curve Color • (Правка => Изменение цве та кривой). Затем выберите для кривой необходимый цвет и подтвердите это, чтобы уви деть перекрашенную кривую (кривые) в окне редактора анимационных кривых. На рис. 7.8 представлена кривая Bounce_Down_Up, окрашенная в зеленый цвет вместо принятого по умолчанию черного цвета.
Рис. 7.8. Кривая Bounce_Down_ Up, окрашенная в выбран ный цвет Теперь на определенную кривую можно также создать закладку (bookmark), что весьма полезно, когда имеешь дело с множеством анимационных кривых при создании сложной анимации. Используя закладки, можно быстро установить ключевой кадр на специфическую кривую или объект, а не охотиться за ней в переполненном окне редак тора анимационных кривых. Чтобы создать закладку, выберите одну или несколько кри-
Основы анимации
299
вых (или один или несколько объектов), а затем выберите пункт меню List => Bookmarks => Bookmark Selected Curves • (Список => Закладки => Поставить закладку на выбранные кривые •) (или Bookmark Current Objects • (Поставить закладку на теку щие объекты • ) ) . В окне свойств можно присвоить закладке имя. Чтобы вернуться к со храненной закладке, выберите пункт меню List => Bookmarks => n a m e of bookmark> (Список => Закладки => имя закладки>). И наконец, теперь в панель иерархической структуры (слева) редактора анимацион ных кривых можно загружать только те объекты, которые связаны с выбранными кри выми. Подобно другим дополнениям, эта возможность уменьшает затруднения работы в редакторе анимационных кривых, упрощая поиск объектов, связанных с конкретными кривыми. Чтобы задействовать эту возможность, выберите пункт меню Edit => Select Curves (Правка => Выбор кривых). Теперь в панели иерархической структуры редактора анимационных кривых отобразятся только те объекты, которые связаны с выбранными кривыми. В этом разделе рассматриваются анимационные кривые в их самом простом виде. Здесь не обсуждаются вопросы, как создается плохая или хорошая анимация. Пока о качестве ани мации будем судить, просматривая ее воспроизведение в области просмотра, а не по внешнему виду функциональных кривых. Маркеры ключевых кадров могут иметь единые (unified) или раздельные (broken) ка сательные и весовые коэффициенты, которые могут быть блокированными (locked) или свободными (free). Давайте исследуем эти и некоторые другие полезные возможности ре дактора анимационных кривых параллельно с обсуждением влияния различных типов касательных и их применения. 1. В редакторе анимационных кривых выберите пункт меню Curves => Post Infinity => Cycle (Кривые => Постбесконечность => Цикл). В результате будет постоянно повто ряться получившаяся кривая, что по мере повторения позволит хорошо рассмотреть отскоки мяча. 2. Чтобы отобразить кривую в виде продолжающейся до бесконечности пунктирной линии, выберите пункт меню V i e w => lnfinity (Вид => Бесконечность). Чтобы увидеть результат, уменьшите масштаб изображения в редакторе анимационных кривых. 3. Для ползунка диапазона установите значение параметра Playback Stop (Конец вос произведения) равным 63. Так как один отскок длится 21 кадр, это позволит увидеть три отскока перед повторением воспроизведения. 4. Чтобы увидеть отскок мяча, щелкните на кнопке Play (Воспроизвести). Обратите внимание на то, что на вершине отскока мяч движется рывком. Причина этому — не большой направленный вверх импульс кривой в точке соединения начала с концом (рис. 7.9). 5. В меню редактора анимационных кривых выберите пункт C u r v e s => Buffer C u r v e Snapshot (Кривые => Поместить копию кривой в буфер), а затем пункт V i e w => Show Buffer C u r v e s (Вид => Показать кривые из буфера). Это отобразит влияние внесенных изменений на кривую, а также позволит увидеть и сравнить результа ты. И к тому же позволит при необходимости быстро вернуться назад к первона чальному варианту.
Глава 7
300 6.
Выделите конечные ключевые кадры (см. рис. 7.9). Щелкните правой кнопкой мыши на редакторе анимационных кривых, в появившемся контекстном меню выберите пункт Tangents => Plateau (Касательные => Плато) и воспроизведите анимацию. 1
Pиc. 7.9. Кривая атрибута Bounce_Down_Up и выделенные конечные ключевые кадры. Обратите внимание на повто ряющуюся до бесконечности пунктирную кривую Хорошая новость заключается в том, что рывка уже нет; а плохая — в том, что на вер шине теперь непонятная пауза. В редакторе анимационных кривых это показано в виде выровненной вершины кривой. На вершине хотелось бы получить закругленную кри вую. Быстро это исправить нельзя, но все-таки можно. Сделайте это так. 1. Исправление вершины подскока начнем с создания немного большего толчка в ниж ней части траектории. Выделите ключевой кадр на кадре 11 и выберите пункт меню Keys => Break Tangents (Ключевые кадры => Разорвать касательные). Это позволит не зависимо перемещать тангенциальные манипуляторы. Общее правило: разрывать касательные стоит только тогда, когда необходимо получить более резкое изменение направления. 2.
При все еще выделенном ключевом кадре, нажав клавишу < S h i f t > , выделите два ко нечных ключевых кадра и выберите пункт меню Keys => Free Tangent Weight (Ключевые кадры => Освободить весовой коэффициент касательной). Это позволит удлинять или укорачивать линии тангенциальных манипуляторов, что, в свою оче редь, позволит увеличивать или уменьшать наклон кривой по обе стороны от ключе вого кадра.
3.
Удлините линии манипулятора ключевого кадра на 11-м кадре, как показано на рис. 7.10, слева. Помните, что перемещение ключевых кадров, кривых и манипуля торов в редакторе анимационных кривых — многоэтапная операция. Сначала сле дует выделить конкретный элемент, щелкнув на нем левой кнопкой мыши. Чтобы выделить тангенциальный манипулятор, необходимо щелкнуть левой кнопкой мыши на маркере ключевого кадра, а затем щелкнуть левой кнопкой мыши на тан генциальном манипуляторе, чтобы отдельно выделить его. Наконец, перейдите в режим перемещения, выбрав инструмент Move (Перемещение) или нажав клави шу <w>, а затем переместите тангенциальный манипулятор, перетащив его с по мощью средней кнопки мыши.
4.
Укоротите манипуляторы конечных ключевых кадров, чтобы сделать кривую немно го резче на вершине (см. рис. 7.10, посередине).
Основы анимации
301
Рис. 7.10. Изменение кривой для придания отскоку мяча большего толчка 5.
Чтобы включить привязку ко времени, щелкните на кнопке Time Snap On/Off (Включить/Выключить привязку по времени). Это гарантирует, что все ключевые кадры будут привязаны к целочисленным значениям кадров, что в данном случае весьма полезно.
6. Выделите и переместите разделяющие ключевые кадры вниз, до тех пор, пока конец тангенциального манипулятора не сравняется с вершиной кривой (см. рис. 7.10, справа). 7. Воспроизведите анимацию и посмотрите, на что похож окончательный результат. В качестве упражнения попытайтесь освободить весовые коэффициенты касательных указанных разделяющих ключевых кадров и переместить их вверх на графике; затем пе реместите тангенциальные манипуляторы касательных вниз, где они были перед этим. Но сначала поместите в буфер копию кривой. В этом случае, используя команду Curves => Swap Buffer Curve (Кривые => Заменить кривую в буфере), можно будет посто янно переключаться назад и вперед между двумя кривыми в буфере, чтобы увидеть эф фект от изменений.
Добавим растяжение и сжатие К сожалению, подпрыгивающему мячику не хватает реализма, делающего анимацию наглядной и интересной. Поэтому придадим мячику некоторые элементы растяжения и сжатия, которые сделают анимацию более реалистичной. B a l l SquashStretch кривой ControlBoxCrv — это дополнительный атрибут, связанный установленным управляемым ключом с деформирующим мяч нелинейным деформатором сжатия. Используем этот атрибут, чтобы деформировать мяч, придав при этом от скоку некоторое дополнительное преувеличение или удар. Создайте сжатие и растяже ние так, как описано ниже. Откройте имеющийся на компакт-диске файл B a l l BounceOlSquashStart.mb, и приступим. 1. Чтобы видеть, как формируется кривая по мере изменения значения атрибута BallSquashStretch, убедитесь, что редактор анимационных кривых открыт. 2. Перейдите к кадру 1. 3. Выделите атрибут B a l l S q u a s h S t r e t c h и установите ключевой кадр только для этого атрибута.
Глава 7
302 4.
Немного сожмите мяч, перемещая по области просмотра мышь с нажатой средней кнопкой до тех пор, пока в поле вывода атрибута B a l l S q u a s h S t r e t c h не появится значение - 0.6.
5. Нажав клавишу < К > , щелкните средней кнопкой мыши на кадре 21 в редакторе анимационных кривых. 6.
Установите ключевой кадр для атрибута BallSquashStretch. Перемещение мыши с нажатой средней кнопкой и одновременно нажатой клавишей < К > изменяет инди катор текущего времени, не изменяя при этом ни область просмотра, ни значения в панели каналов. Поэтому установка ключевого кадра на кадре 21 по существу копи рует кадр 1 в этот кадр.
7.
Перейдите к кадру 7, на котором был установлен разделяющий ключевой кадр, и ус тановите значение атрибута BallSquashStretch равным 0. Мяч станет совершен но круглым.
8.
Нажав клавишу < К > , щелкните средней кнопкой мыши на кадре 15 и установите ключевой кадр на канале атрибута BallSquashStretch.
9.
Перейдите к кадру 10 (кадр перед ударом мяча о землю) и растяните мяч, установив значение атрибута BallSquashStretch примерно равным 1. 6.
10. Нажав клавишу < К > , щелкните средней кнопкой мыши на кадре 13. Установите ключевой кадр на канале BallSquashStretch, чтобы скопировать в этот кадр его значение из кадра 11. 1 1 . Чтобы переместить индикатор текущего времени в кадр удара мяча о землю, нажав клавишу < К > , щелкните средней кнопкой мыши на кадре 11. 12. Сожмите мяч, установив значение атрибута BallSquashStretch равным -1. 6. 13. Чтобы кривая в течение анимации повторялась бесконечно, в редакторе анимацион ных кривых выберите пункт меню Curves => Post lnfinity => Cycle (Кривые => Постбесконечность => Цикл). 14. Чтобы сгладить кривую, выделите начальный и конечный ключевые кадры атрибута BallSquashStretch и установите для них параметр Tangents (Касательные) в значение Flat (Горизонтально). 15. Чтобы увидеть отскок мяча с добавленной деформацией, воспроизведите анимацию. 16. Сохраните получившийся файл. ОТКЛОНИМ
его немного от вертикали!
Следующее планируемое действие выходит за рамки реальности: отклоним в отскоке мяч от вертикали, используя атрибут Lean_Bck_Fwd кривой ControlBoxCrv. Это придаст мячу такой вид, как будто он поднимает себя в воздухе. Но в пер вую очередь, чтобы можно было правильно установить отклонение, необходимо пере местить мяч вперед. Продолжите работу с файлом, созданным ранее, или откройте файл BallBounceOlLeanStart.mb.
1. В панели каналов на кадре 1 установите ключевой кадр для атрибута ControlBoxCrv.translateZ.
2.
Переместите индикатор текущего времени на кадр 63.
Основы анимации
303
Точечная форма записи (.) позволяет быстро указать конкретный канал конкретного объекта. Таким образом, "установите ключевой кадр для атрибута ControlBoxCrv. translateZ" озна чает: "Выделите объект ControlBoxCrv. Затем в панели каналов щелкните на атрибуте translateZ, щелкните на нем правой кнопкой мыши и в появившемся контекстном меню выбе рите пункт Key Selected (Установить ключевой кадр для выбранного)". 3. Перемещайте кривую ControlBoxCrv вперед по оси Z до тех пор, пока значение со ответствующего канала не станет равным 8. При нажатой кнопке Auto Key (Автоматическая установка ключевых кадров) ключевой кадр будет установлен ав томатически. Если этого не произошло, установите ключевой кадр для атрибута translateZ. А затем щелкните на кнопке Auto Key. 4. Вернитесь к кадру 1. Обратите внимание, что на ползунке времени видны все ключе вые кадры. Используем это далее как преимущество. 5.
Установите ключевой кадр на канале ControlBoxCrv.Lean_Bck_Fwd, значение которого должно быть равным 0.
6. Перейдите к кадру 6 или 7. Так как мяч опускается в падении, отклоните его немного назад, установив значение атрибута Lean_Bck_Fwd равным примерно -8.5. 7. Перейдите к кадру 10, который непосредственно предшествует отскоку и моменту наибольшего растяжения, и подчеркните отклонение, установив значение атрибута Lean_Bck_Fwd равным примерно -9. 8. В кадре 11, где происходит удар, установите значение атрибута Lean_Bck_Fwd рав ным 0. 9. В кадре 12 отклоните мяч вперед, установив значение атрибута Lean_Bck_Fwd рав ным 9. 10. В кадре 15 установите значение атрибута Lean_Bck_Fwd равным примерно 16. 1 1 . В кадре 21 завершите движение, установив значение атрибута Lean_Bck_Fwd рав ным 0. 12. В редакторе анимационных кривых выделите кривую атрибута Lean_Bck_Fwd, щелкнув на ней в области просмотра левой кнопкой мыши, и выберите пункт меню Curves => Post infinity => Cycle (Кривые => Постбесконечность => Цикл).
13. Выберите для этой кривой пункт меню View => Infinity (Вид => Бесконечность). 14. Чтобы увидеть результат, воспроизведите получившуюся анимацию. Он... О Ж И Л ! Действительно, внесенные здесь изменения превратили анимацию от скакивающего мячика из скучного механического движения в эластичный, полный ин дивидуальности реалистичный виртуальный объект. Увеличение отклонения (т.е. атри бута Lean_Bck_Fwd) на восходящей стороне прыжка сделало отклонение мяча на подъ еме прямым, подчеркивая поднятие на вершине отскока. Манипулируя этими значениями, измените величину отклонения; возможно, результат удастся улучшить.
Преобразование циклической анимации в кривые Эта анимация хороша, если однообразно отскакивающий мяч — это все, что нужно. Однако в большинстве случаев нужно нечто большее. В следующем уп-
304
Глава 7
ражнении с помощью фиксации (baking) циклическая анимация (cycled animation) будет преобразована в анимационные кривые. После чего в ходе редактирования будет нару шена идентичность полученных циклов. Зафиксируйте (bake) анимацию следующим образом. Сначала откройте имеющийся на компакт-диске файл B a l l B o u n c e 0 2 B a k e S t a r t . mb или используйте собственный сохраненный ранее файл. 1. Выделите кривую ControlBoxCrv. В разделе иерархической структуры редактора анимационных кривых выделите атрибуты Bounce_Down_Up, BallSquashStretch и Lean_Bck_Fwd. Не выделяйте кривые, только имена каналов. 2.
В редакторе анимационных кривых выберите пункт меню Curves => Bake Channel • (Кривые => Фиксировать канал • ) . В появившемся диалоговом окне выберите для переключателя Time r a n g e (Временной диапазон) значение Start/End (Начало/ Конец), а значения параметров Start (Начало) и End (Конец) установите соответст венно равными 0 и 1 7 1 . Это соответствует восьми отскокам за период времени не много больший, чем 5,5 секунды. Установите параметр Sample By (Отсчет по) рав ным 1 и, чтобы Майя не устанавливала ключевые кадры на каждом кадре кривой, ус тановите флажок Sparse Curve Bake (Фиксация кривой по фрагментам). Чтобы преобразовать циклы в кривую, щелкните на кнопке Bake (Фиксировать).
3.
Увеличьте значение параметра Animation End Time (Время конца анимации) до 1 7 1 и соответственно установите ползунок диапазона.
4.
В редакторе анимационных кривых отключите зацикливание, выбрав пункт меню Curves => Post Infinity => Constant (Кривые => Постбесконечность => Постоянная). В ка
честве альтернативы можно избавиться от пунктирных линий, сбросив флажок с Infinity (Бесконечность) в меню View (Вид). Теперь анимация состоит из 171 кадра, но интенсивность всех отскоков попрежнему одинакова. Используя инструмент редактора анимационных кривых Lattice Deform Keys (Деформатор решетки анимационных кривых), придадим им некоторое угасание. Но, чтобы лучше видеть изменение анимации, сначала рассмотрим нормали зацию ключевых кадров. Можно заметить, что в редакторе анимационных кривых при увеличении масштаба для редактирования кривых отскока или сжатия кривая отклонения выходит за рамки области просмотра, но если уменьшить масштаб для просмотра кривой отклонения, то первые две становятся слишком маленькими, чтобы их можно было эффективно редак тировать. В меню Curves (Кривые) есть операция NormaliZe Curve (Нормализовать кри вую). Эта операция отображает кривые независимо от их настоящих значений так, как будто их значения лежат между -1 и 1. Нормализуйте кривые так, как показано ниже. 1.
В иерархической структуре редактора анимационных кривых выделите имена атри бутов, кривые которых хотелось бы нормализовать. Щелкните на расположенной в правом верхнем углу редактора анимационных кривых кнопке NormaliZe Curves (Нормализовать кривые). На рис. 7.11, сверху и посередине представлены состояния до и после выполнения этой операции; на рис. 7.11, снизу показаны нормализованные кривые. Для изменения масштаба области просмотра редактора анимационных кри вых, нажав и не отпуская клавишу <Shift>, переместите указатель мыши при нажа той левой и средней кнопках. Теперь все кривые отображаются между значениями 1 и 1. При этом изменились не сами значения, а их представление. Чтобы вернуться
Основы анимации
305
к прежнему представлению, достаточно щелкнуть на кнопке DenormaliZe Curves (Отменить нормализацию кривых). Для одних связь между кривыми очевидна, дру гих же происходящее сбивает с толку. В конце концов, выбор метода просмотра кри вых зависит от личных предпочтений. К счастью, для остальной части упражнения представление кривых значения не имеет. В этом примере работа будет проделана над ненормализованными кривыми. 2.
Переместите последний ключевой кадр кривой атрибута translateZ на кадр 171.
3.
Отредактируйте эту кривую так, как показано на рис. 7.12, сверху.
Puc. 7.11. Анимационные кривые до и после нормализации 4. Выделите все кривые, кроме кривой атрибута translateZ. 5. Двойным щелчком на кнопке Lattice Deform Keys (Деформатор решетки анимаци онных кривых) откройте окно параметров этого инструмента. Поскольку далее ин струмент будет использоваться для уменьшения интенсивности анимации, необхо димы только два ряда ( r o w s ) и две колонки ( C o l u m n s ) . Также убедитесь, что уста новлен флажок Middle Button Scales (Масштабирование средней кнопкой). После того как редактор анимационных кривых будет выглядеть так, как показано на рис. 7.12, посередине, окно параметров можно закрыть.
306
Глава 7
Рис. 7.12. Использование инструмента Lattice Deform Keys для изменения формы анимационных кривых и уменьшения интенсивности отскоков 6.
Нажав клавишу <Shift>, щелкните на верхней и нижней правых окружностях ре шетки, чтобы выделить соответствующие точки решетки.
7. Чтобы уменьшить масштаб точек решетки до 0, нажмите среднюю кнопку мыши и, не отпуская ее, проведите курсор мыши вдоль нулевой линии. На нулевую линию точки решетки устанавливать не требуется. При этой операции кривые должны су щественно сжаться, как показано на рис. 7.12, снизу. 8.
Привяжите все еще выделенные ключевые кадры к ближайшему кадру с целым но мером.
9.
Действия с решеткой внесли некоторое искажение в кривые, радикально сжав их вы соту. Вернитесь назад в окно и, чтобы сгладить кривую и анимацию, укоротите тан генциальные манипуляторы (рис. 7.13).
Puc. 7.13. Сглаживание кривой с помощью тангенциальных манипуляторов. Кривая из буфера показывает вид кривой до модификации Конечный результат этого упражнения представлен в файле B a l l B o u n c e F i n a l . mb.
Основы анимации
307
Резюме При правильной оснастке и применении принципов анимации создание анимации даже такой элементарной формы, как отскакивающий мяч, может стать достаточно сложным. В этой главе рассматривались типы анимации, основные приемы анимации с использованием ключевых кадров и предназначенные для этого инструменты Maya. Оснастка сложного (человекоподобного) персонажа обсуждается главе 8, "Постановка и оснащение персонажа", а в главе 9, "Анимация персонажа", на примере более сложных персонажей рассматриваются другие приемы анимации, а также методы предваритель ного просмотра анимации, подходящие для сцен, слишком сложных для воспроизведе ния в области просмотра.
Постановка и оснащение персонажа В этой главе описаны этапы создания полнофункциональной оснастки (rig) сложного персонажа. Основное внимание уделено оснащению скелета (skeleton), обеспечивающе го перемещение таких частей модели, как руки или ноги, а также системе инверсной ки нематики всего тела (Full Body IK — FBIK), позволяющей гораздо комфортнее выпол нять базовую постановку персонажа. Кроме того, описано, каким образом управляющие структуры упрощают работу с оснасткой. Независимо от того, создается ли оснащение с самого начала, или используется уже го товая оснастка персонажа для анимации, очень важно изучить процесс ее создания: это по знакомит с ограничениями, накладываемыми конкретной оснасткой на процесс анимации, а также раскроет причины возможных проблем. Кроме того, в этой главе рассматривается терминология оснащения и то, как сообщить специалисту по оснащению (rigger), что имен но от него необходимо. В настоящей главе рассматриваются следующие темы. •
Типы деформаторов: скелеты, кластеры и решетки
•
Прямая и инверсная кинематика
•
Создание правильного двуногого скелета
•
Использование для скелета новой инверсной кинематики всего тела
•
Создание оболочки персонажа
Типы деформаторов Деформатор (deformer) — это мощный инструмент, используемый художниками по оснащению для изменения частей связной геометрической формы или придания струк туры и связности набору геометрических форм, которые при других обстоятельствах мо гут быть несвязными между собой. Без таких деформаторов, как скелеты (skeleton) и решетки (lattice), пришлось бы перемещать целые объекты или же кропотливо переме щать все без разбора контрольные точки сетки оболочки. Таким образом, в наборе инст рументов аниматора ключевыми элементами являются деформаторы, которые представ ляют большую группу инструментов, включающую скелеты, плавные модификации (blend shape), покачивания (jiggle) и деформаторы решеток. Несмотря на существование множества типов деформаторов, при конструировании в Maya первичной оснастки пер сонажа специалисты по оснащению наиболее часто используют скелеты, кластеры (cluster), решетки и плавные модификации. Другие деформаторы, например деформатор покачивания, чаще всего используются для управления вторичной анимацией (такой, как колебания мышц) и при необходимости обычно добавляются к персонажам в конце
Глава 8
310
процесса оснащения. Большинство оснасток содержат такие элементы, как скелет, кла стер и деформирующие решетки, поэтому детально обсудим именно их. Не забывайте, что в качестве эффективных инструментов моделирования можно также использовать суставы (joint) и другие деформаторы. В предыдущих главах, а так же в главе 10, "Нелинейная анимация", описывается использование деформаторов для статического изменения поверхности модели. В данной главе внимание будет сосредото чено на использовании деформаторов в качестве инструментов анимации.
Скелеты Подобно настоящему скелету, в Майя скелет (skeleton) также состоит из костей (bone) и суставов (joint). В реальной жизни скелет человека или животного является защитной и архитектурной структурой, которая вмещает и защищает жизненно важные органы, поддерживает его форму и с помощью прикрепленных к костям мышц обеспечи вает возможность перемещения. В Майя сочетание в скелете костей и суставов функцио нирует подобно настоящим костям, мышцам и связкам, т.е. поддерживает общую форму персонажа и в то же время позволяет частям связной геометрической оболочки переме щаться с места на место. Для создания скелета в Майя воспользуйтесь инструментом Joint (Сустав) (для чего в наборе меню Animation (Анимация) выберите пункт Skeleton => Joint Tool (Скелет => Инструмент сустав)), набросайте на сцене скелет, устанавливая щелчками мыши суставы там, где они кажутся необходимыми. (Наиболее часто суставы распола гаются в геометрической форме завершенной модели персонажа.) По мере размещения суставов на своих местах Майя будет соединять их между собой визуальными связями, называемыми костями (bone): в паре сустав-кость только сустав допускает выделение и манипуляцию. На рис. 8.1 показано несколько суставов, соединенных костями. Зачастую иерархию суставов/костей лучше создавать в ортогональных видах (таких, как вид сбоку). Это не только обеспечит расположение всех суставов на одной плоскости, но и поможет установить для них предпочтительные углы поворотов, что важно для последую щей анимации кости. В разделе "Практика: создание скелета" этой главы детально обсуж дается проблема ориентации суставов. Некоторые считают полезным ограничивать создаваемые суставы соответственно выполняемым им функциям, таким как универсальный сустав (universal joint) или шар нирный сустав (hinge joint), поскольку в некоторых случаях это предполагает большую эффективность при анимации и меньший объем вычислений Майя при расчете движе ний. Например, универсальные суставы можно было бы использовать для запястий и щиколоток, а шарнирные — для колен. Тем не менее благодаря тщательному конструи рованию скелета и элементам управления установки ограничителей на суставы можно избежать. Это может быть удобно при анимации тем, что позволяет нарушить физиче ские ограничения, например, выгнуть коленный сустав вперед, если когда-нибудь такое понадобится для конкретной позы. Чтобы иерархия суставов могла влиять на геометрическую форму, следует создать оболочку (skin) персонажа, привязывая элементы геометрической формы персонажа к суставам скелета. Для первичного создания оболочки Майя использует алгоритм расчета цилиндрического пространства вокруг каждой кости; в зоне влияния сустава оказываютОн же шаровидный сустав. — Примеч. ред.
Постановка и оснащение персонажа
311
ся попадающие внутрь указанного пространства геометрические элементы (контрольные вершины, вершины и пр.). На элементы вне этого пространства сустав не воздействует. Maya поддерживает два типа привязки (binding): жесткую (rigid) и плавную (smooth). Жесткая привязка является логической операцией (Boolean operation): на контрольную вершину (или просто вершину) воздействует ровно один сустав, воздействие которого составляет 100%. С другой стороны, при плавной привязке на отдельные контрольные вершины совместно могут воздействовать несколько суставов. Например, на располо женную близко к двум костям контрольную вершину NURBS-поверхности на 60% могла бы воздействовать одна кость и на 40% — другая. (Воздействия всегда складываются, и их сумма составляет 100%.) Если возле первых двух костей добавляется еще одна и обо лочка перепривязывается, то на эту одну контрольную вершину совместно воздействуют три кости. Для достижения аналогичного результата в случае жесткой привязки требу ются дополнительные деформирующие инструменты, например скульптурный дефор матор (sculpt deformer). У специалистов по оснащению (а на самом деле целых студий) есть свои излюблен ные методики оснащения, использующие жесткую и плавную привязку, но в общем слу чае применение плавной привязки при создании оболочки сложного персонажа более интуитивно понятно. Осложнением здесь является то, что впоследствии воздействия оболочки на плавно привязанный персонаж следует обязательно откорректировать, или "раскрасить"; эта тема освещается далее в настоящей главе. Чтобы продемонстрировать отличия стандартных реализаций жесткой и плавной привязки, привяжем простой цилиндр NURBS обоими способами. Для начала создайте цилиндр и три сустава (две кости), как показано на рис. 8.2. (Удостоверьтесь, что ци линдр NURBS имеет как минимум 20 секций по длине, чтобы он сгибаться правильно.)
Рис. 8.1. Суставы и кости, связанные между собой в форму
буквы
S
Рис. 8.2. Состоящий из трех суставов скелет внутри простого цилиндра NURBS
Жестко привяжите цилиндр к суставам: выделите корневой (root) сустав скелета (первый созданный сустав), нажав клавишу <Shift>, выделите геометрическую форму и выберите из набора меню Animation (Анимация) пункт Skin => Bind Skin => r i g i d Bind (Оболочка => Привязать оболочку => Жесткая привязка) (при значениях параметров, за-
312
Глава 8
данных по умолчанию). При вращении среднего сустава будет наблюдаться похожая на рис. 8.3 картина, т.е. к сожалению, возникнет складка в области "локтя". При желании эту проблему можно устранить, применив скульптурный деформатор. А сейчас, чтобы увидеть, как работает плавная привязка, верните сустав в исходное положение, отменив для этого последнее действие. Отсоедините от цепи суставов обо лочку, выделив геометрическую форму и выбрав пункт меню Skin => Detach Skin (Оболочка => Отсоединить оболочку). Выделите корневой сустав скелета, нажав клавишу <Shift>, выделите цилиндр, а затем выберите пункт меню Skin => Bind Skin => Smooth Bind • (Оболочка => Привязать оболочку => Плавная привязка •) (при значениях пара метров, заданных по умолчанию). Теперь при повороте среднего сустава область локтя будет сгибаться более естественно, как показано на рис. 8.4. К сожалению, даже в случае такой простой геометрической формы, сжатие в области локтя при изгибе сустава вы глядит неестественно. Даже при гладкой привязке для достижения безошибочно пра вильного сгиба и образования складок необходимо еще изменить значения весовых ко эффициентов в области локтя цилиндра. Далее в главе будет продемонстрирована работа с инструментом Paint Skin Weights (Нанесение поверхностных весовых коэффициен тов), который может быть полезен именно в случаях, подобных этому.
Рис. 8.3. Жесткая привязка скелета к цилиндру
Рис. 8.4. Плавная привязка скелета к цилиндру
Кластеры На самом деле деформатор кластера (cluster deformer) — это только совокупность точек (контрольных вершин, вершин и т.д.), которой можно управлять одновременно. Для создания кластера выделите одну или несколько вершин, а затем из набора меню Animation (Анимация) выберите пункт Create Deformers => CIuster (Создать деформаторыОКластер). Чтобы увидеть кластер в действии, создайте плоскость NURBS, увеличив количество фрагментов примерно до 2 0 по каждому направлению (U и V). Перейдите в режим выделения компонентов (нажав клавишу < F 8 > ) и выделите несколько контроль ных вершин возле центра плоскости, после чего создайте из выделенных вершин кластер. При этом над плоскостью должен появиться маркер кластера (cluster handle) в виде не большой буквы "С"; если выделить и переместить эту букву, то входящие в кластер кон трольные вершины будут двигаться вместе с ней, как показано на рис. 8.5. Для каждой входящей в кластер контрольной вершины можно настроить ее весовой коэффициент (степень перемещения контрольной вершины относительно перемещения маркера кластера). Для этого выделите плоскость и выберите пункт меню Edit Deformers => Paint Cluster W e i g h t s Tool (Редактировать деформаторы => Инструмент нане
сения весовых коэффициентов кластера) и нанесите на сцену новые весовые коэффициенты.
Постановка и оснащение персонажа
313
При использовании этого инструмента такие его параметры, как Opacity (Непрозрачность) и Value (Значение), могут принимать различные значения. Параметр Value определяет сте пень воздействия кластера на контрольную вершину. (Максимальному уровню воздействия соответствует значение 1, представляемое в окне сцены белым, а отсутствию воздействия — значение о и черный цвет.) Параметр Opacity (Непрозрачность) определяет интенсивность кисти. (Значение 1 соответствует абсолютной непрозрачности, т.е. воздейстэие кисти при меняется в полной мере, а 0 соответствует абсолютной прозрачности, т.е. отсутствию воз действия кисти.) Чтобы установить желаемую ширину рабочей кисти, нажав и не отпус кая клавишу <В>, перемещайте мышь вдоль плоскости NURBS до тех пор, пока не будет получена нужная ширина. На рис. 8.6 показан тот самый кластер, но после изменения ве совых коэффициентов.
Рис. 8.5. Деформация центрольной части плоскости с помощью деформатора кластера
Рис. 8.6. Центральная часть плоскости после настройки весовых коэффициентов кластера
Решетки Несмотря на то что пара сустав-кость является удобным деформатором элементов модели, которые должны сохранять постоянную длину (как кости внутри оболочки), для создания более тягучего персонажа (или его части) зачастую лучше подходит деформа тор решетки, допускающий любую степень искривления целого объекта. Пара суставкость создает внутренний скелет (кости под кожей), а деформатор решетки создает то, что фактически является наружным скелетом (кости вне кожи) решетки точек, окружающих оболочку геометрической формы. Чтобы создать решетку, выделите геометрический фраг мент (тут в качестве примера используется сфера NURBS) и из набора меню Animation (Анимация) выберите пункт Create D e f o r m e r s => Lattice (Создать деформаторы => Решетка). Вокруг сферы, как показано на рис. 8.7, появится разделенная на секции внешняя оболочка (box). Для изменения количества секций решетки в панели каналов изменяйте значения атрибутов S, Т и U D i v i s i o n s (Интервалы по направлениям S, Т и U) узла решетки (для его имени обычно используется суффикс LatticeShape). Чтобы деформировать решетку, выделите ее, перейдите в режим выделения компо нентов (нажав клавишу < F 8 > или щелкнув на решетке правой кнопкой мыши и выбрав в появившемся контекстном меню пункт Lattice Point (Точка решетки)), выделите не сколько точек решетки, а затем переместите или поверните их. Вместе с движением ре шетки будет деформироваться лежащий в ее основе объект, как показано на рис. 8.8. Об ратите внимание на то, что для деформатора решетки не требуется создание оболочки, так как он автоматически связывается с выделенным объектом (или объектами). Кроме того, деформируемые решеткой объекты гораздо более гибкие или "тягучие", чем дефор-
314
Глава 8
мируемые иерархией суставов, что допустимо для деформации таких "бескостных" объ ектов, как осьминоги, губки, языки и шарики.
Рис. 8.7. Деформатор решетки во круг сферы
Рис. 8.8. Деформатор решетки и деформиро ванная им сфера
Прямая и инверсная кинематика Прямая и инверсная кинематика — это два разных способа вращения суставов в цепи. Из них более простым и требующим меньших вычислительных затрат является прямая кинематика (Forward Kinematics — FK), но при этом она лишена многих интуитивно по нятных возможностей управления, которыми обладает инверсная кинематика (Inverse Kinematics — IK), обеспечивающая вращение суставов по цепи. В случае прямой кинематики каждый сустав просто поворачивается вручную, как это было сделано в предыдущем разделе с примером скелета. При повороте корневого суста ва цепи (например, плечевого сустава) вращательное движение передается по цепи сус тавов дальше вниз и перемещает все дочерние суставы. На рис. 8.9 представлена создан ная в предыдущем разделе структура руки с повернутым суставом плеча. Хотя создать такое движение относительно несложно и в Майя просто рассчитать его, для располо женных ниже по цепи суставов оно недостаточно точное. Если, например, необходимо прикоснуться запястьем к другому объекту, то сначала необходимо повернуть плечо, по том локоть, а потом, возможно, настроить поворот обоих суставов так, чтобы в точности
Постановка и оснащение персонажа
315
получить необходимое движение. И этот способ не только занимает больше времени для перемещения конечности. Так как вращение корневого сустава иерархии перемещает всю иерархию, в этом примере сустав запястья будет перемещаться при перемещении любых других расположенных выше по иерархии суставов, в результате чего по ходу анимации он будет плавно двигаться вокруг своей оси. Такой эффект определенно неже лателен, а управление им занимает много времени и сил. С другой стороны, прямая ки нематика идеальна для создания дугообразных движений, как у рук при плавании или ног при выполнении гимнастического упражнения "колесо", так что это средство имеет смысл держать в арсенале оснащения персонажей. В то же время инверсная кинематика намного более сложная математически, но вместе с тем предусматривает точную регулировку суставов конечностей и, когда остальная часть иерархии уже установлена, помогает управлять движением этих суставов. В инверсной ки нематике движение сустава конечности (на самом деле управляющего положением сустава маркера (handle)) приводит к повороту суставов вверх по цепи, поэтому движение распро страняется по цепи в обратном (backward), или инверсном (inverse), направлении. Инверсная кинематика использует маркеры инверсной кинематики (IK handle), или просто маркеры IK, и решатели инверсной кинематики (IK solver), или просто решатели IK. Маркер инверсной кинематики проходит по суставам, на которые распространяется его влияние, эти суставы называют цепью управляемой инверсной кинематикой (IK chain), и сквозь эту же цепь проходит линия маркера (handle wire). Управляющий вектор (handle vector) выходит из начального сустава и заканчивается в конечном, в ко тором располагается конечный исполнительный элемент (end effector). После добавления решателя IK в рассмотренную в предыдущем примере цепь суставов можно будет анимировать простым перемещением сустава запястья. При этом плечо и локоть будут вра щаться так, чтобы вся рука двигалась правильно, как показано на рис. 8.10.
Рис. 8.9. Прямая кинематика: при повороте сустава, старшего в иерархии, перемещается вся цепь суставов
Рис. 8.10. Перемещение цепи суставов с помощью перемещения копечного исполнительного элемента маркера инверсной кинематики
Чтобы выполнить правильный поворот всех суставов (от начального до конечного) цепи, управляемой инверсной кинематикой, при котором конечный сустав окажется на месте конечного исполнительного элемента, решатель IK обращается к позиции конеч ного исполнительного элемента цепи и выполняет необходимые вычисления. Когда ко нечный исполнительный элемент перемещается, решатель IK преобразует значения его перемещений в значения поворотов суставов и суставы соответственно обновляются. Обычно управляемая инверсной кинематикой цепь распространяется только на три сус-
316
Глава 8
тава, но суставов в ней может быть и больше, особенно если используется маркер инверс ной кинематики сплайна (IK Spline handle), который управляет лежащими в его основе суставами с помощью кривой. Среди реализованных в Maya решателей инверсной кине матики можно выделить четыре (и соответствующие типы инверсной кинематики): ре шатель ikrP для расчета инверсной кинематики вращения плоскости (IK r o t a t e Plane), решатель ikSC для расчета инверсной кинематики простой цепи (IK Single Chain), реша тель ikSpline для расчета инверсной кинематики сплайна (IK Spline) и решатель ikSpring для расчета инверсной кинематики пружины (IK Spring). Каждый тип реша теля IK имеет собственный тип маркера IK.
Использование решателя i k r P Поскольку решатель (solver) ikrP придется, вероятно, использовать чаще всего, рас смотрим его работу в первую очередь. При выполнении нижеследующих шагов в качестве ориентира используйте рис. 8.11, на котором представлены компоненты решателя ikrP.
Диск поворота Опорный вектор Индикатор плоскости суставов
Вектор маркера
Конечный исполнительный элемент Диск кручения
Рис. 8.11. Компоненты решателя ikrP 1. В виде сбоку, используя инструмент Skeleton => Joint Tool (Скелет => Инструмент сус тав), постройте простую цепь суставов или используйте цепь суставов из предыду щих примеров. (После создания суставов скелета переключитесь снова на перспек тивное представление.) 2.
Выберите пункт меню Skeleton => IК Handle Tool • (Скелет => Инструмент маркера IK • ) , установите параметры инструмента, заданные по умолчанию и выберите ре шатель i k r P S o l v e r из контекстного меню Current Solver (Текущий решатель).
3.
Создайте маркер IK, щелкнув сначала на первом суставе, а потом на последнем. Ок ружность вверху выглядит трудной для понимания (см. рис. 8.11), но в действитель ности она достаточно простая, если разобраться в ее компонентах.
Решатель ikrP вычисляет только позицию конечного исполнительного элемента, а это означает, что он игнорирует значения его поворотов. По умолчанию решатель ikrP
Постановка и оснащение персонажа
317
поворачивает суставы так, что их локальные оси Y остаются лежать в одной плоскости, их локальные оси X указывают на центр костей, а локальные оси Z перпендикулярны на правлению изгиба. Если диск поворота (rotate disc) не виден, выделите маркер IK, а для выбора инструмента Show Manipulator (Показать манипулятор) нажмите клавишу < Т > . Плоскость, вдоль которой сгибаются суставы, представлена индикатором плоскости (plane indicator). Саму плоскость называют плоскостью цепи суставов (joint chain plane). Эту плоскость можно поворачивать вокруг управляющего вектора с помощью диска кру чения (twist disc), который вращает цепь, управляемую инверсной кинематикой. Угол кручения (twist degree) измеряется относительно базисной плоскости (reference plane), образованной управляющим вектором и опорным вектором (pole vector), который можно перемещать и для которого можно устанавливать ключевые кадры. Иногда при установ ленной по умолчанию базисной плоскости выбранный для сгиба руки способ может при вести к перевороту (flip) управляемой инверсной кинематикой цепи. Чтобы избежать этого, отрегулируйте или анимируйте опорный вектор. По сравнению с решателем ikSC решатель ikrP лучше тем, что позволяет точнее управлять поворотом цепи. Недостаток решателя ikrP заключается в том, что он имеет больше управляющих компонентов, а следовательно, замедляет расчет и обновление сцены, хотя с учетом современных быстродействующих процессоров это уже не слишком большая проблема. Кроме того, решатель ikrP переворачивается, когда конечный ис полнительный элемент переходит плоскость верхнего сустава (это связано с математиче скими особенностями в вычислениях решателя RP Майя). Хотя переворот решателя ikrP может частично контролироваться полярно-векторным ограничителем, трудности в использовании решателя ikrP все еще остаются. Поскольку плоскость вращения бло кируется решателем SC, это не проблема. Но так как решатель SC не позволяет повер нуть плоскость цепи суставов, это не очень удобно в случаях, когда необходимо создать универсальные суставы, такие как плечевой или бедерный сустав человека.
Использование решателя iksc Решатель ikSC проще решателя ikrP. Чтобы убедиться в этом, проведем с ним не сколько экспериментов. 1. Перейдите в вид сбоку и создайте еще одну простую цепь суставов или выделите и удалите маркер вращения плоскости инверсной кинематики. 2. Как и ранее, выберите пункт меню Skeleton => IK Handle Tool • (Скелет => Инструмент маркера IK • ) , но на этот раз для параметра Current Solver (Текущий решатель) выбери те значение ikSCsolver. Закройте окно параметров. 3. Щелкните на первом суставе, а затем на последнем. В результате этих действий поя вится маркер инверсной кинематики простой цепи. 4. Выберите инструмент r o t a t e (Поворот) и попытайтесь повернуть маркер IK. Будет заметно, вращение маркеров поворота локальных осей X и Y (вокруг локальной оси Z) не оказывает никакого воздействия, т.е. отпущенные маркеры сразу же воз вращаются в прежнее положение. В решателе ikSC нет дополнительных манипуляторов — все контролируется самим маркером IK, а потому, если для выбора инструмента Show Manipulator (Показать мани пулятор) нажать клавишу < Т > , ничего не появится. Этот решатель вычисляет значения поворотов конечного исполнительного элемента и поворачивает управляемую инверс-
Глава 8
318
ной кинематикой цепь так, чтобы все суставы цепи имели установленную по умолчанию локальную ориентацию. Несмотря на то что плоскость цепи суставов не представлена в составе маркера визуально, решатель i k S C ей все-таки обладает, но она не предоставляет никакого контроля над ним: суставы блокированы в той плоскости вращения, в которой был создан манипулятор IK. Подобно решателю i k r P , эта плоскость рассекается цепью так, что на ней расположены локальные оси X и Y суставов (рис. 8.12). В редакторе атрибутов на вкладке решателя i k S C в раскрывающемся разделе IK Handle Attributes (Атрибуты маркера IK) есть параметр Priority (Приоритет). Для цепи суставов, управляемой инверсной кинематикой рассматриваемого типа, можно устанав ливать приоритет (Priority). Когда некоторые суставы входят сразу в несколько цепей, порядок вычисления определяется именно приоритетом. Первой поворачивает суставы цепь с приоритетом 1, затем цепь с приоритетом 2 и т.д. Параметр РО Weight (Весовой коэффициент позиции и ориентации) определяет весовой коэффициент позиции и ори ентации маркера. Если весовой коэффициент равен 1, то конечный исполнительный элемент стремится достичь только позиции маркера; если весовой коэффициент равен О, то конечный исполнительный элемент пытается достичь только ориентации маркера. Для этого параметра следует оставить его значение по умолчанию — 1. Преимущество применения решателя i k S C заключается в том, что для управления цепью достаточно использовать маркер IK. Если большое количество поворотов управ ляемой инверсной кинематикой цепи не требуется, например при повороте пальцев ноги, то такой способ создания анимации наиболее экономный.
Использование маркера сплайнового решателя У маркеров инверсной кинематики вращения плоскости и простой цепи похожие ат рибуты, а вот маркер инверсной кинематики сплайна достаточно сильно отличается от них своим принципом действия. Сплайновый решатель инверсной кинематики (IK Spline solver) в качестве части своего маркера принимает кривую NURBS и поворачивает управляемую инверсной кинематикой цепь так, чтобы она следовала за кривой. При этом в анимации принимают участие контрольные вершины кривой, а не конечный ис полнительный элемент. Маркер сплайна инверсной кинематики идеально подходит для анимации изгибающихся или закручивающихся форм, таких как хвосты, позвоночники, змеи или щупальца. Давайте на практике опробуем этот тип маркера IK. 1.
В виде сбоку постройте цепь суставов, как показано на рис. 8.13, слева. При создании маркеров инверсной кинематики сплайна суставы могут быть выстроены в прямую линию, но, чтобы гарантировать плавность движения цепи, кости следует сделать короткими.
2.
Выберите пункт меню Skeleton => IK Spline Handle Tool • (Скелет => Инструмент маркера сплайна IK •) и в появившемся окне параметров установите переключатель Number Of Spans (Количество звеньев) в положение 4. Для остальных параметров оставьте значения по умолчанию и закройте окно.
3.
Щелкните сначала на корневом суставе иерархии, а затем на последнем, чтобы поя вился маркер инверсной кинематики сплайна.
4.
В иерархической структуре выделите цепь суставов или маркер IK и попробуйте пе реместить суставы. В результате этих действий суставы будут прикреплены к кри вой, и манипулятор для маркера IK не отобразится.
319
Постановка и оснащение персонажа
Рис. 8.12. Решатель ikSC 5.
Рис. 8.13. Цепи суставов и маркер инверсной кинематики сплайна
Выделите кривую, отобразите ее контрольные вершины и переместите их так, как показано на рис. 8.13, справа.
Также можно создать собственную кривую NURBS и заставить маркер инверсной кинема тики сплайна использовать ее. В окне параметров инструмента IK Spline Handle (Инструмент маркера сплайна IK) сбросьте флажок Auto Create Curve (Автоматическое создание кривой). Чтобы создать маркер сплайна IK, щелкните сначала на корневом суставе (root joint), затем на конечном суставе, а после этого на кривой. 6.
Выделив маркер IK, откройте редактор атрибутов. В его окне, кроме стандартных ат рибутов маркера IK, отображается и несколько специфичных для маркера сплайна IK атрибутов. В качестве эксперимента попробуйте вводить в поля ввода параметров Offset (Смещение), r o l l (Вращение) и Twist (Кручение) раздела IK Solver Attributes
(Атрибуты решателя IK) различные значения. Изменение значения параметра Offset (Смещение) перемещает цепь суставов вдоль кривой, причем значение 0 . О считается началом кривой, а 1. О — ее концом. При из менении значения параметра r o l l (Вращение) поворачивается вся цепь. А при измене нии значения параметра Twist (Кручение) цепь постепенно закручивается, начиная со второго сустава. При установленном флажке r o o t Twist Mode (Режим кручения кор невого сустава) закручивание цепи начинается с корневого сустава. Установленный флажок r o o t On Curve (Корневой сустав на кривой) привязывает расположение кор невого сустава к кривой. Сняв его, можно отодвинуть корневой сустав от кривой (рис. 8.14), но обратите внимание на то, что при небольшом удалении остальная часть цепи остается на кривой.
Использование решателя i k S p r i n g Решатель инверсной кинематики ikSpring обеспечивает более предсказуемое дви жение цепей, состоящих из множества суставов. Для ноги паука или состоящей из мно жества суставов руки робота стандартный маркер IK может оказаться непригодным (он может допускать сгибание суставов в странных направлениях или непропорционально), а маркер IK пружины стремится придать цепи суставов вид, больше похожий на сверх-
320
Глава 8
гибкое щупальце осьминога, чем на жесткую, состоящую из множества суставов руку. В такой ситуации на помощь приходит решатель ikSpring, предоставляющий большие возможности по управлению пропорциональным перемещением цепей, состоящих из множества суставов. Перед использованием решателя ikSpring его необходимо загру зить с помощью соответствующей команды MEL. В командной строке (или редакторе сценариев) введите команду ikSpringSolver. Это запустит решатель, установит его в окно параметров IK Handle Tool Settings (Параметры маркера инструмента инверсной кинематики) и сделает значением по умолчанию в контекстном меню Current Solver (Текущий решатель). Эта команда будет введена только один раз, Maya способна запом нить предпочтения пользователя и в будущем автоматически загружать этот решатель. Перед использованием этого решателя создайте сначала скелет, состоящий из множе ства суставов. Можно создать что-то типа ноги паука, как на рис. 8.15, или что-то другое по своему усмотрению.
Рис. 8.14. Цепь суставов, перемещенная в сторону от кривой
Рис. 8.15. Соединенный суставами скелет типа ноги паука
Выберите пункт меню Skeleton => IK Handle Tool • (Скелет => Инструмент маркера IK •) и в окне параметров инструмента для параметра Current Solver (Текущий реша тель) выберите значение ikSpringSolver. Чтобы создать новый маркер инверсной ки нематики пружины, щелкните на первом суставе, затем на последнем. Результат должен напоминать рис. 8.16. При перемещении маркера IK все суставы будут двигаться предсказуемо и пропорцио нально (рис. 8.17). При желании увидеть различие между этим решателем и обычным реша телем ikrP попробуйте скопировать цепь суставов и применить к ней решатель ikrP. При движении рассматриваемой версии цепи будет заметно, что сжимающее движение (compression movements) с использованием решателя ikrP перегибает цепь сильнее. Большие возможности управления суставами для решателя i k S p r i n g заключа ются в том, что он позволяет управлять сгибанием каждого сустава в ответ на пере мещение маркера. Для этого Maya предоставляет графический интерфейс настройки реакции каждого сустава в цепи. При выделенном маркере IK откройте редактор ат рибутов (с помощью комбинации клавиш < C t r l + A > ) , перейдите на вкладку маркера i k H a n d l e l и последовательно раскройте раздел IK Solver Attributes (Атрибуты реша-
321
Постановка и оснащение персонажа
теля IK) с его подразделами IK S p r i n g Solver Attributes (Атрибуты решателя i k S p r i n g ) и Spring Angle Bias (Систематическое отклонение угла пружины). В по следнем из указанных подразделов содержится график, который можно использо вать для модификации чувствительности каждого сустава как в числовой форме (с помощью поля ввода слева), так и графически, захватывая каждую точку и пере мещая ее вверх или вниз (каждая точка представляет сустав, причем прохождение по графику слева направо соответствует убыванию старшинства суставов в иерар хии). Чем выше по графику расположен сустав, тем больше он поддается влиянию движения маркера. Таким образом, значение 0 приведет любой сустав к тому, что он вообще не будет двигаться в ответ на движение маркера. После некоторой корректи ровки график может приобрести вид, похожий на рис. 8.18.
Рис. 8.16. Нога паука, управляемая решателем ikSpring
Рис. 8.17. Перемещение цепи суставов с использованием решателя ikSpring
Рис. 8.18. Корректировка графика Spring Angle Bias решателя ikSpring
Решатель инверсной кинематики человека ( h i k ) Решатель инверсной кинематики человека (human IK solver — h i k ) — решатель, весь ма отличный от предыдущих, он может быть использован только вместе с установкой ин версной кинематики всего тела (Full Body IK — FBIK), которая подробно рассматривает ся в разделе "Практика: создание скелета" далее в этой главе. Решатель h i k позволяет связывать с одним узлом инверсной кинематики несколько конечных исполнительных элементов, в то время как для остальных решателей требуется связь "один к одному" (one-to-one). Поскольку невозможно создавать решатель IK человека без использования системы FBIK Майя, отложим пока обсуждение этого вопроса.
322
Глава 8
Переключение между прямой и инверсной кинематикой Maya позволяет переключаться в обоих направлениях между использованием марке ров решателей ikrP и ikSC, а также между использованием прямой и инверсной кине матики, более того, их движения можно даже смешивать друг с другом. Чтобы переклю чить или смешать в цепи суставов инверсную кинематику с прямой, достаточно откор ректировать атрибут. ikBlend маркера IK. Давайте поэтапно пройдем процесс переключения между прямой и инверсной кинематикой, используя простую трехсуставную постановку руки. 1. Создайте скелет руки, состоящий из трех суставов, а также маркер IK с решателем ikrP для него. 2.
На первом кадре установите для маркера IK ключевой кадр, перейдите к кадру 10, переместите маркер IK и установите новый ключевой кадр. Чтобы установить ключевой кадр, выделите каналы, для которых следует установить ключевой кадр (в данном случае атрибуты перемещения), щелкните правой кнопкой мыши и в появившемся маркированном контекстном меню выберите пункт Key Selected (Установить ключевой кадр для выбранного).
3.
В панели каналов (текущий кадр — 10-й) установите ключевой кадр для значения 1 атрибута ikBlend.
4.
Перейдите к кадру 15, присвойте атрибуту ikBlend маркера IK значение 0 и уста новите для него ключевой кадр. Через шесть кадров после кадра 10, т.е. с кадра 15, движение руки перейдет от инверсной кинематики (управляемой маркером IK) к прямой кинематике (управляемой поворотами отдельных суставов).
5.
Вернитесь к кадру 10. Выделите два верхних сустава управляемой инверсной кине матикой цепи и установите для них ключевой кадр. Перейдите к кадру 20, поверните суставы по отдельности, а затем установите для них ключевой кадр.
Воспроизведите полученную анимацию. (Возможно, чтобы лучше рассмотреть дви жение, ее придется воспроизвести вручную, проходя по кадру.) Будет заметно, что на протяжении первых десяти кадров цепь суставов поворачивается вслед за маркером IK, а затем, на протяжении следующих пяти кадров, она должна плавно перейти в движение поворотами отдельных суставов и в конце окончательно следовать движению поворотов суставов, оставляя маркер IK позади (по крайней мере, если был соответственно уста новлен атрибут Stickiness), как показано на рис. 8.19. Через несколько кадров можно снова установить ключевой кадр для атрибута ikBlend (со значением 1), после чего суставы будут поворачиваться обратно к позиции маркера IK. При смешении инверсной и прямой кинематик можно увидеть две цветные линии и цепь суставов: цепь FK (прямой кинематики) и цепь IK (обратной кинематики) обозначены ли ниями, в то время как полученная в результате смешанная цепь остается где-то между двумя выстроенными цепями. Это троякое представление позволяет увидеть, как при создании ре зультирующей цепи смешиваются цепи, управляемые различными кинематиками. Размер представления этих суставов можно изменить, выбрав пункт меню Display => Animation => IK/FK Joint Size (Представление => Анимация => Размер суставов IK/FK).
Постановка и оснащение персонажа
323
Рис. 8.19. Различные позиции скеле тов прямой и инверсной кинемати ки, полученные в конечной позиции смешанной цепи суставов Следует упомянуть, что при взаимном переключении между прямой и инверсной кинематиками движения, порожденные поворотами суставов, и соответствующие ключе вые кадры конечного исполнительного элемента не всегда совпадают. Они примерно одинаковые, но иногда анимацию конечного исполнительного элемента необходимо под страивать. Установка предпочтительного угла Если создать цепь суставов вдоль прямой линии, то решатели ikSC и ikrP не смогут в ы числить и согнуть цепь. Чтобы исправить эту проблему, сначала исказите цепь, повернув дочерний сустав (суставы), — тут достаточно даже доли градуса. Затем выберите пункт ме ню Skeleton => Set Preferred Angle (Скелет => Установить предпочтительный угол) или щелкните правой кнопкой мыши и выберите в появившемся контекстном меню пункт Set Preferred Angle (Установить предпочтительный угол). Удалите цепь и создайте новую. Теперь реша тели ikSC и ikrP смогут согнуть цепь. Тем не менее лучше всего с самого начала создавать все цепи суставов с небольшим сгибом.
Практика: создание скелета Наилучший способ изучить оснащение персонажа — это осуществить его на практи ке. Остальная часть этой главы будет посвящена созданию скелета с элементами управ ления и правильной привязке к нему геометрической формы. Первый этап создания оснастки — это планирование работы. Разработаем пример оснастки для модели персонажа Машизмо, созданной в предыдущих главах. Чтобы получить завершенную, готовую к оснащению модель, можно либо использовать собственную модель, либо открыть имеющийся на прилагаемом компакт-диске файл MachismoGeo. ma. Машизмо — это массивный и более чем мускулистый персонаж, а по тому в процессе привязки геометрической формы к скелету следует обратить особое внимание на области торса и рук. Кроме того, ему необходимо управление отдельными пальцами. Но поскольку он носит обувь, то для каждой его ступни будет достаточно про стой цепи, состоящей из одного сустава.
324
Глава 8
Создание прототипа структуры скелета с использованием кривых Сразу после определения общего направления компоновки скелета Машизмо можно было бы немедленно приняться за работу и начать его создание. Тем не менее такой ме тод создания скелета чреват потенциальными проблемами, наибольшая из которых за ключается в.том, что при создании сложного скелета правильно расположить все суста вы с первого раза почти невозможно. Когда без перемещения суставов их невозможно правильно подогнать к геометрической форме, возникает проблема осей поворота, при водящая впоследствии (при привязке и анимации персонажа) ко всякого рода трудно стям. В дополнение при построении скелета запросто можно забыть создать какой-то сустав — и это также в дальнейшем может стать причиной проблем. В Maya существует множество способов предварительного создания скелета; тут будет создан комплект кри вых для каждой важной части скелета (ноги, руки, позвоночника и т.д.), используемый в качестве ориентира при построении полнофункционального скелета. Поскольку точки кривой можно свободно перемещать, а расположение кривых можно наблюдать в окне сцены, а также потому, что скелет можно привязать к кривой, выбранный метод преду сматривает быстрое и точное создание скелета, как только кривые будут правильно раз мещены внутри геометрических форм. ЕСЛИ оси вращения сустава не совпадают с костью, то при вращении дочерних суставов он не будет вращаться вокруг кости, что приведет к необходимости контроля движения при анимации. Работа специалиста по оснастке заключается в том, чтобы упростить, а не ус ложнить анимацию, поэтому следует создавать оснастки без проблем с вращением. Таким образом, дополнительное время, потраченное на создание кривых прототипа скелета, ста нет залогом успеха.
Для создания опорного комплекта кривых потребуется всего лишь пара настроек. Сначала выберите пункт меню Create => EP Curve Tool • (Создать => Инструмент кривой ЕР •) и в открывшемся окне параметров инструмента установите переключатель Curve Degree (Степень кривой) в значение 1 Linear ( 1 , линейная). В этом случае каждый щел чок мышью будет одновременно определять точку кривой и контрольную вершину; по скольку дальше планируется использовать сценарий, размещающий суставы в кон трольных вершинах, то такой первый шаг просто необходим. Для удобства выделения и перемещения кривых из всех установленных масок выделения объектов сцены оставьте только выделение кривых. (Для этого в строке состояния щелкните на черном направ ленном вниз треугольнике и в появившемся контекстном меню выберите пункт АLL Objects Off (Отключить все маски выделения объектов)), а затем, чтобы разрешить вы деление только кривых, щелкните на пиктограмме Curves (Кривые).) Возможно, для удобства просмотра кривых внутри тела Машизмо следовало бы установить режим рент геновского тонирования (для чего в меню панели выберите пункт Shading => X - r a y (Тонирование => Рентген)). Создать набор опорных кривых так же просто, как выбрать инструмент ЕР Curve (Кривая ЕР) и, щелкая мышью, пройти вдоль рук, спины, ног, пальцев и т.д., создавая при этом кривую для каждой важной части скелета. Как только будет получено базовое размещение каждой кривой, перейдите в режим выделения компонентов (нажмите клавишу < F 8 > ) и перемещайте каждую точку кривой до тех пор, пока она не займет необходимую позицию. Для текущего скелета посередине каждой верхней и ниж-
Постановка и оснащение персонажа
325
ней части руки и ноги были добавлены суставы вращения (roll joint); эти суставы м о ж н о использовать для закручивания кожи вдоль предплечий и икр (они добавлены для пол ноты скелета). Эти дополнительные суставы м о ж н о было и не включать. В качестве справки м о ж н о открыть имеющийся на прилагаемом компакт-диске файл M a c h i s m o SkelCurves .ma. По окончании должен получиться набор кривых, аналогичный пока занному на рис. 8.20.
Рис. 8.20. Набор опорных кривых для скелета Машизмо Для того чтобы ускорить дальнейший рабочий процесс, кривым следует подобрать подхо дящие имена. Поскольку инверсная кинематика всего тела может быть построена исходя из имен суставов, очень важно точно называть кривые (а следовательно, и суставы). (В качестве альтернативы перед применением к скелету инверсной кинематики всего тела, суставам мож но присвоить метки (label).) Назовите кривые следующим образом: SpineCurve (Кривая позвоночника), LeftLegCurve (Кривая левой ноги), rightLegCurve (Кривая правой но ги), LeftFootCurve (Кривая левой ступни), right Foot Curve (Кривая правой ступни), LeftArmCurve (Кривая левой руки), rightArmCurve (Кривая правой руки), LeftHandThumbCurve (Кривая большого пальца левой руки), LeftHandlndexCurve (Кривая указательного пальца левой руки), LeftHandMiddleCurve (Кривая среднего пальца левой руки), LeftHandringCurve (Кривая безымянного пальца левой руки), LeftHandPinkyCurve (Кривая мизинца левой руки), rightHandThumbCurve (Кривая большого пальца правой руки), rightHandlndexCurve (Кривая указательного пальца правой руки), rightHandMiddleCurve (Кривая среднего пальца правой руки), rightHandringCurve (Кривая безымянного пальца правой руки), rightHandPinkyCurve (Кривая мизинца пра вой руки) и JawCurve (Кривая челюсти). Удостоверьтесь, что имена введены точно, как здесь (включая верхний и нижний регистр): эти имена будут использованы в сценарии, который в следующем разделе проделает большую часть работы по созданию скелета. Важность и м е н о в а н и я элементов
Именуйте в оснастке все, особенно такие кажущиеся несущественными элементы, как эти кривые, используемые для создания скелета. Это вовсе не пустая трата времени: небольшие дополнительные усилия по именованию позже помогут существенно сэкономить время. Не сделав этого, придется потратить уйму времени на попытки вычислить, что такое сустав
326
Глава 8
joint143 и почему он расположен именно там, где расположен. Но если назвать его leftupArm (верхний сустав левой руки), то будет точно известно предназначение этого сус тава, а также, почему он занимает свое место. Вдобавок именование всех элементов оснастки является способом ее самодокументации: выделение любого узла оснастки уже только по од ному его имени позволит узнать назначение узла. Такая самодокументация бесценна как для специалиста по оснащению в конце работы над оснасткой, так и для анимации персонажа.
Создание скелета Сейчас есть два способа создания скелета. Можно выбрать инструмент Joint (Сустав), включить привязку к кривым (щелкнув в строке состояния на кнопке Snap To Curves (Привязка к кривым)), разместить суставы на кривых, а затем присво ить им имена, руководствуясь табл. 8.1. Но зачем же тратить столько времени и усилий на то, что может выполнить сценарий MEL? На прилагаемом к книге компакт-диске найдите файл сценария d r a w B a s e . m e l и загрузите его (в окне редактора сценариев Script Editor выберите пункт меню File => Source Script (Файл => Загрузить сценарий)). За тем выделите все кривые, введите в командной строке команду d r a w B a s e и нажмите клавишу <Enter>. Вуаля! По большей части созданный и правильно именованный ске лет готов к использованию (рис. 8.21). Если при выполнении процедуры d r a w B a s e воз никли какие-то ошибки, то наиболее вероятная их причина кроется в неправильных именах кривых; поэтому загляните в предыдущий раздел и еще раз проверьте их, чтобы удостовериться в правильности именования (не забывайте, что в языке MEL регистр имеет значение). При желании создать скелет вручную, добавить или изменить какой-то из его суставов, воспользуйтесь приведенным в табл. 8.1 полным списком имен суставов, поддерживаемых постановкой FBIK.
Рис. 8.21. Применение сценария drawBase. mel позволило создать скелет автоматически! Несмотря на то что большая часть скелета уже создана, кое-что еще осталось сделать. Во-первых, суставам на кривой позвоночника/головы могли быть при своены неправильные имена: количество созданных разработчиком спинных и шейных суставов (т.е. контрольных вершин соответствующей кривой) невозможно знать загодя, поэтому имена большинства суставов в области шеи и головы, скорее всего, окажутся
Постановка и оснащение персонажа
327
неправильными. Перейдите к первому суставу шеи и переименуйте его в Neck. Второй сустав шеи (если таковой имеется) должен стать Neckl, третий — Neck2 и т.д. Первый сустав головы должен получить имя Head, второй — Headl и т.д. (Постановка FBIK рас познает только первый сустав головы Head, но в области головы их можно разместить сколько угодно.) Во-вторых, используя подчинение, из отдельных частей скелета необ ходимо собрать полный иерархический скелет. Например, выделите сустав LeftUpLeg, нажав клавишу <Shift>, выделите сустав Hips и, чтобы подчинить первый выделенный сустав второму, нажмите клавишу < Р > . Продолжайте обход скелета, связывая его не подчиненные разделы. В конце процесса при выделении сустава Hips должны подсвечи ваться все кости скелета (т.е. сустав Hips должен стать старшим суставом иерархии). (Если этого не произошло, подчините зависший раздел основному скелету.) В конце скелет должен принять вид, показанный на рис. 8.22. В качестве справочной информации можно обратиться к имеющемуся на компакт-диске файлу M a c h i s m o S k e l e t o n . т а .
Рис. 8.22. Полный иерархический скелет Как видно в табл. 8.1, в Майя система построения FBIK может идентифицировать об рабатываемые части тела по именам их суставов. Кроме того, в процессе построения FBIK для обозначения создаваемых частей тела можно использовать не только имена суставов, но и метки (label). Преимущества и недостатки, связанные с каждым методом идентификации суставов, таковы: именование суставов предусматривает намного боль ший диапазон суставов (например, leftArmroll), чем метки суставов; но если у студии уже есть определенная система именования суставов, то использование меток вместо имен суставов позволит продолжить рабочий процесс, не нарушая текущие соглашения по именованию. В связи с отсутствием соглашения об именовании будем использовать схему с име нами суставов. Если же более предпочтительно использование меток суставов, то выде лите некий сустав (например, сустав leftArm), выберите пункт меню Skeleton => Joint Labelling => Add FBIK Labels => Label Left (Скелет => Разметка сустава => Добавить метки FBIK => Разметить левую часть). Таким образом, далее будут ставиться метки для левой стороны персонажа, а потому этот этап (или аналогичный для правой стороны или цен тра) достаточно выполнить для стороны персонажа только один раз. Затем из того же
328
Глава 8
меню Skeleton => Joint Labelling => A d d FBIK Labels выберите пункт Label Shoulder
(Отметить плечо). В качестве альтернативы можно выделить сустав, открыть редактор атрибутов, раскрыть раздел Joint (Сустав), а затем раздел Joint Labelling (Разметка сус тава) и из раскрывающегося списка Side (Сбоку) выбрать вариант Left (Левая), а из рас крывающегося списка Туре (Тип) — вариант A r m (Рука). Таблица 8 . 1 . Корректные имена для всех возможных суставов в постановке FBIK
Любой способ даст одинаковый результат; выбирайте тот, который наиболее эффек тивен в конкретной ситуации. Процедура drawBase из сценария drawBase.mel при сваивает каждому суставу не только правильное имя, но и правильную метку, так что в следующем разделе можно использовать каждый из приведенных способов создания реализации системы инверсной кинематики всего тела. Если хотите использовать метки суставов, измените метки в области шеи и головы скелета так же, как это делалось ранее для переименования суставов вручную.
Постановка и оснащение персонажа
329
Хотя это может быть и не столь очевидным, но многие из только что созданных суставов имеют обратную (inverted) или безосевую (off-axis) ориентацию: ось Y отдельных суставов может быть направлена в непредсказуемом направлении, не согла суясь с другими суставами. Возможно, это и не покажется большой проблемой, но отсут ствие однообразия ориентации суставов приведет к трудностям при оснащении и анима ции, поэтому сейчас необходимо устранить эту проблему. К счастью, был написан сцена рий MEL, который показывает ориентацию сустава (его локальных осей вращения) и предоставляет несколько удобных способов решения всех трудностей, связанных с ориента цией. Запустите имеющийся на прилагаемом компакт-диске сценарий jointFlip.mel (в окне редактора сценариев выберите пункт меню File => Source Script (Файл => Загрузить сценарий)). Затем, чтобы выполнить определенную в сценарии процедуру jointFlip, интерфейс которой приведен на рис. 8.23, введите в командной строке команду j o i n t F l i p и нажмите клавишу <Enter>. Если пользователь предпочитает использовать встроенные инструменты Майя, то он может использовать инструмент Orient Joint (Ориентация суставов), доступный после выбора в наборе меню Animation (Анимация) пункта Skeleton => Orient Joint • (Скелет => Ориентация суставов), который работает ана логично сценарию jointFlip. Фактически, поскольку каждый инструмент имеет эле менты, отсутствующие у других, используя сразу оба средства, можно решить даже наи более трудные проблемы ориентации суставов.
Puc. 8.23. Окно пользовательского ин терфейса, предоставляемое процедурой joint Flip сценария jointFlip.mel Проблемы, связанные с несовместимой ориентацией суставов, проявляются при их повороте, образующем кривую в виде буквы "S". Если создать последовательность суста вов наподобие приведенной на рис. 8.24, слева, выделить все суставы цепи (а не только корневой сустав) и повернуть их, то получится кривая в виде сжатой буквы "S". Несмот ря на то что в некоторой степени этот эффект можно преодолеть, вполне заметно, что не которые суставы повернулись влево (против часовой стрелки), а другие — вправо (по ча совой стрелке). Это заставляет аниматора и специалиста по оснащению компенсировать обратное вращение некоторых суставов (т.е. вращать против часовой стрелки, чтобы по лучить вращение по часовой стрелке), что усложняет оснащение и анимацию. Кроме то го, локальные оси Y некоторых суставов могут выйти из общей плоскости под непонят ным углом, например отклониться на 30° от оси. Это может привести к еще более стран ному поведению и разрушить оснащение персонажа. Получить совместное вращение суставов можно коррекцией их локальных осей вращения, в результате которой оси Y и Z станут однонаправленными. На рис. 8.24, справа все суставы вращаются в направлении по часовой стрелке, что и требовалось.
330
Глава 8
а
6
в
Рис. 8.24. Вращение цепи суставов (а) с различной ориентацией (б) и с оди наковой ориентацией (в) Выделив скелет Машизмо, выполните из командной строки процедуру j o i n t F l i p . Эта процедура позволяет выделить в окне сцены => целый скелет или только какой-то его раздел (например, руку), отобразить оси вращения, перемещаться вверх и вниз по ие рархии и изменить ориентацию любого сустава. Для каждой цепи суставов (спины, руки, ноги и т.д.) важно расположить оси Y и Z в одном направлении, как на рис. 8.25. Обрати те внимание на то, что ориентация последнего сустава цепи (например, последнего сус тава пальца) несущественна, так как его вращение ни на что не влияет. Когда все оси вращения различных частей скелета обращены в одном направлении, скелет готов к ос нащению и созданию оболочки.
Рис. 8.25. Корректировка локальных осей вращения суставов Машизмо для обеспече ния совместимости ориентации всех частей
Добавление к скелету инверсной кинематики всего тела Появление системы инверсной кинематики всего тела чрезвычайно упростило созда ние скелета, движение которого напоминает движение человека. Инверсная кинематика всего тела является прямым наследием программного обеспечения Motion Builder. Те перь система Motion Builder интегрирована в Майя в виде первоклассного дополнения, а не автономной программы (хотя, конечно, систему Motion Builder можно приобрести
Постановка и оснащение персонажа
331
как отдельное приложение компании Autodesk). Для тех, кто оснащал персонажи в Майя раньше, инверсная кинематика всего тела стала изменением парадигмы: система инверс ной кинематики всего тела (FBIK) основана на новом исполнительном элементе hikEffector (сокращение от human IK effector — исполнительный элемент инверсной кинематики человека), способном поддерживать несколько узлов. В то время как все ос тальные исполнительные элементы и маркеры IK допускают только один вход, исполни тельный элемент hikEffector в одном узле размещает все исполнительные элементы (стопы ног, кисти рук и т.д.). Эта новая схема данных делает возможным автоматическое реагирование элементов тела на манипулирование персонажем в окне сцены. Например, перемещение вверх и вниз тазобедренных суставов персонажа с FBIK приводит в соот ветствующее движение позвоночник, руки и ноги, чем не только создает реалистичную вторичную анимацию, но и упрощает работу аниматора. Используя систему инверсной кинематики всего тела, можно создать оснастку четвероно гих животных, а также "нестандартную" оснастку человека (например, с дополнительными пальцами рук или ног). Хотя тут основное внимание сосредоточено на создании стандарт ной двуногой оснастки, в документации Майя описывается создание и других типов оснасток. Если выбрать пункт меню Skeleton => Full Body IK => Get FBIK Example (Скелете Инверсная кине матика всего тела => Получить пример FBIK), то вполне можно получить типичную оснастку для четвероногого животного (или двуногого существа). Примеры содержат оснастки верблю да и человека.
Как только суставы будут правильно названы или получат правильные метки, созда ние системы инверсной кинематики всего тела не составит особого труда. Однако для достижения желаемого поведения системы, после ее создания, обычно приходится вы полнять несколько дополнительных действий. Для создания системы FBIK выделите корневой сустав скелета, а затем в наборе меню Animation (Анимация) выберите пункт меню Skeleton => Full Body IK => A d d Full Body IK • (Скелет => Инверсная кинематика всего тела => Добавить инверсную кинематику всего тела • ) . В окне параметров для переклю чателя Identify Joints (Идентифицировать суставы) выберите значение By Name (По имени), а для параметра Posture (Поза) оставьте значение Biped (Двуногая). Щелкните на кнопке A d d (Добавить), и через несколько секунд появится оснащенный скелет, как показано на рис. 8.26. Сразу после создания системы FBIK опробуйте работу с исполнительными элементами: захватите любую из прямоугольных оболочек или больших ок ружностей скелета (расположенных в кистях рук, ступнях ног, шее, голове и т.д.) и переместите их. Тело персонажа должно реагировать на это более или менее естест венными движениями. Обратите внимание, что при выделении исполнительного элемента FBIK все суставы, на которые он воздействует, становятся пурпурными. (Таким образом, при выделении исполнительного элемента H i p s E f f пурпурным становится весь скелет.) В качестве справки можно открыть прилагаемый на ком пакт-диске файл M a c h i s m o F B l K S t a r t . m a .
Настройка инверсной кинематики всего тела Хотя львиная доля работы по созданию оснастки уже сделана самим созданием сис темы FBIK, чтобы добиться правильного поведения имеющейся оснастки, все равно придется сделать еще несколько корректировок. Самая важная из них заключается в до бавлении вторичных исполнительных элементов к каждой пятке персонажа, что обеспе-
332
Глава 8
чит правильную анимацию переката ступни. Чтобы создать вторичный исполнительный элемент для левой ступни, выделите узел LeftFootEf f (прямоугольную оболочку во круг левой щиколотки) и из набора меню Animation (Анимация) выберите пункт Skeleton => Full Body IK => A d d Secondary Effector (Скелет => Инверсная кинематика всего
тела => Добавить вторичный исполнительный элемент). В результате вокруг щиколотки появится сфера, соответствующая узлу LeftFootEffPivot (этот узел можно переиме новать, например в LeftFootEffHeel). Переместите этот исполнительный элемент к пятке левой ноги, как показано на рис. 8.27.
Рис. 8.26. Добавление инверсной ки нематики всего тела к скелету Машизмо
Рис. 8.27. Правильно располо женный вторичный исполни тельный элемент пятки
Также можно уменьшить масштаб исполнительного элемента, чтобы привести его в соответствие с размерами остальных исполнительных элементов персонажа. Далее, пока выделен узел LeftFootEffHeel, для выбора исполнительного элемента выберите пункт меню Skeleton => Full Body IК => Activate Secondary Effector (Скелет => Инверсная
кинематика всего тела => Активизировать вторичный исполнительный элемент). Повто рите этот процесс для правой ноги и при этом следите за тем, чтобы в виде сбоку испол нительные элементы находились, насколько это возможно, на одной линии. Теперь при повороте вторичного исполнительного элемента будет видно, что каждая ступня враща ется вокруг пятки, обеспечивая тем самым корректное движение при ходьбе от пятки. Чтобы организовать шаг с правильным переходом с пятки на носок, необходимо создать еще по одному вторичному исполнительному элементу в подъеме каждой стопы. Следуя предыдущим этапам, добавьте вторичный исполнительный элемент к каждой ступне (переименуйте добавленные элементы в LeftFootEffBall и rightFootEffBall), рас положите каждый из них в подъеме соответствующей ступни и выберите. По окончании ступни должны выглядеть примерно так, как на рис. 8.28. После добавления этих двух исполнительных элементов при повороте первичного исполнительный элемента ступня будет перемещаться правильно. По умолчанию все персонажи с FBIK должны контактировать с полом, установлен ным на уровне сетки сцены (значение 0 по оси Y). Поскольку в настоящий момент ступ ни персонажа расположены именно на данном уровне, эти параметры корректировать не надо; но на них полезно взглянуть на тот случай, если когда-нибудь придется изменить уровень пола для создаваемого, персонажа. Чтобы увидеть контактные маркеры пола (floor contact marker), зачастую называемые просто контактными маркерами (contact marker), выделите узел HipsEff (корневой узел персонажа), а затем в панели каналов
Постановка и оснащение персонажа
333
для узла hikFloorContactMarkerl установите параметр Feet Contact (Контакт ступ ней) в значение On (Включено). (Убедитесь, что параметр Draw Feet Contact (Отображать контакт ступней) также имеет значение On (Включено).) В результате во круг каждой ступни должен появиться ряд прямоугольных оболочек, как показано на рис. 8.29. (Отображение контактных маркеров с полом для рук задает параметр Hands Contact (Контакт кистей).) Каждый набор из шести прямоугольных оболочек должен непосредственно окружать каждую ступню, определяя область, в которой ступни сопри касаются с полом.
Рис. 828. Добавление к ступням Машизмо вторичных исполнительных элементов пятки и подъема
Рис. 829. Отображение маркеров контакта с полом
Для настройки контактных маркеров не следует непосредственно манипулировать прямоугольными оболочками; вместо этого в панели каналов следует откорректировать значения атрибутов узла hikFloorContactMarkerl. Параметр Foot Height (Высота ступни) позволяет устанавливать высоту, на которой происходит контакт с полом; уве личение этого значения придаст скелету такой вид, как будто он стоит на более высоком основании. Другие параметры регулируют место расположения контактных маркеров вокруг ступни. Параметры Foot Back (Задняя часть ступни), Foot Middle (Средняя часть ступни) и Foot Front (Передняя часть ступни) устанавливают расположение задней, средней и передней пар контактных маркеров, a Foot In Side (Внутренняя часть ступни) и Foot Out Side (Наружная часть ступни) регулируют расположение трех внутренних и внешних маркеров каждой ступни. Для хорошо сконструированного скелета с не слишком необычной геометриче ской формой начальные параметры контактных маркеров будут почти правиль ными. Не бойтесь корректировать параметры, если они не совершенны, но помните о том, что главное — окружить геометрию ступней маркерами и что маркеры сзади, посе редине и спереди ступни должны быть расположены на уровне исполнительных элемен тов пятки, подъема и носка ступни соответственно. Если выделить контактные маркеры и открыть редактор атрибутов, то в нем на вкладке hikFloorContactMarkerl в раскры вающемся разделе Feet То Floor Contact Attributes (Атрибуты контакта ступней с полом) можно получить доступ к нескольким другим, недоступным в панели каналов, атрибу там. Параметр Feet Floor Pivot (Опорная точка ступней на полу) позволяет установить опорную точку ступни, разрешая выбрать при этом вариант auto (автоматически), ankle (щиколотка) или toes (носок). Для параметра Feet Contact Type (Тип контакта ступней) возможны такие варианты: normal (обычный) (для двуногого персонажа), ankle (щиколотка), toe base (основание носка) и hoof (копыто). По умолчанию значение пара метра Feet Contact Stiffness (Жесткость контакта ступней) равно о, но для придания сус тавам ступней большей жесткости его можно увеличить. После корректировки параметров
334
Глава 8
контактного маркера пола отображение этих маркеров можно отключить, сбросив фла жок Draw Feet Contact (Отображать контакт ступней); после этого маркеры будут скры ты, но останутся на сцене. Для Машизмо конкретные значения параметров приведены в имеющемся на компакт-диске файле MachismoFBIKComplete. ma. Кроме того, на различной высоте от уровня базового пола можно добавить контактные плоскости (contact plane). Это может пригодиться, если пер сонажу необходимо, скажем, положить руку на стул, в то время как он нагибается, чтобы поднять что-то с пола. Чтобы создать плоскость контакта с полом, выделите исполни тельный элемент, к которому следует добавить плоскость, а затем выберите пункт меню Skeleton => Full Body IK => Add Floor Contact Plane (Скелет => Инверсная кинематика всего тела => Добавить контактную плоскость пола). При этом прямо под исполнительным эле ментом появится небольшая плоскость. Однако перед тем как контактная плоскость начнет работать, для параметра Hands Contact (Контакт кистей) или Feet Contact (Контакт ступней) должно быть установлено значение On (Включено). Например, если для параметра Hands Contact еще не установлено значение On, выделите узел HipsEff и установите для него это значение параметра. Теперь кисть руки (или ступня) при пере мещении должна остановиться, когда достигнет контактной плоскости. Контактную плоскость можно двигать вверх и вниз, перемещать вдоль плоскости X-Z и благодаря но вовведению Майя 8 изменять ее угол, поворачивать. При изменении угла контактной плоскости кисть (или стопа) будет поворачиваться, оставаясь на ее поверхности. При этом для каждой кисти и ступни можно добавить сколько угодно контактных плоскостей пола, что упрощает создание лестницы или другого многоярусного контактного объекта. Для исполнительных элементов можно также откорректировать закрепление (pinning). Например, для исполнительных элементов ступни закреплено перемещение и вращение, исполнительный элемент бедер не закреплен, а для исполнительных элемен тов кистей закреплено только перемещение. Закрепленное состояние задает реакцию конкретного исполнительного элемента на движение тела. При манипуляциях телом вместе с ним будет свободно перемещаться и поворачиваться незакрепленный исполни тельный элемент. Исполнительные элементы, для которых закреплено перемещение, ос танутся зафиксированными в пространстве (если не будут перемещены непосредствен но), но могут свободно вращаться. Исполнительные элементы с закрепленным вращени ем будут свободно перемещаться в пространстве, но не смогут вращаться, если их не повернут непосредственно. Исполнительные элементы, для которых закреплено и пере мещение, и вращение, могут перемещаться и (или) вращаться только тогда, когда эти действия будут производиться непосредственно над ними. Но из этого правила есть ис ключение. Если закрепление должно привести к тому, что растяжение цепи суставов превысит суммарную длину ее костей (например, если вытянуть тазобедренный сустав так далеко, чтобы ноги стали совершенно прямыми), то в этом случае закрепленные ис полнительные элементы будут перемещаться так, чтобы кости не растягивались. Попро буйте установить и снять закрепление различных исполнительных элементов построен ного скелета и посмотрите, как при этом изменяется реакция тела на его перемещение в пространстве. Различные закрепленные состояния отражают изменение формы исполнительных элемен тов: незакрепленные исполнительные элементы отображаются как сферические; исполни тельные элементы с закрепленным перемещением отображаются в виде прямоугольных оболочек; исполнительные элементы, для которых закреплено вращение, имеют вид полу сфер; а исполнительные элементы, для которых закреплено перемещение и вращение, ото-
Постановка и оснащение персонажа
335
бражаются как прямоугольные оболочки с полусферами. Такое визуальное отражение со стояния позволяет с первого взгляда определить тип поведения исполнительных элементов. В главе 10, "Нелинейная анимация", будет рассмотрено применение закрепленных и неза крепленных исполнительных элементов, а также подчиненных персонажей для анимации оснастки с инверсной кинематикой всего тела. И наконец, чтобы настроить поведение использующей инверсную кинематику всего тела оснастки при манипулировании ею в окне сцены и анимации, многие атрибуты можно откорректировать в редакторе атрибутов. Выделите узел HipsEff, а затем от кройте редактор атрибутов. Вкладка HipsEff предоставляет доступ к основным парамет рам управления, таким как закрепление исполнительного элемента, параметру Pivot Offset (Смещение опорной точки) (определяющем точку, вокруг которой поворачивает ся исполнительный элемент) и параметру r a d i u s (Радиус) (размер исполнительного элемента). На вкладке узла hikHandle в разделе HIK Handle Attributes (Атрибуты маркера ин версной кинематики человека) находится множество управляющих параметров, которые позволяют точно настроить постановку FBIK. Главный элемент управления — это фла жок Activate (Активизировать), определяющий, будет ли функционировать FBIK. Пара метр Posture Туре (Тип позы) может быть установлен в одно из двух значений: biped (двуногая) или quadruped (четвероногая). Параметр Hip Translation Mode (Режим пере мещения тазобедренного сустава) может принимать значение world rigid или body rigid; корректируйте этот параметр, только если для узла HipsEff были созданы отдельные узлы перемещения и вращения. (Это сделано в параметрах создания использующей FBIK оснастки.) Параметр r e a l i s t i c Shoulder Solving (Реалистичное плечо) определяет, будет ли при поднятии руки над плечом поворачиваться ключица (clavicle bone). Значение 1 задает вполне реалистичное движение плеча (с полным участием ключицы), а значение 0 фиксирует сустав ключицы на месте. В зависимости от персонажа (например, мультипликационного или фотореалистического) можно либо использовать крайние зна чения, либо искать значение где-то посередине. Параметр Solve Fingers (Рассчитывать пальцы) управляет тем, будет ли вычисляться отдельное движение каждого пальца. По скольку пальцы имеют столько же суставов, сколько и остальная часть стандартного ске лета, сбросив флажок Solve Fingers и одновременно заблокировав анимацию, можно ус корить взаимодействие персонажа со сценой. При установленном в разделе Pull (Усилие) флажке Expert Mode (Квалифицированный режим) становятся доступными для изменений раскрывающиеся разделы (Pull, Left Arm Pull (Усилие левой руки), r i g h t Arm Pull (Усилие правой руки), Left Leg Pull (Усилие левой ноги) и r i g h t Leg Pull (Усилие правой ноги)), определяющие усилие. В них можно корректировать, насколько сильно каждая часть тела (голова, грудь, левая нога и т.д.) притягивается к движению тела как единого целого. Чем выше значение каждого усилия, тем меньшее влияние оказывает перемещение других частей тела на эту конкретную часть тела. (Значения параметров r e a c h Translation (Достижимость перемещения) и r e a c h r o t a t i o n (Достижимость вращения) каждого отдельного исполнительного эле мента умножаются на значение атрибута Pull; поэтому если значение достижимости равно 0, то даже значение 1 атрибута Pull не будет иметь никакого эффекта.) Каждое раскрывающееся меню раздела Pull (Усилие) предоставляет более детальный контроль над работой функций. Можно, например, откорректировать, как работает левый локоть или как кисть воздействует на бедра.
Глава 8
336
Раздел r o l l Attributes (Атрибуты вращения) позволяет распространить некоторый вра щающий поворот руки или ноги (вращение вокруг продольной оси кости) на вращающие кости (roll bone), если они есть у персонажа. Так как для Машизмо были созданы вращающие суставы, в разделе r o l l Attributes (Атрибуты вращения) можно выбрать все или некоторые из них. Если, например, необходимо разделить вращение предплечья 50x50 между вращающими суставами локтя и предплечья, установите флажки Left Forearm r o l l Mode (Режим вращения левого предплечья) и r i g h t Forearm r o l l Mode (Режим вращения правого предплечья), чтобы выбрать соответствующие режимы, и установите значения равными 0.5 (т.е. 50%). Чем больше значение, тем большую часть общего поворота берет на себя вращающий сустав. Пока персонаж не привязан к скелету, увидеть влияние этого параметра сложно (привязка геомет рической формы к скелету обсуждается в следующем разделе), но это влияние важно для большинства реалистичных персонажей. Раздел Stiffness Attributes (Атрибуты жесткости), содержащий вложенные разделы параметров жесткости рук, ног и тазобедренного сустава, управляет ускорением каждой части тела во время воспроизведения. (На взаимодействие сцены эти параметры не влия ют.) Чтобы замедлить движение части тела, скажем ноги, по сравнению со стандартной скоростью, увеличьте значение жесткости (по умолчанию оно равно 0 . 5 ) . При анимации тела эта нога будет казаться более тяжелой. Чтобы нога выглядела более легкой, устано вите для нее жесткость, близкую к 0. Параметр Kill Pitch (Убить тангаж) как для локтей, так и для колен управляет способ ностью сустава вращаться в направлении тангажа (pitch) (по умолчанию это вокруг оси Z). Данный элемент управления используется для устранения нежелательного вин тового вращения (pitch rotation) в суставах колена или локтя. В качестве альтернативы для создания контакта кистей или ступней с полом можно использовать атрибуты разделов Finger Tip Sizes (Размеры пальцев руки) и Toe Tips Size (Размеры пальцев ноги). В этом случае решатель h i k вместо контактных маркеров пола вокруг каждой конечности, размером которого управляет соответствующий атри бут <node>Tip, создает сферу. Чем больше значение этого атрибута, тем больше этот палец для решателя (и соответственно настраивается контакт ступни и кисти с любой плоскостью пола). Указанные два способа не могут применяться одновременно: при на личии контактной плоскости атрибуты размеров пальцев игнорируются.
Привязка персонажа и нанесение весовых коэффициентов Когда работоспособная оснастка персонажа уже создана, приходит время позволить ей управлять геометрической формой персонажа. Базовая привязка достаточно проста, так как в ней большую часть работы выполняет Майя. Тем не менее, как будет продемон стрировано ниже, настройка весовых коэффициентов оболочки для абсолютно правиль ной деформации персонажа требует времени и усилий. Чтобы привязать скелет к обо лочке, выполните следующие действия. 1.
Выделите корневой сустав скелета ( H i p s ) . Убедитесь, что выделен именно корневой сустав, а не исполнительный элемент h i p s E f f . Нажав клавишу <Shift>, выделите геометрическую форму тела.
Постановка и оснащение персонажа
337
2. Выберите пункт меню Skin => Bind Skin => Smooth Bind • (Оболочка =>
Привязать оболочку => Плавная привязка • ) . В появившемся окне па раметров восстановите значения по умолчанию, выбрав пункт меню Edit => r e s e t Settings (Правка => Восстановить параметры по умолча нию). Параметр Max Influences (Максимум воздействий) определяет, насколько сильно суставы могут воздействовать на данный элемент геометрической формы, а параметр Dropoff r a t e (Коэффициент спада) определяет, насколько быстро по мере удаления от сустава ослабевает воздействие сустава. (Чем выше число, тем быстрее уменьшается воз действие.) Этому персонажу подойдет значение 5 для параметра Мах Influences и значение 4 — для параметра Dropoff r a t e . И еще, проверь те, установлен ли флажок ColoriZe Skeleton (Раскрашивать скелет) но вой возможности, которая раскрашивает каждую кость скелета. Эта возможность пригодится сразу, как будут откорректированы весовые коэффициенты оболочки. 3.
Щелкните на кнопке Bind Skin (Привязать оболочку), и через несколь ко секунд геометрическая форма будет привязана к скелету.
Теперь при перемещении управляющей оснастки, более-менее правильно деформируясь в ответ на движение суставов, за ней должен следовать и сам Ма шизмо (рис. 8.30). Если значения по умолчанию не дают удовлетворительных результа тов (особое внимание обратите на то, работоспособны ли вообще пальцы рук и ног и подмышки), попробуйте отменить процесс создания оболочки и откорректировать пара метры Max Influences (Максимум воздействий) и Dropoff r a t e (Коэффициент спада). В качестве руководства можно использовать имеющийся на компакт-диске файл MachismoSkinStart.mа.
К сожалению, создание плавной привязки — это простой процесс, который не соот ветствует требующей большей точности работе по настройке деформирования геометри ческой формы персонажа. Для создания работоспособного персонажа обязательно сле дует изменить весовые коэффициенты оболочки. Именно этот процесс является одним из самых утомительных и потенциально разочаровывающих этапов создания оснастки персонажа. Хотя само по себе изменение весовых коэффициентов оболочки в Maya до вольно просто, осуществить это для персонажа с десятками суставов — все же длитель ная и сложная задача, особенно если учесть одно только количество перекрестных связей между различными суставами. Откорректировать весовые коэффициенты оболочки можно несколькими способами, наиболее наглядный из которых сводится к использованию ин струмента Paint Skin Weights (Нанесение поверхностных весовых коэффициентов), по зволяющего виртуальной кистью корректировать имеющееся распределение весовых ко эффициентов и сразу же видеть результат сделанных изменений. В Maya 8 существует обратная цветовая связь, демонстрирующая с помощью цвета воздействие на оболочку всех суставов, что упрощает точную настройку. На рис. 8.31 представлена оболочка Ма шизмо с многоцветным отображением воздействий. Кроме того, в режиме нанесения ве совых коэффициентов еще можно поворачивать суставы, что существенно ускоряет на несение весовых коэффициентов, поскольку отпадает необходимость в переключении между инструментами поворота и нанесения коэффициентов.
338
Глава 8
Рис. 8.30. Серфинг! Геометрическая форма Машизмо была перемещена скелетом
Рис. 8.31. Многоцветное отображение воздействий на геометрической форме Машизмо Чтобы перейти в режим нанесения весовых коэффициентов, выделите геометри ческую оболочку Машизмо и выберите из набора меню A n i m a t i o n (Анимация) пункт Skin => Edit S m o o t h Skin => Paint Skin W e i g h t s T o o l • (Оболочка => Редактировать
гладкую оболочку => Инструмент нанесения поверхностных весовых коэффициен тов • ). Открывшееся окно параметров инструмента (рис. 8.32), кроме множества содержащихся в нем параметров, позволяет выбрать сустав, для которого следует наносить коэффициенты воздействия. В нижней части окна, если прокрутить вклад ку Display (Представление) вниз, можно установить флажок Multi-Color F e e d b a c k (Многоцветная обратная связь), чтобы увидеть, как цвет кожи Машизмо отражает коэффициенты каждого сустава. Основная процедура нанесения весовых коэффициентов на оболочку (или окраши вания оболочки) такова: выберите конкретный сустав (например, сустав пальца) и затем наносите коэффициенты.
Постановка и оснащение персонажа
339
Puc. Окно параметров инстру мента Paint Skin Weights При этом кнопки-переключатели позволяют добавлять ( A d d ) , заменять ( r e p l a c e ) или сглаживать ( S m o o t h ) весовые коэффициенты. (Также имеется возможность масштаби ровать (Scale) коэффициенты, но к ней прибегают редко.) В режиме добавления к коэф фициентам воздействия выбранного сустава на оболочку прибавляется определенное значение, определяемое как произведение значений параметров Value (Значение) и Opacity (Непрозрачность). Если оба указанных параметра равны 1, то к воздействию сустава на обрабатываемые вершины прибавляется полное воздействие (значение 1). Если же они оба равны 0, то коэффициенты воздействия не изменяются, так как прибав ление 0 не изменяет значения коэффициентов. В режиме замены старые весовые коэф фициенты заменяются новыми, вычисляемыми так же, как и в режиме добавления. Сглаживание сближает значения весовых коэффициентов воздействия различных суста вов на вершину: если некоторое воздействие одного сустава на контрольную вершину со ставляет 0. 8, а воздействие другого сустава на нее же — 0 .2, то в результате полного сглаживания оба коэффициента будут близки к 0.5. При нанесении весовых коэффици ентов операция замены опасна тем, что суммарный весовой коэффициент некоторых то чек оболочки может стать меньше 1.0 и они не будут вытягиваться на 100% вслед за движением скелета, а это уже чревато "отставанием" части оболочки при анимации пер сонажа. Таким образом, при нанесении весовых коэффициентов ограничимся использо ванием только операций A d d (Добавить) и Smooth (Сгладить) везде, где это возможно. Для начала в окне Tool Settings (Параметры инструмента) выберите сустав LeftForearm, а затем перейдите в режим поворота, щелкнув на нем средней кнопкой мыши. Согните сустав LeftForearm (для этого с помощью средней кнопки мыши перемещайте одну из его осей вращения) так, чтобы в области локтя только образовались складки, не допуская при этом частичного наложения оболочки, которое затруднит нанесение весо вых коэффициентов. Согнутый сустав показан на рис. 8.33. (Чтобы в конце можно было вернуть все в прежнее состояние, не забудьте записать исходные значения углов враще ния сустава, если только они не равны 0.) Выберите инструмент Paint Skin W e i g h t s
340
Глава 8
(Нанесение поверхностных весовых коэффициентов) (для его повторного выбора можно нажать клавишу ), установите переключатель Paint Operation (Окрашивание) в по ложение A d d (Добавить), а для параметров Value (Значение) и Opacity (Непроз рачность) с помощью ползунков установите значения 0 .4 и 0 . 3 соответственно. При таких значениях параметров изменения весовых коэффициентов оболочки будут до вольно незначительными, что и требуется для того, чтобы не создавать никаких неоднородностей при наложении влияний сразу нескольких суставов. При слишком боль шом размере кисти (красная окружность над геометрической формой), нажав клавишу <В>, протащите указатель мыши над геометрической формой оболочки, чтобы уста новить более подходящий размер. Переключитесь в режим нанесения коэффициентов, щелкнув левой кнопкой мыши в любой точке геометрической формы, а затем, нанося весовые коэффициенты на нижнюю внутреннюю часть локтя, увеличьте воздействие локтевого сустава на предплечье, уве личивая таким образом внутренние складки в области локтя. Переключаясь в обоих на правлениях между суставами LeftArmroll и LeftForearm, увеличивайте воздействие каждого из них до образования складок. Этим же методом на обратной стороне руки можно создать и более выраженный внешний локоть. Увеличение воздействий суставов на указанную область может сделать обратную сторону локтя слишком острой. Чтобы сгладить ее, измените режим на Smooth (Сгладить) и наносите коэффициенты до тех пор, пока не получится удовлетворительный результат. (Можно заметить, что сглажива ние более эффективно работает при больших значениях параметра Opacity (Непрозрачность).) По окончании локоть с только что созданными на нем складками должен выглядеть так, как на рис. 8.34. Как только будет получен окончательный вари ант области локтя, выделите сустав LeftForeArm и верните его в исходное положение, восстановив ранее записанные значения вращений. (Чтобы вернуть все суставы в исход ную позу привязки, выделите скелет и выберите пункт меню Skeleton => Full Body IK => Go To S t a n c e Pose (Скелет => Инверсная кинематика всего тела => Перейти к стацио нарной позе).) Выбрать сустав, для которого будет выполняться корректировка весовых коэффициентов, можно так: щелкните над ним правой кнопкой мыши и, не отпуская кнопку, выберите в появившемся контекстном меню пункт Paint Skin Weights (Нанесение поверхностных весо вых коэффициентов). По сравнению с выбором сустава в окне параметров инструмента это действительно ускоряет процесс нанесения весовых коэффициентов. А теперь самое занятное: повторите процесс нанесения весовых коэффициентов для каждого элемента тела Машизмо! Это займет много времени, да И вообще получение аб солютно правильных весовых коэффициентов оболочки в некотором роде целое искус ство; поэтому непременно сохраняйте различные версии файла сцены, чтобы в случае че го можно было вернуться к предыдущим версиям. Вот несколько ценных указаний по процессу нанесения весовых коэффициентов. •
•
Чтобы многоцветное отображение воздействий стало полезным при нанесении весо вых коэффициентов в областях с воздействием нескольких суставов, например в об ластях пальцев, подмышек или верхних частей ног/бедер, сначала необходимо при выкнуть к цветам, соответствующим разными суставам. Для крайне трудных областей (например, подмышек) немного согните первый сус тав, коррекцией весовых коэффициентов добейтесь правильного вида и только по том сгибайте область дальше и повторно корректируйте весовые коэффициенты.
Постановка и оснащение персонажа
Рис. 8.33. Сгиб локтя для на несения весовых коэффициентов
341
Рис. 8.34. Согнутый локоть с применен ными откорректированными весовыми коэффициентами оболочки
•
При проверке правильности весовых коэффициентов обязательно поворачивайте суставы во всех направлениях, в которых они только могут вращаться. Персонаж может выглядеть хорошо, если сустав повернут вокруг оси X, а при повороте того же сустава вокруг оси Z — ужасно.
•
Для областей, которые могут при сгибе тесно примыкать друг к другу (пальцы рук, колени, локти), обязательно корректируйте весовые коэффициенты для всего диапа зона движений персонажа. Попробуйте согнуть сустав частично, откорректировать коэффициенты, а затем согните еще и снова откорректируйте, согните до конца, а за' тем выполните завершающую корректировку.
•
Регулярно проверяйте получаемую оснастку на временных версиях сцены, а также передавайте эти временные версии для проверки другим. По мере выполнения пер сонажем полных движений начнут проявляться разнообразные небольшие проблемы весовых коэффициентов оболочки, и гораздо лучше решить их сейчас, чем в середине процесса анимации сцены.
•
Области, которые не должны деформироваться, можно закрасить кистью со значени ем 1 для воздействия одного сустава. Например, для головы это сустав head4. Таким образом, без нанесения весовых коэффициентов для каждого отдельного сустава бу дет устранено воздействие остальных суставов, например суставов шеи. Чтобы за полнить геометрическую форму, выберите режим r e p l a c e (Заменить) (именно в та ких случаях стоит использовать этот режим), установите значения параметров Value (Значение) и Opacity (Непрозрачность) равными 1 и щелкните на кнопке Flood (Заполнить).
•
Обязательно записывайте атрибуты перемещения и вращения каждого перемещае мого сустава или Маркера исполнительного элемента. Закончив нанесение весовых коэффициентов на оболочку, их следует в точности вернуть в исходные положения, а записать значения гораздо безопаснее, чем пытаться их запомнить. Несмотря на то что операция Go To Bind Pose (Перейти в позу привязки) или Go To Stance Pose (Перейти к стационарной позе) обычно срабатывает, иногда она все-таки не возвра щает исходные значения атрибутов суставов. Когда корректировка весовых коэффициентов модели будет закончена, от зна ния того, что теперь есть подобающим образом привязанный и безошибочно
342
Глава 8
правильно двигающийся при поворотах различных суставов персонаж, должно появить ся определенное чувство гордости. Рассмотреть оснастку с полностью откорректирован ными весовыми коэффициентами можно, воспользовавшись имеющимся на компактдиске файлом MachismoWeighted.ma.
Резюме В этой главе рассмотрены все основы создания оснастки персонажа: от создания стандартного двуногого скелета с должным образом выровненными осями вращения до управляющей оснастки с использованием инверсной кинематики всего тела и после дующим созданием оболочки самого персонажа. Выполнение всех упражнений этой гла вы придаст уверенность на пути к созданию собственных оснасток персонажей. Однако не забывайте основное правило художника по постановке персонажей: обращать внима ние на каждую деталь и именовать каждый элемент оснастки!
Анимация персонажа Анимировать (animate) означает вдыхать жизнь во что-либо. Анимацию персонажа можно охарактеризовать как высшую форму "вдыхания жизни". Это больше, чем моде лирование, наложение текстур, оснащение или установка ключевых кадров; в сочетании с действием и хронометражем эти элементы поднимают ремесло компьютерной графики на уровень искусства — уровень, на котором зрители реагируют на действия персонажа и сопереживают ему, а не технологическому чуду компьютерной анимации. Умение создавать такое действие приобретается годами и не приходит к аниматору вместе со знанием компьютера и даже Майя. Аниматор может довольно быстро овладеть анимационными инструментами и редакторами Майя, но постижение искусства анима ции персонажей занимает всю жизнь. Каждое действие бросает новые вызовы и прино сит новые проблемы. Для каждого действия могут быть предназначены специальные ме тоды анимации персонажа; и то, что работает для одной конкретной задачи, уже может быть неприменимо к другой. В этой главе представлен проверенный временем метод соз дания анимации персонажа по позам, а также обсуждаются некоторые ключевые инст рументы Майя, применяемые для создания анимации персонажа. •
Подготовка к анимации
•
Процесс анимации
•
Последовательное соединение поз
•
Создание хронометража
•
Уточнение анимации
Отойдем от компьютера! И новички, и подготовленные аниматоры делают одну и ту же ошибку: начинают процесс анимации, сидя за компьютером. Немногие из профессиональных аниматоров, если вообще среди них есть такие, предпочитают начинать анимацию буквально сидя за компьютером; почти каждый выделяет время на некоторую подготовку. Отказ от подго товки приводит к серьезной ошибке — вере в возможность создания анимации без раз мышлений о том, как можно воссоздать реальные движения. Начинать процесс анимации за компьютером во многом сродни рисованию по памя ти; новички рисуют объекты и людей, основываясь на том, как они представляют себе их вид, а не на том, как они выглядят на самом деле. Чтобы точнее нарисовать предметы, опытный художник чаще смотрит на них, а не на их бумажные копии. Начинающие ани маторы зачастую пытаются создать движение на основании своего представления о дви-
344
Глава 9
жении предметов, а не на основании их настоящих движений. При малейшей возможно сти опытные аниматоры стараются рассмотреть натуру, чтобы понять, как их субъекты двигаются в реальной жизни. Этот тип изучения, старый как сама анимация, называют анализом движений (motion analysis), или анализом действий (action analysis). Все, что тут требуется, — источник справочного материала.
Справочные средства Раньше, во времена целлулоидной анимации, в качестве источников справочных ма териалов при исследовании движения аниматоры в значительной степени вынуждены были использовать только пленку, секундомеры, бумагу, карандаш и зеркала. К счастью, сегодня существует намного больше источников для анализа движения и более высокого качества. Приведем их краткий перечень. •
Видеокамеры.
•
DVD и видеопленка.
•
Иллюстрированные книги.
•
Бумага и карандаш.
•
Звуковые записи.
Эти элементы способны предоставить довольно точные материалы для сравнения с создаваемой анимацией. ДЛЯ поиска справочных материалов, используемых при анализе движений, весьма удобен Интернет. В частности, такие сайты, как www.youtube.com и www.video.google.com, — готовые первоисточники видеоклипов.
Видеокамеры За последние несколько лет повсеместная доступность цифровых видеокамер (рис. 9.1) и недорогих карт памяти, совместимых со стандартом IEEE 1394 (FireWire), стали, воз можно, наибольшим благом для аниматора. После самого компьютера для аниматора нет ничего более ценного. Это может показаться смелым заявлением, но если учесть, что циф ровая видеокамера формата DV (Digital Video) может не только выполнять функции инст румента, позволяющего отснять справочный видеоматериал, но и в объединении с картой памяти представляет собой видеоустройство ввода-вывода, позволяющее быстро и удобно осуществлять предварительный просмотр анимации на видеомониторе. Более того, с под ходящим программным обеспечением редактирования видео эта камера может принимать от компьютера готовые визуализированные кадры, качество которых почти как у тестового видео, и позволяет использовать их как демонстрационный ролик. Очевидное преимущество цифровой видеокамеры заключается в том, что ее можно использовать для сбора данных о каком угодно типе движения. Небольшую цифровую видеокамеру можно взять с собой куда угодно. Затем отснятый материал можно легко и быстро скопировать на компьютер и использовать уже как точный справочный материал. Но такая информация имеет недостаток: она хороша ровно настолько, насколько был хо рош снят актер или предмет. Плохое исполнение или плохо выверенное по времени дей ствие не сможет быть хорошей основой для анимации. Другой ее недостаток присущ всем источникам реальных действий — она слишком медленная. Почти весь отснятый на видеокамеру материал необходимо ускорять на 5-25%.
Анимация персонажа
Рис. 9.1. Цифровые видеокамеры, такие как Sony DCrTrV-20, предлагают множество функцио нальных возможностей, помогающих планирова нию анимации Единственное предостережение к использованию видео: его следует использовать только в качестве ориентира, на основе которого создается действие. После создания убедительного действия происходящее на видео почти всегда следует отбросить. Тем не менее справочный видеоматериал станет хорошим началом.
DVD и видеопленка Стандартные DVD и видеоленты позволяют повторно просматривать движения, что бы прийти к пониманию того, как люди, животные и предметы двигаются на большом экране. И новичкам, и опытным аниматорам стоит собрать библиотеку DVD и видео лент. DVD эффективней — они предоставляют доступ к движениям и исполняемым дей ствиям на уровне одного кадра. Даже в дешевых DVD-плейерах есть возможности оста новить воспроизведение и перейти к просмотру по одному кадру. Эти средства следует интенсивно использовать. Кроме всего прочего, DVD позволяют непосредственно пере ходить к нужному действию; для сравнения, видеоленты в этом смысле линейны, а пото му, чтобы добраться до того же момента на видеоленте, ее приходится перематывать впе ред и назад.
Иллюстрированные книги Прекрасными справочниками, особенно для рассматриваемой далее в этой главе ани мации по позам, являются книги с понятными поэтапными иллюстрациями действий. Связывая позы, можно создать представляемое действие. Однако этот метод не имеет временной информации, он ограничен лишь позами. Кроме того, качество такого спра вочного материала определяется качеством составляющих его иллюстраций. Если автор книги не задумывался над соответствием иллюстраций друг другу, то их ценность для аниматора, несомненно, ограничена.
Бумага и карандаш Громадную пользу аниматору могут принести традиционные средства рисования. Умело сделанный набросок движения избавляет от необходимости беспокоиться об от сутствии под рукой объективного справочного видеоматериала или иллюстраций. Спла нировав конкретное движение на бумаге, можно начать его воплощение. Поскольку по зицию перемещения персонажа следует обдумать заранее, эскиз чрезвычайно полезен. Кроме того, некоторые персонажи не могут быть сняты или ранее не были анимированы,
346
Глава 9
а потому взглянуть на справочный видеоматериал в этом случае невозможно. Единст венной возможностью в этом случае остаются бумага и карандаш.
Звуковые записи Если для анимации планируется звуковая дорожка, то сведущий аниматор получит ее копию еще до начала создания анимации. Конкретным музыкальным тактам при анима ции может соответствовать интервал в 10-15 кадров. Воспроизведение музыки по ходу анимации и включение ее в предварительный просмотр зачастую упрощают процесс соз дания. Соответствующее музыкальное сопровождение способно оживить действие, кото рое само по себе может казаться замедленным. Разумеется, если анимация подразумевает синхронизацию изображения и речи, то наличие звуковой дорожки до начала процесса анимации обязательно. Во многих случа ях процесс анимации упрощает наличие голосовой дорожки, от которой можно оттолк нуться. Ритм и расставленные ударения голосового действия можно использовать при анимации и лица, и тела. Кроме того, если имеется видеозапись актера, произносящего текст, его движения можно проанализировать. Перед началом создания анимации ани маторы обычно неоднократно прослушивают звуковую дорожку, чтобы получить факти ческое внутреннее восприятие происходящего в кадре.
Зеркала ЕСЛИ ВЫ посетите любую анимационную студию и осмотрите рабочее место анимато ра, то обязательно увидите зеркало. С помощью зеркала аниматор, являющийся во мно гих случаях еще и неудавшимся актером, может исполнить эпизод и просмотреть его в реальном времени. Хорошие аниматоры обладают отменной мышечной памятью (kinesthetic awareness), а это значит, что они в высшей степени осведомлены о позиции своего тела и его частей в пространстве. Это понимание они воплощают в движения пер сонажа на экране; осознавая движения своего тела, они могут эффективнее имитировать движения персонажа на экране. Зеркало позволяет начинающему аниматору укрепить развивающуюся мышечную память, а опытному аниматору — более эффективно исполь зовать собственные способности в указанной области. И еще, с помощью зеркала анима тор лица может решить, какие позы и в какое время необходимы для синхронизации изображения и речи. В книге Джексона Осипа (Jason Osipa) 5fop Staring: Facial Modeling and Animation Done right (издательство Sybex, 2-е изд., 2007) настоятельно рекомендуется начинать работу с изо бражений в зеркале или фотографий собственного лица. Не следует полагать, что такая методика предполагается только для фотореалистичных лиц; Осипа демонстрирует, что такого рода осмысление реальности может принести пользу даже художественным и муль типликационным персонажам.
Секундомер При правильном использовании, особенно в руках опытного аниматора, секундомер может быть почти также эффективен, как и видеокамера. С ним можно быстро построить базовые хронометражи. Процедура использования секундомера сводится к исполнению действия с одновременным измерением его длительности. Конечно, это также указывает на элементарные ограничения секундомера: он хорош для общих хронометражей, но конкрет ные действия в расширенном движении следует хронометрировать по отдельности.
Анимация персонажа
347
Процесс анимации В данной главе описываются три этапа структурированного процесса установки ключевых кадров, который последователен по своей природе и достаточно прост для реализации. Создание поз (posing). На этом этапе персонаж последовательно принимает позы, выполняющие действие. Установите на последовательно пронумерованных кадрах ( 1 , 2 , 3,... и т.д.) ключевые кадры со ступенчатой касательной (stepped). Тут важно создать такое количество ключевых кадров, которого будет достаточно для выполнения дейст вия, а не так много, чтобы сильно замедлить текущий ход создания анимации. Именно здесь подходящие справочные материалы можно принять за основу для создания воле вых поз, выполняющих действия, которые пытается выразить анимация. Хронометраж (timing). Обычно это самая быстрая фаза, поскольку она заключается в выделении и перемещении (а не масштабировании) ключевых кадров в таких средствах Майя, как Dope Sheet (Монтажный стол) и Timeline (Временная шкала), изменении ти па касательных (тангенциальных манипуляторов) ключевых кадров на касательные с фиксацией (clamped) и добавлении ключевых кадров для отдельных элементов управле ния, если это необходимо для создания плавного движения. Чтобы определить правиль ные интервалы времени между ключевыми кадрами, чаще просматривайте анимацию сцены с помощью средства Playblast. Справочная видеоинформация поможет начать процесс распределения времени, но, скорее всего, действие придется ускорить на 1 0 20%, поскольку анимационное действие почти всегда выглядит замедленным, если оно точно соответствует хронометражу кинематографических действий. К концу этого этапа анимация завершена на 90%, но создание действительно великой анимации предполагает еще много работы на следующем этапе. Процессоры компьютеров и видеокарты весьма разнообразны, а потому предварительный просмотр с помощью средства Playblast — единственный достоверный способ получить точное представление о том, насколько быстро или медленно двигаются персонажи. Уточнение (refining). Это самый длительный этап, так как именно тут добавляются детали, создающие превосходную анимацию. Данный этап — это уже вовсе не анимация для анимации. Он включает в себя добавление ключевых кадров в крайних положениях, смещение движений, борьбу с симметрией, обработку прохождений объектов сквозь друг друга и наложений, а также многое другое. Эти последние 10% анимации могут занять 50% времени. При разделенном на три этапа анимационном процессе возможно большое количест во экспериментов, и в этом его громаднейшее преимущество. Как будет показано далее, очень часто во время создания поз плодотворным может оказаться и слегка отличаю щийся подход. Этот процесс чрезвычайно гибок, он позволяет свободно изменять соз данные позы и хронометраж вплоть до получения окончательного результата. А теперь применим сказанное выше к анимации простого прыжка. Сначала изучим справочный фильм, сосредоточившись на выявлении крайних позиций, а затем, исполь зуя сформулированный трехэтапный процесс, анимируем персонаж.
Называемая в предыдущей главе Time Slider (Ползунок времени). — Примеч. ред.
348
Глава 9
Практика: анимация Джо Дженерика Перед началом процесса анимации обратимся к видео, чтобы понаблюдать за реальным образцом прыжка. Просмотренное видео поможет узнать, как анимиро вать нашего героя — Джо Дженерика (Joe Generic). Из соответствующей главе 9 папки откройте файл Jumpreference .mov. В этом фильме один из авторов запрыгивает на низкое дорожное ограждение. Приложение QuickTime Player позволяет перемещаться на один кадр вперед или назад с помощью клавиш управления курсором (со стрелками вле во и вправо). Эту возможность можно использовать для выделения ключевых или край них поз для анимации. Лучше всего воспроизвести файл Jumpref e r e n c e .mov в проигрывателе, который не толь ко позволяет передвигаться по одному кадру, но еще и позволяет отображать под кадром его номер или временной код. Adobe Premiere, After Effects и приложение Final Cut фирмы Apple — прекрасные образцы программного обеспечения такого типа. Подсчет кадров — это не только выполнимое и полезное упражнение для начала изучения хронометража, он может оказаться нудным и крайне сложным занятием. Размеченные в хронологическом порядке позы (рис. 9.2) Приведены в прилагаемом на компакт-диске файле JumpreferenceLable.mov. Надлежащим образом созданные, эти позы передают усилие прыгуна, начиная с момента его отрыва от пола и заканчивая приземлением на блоке. В них видно стремление выразить суть позы. Но изображенный на справочном видео человек имеет совершенно другую комплекцию по сравнению с Джо Дженериком, а следовательно, непосредственное преобразование невозможно. (Не беспокойтесь, при использовании справочных материалов такое случается очень часто.)
Рис. 9.2. Ключевые позы, используемые на этапе объединения поз. Обратите внимание на то, что расслабленная поза тут не указана; она будет создана читателем самостоятельно
Постановка: приведем Джо Дженерика в движение Для обучения анимации был выбран совсем не сложный персонаж; обучение на чересчур детализированных персонажах со множеством элементов управления на самом деле не эффективно. Попытки управлять персонажем заняли бы так много вре мени, что изучать анимацию было бы уже невозможно. Джо Дженерик — это персонаж с минимальным управлением, предназначенный исключительно для изучения анимации. Но перед тем как начать, необходимо сделать несколько настроек. Откройте имеющийся на компакт-диске файл JoeGJumpStart. ma, и начнем.
349
Анимация персонажа
Джо Дженерик стоит в распространенной позе: руки в стороны, ладони вниз. Это и есть его стандартная поза, показанная на рис. 9.3, копия которой всегда должна хранить ся в файле. В данном случае она будет сохранена в кадре 0. Но сначала необходимо соз дать кнопку, одновременно выделяющую все элементы управления персонажем.
Рис. 9.3. Стандартная поза 1. Создайте новую панель JoeGCtrls: откройте редактор панелей Shelves (Панели), щелкните на меню панелей и в появившемся контекстном меню выберите пункт N e w Shelf (Новая панель). В появившемся диалоговом окне в качестве имени панели вве дите JoeGCtrls и щелкните на кнопке ОК. 2. В панели выделения (в строке состояния) снимите маски выделения геометрических форм и суставов. 3. В перспективном представлении выделите кривую, окружающую левую ступню. 4. Нажав клавишу <Shift> (весьма распространенная ошибка пользователей: они на жимают клавишу, затем отпускают ее и взявшись за мышку начинают водить по эк рану или щелкать на каких либо объектах, искренне удивляясь, почему ничего не срабатывает, ведь они все делали по инструкции. Полагаю просто слова "нажав" не достаточно, однако на ваше усмотрение.), выделите кривые, окружающие правую ступню, левую кисть, правую кисть, голову, грудь и область таза. 5. Откройте редактор сценариев. Панель истории будет содержать следующий код: select select select select select select select
-r JoeG_LfootCtrl ; -tgl JoeG_rfootCtrl ; -tgl JoeG_LhandCtrl ; -tgl JoeG_rhandCtrl ; -tgl JoeG_neckCtrl ; -tgl UpperBodyGrp ; -tgl COG ;
6. Выделите эти строки кода и выберите в наборе меню редактора сценариев пункт ме ню File => Save Script То Shelf (Файл => Сохранить сценарий на панели). 7. В появившемся диалоговом окне введите в поле ввода названия кнопки имя SA11 и щелкните на кнопке ОК. На панели должна появиться кнопка SAII (Выделить все). Теперь все элементы управления можно выделить щелчком на этой кнопке, что пригодится при установке
350
Глава 9
ключевых кадров. В дальнейшем этот процесс можно использовать для создания элемен тов управления выделением других частей тела. В предыдущем упражнении шаги 2-5 можно пропустить, непосредственно введя приве денные строки кода в панели ввода редактора сценариев, и сразу перейти к выполнению шагов 6 и 7. Теперь установите ключевой кадр в кадре 0 для стандартной позы. (Стандартную по зу можно также установить в кадре с отрицательным номером, если съемка должна по некоторым причинам начинаться с нулевого кадра, например при имитации ткани в движении.) 1.
В окне Preferences (Предпочтения), доступном после выбора пункта меню Window => Settings/Preferences => Preferences (Окно => параметры/предпочтения => Предпочтения), щелкните на категории Animation (Анимация), расположенной под разделом Settings (Параметры), и выберите для параметров Default In Tangent (Входящая касательная по умолчанию) и Default Out Tangent (Исходящая касательная по умолчанию) зна чения Flat (Горизонтально) и Stepped (Ступенчатая) соответственно.
2.
Убедитесь, что индикатор текущего времени установлен на кадре 0. Если это не так, то перейдите к кадру 0.
3. Чтобы выделить все элементы управления, щелкните на кнопке SALL 4.
Выберите пункт меню Animate => Set Key • (Анимировать => Установить ключевой кадр • ) . Установите параметры по умолчанию, выбрав в меню окна параметров пункт Edit => r e s e t Settings (Правка => Восстановить параметры по умолчанию), после чего щелчком на кнопке Set Key (Установить ключевой кадр) установите в кадре 0 ключевой кадр.
С этого момента устанавливайте ключевые кадры нажатием клавиши < S >. Итак, отныне фраза "установите ключевой кадр" означает, что необходимо нажать клавишу < S >. 5.
Установите значение параметра Animation Start Time (Время начала анимации) рав ным 2. При этом значение параметра Playback Start Time (Время начала воспроизве дения) также станет равным 1.
6.
Переместите индикатор текущего времени на кадр 1.
Анимация Джо Дженерика — это вопрос перемещения и поворота отдельных элемен тов управления и манипулирования их атрибутами. Например, объект UpperBodyGrp включает элементы управления поворотами плеч, локтей, запястий; элементы управле ния кистями (JoeG_LhandCtrl и JoeG_rhandCtrl), содержащие элементы управле ния сжатием и разжатием пальцев руки. Потратьте некоторое время, чтобы выяснить функции всех элементов управления. Поскольку кнопка Auto Keyframe (Автоматическая установка ключевых кадров), скорее всего, нажата (если нет, то щелкните на ней), в ре зультате экспериментов с элементами управления в кадре 1 для каждого измененного элемента будет установлен ключевой кадр. Установленные в кадре 1 и отображаемые на временной шкале ключевые кадры можно удалить, если щелкнуть на кнопке SALL (Выделить все), а затем щелкнуть правой кнопкой мыши на кадре 1 временной шкалы и в появившемся контекстном меню выбрать пункт Delete (Удалить). Как только этот важный эксперимент будет закончен и все полученные ключевые кадры удалены, все бу дет готово для начала процесса создания поз.
Анимация персонажа
351
Расслабленная поза Несмотря на то что расслабленная поза (relax pose) не приведена на справочном ви део, она является ключевой частью анимации прыжка. Она устанавливает стартовую точку анимации, а также сообщает зрителям общую манеру поведения Джо Дженерика. Для текущей задачи она еще обеспечит способ установки рабочего процесса по созданию остальных поз. Начнем с создания расслабленной позы. Для ориентира начальная поза приведена на рис. 9.4.
Рис. 9.4. Джо Дженерик в рас слабленной позе 1. Щелкните на кнопке SALL (Выделить все) и установите ключевой кадр в кадре 1. Впредь перед созданием позы всегда устанавливайте ключевой кадр. 2. В окне редактора слоев виден список слоев. Каждый из них содержит геометриче ский элемент, который при создании поз можно использовать в качестве шаблона. Не следует добиваться абсолютного совпадения с шаблонами. Они предназначены для того, чтобы предоставить в Maya контрольную точку, позволяющую убедиться в правильности выбранного пути. Для первой позы в редакторе слоев отобразите слой relaxLyr. Для него был установлен режим Unshaded (Без тонирования), а потому он будет отрбражаться в виде каркаса. 3. Начните с перемещения элемента управления COG. Используя перемещение и пово рот, установите COG в правильную позицию. Постановка Джо Дженерика такова, что за движением COG следует вся верхняя часть тела, руки и голова. Измените значения атрибутов, имена которых начинаются с Lower и Upper так: щелкните на имени ат рибута, а затем, нажав и не отпуская среднюю кнопку мыши, в области перспектив ного представления перемещайте ее, изменяя значение атрибута. Постарайтесь, что бы результат соответствовал геометрической форме. Точные значения параметров приведены ниже.
Глава 9
352
4.
Установите ступни ног в правильные позиции согласно шаблону. Иногда выгодно сначала откорректировать плечи, но поскольку это первый кадр полного движения, благоразумнее первыми установить ступни. И опять-таки, не требуется абсолютно точно размещать ступни в указанных позициях — достаточно расположить их в ука занные на шаблоне позиции. Для элементов управления левой (JoeG_LfootCtrl) и правой ступни (JoeG_rfootCtrl) установите следующие значения: JoeG_LfootCtrl translateX translateZ rotateY
.76 -1.427 18.225
JoeG_rfootCtrl translateX rotateY KneeTwistrL
-0.95 -7.701 -3.8
Все остальные элементы управления оставьте без изменений. Обратите внимание на то, что атрибут KneeTwistrL поворачивает колено незави симо от ступни и бедра. 5.
Перейдите к объекту UpperBodyGrp, маркером управления которого служит ок ружность NURBS. В этом объекте можно обнаружить элементы управления поворо тами руки, локтя и запястья. Хотя повернуть сам маркер управления вполне воз можно, делайте это осторожно, как при точной настройке позиции плеча. Излишний поворот неестественно повернет торс. Торс в основном существует как элемент управления, к которому присоединены элементы управления руками, локтями и за пястьями. Можно заметить, что для этих элементов управления используются спе цифические соглашения по именованию: UpDwn (вверх-вниз), BckFwd (вперед-назад) и SupPr (ладонью вверх-вниз) указывают направления, в которых поворачивается часть тела при перетаскивании средней кнопкой мыши. Например, после щелчка на LshldrUpDwn перетаскивание влево средней кнопкой мыши в перспективном пред ставлении поворачивает плечо вверх, а перетаскивание вправо поворачивает его вниз. Имейте в виду, что при выделении сразу нескольких имен атрибутов перетаскивание средней кнопкой мыши одновременно перемещает все части. Старайтесь визуально по добрать эти параметры, перетаскивая мышь по области просмотра.
Анимация персонажа rWristBckFw LWristSupPr rwristSupPr
353 11.1 -17.3 13.4
6. Выделите оба элемента управления кистями и установите для них значения атрибу тов MiddleCurl и Middlerot равными 21.3.
7. Выделите объект JoeG_neckCtrl и установите для него значение атрибута rotateX равным 18.46. Теперь расслабленная поза создана. Следует попытаться визуально сравнить ее с геометрическим шаблоном. Возможно, они совпадут не абсолютно точно, но окажутся достаточно близки, таким образом, будет получена оригинальная индивидуальная поза. Далее эту процедуру следует повторить для всех остальных поз. А сейчас обсудим ха рактерные особенности каждой из них.
Поза упреждения Поза упреждения (anticipation pose) — это подготовка к движению в конкретном на правлении, подразумевающая начальное перемещение в обратном направлении. В дан ном случае для подготовки прыжка вперед Джо следует переместить назад и вправо. 1. Переместите индикатор текущего времени на кадр 2. 2. Скройте слой relaxLyr и отобразите слой Ant iсipationLyr. 3. Щелкните на кнопке SALL (Выделить все). 4. Установите ключевой кадр в кадре 2. 5. Начиная с элемента управления COG, переместите каждый элемент управления так, чтобы привести персонаж в соответствие с отображаемым в виде каркаса объектом AnticipationGeo, как показано на рис. 9.5.
Рис. 9.5. Ключевая поза упреждения. Обратите вни мание на то, что Джо Дженерик не в точности соот ветствует шаблону
Поза сжатия Если на справочном видео взглянуть на позу сжатия (compression pose), то можно увидеть, что она является самой нижней точкой прыжка. Более того, это самая нижняя точка движения прыжка, в которой объект находится в равновесии. Поддержание во вре-
354
Глава 9
мя анимации правильного равновесия персонажа дает ключ к имитации его веса. Масса персонажа зависла в воздухе над образованным ступнями основанием. Принимая во внимание то, что ни в компьютере, ни на экране нет настоящей силы тяжести, этот вес визуален по своей природе. Это означает, что персонаж, на который, как ожидает зри тель, действует сила тяжести, должен находиться в состоянии равновесия, а поэтому его визуальный объем следует примерно одинаково распределить с обеих сторон от средней линии ступней, как показано на рис. 9.6. Это очень важно, потому что, если объект в пра вильный момент не будет правильно уравновешен, никакие используемые для переме щения персонажа усилия не будут выглядеть убедительно. Эта аномалия является общей проблемой всех аниматоров. Средняя линия
Центр тяжести
Линия равновесия
Рис. 9.6. В позе сжатия визуальный объем, или вес, объекта сбалансирован относительно средней линии Сжатие не является точной наукой, и определение правильной позы вопрос опыта и цели анимации. Если персонаж медленный, неуклюжий и (или) неповоротливый, то центр тяжести может отставать от средней линии. Для персонажа быстрого, подвижного и (или) с легкой походкой центр тяжести может располагаться несколько впереди пер сонажа. Если предполагается, что персонаж пропустит прыжок, то для начала неплохо будет отклонить его центр тяжести в сторону от средней линии. После установки ключевого кадра в кадре 3, откорректируйте элементы управления Джо Дженериком в соответствии с геометрическим шаблоном и перейдите к следующей позе.
Поза задержки движения Поза задержки движения (moving hold pose) возникает тогда, когда персонаж достига ет предельного положения и ему необходимо задержаться в нем на пару мгновений. За держки движения зачастую устанавливаются на этапе хронометража или уточнения анимации, но поскольку эта особая поза настолько важна с точки зрения смещения веса персонажа, она будет реализована на этапе создания поз. В моментальном мультиплика ционном действии персонаж быстро переходит из позы в позу и в то же время задержи вается в каждой конкретной позе на несколько тактов или кадров, чтобы быть увиден ным и "воспринятым" зрителями. Тем не менее, не утратив иллюзию естественности
355
Анимация персонажа
движения, персонаж не может полностью остановиться; следовательно, во время задерж ки ему следует слегка перемещаться. Задержка движения должна быть не случайным движением, а движением, некоторым образом относящимся к следующему движению и дополняющим его. В данном случае персонаж опускается немного ниже, чем в позе сжатия, подчеркивая сходство с пружиной, готовой распрямиться. Рис. 9.7 позволяет сравнить эту позу с шаб лоном позы сжатия C o m p r e s s i o n G e o . В позе задержки движения Джо Дженерик скло нился в прыжке, и его вес смещен вперед. Эта поза отражает концепцию динамического равновесия, поскольку она вносит в движение аспект времени. Обозреваемая сама по се бе, эта задержка, кажется, не находится в состоянии равновесия, но в контексте всей анимации она усиливает движение прыжка.
Рис. 9.7. По сравнению с геометрическим шаблоном позы сжатия центр тяжести позы задержки движения смещен относи тельно средней линии Расстояние, на которое центр тяжести смещен вперед от средней линии, в значитель ной степени определяется тем, насколько далеко вперед должен прыгнуть персонаж. Ес ли он собирается прыгнуть в длину, то центр тяжести должен быть намного дальше от средней линии. Если же он собирается прыгать в высоту, то центр тяжести не следует пе ремещать так далеко вперед, но при этом он должен быть ниже, чем при прыжке в длину. Помните, что сразу после этого начнется именно сам прыжок. Несмотря на то что эта и все создаваемые на данном этапе позы статические, вместе они составляют последова тельность, приводимую в движение на этапе хронометража. В кадре 4 установите ключевой кадр и переместите персонаж в позицию, требуемую для формирования позы.
Поза развертывания Название поза развертывания (uncoil pose) говорит само за себя: персонаж распрям ляется в прыжке. Из справочных материалов видно, что ноги выталкивают объем персо нажа вверх и вперед. Хотя эта и каждая другая поза важны, именно временной интервал между данным кадром и позой задержки движения передает силу прыжка. Обратите также внимание на то, каким образом создается впечатление того, что подъем рук в пле-
356
Глава 9
чах усиливает прыжок. Как можно заметить, просмотрев справочные материалы, за кадр до отрыва ступней от земли ноги объекта не идеально прямые. Это отражает и поза гео метрического шаблона, но именно сейчас прекрасный момент для эксперимента. Воз можность увидеть влияние позы с более прямыми ногами на результат анимации дейст вительно стоит затраченного на это времени и усилий. Рис. 9.8 демонстрирует, на что это может быть похоже. Установите позу развертывания в 5-м кадре анимации. Чтобы можно было распрямить ноги, при подъеме объекта COG необходимо будет от ключить атрибут StretchSwitch, установив для него значение 0.
Верхняя поза В верхней позе (top pose) и Джо Дженерик, и справочный объект пытаются поджать ступни под себя, чтобы соприкоснуться с блоком или дорожным ограждением. Удиви тельно, но относительно позы развертывания бедра поднимаются не так высоко, если во обще поднимаются. Вот тут ценность справочных материалов становится очевидной. Можно было подумать, что к вершине прыжка сила развертывания вынесет бедра намно го выше, но справочная видеоинформация показывает, что это не так. Верхняя поза де монстрирует, что бедра необходимо приподнять ровно настолько, чтобы позволить пер сонажу подтянуть под себя ноги для соприкосновения с блоком. Эта поза станет той точкой, в которой для придания движению немного большей реа листичности будут использованы запаздывания и опережения движений в воздухе. Ус тановите эту ключевую позу в шестом кадре анимации.
Поза контакта Поза контакта (contact pose) заключается в том, что ступни впервые касаются блока. Это аналогично установке ключевых кадров на растягивающемся мяче сразу после его касания земли, но до сжатия, как это было сделано в главе 7, "Основы анимации". Мо мент контакта ступней с блоком — это момент, в котором персонаж из полностью "подвешенного" в воздухе состояния переходит в контакт с блоком. А потому тут должен быть установлен ключевой кадр. Расположите эту позу на кадре 7 анимации.
Поза удара Поза удара (impact pose) аналогична кадру, на котором в главе 7, "Основы анимации", сжимается отскакивающий мяч. Она переносит вес персонажа между моментами, в кото рых он выходит из состояния полета по воздуху и с силой приземляется на блок. Вес должен приземлиться в равновесии, но в данном случае инерция персонажа требует ос тавить центр тяжести слева от средней линии. Если центр тяжести будет расположен слишком высоко относительно траектории движения, то персонаж может перелететь блок и приземлиться, ударившись лицом о землю. Если же персонаж будет расположен слишком низко относительно траектории движения, то, скорее всего, будет выглядеть так, как будто он должен оступиться и упасть с блока. В определенных обстоятельствах обе эти ситуации могут оказаться полезны, но тут в момент приземления следует пра вильно уравновесить центр тяжести. Поместите эту позу в кадр 8. На рис. 9.9 показано, как поза удара соотносится с позой контакта. Лучший способ определить правильность позы — это вручную воспроизвести анима цию назад и вперед от кадра 6 до текущего (кадр 8). Внимательно следите за тем, чтобы персонаж правильно остановился, и помните, что в момент приземления его ноги и ступ-
Анимация персонажа
357
ни принимают на себя силу его веса, а чтобы помочь себе прийти в равновесие, он может и должен вытянуть руки.
Рис. 9.8. Поза с ногами, вы тянутыми больше, чем в геометрическом шаблоне, придает прыжку несколько большую энергию
Рис. 9.9. Для позы удара центр тяжести должен быть смещен от средней линии в сторону движения. Если он окажется слишком далеко, то персонаж бу дет выглядеть так, как будто собирается свалить ся с блока
Первая и вторая позы остановки Действительно, создать эти две позы для рассматриваемого движения несложно. Они представляют Джо Дженерика, который сдерживает себя от полного растяжения в позе удара по мере того, как снова поднимается. В этих позах центр тяжести должен нахо диться поблизости от средней линии фигуры. Поместите эти две позы соответственно в кадры 9 и 10. Сохраните файл как J o e G J u m p P o s e d . т а . Кроме того, удалите все геометрические шаблоны и связанные с ними слои, так как они создают излишне большой файл.
Инсценировка и постановка При анимации на сцене находятся как минимум два актера. Первый — это объект, Джо Дженерик, а второй актер, хотя и менее очевидный, представляет всех зрителей. Это камера, через которую будет визуализироваться действие. Правильно размещенная, она может улучшить производимое на зрителей впечатление и дополнить действия персона жа. Но бездумно размещенная камера может придать удачно анимированному действию бессистемный и неясный вид. Размещайте камеру так, чтобы она четко представляла действие. Множество факто ров влияет на способность зрителей понимать действие, но один из самых известных — это силуэт персонажа. Для зрителей контур персонажа является неотъемлемой частью восприятия его позы. Если контур позы персонажа не выражает действие ясно, то поза становится не эффектной. Этот принцип довольно неплохо проиллюстрирован на рис. 9.10. На двух верхних изображениях поза контакта изображена в фас. На изображе нии вверху справа показан контур, но смысл самой позы неясен. В ее контуре нет ника-
Глава 9
358
кого ощущения веса; Джо Дженерик просто сгруппировался. Нижние два изображения демонстрируют ту же позу, но с точки зрения в три четверти оборота. Силуэт ясно опи сывает суть позы.
Рис. 9.10. Силуэт является существенным компонентом позы Этот пример ясно указывает на необходимость введения визуализирующей камеры (rendering camera), отдельной от камеры перспективного представления (perspective camera). Камера перспективного представления используется на этапах хронометража и уточнения, а для визуализации необходимо создать новую камеру для визуализации. Хорошо тут то, что камеру перспективного представления можно использовать для пра вильного расположения действия в кадре, затем сдублировать камеру и зафиксировать дубликат для дальнейшего использования при визуализации анимации. Давайте распо ложим действие в кадре и установим камеру. 1. В окне перспективного представления выберите пункт меню View => Camera Settings => r e s o l u t i o n Gate (Вид => Параметры камеры => Рамка разрешения), а затем выберите View => C a m e r a Settings => Safe Action (Вид => Параметры камеры => Безопасная область
действия). При таких параметрах будут создаваться кадры, обладающие разрешением выходной визуализирующей камеры, заданным в окне параметров render Settings (Параметры визуализации). Параметры визуализации безусловно следует устано вить согласно параметрам, заданным заказчиком. Обычно анимацию записывают в цифровом виде, поэтому установите для этого файла разрешение 720x480. Но, если необходимо, можете установить его по-другому. 2.
Используя наезд и панорамирование, расположите камеру так, чтобы снимаемое анимационное действие оказалось в безопасной области действия (action safe line). Несовпадение соотношений размеров компьютерных изображений и стандартных телевизионных требует оставить границу по краю экрана, а все позы располагать
Анимация персонажа
359
внутри рамки безопасной области действия. Это гарантирует, что при перегоне на видео ни одна часть позы не будет обрезана, если анимация предназначена для вос произведения по телевидению. 3. Правильно разместив анимацию в кадре, сразу же выберите пункт меню View => Select Camera (Вид => Выбор камеры). 4. Чтобы создать копию камеры на верхнем уровне иерархии, выберите пункт меню Edit => Duplicate (Правка => Дублировать). 5. Переименуйте только что созданную камеру реrspn в renderCam. 6. В панели каналов выделите все атрибуты перемещения (translate), поворота (rotate), масштаба (scale) и атрибут видимости (visibility). 7. Щелкните на них правой кнопкой мыши и в появившемся контекстном меню выбе рите пункт Lock Selected (Блокировать выбранное). Итак, создана визуализирующая камера, готовая переместиться туда, куда потребует ся! Теперь перейдем к этапу хронометража.
Хронометраж Для создания движения полученный комплект поз необходимо распределить по вре менной шкале. На этом этапе хотелось бы выяснить, как внешне несущественные изме нения одного или двух кадров в подходящий момент могут заметно изменить характер конкретного действия и смысл всей анимации. На этом этапе не стоит беспокоиться об изменении поз; прежде всего работа будет идти над хронометражом. Позы можно создавать одновременно с хронометражом, и у многих аниматоров это уже вошло в привычку. Но преимущество разделения этих двух этапов, особенно при изучении анимации, заключается в том, что аниматор может сосредоточиться на сложно стях каждого этапа, не отвлекаясь при этом на проблемы других.
С чего начинать? Вероятно, самая сложная часть хронометража — это само начало процесса. Например, как долго должен длиться переход из расслабленной позы в позу упреждения? Эта дли тельность будет просто выбрана наугад, или ее можно как-то заранее определить? К сча стью, в этом случае можно ориентироваться на отснятое ранее видео. Проще всего использовать этот источник для обычного подсчета кадров между ключевы ми позами, а затем преобразовать полученные значения в хронометраж анимации. В данном случае это будет использовано в качестве отправной точки для дальнейшей работы. Фактический хронометраж этой простой анимации продемонстрирован в основном для того, чтобы показать, какими медленными по сравнению с анимацией являются ори ентировочные видеоматериалы. Давайте увеличим интервалы между расставленными ключевыми кадрами. 1. Откройте имеющийся на компакт-диске файл JoeGJumpPosed. ma. 2.
Чтобы выделить все элементы управления, щелкните на кнопке SAll (Выделить все). Каждая красная отметка на временной шкале представляет ключевые кадры, установленные на всех элементах управления.
360
Глава 9 Фактически -20%
В итоге
От расслабленной позы к позе упреждения
12 кадров
9 кадров
9 кадров
От позы упреждения до позы сжатия
17 кадров
14 кадров 14 кадров
От позы сжатия до позы задержки движения
2 кадра
1-2 кадра
7 кадров
6 кадров
3 кадра
От позы задержки движения до позы развертывания 8 кадров От позы развертывания до верхней позы
8 кадров
6 кадров
4 кадра
От верхней позы до позы контакта
3 кадра
2 кадра
2 кадра
От позы контакта до позы удара
3 кадра
2 кадра
2 кадра
От позы удара к первой позе остановки
5 кадров
4 кадра
4 кадра
От первой позы остановки ко второй
19 кадров
15 кадров 14 кадров
1.
Выделите ключевые кадры в кадрах 2-10, для чего на временной шкале, нажав кла вишу <Shift>, протащите указатель мыши от кадра 2 дальше за кадр 10 (рис. 9.11, а и б). Появившаяся при этом красная полоса указывает выделенный диапазон (см. рис. 9.11, б). Перейти дальше за кадр 10 необходимо потому, что при слишком большом выделении проблемы не возникнут, но если выделение будет слишком ма лым, то ключевые кадры могут быть нарушены и придется начать все сначала. А теперь о том, как переместить ключевые кадры. Перемещайте выделение до тех пор, пока слева от него не появится число на обычном фоне.
2.
Щелкнув на средних стрелках выделения и не отпуская кнопку мыши, переместите его мышью так, чтобы на левой стороне выделения оказался выделен кадр 12 (см. рис. 9.11, в). Это оставит 12 кадров между расслабленной позой и позой упреждения и установит в кадре 12 позу упреждения.
3.
Чтобы снять выделение, щелкните где-нибудь на временной шкале.
4.
Нажав клавишу <Shift>, выделите мышью ключевые кадры, начиная с кадра 13 (см. рис. 9.11, д), и, используя средние стрелки, перетащите его так, чтобы на левой сто роне выделения был кадр 30 (см. рис. 9.11, е). Это установит позу сжатия в кадре 30. Снимите выделение.
5. 6.
Перетащите остальные ключевые кадры, начиная с кадра 31 и последующие, вправо так, чтобы слева от выделения было выведено 32. Это переместит ключевой кадр с позой задержки движения на кадр 32.
7.
Перетащите остальные ключевые кадры, начиная с кадра 33 и дальше, вправо так, чтобы слева от выделения было выведено 40. Это переместит ключевой кадр с позой развертывания на кадр 40.
8.
Перетащите остальные ключевые кадры, начиная с кадра 41 и дальше, вправо так, чтобы слева от выделения было выведено 48. Теперь в кадре 48 находится верхняя поза.
9.
Перетащите остальные ключевые кадры, начиная с кадра 49 и дальше, вправо так, чтобы слева от выделения было выведено 51. Поза контакта теперь расположена на кадре 51.
10. Перетащите остальные ключевые кадры, начиная с кадра 52 и дальше, вправо так, чтобы слева от выделения было выведено 54. Сейчас кадр 54 содержит позу удара.
Анимация персонажа
361
Рис. 9.11. Процесс выделения и растягивания во времени кадров на временной шкале. Сейчас работа сосредоточе на на кадре 2 (а); удерживая нажатой клавишу <Shift> и левую кнопку мыши, выделите мышью диапазон кад ров (б); перетаскиванием за средние стрелки перемес тите диапазон так, чтобы кадр 2 стал кадром 12 (в); следующим обрабатываем кадр 13 (г); выделите осталь ные ключевые кадры (д); перетащите остальные кадры так, чтобы кадр 13 занял место кадра 30 (е) 11. Перетащите остальные ключевые кадры, начиная с кадра 55 и дальше, вправо так, чтобы слева от выделения было выведено 59. В кадре 59 теперь находится первая по за остановки. 12. Перетащите последние ключевые кадры на кадр 78. Это вторая поза остановки. 13. Установите значение параметра Playback End Time (Время конца воспроизведения) равным 85. 14. Сохраните полученный файл. Результат выполненной работы можно увидеть на компакт-диске в файле J o e G J u m p A c t u a l . ma. Все ключевые кадры файла создавались со ступенчатой касательной. В некоторых случаях, особенно при синхронизации изображения и речи, эта ситуация идеальна, по скольку позы переносятся последовательно, по одной, в то время как звуковая дорожка помогает предвидеть движение. Но для этой анимации было бы лучше иметь больше пе реходов между ключевыми кадрами, поэтому изменим тип касательных ключевых кад ров с типа Stepped (Ступенчатая) на тип Plateau (К плато). В редакторе анимационных кривых можно увидеть, как на анимационные кривые влияют типы касательных Spline (К сплайну), Clamped (С фиксацией) и Plateau (К плато). 1. Чтобы выделить все элементы управления, щелкните на кнопке SAII (Выделить все) и откройте редактор анимационных кривых, выбрав для этого пункт меню W i n d o w => Animation Editors => Graph Editor (Окно => Редакторы анимации => Редактор анимаци онных кривых). 2. На рис. 9.12 представлена анимация в редакторе анимационных кривых, для которой показаны все каналы с установленными ключевыми кадрами для семи элементов управления персонажем. На верхнем изображении все ключевые кадры имеют сту пенчатую касательную. Если, удерживая нажатой левую кнопку мыши провести по временной шкале, то можно увидеть эффект, производимый этим типом касатель ных. Переход от одной позы к другой осуществляется резко, без плавных переходов.
362
Глава 9
Рис. 9.12. Анимационные кривые с различными типами касательно ключевых кадров в редакторе анимационных кривых
Анимация персонажа
363
3. Чтобы выделить все ключевые кадры, дважды щелкните на временной шкале. 4. Чтобы изменить тип касательных ключевых кадров, щелкните правой кнопкой мы ши на временной шкале и в появившемся контекстном меню выберите пункт Tangents => Spline (Касательные => К сплайну). При этом в начальных кадрах (см. рис. 9.12) можно будет наблюдать существенный сдвиг сплайна. В главе 7, "Основы анимации", упоминалось, что сдвиг сплайна возникает, когда кривая сплай на распространяется за пределы значения, установленного в ключе, приводя к неже лательному движению персонажа. Помещение к о п и и к р и в о й в буфер
Maya предоставляет весьма полезный инструмент просмотра изменений анимационных кривых по мере их коррекции — это буфер копий кривой (buffer curve snapshot). Буфер ко пий кривой получает снимок текущего состояния всех выбранных кривых, позволяя зафик сировать их на время внесения изменений в анимацию. Чтобы создать снимок, выделите необходимые анимационные кривые, а затем выберите в меню редактора анимационных кривых пункт Curves => Buffer Curve Snapshot (Кривые => Поместить копию кривой в буфер). Чтобы просмотреть снимок, выберите пункт меню View => Show Buffer Curves (Вид => Показать кривые из буфера). Если сделать изменения кривой теперь, например изменить тангенци альные атрибуты, то исходная кривая будет представлена серой линией, выступая в роли ориентира при работе. Используя пункт меню Curves => Swap Buffer Curve (Кривые => 3аменить кривую в буфере), можно переключаться между первоначальными и измененными кривыми. 5. Выделите на временной шкале все ключевые кадры и измените тип их касательных на Clamped (С фиксацией). На рис. 9.12 видно, как эта операция уменьшает, но не устраняет до конца, выход кривых за пределы своих крайних значений, особенно в начале анимации. 6. Опять выделите на временной шкале все ключевые кадры и измените тип их каса тельных на Plateau (К плато). Как показано внизу на рис. 9.12, этот тип касательных полностью устраняет сдвиг сплайна, существующий для ключевых кадров с каса тельными к сплайну или к плато. Следовательно, с этого момента будем использо вать именно их. 7. В категории Animation (Анимация) окна Preferences (Предпочтения) в качестве значений параметров Default In Tangent (Входящая касательная по умолчанию) и Default Out Tangent (Исходящая касательная по умолчанию) выберите Plateau. Теперь с помощью средства Playblast просмотрите анимацию следующим образом. 1.
Щелкните правой кнопкой мыши на временной шкале и в появившемся контекстном ме ню выберите пункт Playblast •. В открывшемся окне параметров установите флажок View (Вид), чтобы открывать анимацию по окончании визуализации. Сбросьте флажок Show Ornaments (Показать обрамление), чтобы скрыть имя камеры и маркер осей XYZ в нижнем левом углу области просмотра. Для операционной системы Windows установите переключатель Viewer (Программа просмотра) в положение MoviePlayer, а для Мае — в положение Quicktime. Параметры сжатия (Compression) оставьте такими, как они были установлены по умолчанию для Windows. Для Маc установите параметр сжатия Animation (Анимация) или Sorenson. Поскольку ранее в параметрах визуализации (render Settings) было установлено разрешение 720x480, используйте это же значение для размера экрана, выбрав для параметра Display Size (Размер экрана) значение From
364
Глава 9 Window (Как у окна). Для параметра Scale (Масштаб) выберите какое угодно значение, которое только сможет поддерживать компьютер. При наличии возможности просмот реть полноэкранный кинофильм без обрезания компьютерных кадров установите мас штаб равным 1. Для большинства случаев подойдет и значение параметра по умолчанию, 0.75. Установите флажки r e m o v e Temporary Files (Удалять временные файлы) и Save То File (Сохранять в файл). При таких параметрах Майя будет записывать визуализиро ванные фильмы поверх предыдущих до тех пор, пока не будет указано новое имя. По умолчанию фильмы будут сохраняться в папке images текущего проекта. Тут до появле ния веской причины лучше ничего не менять. Но если необходимо, укажите новую папку, щелкнув на кнопке Browse (Просмотр).
2.
Чтобы визуализировать анимацию, щелкните на кнопке Playblast.
Субъект на ориентировочном видео весит около 265 фунтов. Но визуально вес Джо Дженерика гораздо меньше, поэтому непосредственное преобразование хронометража видео вместе с естественной склонностью видео к замедлению с самого начала сделают анимацию смехотворно медленной. Результат можно посмотреть в имеющемся на ком пакт-диске файле JoeGJumpActualPlateau.mov. Расстояния между установленными ключевыми кадрами можно изменить масштабированием и привязать их к целым значе ниям кадров. Теоретически все ключевые кадры можно было бы переместить по одному, но предлагаемый способ с масштабированием настолько быстрее, что позволит сохра нить уйму времени. Давайте ускорим анимацию на 20%, как описано ниже. 1.
Выделите все элементы управления персонажем, щелкнув на кнопке SAII (Выделить все).
2.
Нажав клавишу <Shift>, выделите на временной шкале кадры с 1 по 80, как показано на рис. 9.13, а.
Рис. 9.13. Использование временной шкалы для выделения кадров с 1 по 80 (а); масштабирование расстояния между ключевыми кадрами до 64 кадров и привязка их к ближайшим кадрам с целыми номерами (б) Возвращаясь к м а с ш т а б и р о в а н и ю ключевых кадров
В главе 7, "Основы анимации", утверждалось, что масштабирование опасно и использовать его следует редко или вообще не использовать. Тем не менее в этой главе продемонстри ровано, что правила существуют для того, чтобы их нарушать. Чаще всего в результате масштабирования ключевые кадры попадают на кадры с нецелыми номерами, что может стать причиной проблем при визуализации. Кроме того, соседние ключевые кадры могут накладываться друг на друга, что приводит к проблемам при воспроизведении. Но в этом примере ключевые кадры достаточно растянуты во времени и каждый из них установлен для всех элементов управления. Поэтому масштабирование с немедленной последующей привязкой перемещенных ключевых кадров не должно вызвать никаких проблем.
365
Анимация персонажа
3. Перетащите масштабирующую стрелку выделения, пока на ней не будет выведено 64 (рис. 9.13, б). Обратите внимание на то, что 16 это 20% от 80. 4. Чтобы привязать ключевые кадры к ближайшему кадру с целым номером, немедлен но щелкните правой кнопкой мыши на выделении и в появившемся контекстном ме ню выберите пункт Snap (Привязка). 5. В поле Playback End Time (Время конца воспроизведения) введите значение 65. 6. С помощью средства Playblast воспроизведите анимацию. Полученный результат можно увидеть, открыв файл J o e G J u m p m i n u s 2 0 p e r c e n t .mov. В файле JoeGJumpminus2Opercent.ma содержится соответствующая ему сцена. На компакт-диске, прила гаемом к книге, содержатся оба файла. При таком хронометраже движение стало немного энергичнее, и в момент между по зами сжатия и задержки движения возник небольшой неприятный рывок. Это произош ло потому, что между ними нет достаточного промежутка времени. Кроме того, создается впечатление, что в движении между позой задержки движения и позой развертывания Джо Дженерик пробивается сквозь воздух. Это действие можно ускорить, переместив позы задержки движения ближе к кадру с развертыванием. Эта стремительность под черкнет скорость и силу, с которой Джо Дженерик проталкивается вверх, чтобы занести свои ступни на блок. Итак, выделив все элементы управления, переместите позу задерж ки движения с кадра 26 на кадр 29 и с помощью средства Playblast просмотрите резуль тат. Стало намного лучше! Теперь герой выглядит так, как будто его ступни слегка на прягаются, пытаясь догнать верхнюю часть тела и бедра. Это именно то, что нужно. Тут главное экспериментировать. Попробуйте различные хронометражи для различ ных частей анимации. Несколько пробных примеров приведено ниже. •
Переместите позу упреждения с кадра 10 на кадр 15.
•
Ускорьте движение подъема, переместив первую позу остановки на кадр 44, а вторую позу остановки - с кадра 62 на кадр 55.
•
Замедлите движение между позами сжатия и задержки движения, переместив позу сжатия с кадра 24 на кадр 16.
Выясните, насколько сильно можно ускорить или замедлить различные части движе ния, чтобы они не выглядели слишком замедленными или ускоренными. При этом мож но сохранять сколько угодно версий. Окончательное расположение кадров, с которого начнется работа на этапе уточнения, приведено ниже, а также в имеющемся на компактдиске файле JoeGJumpTimedFinal.ma. Расслабленная поза Поза упреждения Поза сжатия Поза задержки движения Поза развертывания Верхняя поза Поза контакта Поза удара Первая поза остановки Вторая поза остановки
1 6 20 29 32 35 38 40 50 62
366
Глава 9
Уточнение полученной анимации Этап уточнения представляет последние 10% работы по анимации, выполнение кото рой может занять огромное количество времени. На этом этапе устанавливаются детали, способные сделать неплохую анимацию превосходной. Тут верх берет искусство, а пото му отступим от справочного видео. Теперь все определяет ситуация, поскольку созда ваемые движения для этой конкретной анимации будут единственными в своем роде. До сих пор создавался общий прототип прыжка, а теперь будут организованы дополнитель ные движения, которые и сделают эту анимацию особой. На этом этапе попытаемся сделать следующее. •
Исправить все пересечения геометрических форм. Например, в данный момент ступни проходят сквозь блок. Настало время исправить эту ошибку.
•
Победить "зеркальность" или симметричность поз, движений и хронометража. На самом деле симметричность поз следовало устранить на этапе их создания. В сим метричных позах части тела одинаковы с обеих сторон персонажа. В симметричных движениях части тела двигаются одинаково и одновременно принимают следующую позу. Эта проблема стиля анимации по позам (pose-to-pose animation) описана в дан ной главе. В симметричных хронометражах одинакова длительность частей анима ции. Например, если время между расслабленной позой и позой упреждения такое же, как между позами упреждения и сжатия, то такой хронометраж считается сим метричным. При симметричном хронометраже анимация выглядит механической и безжизненной.
•
Внести в движение персонажа опережения (overshoot) и запаздывания (lag). В дан ном случае у Джо Дженерика непропорционально большие кисти рук и ступни ног, а на худой шее держится слишком большая голова. Под действием сил ускорения эти части тела стремятся слегка отстать от движения большей части тела и выходят за пределы крайних точек движения.
Чтобы придать движению больше жизни, по мере необходимости будем смещать, добавлять и удалять ключевые кадры. Более того, начнем работу с тела. Тут описать все дополнения невозможно. Даже такая простая анимация, как эта, предполагает го раздо больше уточнений, чем можно описать в этой книге. Поэтому тут обсуждаются лишь некоторые изменения в ключевых областях, а все остальное предлагается доде лать самостоятельно, вооружившись приобретенными знаниями. Итак, предстоит сде лать следующее. •
Исправить прохождение ступней сквозь блок.
•
Переместить ключевые кадры элементов управления ступнями так, чтобы обе ступ ни отрывались от земли и приземлялись не в одном кадре.
•
В моменты, когда тело в прыжке отрывается от земли, а потом приземляется на блок, придать голове некоторое запаздывание и опережение.
Исправление движения ступней Исправьте движение ступней, сместив его следующим образом. 1. В окне Preferences (Предпочтения) щелкните на категории Animation (Анимация), расположенной под разделом Settings (Параметры), и выберите для параметров
Анимация персонажа
367
Default In Tangent (Входящая касательная по умолчанию) и Default Out T a n g e n t
(Исходящая касательная по умолчанию) значения Plateau (К плато). Если этого не сделать, то будут искажены траектории анимации. 2. Переведите рабочую область в трехпанельную компоновку с двумя панелями вверху. Слева вверху расположите перспективное представление, справа вверху — вид со стороны камеры renderCam, а снизу — монтажный стол (Dope Sheet). Это позволит просматривать анимацию со всех точек обзора в области перспективного представ ления и визуализировать просмотр с помощью средства Playblast с использованием камеры renderCam. Монтажный стол здесь нужен для того, чтобы видеть ключевые кадры каждого объекта независимо от остальных кривых или связей. Их будет удобно перемещать для достижения желаемого эффекта. 3. Чтобы выделить все семь элементов управления персонажем, щелкните на кнопке SAII (Выделить все). 4. В меню List (Список) монтажного стола сбросьте флажок Auto Load Selected Objects (Автоматическая загрузка выделенных объектов). Это позволит выделять и выбирать обрабатываемые элементы управления, одновременно просматривая для сравнения ключевые кадры остальных. 5. В окне монтажного стола, нажав клавишу < К > , с помощью левой кнопки мыши пе ретащите индикатор текущего времени вперед на кадр 32. Этот кадр содержит позу привязки. Перейдите к кадру 33. Будет видно, что ступни, так же как и в момент от рыва от земли, все еще отклонены вверх, как показано на рис. 9.14, а. Исправим это и откорректируем повороты, создав впечатление, что носки ступней помогают Джо Дженерику в прыжке. 6. Чтобы получить изображение, похожее на рис. 9.14, б, переместите и поверните эле менты управления вместе или по отдельности. Это исправит несоответствующий из гиб носков, а также добавит ступням некоторое запаздывание в начальный момент их отрыва от земли. 7. Откорректируйте атрибуты b a l l C t r l и toeCtrl так, чтобы носки были направ лены вниз в сторону земли, как показано на рис. 9.14, б. Этот эффект можно уси лить, увеличив значение атрибута toeCtrl настолько, чтобы изгиб ступни стал почти незаметен. 8. Передвиньте индикатор текущего времени вперед к кадру 34. Здесь станет заметно, что эта корректировка породила другую проблему: теперь ступни больше движутся вперед, а не вверх. Исправьте это перемещением и поворотом ступней (см. рис. 9.14, в). Теперь ступни в движении будут отставать от остального тела, и бу дет создаваться впечатление, что они оказываются в верхней позе раньше. 9. Перейдите к кадру 36. Это кадр после верхней позы, в котором отчетливо видно, что ступни собираются пересечь блок, как показано на рис. 9.15, а. 10. Переместите элементы управления вверх вдоль оси Y так, чтобы ступни на следую щем кадре уклонились от пересечения с блоком (см. рис. 9.15, б). Не перемещайте их слишком далеко, поскольку тогда непосредственно перед приземлением они будут казаться резко подброшенными вверх.
Глава 9
368
Рис. 9.14. Неправильное положение ступней (а); ступни после пере мещения и поворота элементов управления, а также корректировки для каждого элемента управления атрибутов ballCtrl, toeCtrl и heelToe (б); ступни должны двигаться не вверх, а вперед (в)
9
Анимация персонажа
369
Рис. 9.15. Ступни собираются пересечь блок (а); откорректирован ные ступни (б)
Смещение ключевых кадров ступней В настоящий момент обе ступни приземляются на блок точно на одном кадре, что вы глядит немного неестественно. Это можно изменить, сдвинув на монтажном столе клю чевые кадры элементов управления ступнями. 1. В окне монтажного стола, удерживая нажатой левую кнопку мыши, выделите пря моугольником ключевые кадры объекта JoeG_LfootCtrl, начиная с кадра 29 и за канчивая кадром 33. 2. Нажмите клавишу < W > , чтобы выбрать инструмент Move (Перемещение), и в окне монтажного стола средней кнопкой мыши перетащите ключевые кадры на один кадр назад. В результате этого левая ступня будет отрываться на один кадр раньше. На рушить идентичность не так уж и сложно. 3. Для объекта JoeG_rfootCtrl выделите ключевые кадры, начиная с кадра 29 по 40, и с помощью средней кнопки мыши перетащите их на один кадр позднее. Теперь пра вая ступня отрывается от земли на два кадра позже левой и приземляется на один кадр позднее.
370 4.
. Глава 9 С помощью средства Playblast просмотрите полученный результат. На что он похож, можно увидеть, обратившись к имеющемуся на компакт-диске файлу JoeGFinalFeet.mov.
Экспериментируйте, .экспериментируйте и еще раз экспериментируйте! Насколько далеко можно передвигать ключевые кадры, чтобы анимация все еще выглядела естест венно? В конечном итоге она примет некорректный вид, но последнее действие всегда можно отменить. Тут важно приобрести опыт наблюдения за тем, что может сделать смещение одного или нескольких ключевых кадров на один-два кадра для того, чтобы создать или разрушить анимацию.
Добавление запаздывания и опережения к движению головы Теперь, чтобы внести немного гибкости в верхнюю часть тела, обратимся к модифи кации головы и рук. Помните, визуально голова и кисти рук — это большие массы, свя занные с телом тонкими соединениями в виде шеи и рук. Когда тело устремляется вверх, для головы было бы визуально логично в прыжке несколько отставать от движения тела. Тут также есть стремление к опережению текущей крайней позы анимации. Сделаем с имеющимися ключевыми кадрами все возможное и, может быть, добавим новые ключе вые кадры. Было бы отлично уметь отличать ключевые кадры элемента управления шеей от ключевых кадров остальной части тела. К счастью, Майя позволяет изменить цвет ключевых кадров. 1. Чтобы открыть редактор цветов (Colors Editor), выберите пункт меню W i n d o w => Settings/Preferences => Color Settings (Окно => Параметры/Предпочтения => Параметры цвета), как показано на рис 9.16.
Рис. 9-16. Окно параметров цвета 2.
На вкладке General (Общие) щелкните на раскрывающемся разделе Animation (Анимация). Для цвета Time Slider Tick Special (Специальные отметки ползунка времени) выберите новый цвет. Далее этот цвет будет использоваться для отметок ключевых кадров объекта JoeG_neckCtrl на временной шкале. Щелкните на кноп ке Save (Сохранить).
Анимация персонажа
371
3. В окне перспективного представления выделите объект JoeG_neckCtrl. 4.
Введите в командной строке команду keyframe -tds on; и на цифровой клавиа туре нажмите клавишу <Enter>. С этого момента все отметки ключевых кадров объ екта JoeG_neckCtrl будут отображаться выбранным цветом. Чтобы вернуться к прежнему цвету, выделите элемент управления шеей (JoeG_neckCtrl), а затем введите и выполните в командной строке команду keyframe - tds off.
В результате стремительного прыжка голова опускается на грудь до тех пор, пока не поворачивается вверх на вершине кривой, а затем при ударе ступней о блок быстро дви жется вниз. Следует изменить движение головы, выполнив следующие действия. 1. При выделенном объекте JoeG_neckCtrl переместите индикатор текущего време ни на кадр 29. 2. Перетаскивая указатель мыши по временной шкале, воспроизведите вручную ани мацию до кадра 32. Обратите внимание на то, что голова слегка наклоняется вниз, хотя в действительности должна наклоняться сильнее. 3. В ключевом кадре 32 поворачивайте голову до тех пор, пока значение атрибута rotateX не станет равным 64. Это покажет, как под силой прыжка голова будет придвигаться вниз к груди. 4. В ключевом кадре 35 поверните голову относительно направления оси X так, чтобы значение атрибута rotateX стало равным -7. Тут голова запрокидывается назад на вершине прыжка, но для получения максимального эффекта этот момент необходи мо сдвинуть. 5. На ключевом кадре 38 поверните голову так, чтобы значение атрибута rotateX ста ло равным 0. Как только голова достигнет этого положения, она останется опрокину той вверх до следующего кадра. 6. В ключевом кадре 40 поверните голову так, чтобы значение атрибута rotateX стало равным 116. Этот поворот заставит голову быстро наклониться вперед на ключевом кадре удара. И опять, чтобы заставить эту позу работать, ее следует сместить. Слиш ком сильный поворот придаст Джо Дженерику вид, как будто он сломал себе шею! 7. В ключевом кадре 50 поверните голову так, чтобы значение атрибута rotateX стало равным 105. Голова остается наклоненной вниз, так как персонаж начинает подни маться. 8. С помощью средства Playblast просмотрите полученный результат. Теперь необходимо сместить эти ключевые кадры так, чтобы придать движению мак симальный эффект. 1. Используя временную шкалу, перетащите ключевые кадры из кадров 2 9 - 4 0 на один кадр вперед. Теперь ключевые кадры установлены на кадрах 30,33,36,39 и 41. 2. Снимите выделение с ключевого кадра 30 и на временной шкале перетащите осталь ные ключевые кадры еще на один кадр вперед. Теперь они расположены на кадрах 34,37,40 и 42. 3. Чтобы уменьшить бешеную скорость последнего наклона головы, переместите клю чевой кадр с кадра 42 на кадр 45.
372 4.
Глава 9 С помощью средства Playblast просмотрите полученный результат, который также приведен в файле JoeGJumpHead.mov. Если движения головы выглядят слишком независимыми, повторно установите значения атрибута rotateX для ключевых кад ров в кадрах 37 и 40.
Правильное использование смещений позволяет придать этой анимации множество подробностей. Откройте имеющийся на компакт-диске файл JoeGJumpFinalOff sets. ma. Выделите все элементы управления и откройте окно Dope Sheet (Монтажный стол). Посмотрите на атрибуты объектов COG и UpperBodyGrp. Если они не видны, то для их отображения щелкните на знаке "плюс" возле имени кривой в пред ставлении иерархической структуры на монтажном столе. Многие из ключевых кадров этих дополнительных атрибутов были смещены, чтобы в анимации их значения прояви лись позже (а в некоторых случаях раньше). Чтобы увидеть полученные результаты, просмотрите фильм из файла JoeGJumpFinalOffsets .mov, который находится в пап ке главы 9. Развлекитесь, экспериментируя с ключевыми кадрами на монтажном столе и созда вая различные эффекты. При этом чаще сохраняйте файл под новым именем, чтобы иметь возможность вернуться назад к наиболее удачному варианту.
Резюме В этой главе был рассмотрен конкретный метод анимации по позам. Несмотря на ис пользование геометрических шаблонов, авторы надеются, что, не ограничиваясь ими, было создано полностью неповторимое действие. Затем были откорректированы вре менные интервалы между позами и доказано, что различие всего лишь в несколько кад ров может придать действию ясность и естественность. И напоследок было уточнено движение нескольких частей тела, что позволяет прочувствовать, чего стоит создание ка чественной анимации. В следующей главе речь пойдет о нелинейной анимации и использовании редактора дорожек Maya. Нелинейная анимация — это способ, объединяющейся анимации в клипы неразрушающим способом, подобным нелинейному видеомонтажу.
Нелинейная анимация В этой главе описывается нелинейная анимация (nonlinear animation) — метод анима ции, позволяющий недеструктивным способом, подобным используемому в современ ных приложениях нелинейного визуального редактирования (например, Final Cut от Apple), моделировать движение из более мелких анимационных клипов. Этот тип анима ции очень хорошо подходит для повторяющихся движений и широко используется раз работчиками игр, позволяя создаваемым ими экранным персонажам по-разному реаги ровать на изменения окружающей обстановки и действия пользователей. Система Full Body IK (FBIK), которая рассматривалась в главе 8, "Постановка и оснащение персона жа", делает нелинейную анимацию с использованием созданных в Maya персонажей и редактора дорожек еще более успешной, поскольку FBIK автоматически создает персо нажи, которые должны использоваться в нелинейной анимации. По существу, нелинейная анимация способствует решению двух наиболее трудоем ких задач анимации с использованием ключевых кадров: монотонность при воссоздании идентичных или похожих движений и трудность наложения друг на друга двух движе ний, предварительно созданных с использованием ключевых кадров. Благодаря своим возможностям недеструктивного редактирования нелинейная анимация позволяет "монтировать" клипы, размещая их один за другим, или совмещая имеющиеся в них движения. Фактически нелинейная анимация с использованием редактора дорожек во многом похожа на монтаж видеофильмов: для создания окончательного движения клипы компонуются рядом либо накладываются друг на друга. Хотя повторное использование анимационных клипов подстегивалось нуждами разработчиков игр, где короткие клипы необходимо многократно использовать и смешивать, реализация этой методики в Maya имеет свои преимущества, которые окажутся полезными практически в любом анимаци онном проекте. В этой главе рассматриваются следующие темы. •
Что такое персонаж
•
Создание поз
•
Создание клипов
•
Модификация, смешение и совместное использование клипов
•
Практика: создание анимации с помощью новой функции Maya — Full Body IK
Что такое персонаж Прежде чем приступать к анимации с использованием редактора дорожек (Тгах Editor), необходимо создать один или несколько персонажей. Персонаж (character)
374
Глава 10
в Maya — это коллекция разнообразных атрибутов, которые подлежат анимации. Други ми словами, персонаж — не более чем список или группа порой никак не связанных ат рибутов в различных узлах. • Поскольку понять концепцию персонажа проще на примере, создадим очень простой персонаж, чтобы продемонстрировать, каков он есть на самом деле. На новой сцене Maya создайте два примитива, например сферу и цилиндр. Выделите сферу, а затем выберите в панели каналов каналы положения по координатам X, Y и Z. Пока они выделены, выбе рите в наборе меню Animation (Анимация) пункты Character => Create Character Set • (Персонаж => Создать набор персонажа • ) . Сбросьте значения параметров инструмента Character Set (Набор персонажа) и установите в его параметрах флажок From Channel Box (Из панели каналов). Присвойте персонажу имя (например, simpleGuy) и щелкните на кнопке Create Character Set (Создать набор персонажа), чтобы создать новый персонаж. Если теперь посмотреть на окно иерархической структуры, то можно заметить, что внизу списка появился персонаж по имени s i m p l e G u y . Если прокрутить список атрибу тов, связанных с этим персонажем, то можно будет заметить каналы положения по осям X, Y и Z сферы (рис. 10.1). Для персонажа можно добавить столько атрибутов, сколько необходимо. Выделите цилиндр, выделите в панели каналов каналы поворота вокруг осей X, Y и Z, а затем выберите персонаж s i m p l e G u y в раскрывающемся меню выбора набора персонажа, расположенном в правой нижней части окна Maya (или выберите пункт меню Character => Set Current Character Set => simpleGuy (Персонаж => Установить текущий набор персонажа => s i m p l e G u y ) . И наконец, выберите пункт меню Character => Add То Character Set (Персонаж => Добавить к набору персонажа). Как показано на рис. 10.2, каналы вращения цилиндра будут помещены в набор персонажа s i m p l e G u y , позволив анимировать и эти каналы, когда выделен данный персонаж.
Рис. 10.1. Атрибуты персо нажа simpleGuy в окне иерархической структуры
Puc. 10.2. Добавление ка налов вращения цилиндра персонажу simpleGuy
Для применения этого персонажа в анимации убедитесь, что он выбран в раскры вающемся меню Characters (Персонажи), а затем анимируйте любой из его каналов (достаточно нажать клавишу <S>, чтобы установить ключевой кадр для всех атрибутов персонажа). На настоящий момент можно одновременно анимировать каналы положе ния сферы и каналы поворота цилиндра. Хотя сейчас эта возможность не особенно по лезна для столь простого персонажа, по мере накопления атрибутов и усложнения пер сонажа она окажется весьма ценной, как будет продемонстрировано далее в главе.
Нелинейная анимация
375
Работа с позами Полезным техническим приемом, как при подготовке к анимации, так и во время процесса анимации может быть предварительное создание для персонажа уникальных поз, которые он сможет принимать по команде. Использование поз позволяет создать любое количество предопределенных конфигураций персонажа, которые могут существенно сэ кономить время в ходе процесса оснащения (rigging process) персонажа, а также во время анимации, если персонаж в фильме обычно возвращается в определенную позицию. Сначала попробуем создать простые "персонажи", состоящие из пары геометрических примитивов, которые для начала хорошо подойдут в качестве замены более сложных персонажей. 1. Создайте сферу t h i n g l и куб thing2. (Для этих персонажей подойдет любая мо дель, поэтому при желании можно выбрать другие формы.) 2. Выделите сферу t h i n g l и сделайте ее персонажем Майя, выбрав пункт меню Character => Create Character Set • (Персонаж => Создать набор персонажа • ) . В окне параметров выберите пункт Edit =>reset Settings (Правка => Восстановить параметры по умолчанию), а затем щелкните на кнопке Create Character Set • (Создать набор персонажа • ) . В результате будет создан персонаж c h a r a c t e r l с каналами пере мещения и поворота, допускающими установку ключевых кадров. Выберите куб thing2 и создайте второй персонаж — character2. 3. Установите персонаж c h a r a c t e r l в качестве рабочего, выбрав соответствующий пункт в раскрывающемся меню Character (Персонаж), расположенном в правом нижнем углу временной шкалы. 4. Проще всего создавать позы с помощью редактора дорожек. Откройте редактор доро жек, выбрав пункт меню W i n d o w => Animation Editors => Trax Editor (Окно => Редакторы анимации => Редактор дорожек). Чтобы загрузить персонажи, выберите геометриче скую форму для каждого из них (или выберите персонаж из раскрывающегося ме ню), а затем выберите пункт меню L i s t o L o a d Selected Characters (Список => Загрузить выбранные персонажи) в окне редактора дорожек. Как показано на рис. 10.3, персо нажи c h a r a c t e r l и character2 отмечены на временной шкале, где сразу после создания появляются позы и анимационные клипы. Раскрывающееся меню слева от имени каждого персонажа в данный момент пусты, поскольку ни с одним из них еще не связаны ни клипы, ни позы. Навигация в окне редактора дорожек ничем не отлича ется от навигации в большинстве других окон Майя: чтобы изменить масштаб, переме щайте указатель мыши, удерживая нажатой клавишу и правую кнопку мыши, а для перехода по временной шкале — клавишу и правую кнопку мыши. 5. Используя раскрывающееся меню Character, сделайте персонаж c h a r a c t e r l теку щим. Чтобы просмотреть персонаж в панели каналов (например, чтобы выяснить, какие из каналов доступны), этот персонаж можно выделить в окне иерархической структуры. 6. В окне редактора дорожек выберите пункт меню Create => Pose • (Создать => Поза • ) . Присвойте позе имя Beginning и щелкните на кнопке Create Pose (Создать позу). Ни на сцене, ни в окне редактора дорожек не будет никаких изменений, но Майя уже сохранила текущее состояние (перемещение и поворот) сферы c h a r a c t e r l в виде клипа, который можно использовать.
376
Глава 10
Рис. 10.3. Окно редактора дорожек 7.
Чтобы загрузить позу в редактор дорожек, выберите в меню редактора дорожек пункт Library => Insert Pose => Beginning (Библиотека => Вставить позу => Начало). В ре зультате, как показано на рис. 10.4, поза загрузится в редактор дорожек ниже персо нажа c h a r a c t e r l . (Чтобы просмотреть клип, можно щелкнуть на треугольнике раскрывающегося меню, расположенном рядом с именем персонажа c h a r a c t e r l . ) Кроме того, с левой стороны окна редактора дорожек появятся три кнопки. Крайняя левая кнопка блокирует и разблокирует клип (заблокированный клип нельзя выде лить). Средняя кнопка — это соло-кнопка (solo button), щелчок на ней сделает теку щий клип или позу единственной активной. Крайняя правая кнопка — кнопка вы ключения, которая останавливает анимацию для данной позы или клипа. 1
Рис. 10.4. Новый клип в окне редактора дорожек 8. Теперь создадим вторую позу для персонажа c h a r a c t e r l . В окне сцены перемести те сферу в другую позицию (нет необходимости изменять время на временной шка ле) и в окне редактора дорожек выберите пункт меню Create => Pose • (Создать => Поза • ) . В окне параметров присвойте позе имя Ending и щелкните на кнопке Create Pose (Создать позу). 9.
Загрузите новый клип, выбрав пункт меню Library => insert Pose => Ending (Библиотека => Вставить позу => Конец). Как показано на рис. 10.5, на временной шкале под позой B e g i n n i n g появляется новая поза.
10. Позиция сферы не изменится, поскольку она все еще контролируется верхней позой. Щелкните на кнопке выключения рядом с начальным клипом (крайняя правая
Нелинейная анимация
377
кнопка на левой панели), и сфера "перепрыгнет" в позицию, определенную конечным клипом. Можно также перетаскивать позы по временной шкале, заставляя сферу пе ремещаться с места на место постепенно. Более подробно временная шкала рассмат ривается в следующем разделе.
Рис. 10.5. Вставка второй позы в редакторе дорожек Создание экземпляров клипа в редакторе д о р о ж е к
Размещение позы или клипа на дорожке в редакторе дорожек создает экземпляр исходно го клипа, который хранится в окне просмотра (Visor) (пункт меню Window => General Editors => Visor (Окно => Общие редакторы => Просмотр)). Например, если перетащить на до рожку клип B e g i n n i n g , то он будет назван B e g i n n i n g l (или 2 и т.д.), а не просто Beginning. Благодаря взаимосвязи экземпляров можно вносить любые изменения в от дельную позу или клип на дорожке, не влияя при этом на значения исходного клипа. С дру гой стороны, изменение параметров исходного клипа (с помощью редактора атрибутов) от ражается на всех экземплярах этого клипа на всех дорожках.
Работа с клипами Хотя позы могут быть полезными в ограниченных условиях (например, когда требу ется быстро вернуться к определенной позе), клипы, как правило, являются более удоб ным инструментом для аниматора. Клипы (в основном) представляют собой короткие анимационные фрагменты, которые можно соединять и (или) смешивать для создания более длинных фрагментов. Последние, в свою очередь, можно варьировать и цикличе ски повторять так, как это требуется для создания заданного фильма. Обычный процесс при разработке необходимых для фильма клипов заключается в создании анимационных фрагментов (зачастую различных для каждой части тела), их сохранения в буфере (подобном буферам (bin), используемым в нелинейных программах редактирования ви део) и последующей их компоновки и настройки параметров в редакторе дорожек. По скольку анимация хранится в клипах, несколько клипов можно объединить недеструк тивным способом. Это позволяет аниматору управлять мелко- и крупномасштабной анимацией персонажа без необходимости искать и корректировать определенные ключе вые кадры. Клипы особенно полезны при анимации повторяющихся движений, которые должны отличаться от цикла к циклу, например моргание век, походка, бег или разговор. Можно увеличивать или уменьшать масштаб клипов для повышения или понижения скорости или сложности действия персонажа, а кроме того, их можно зацикливать для повторения заданного движения.
378
Глава 1
Создание клипов КЛИПЫ создаются так же, как и позы, за исключением того, что в результате получает ся анимация с записью ключевых кадров для всего персонажа, а не одно его положение. Созданные клипы можно использовать снова и снова в разных сценах. Фактически клип может состоять из одного ключевого кадра; однако такой клип может быть трудно ис пользовать, поскольку он не имеет длины, которую можно корректировать или совме щать с другими клипами. При создании клипа с одним ключевым кадром можно смяг чить ограничения, выбрав исходный клип в окне просмотра или иерархическом пред ставлении, а затем открыть редактор атрибутов и увеличить продолжительность (параметр Duration) исходного клипа. Однако гораздо проще и удобнее сразу создать клип с несколькими ключевыми кадрами. Чтобы просматривать клипы непосредственно в иерархическом представлении, выключите параметр Show DAG Objects Only (Показать только объекты DAG) в меню панели Outliner (Иерархическая структура). Как только на временной шкале появляется какая-нибудь анимация, в редакторе до рожек можно создать клип, выбрав в меню редактора пункт Create => Animation Clip • (Создать => Анимационный клип • ) . В окне параметров Create Clip (Создать клип), по казанном на рис. 10.6, можно выбрать параметры создания и использования клипа. В по ле Name ( И м я ) введите имя клипа. (По умолчанию используется имя c l i p l . ) Имеет смысл переименовать файл так, чтобы новое имя отражало содержимое клипа. Предпо ложим, что создаются клипы с синхронизацией изображения губ во время проговаривания слов, тогда каждый клип можно назвать словом, которое реализует этот клип. Фла жок Leave Keys In Timeline (Оставлять ключевые кадры на временной шкале) позволяет сохранить на временной шкале ключевые кадры, использованные при создании клипа. Это может оказаться полезным, если требуется создать несколько похожих клипов, а воспроизводить все ключевые кадры для каждого клипа нежелательно. Однако, как пра вило, при создании клипа лучше удалять ключевые кадры с временной шкалы, чтобы впоследствии не получить в клипе неожиданных анимационных эффектов. (Ключевые кадры временной шкалы и клипа работают аддитивно, а это приводит к неприглядным результатам.) Переключатель Clip (Клип) позволяет разместить клип только в окне про смотра (если разработчик не планирует использовать его немедленно) либо в окне про смотра и на дорожке персонажа в редакторе дорожек. В разделе Time r a n g e (Временной диапазон) доступны следующие возможности (а также два флажка, относящихся к под чиненным персонажам и изменению масштаба времени): •
использовать выбранный временной диапазон (перетаскивание ползунка на времен ной шкале с одновременным нажатием клавиши <Shift>);
•
использовать начальное и конечное значение ползунка диапазона;
•
использовать диапазон анимационных кривых (от первого до последнего ключевого кадра для персонажа — этот метод используется по умолчанию);
•
использовать установленные вручную начальный и конечный кадры;
•
включить анимационную кривую Time W a r p (Масштаб времени), которая позволяет перераспределить хронометраж клипа. Несмотря на то что эта функция удобна, она снижает производительность сцены, поэтому ее следует использовать только при не обходимости;
Нелинейная анимация •
379
включить ключевые кадры клипа.
подчиненного персонажа
(subcharacter) во время создания
Рис. 10.6. Окно параметров создания клипа Чтобы рассмотреть работу клипа подробнее, создадим его. 1. Воспользуйтесь сценой из предыдущего раздела о позах или создайте новую сцену с двумя геометрическими примитивами. Создайте два персонажа для примитивов, c h a r a c t e r l и c h a r a c t e r 2 , со стандартными параметрами. 2. Выберите персонаж c h a r a c t e r l и установите для него ключевой кадр, нажав кла вишу <S>. (Убедитесь, что персонаж c h a r a c t e r l выбран в раскрывающемся меню персонажа.) В противном случае установить ключевые кадры для этого персонажа не удастся. Измените время (перейдите на несколько кадров дальше по временной шка ле), переместите и поверните примитив, связанный с первым персонажем, и устано вите второй ключевой кадр. Создайте столько ключевых кадров для этого персонажа, сколько необходимо. 3. В окне редактора дорожек или в меню Animate (Анимировать) выберите пункт Create => Animation Clip • (Создать => Анимационный клип • ) . В окне параметров Create Clip (Создать клип) присвойте клипу имя, установите отображение клипа в редакторе дорожек и в окне просмотра. Для настройки длины клипа выберите Use Animation Curve r a n g e (Использовать диапазон анимационной кривой) и щелк ните на кнопке Create Clip • (Создать клип • ) . Как показано на рис. 10.7, новый готовый к использованию клип находится в редакторе дорожек. Кроме того, в окне просмотра (теперь на вкладке Clips (Клипы), а не Poses (Позы)) появляется но вый исходный клип). 4.
Щелкните на кнопке Play (Воспроизвести) в окне сцены. В результате маркер време marker) начнет перемещаться по временной шкале редактора дорожек. По мере воспроизведения анимации клип будет проигрываться точно так же, как и при сохранении ключевых кадров сцены на временной шкале. ни (time
Как только клип появится на дорожке, можно интерактивно изменять его позицию, длину (или масштаб) и параметры цикличности. О том, как это сделать, речь пойдет в следующем разделе.
Глава 10
380
Рис. 10.7. Создание нового клипа в редакторе дорожек
Модификация клипов Хотя создание и повторное использование клипов может быть весьма полезным, еще более ценной является возможность модификации клипов для создания различной ани мации. На рис. 10.8 показан клип в редакторе дорожек. Цифры на синей полосе над кли пом указывают начальную и конечную точки клипа на главной временной шкале (временной шкале сцены). В середине самого клипа показаны его длина, имя и процент длины исходного клипа, покрываемый текущим воплощением. Два числа с левой сторо ны означают начальную точку клипа (clip in point) (слева вверху) и начальную точку временной шкалы (timeline in point) (слева внизу) для клипа. С правой стороны показаны конечная точка клипа (clip out point) и конечная точка временной шкалы (timeline out point) для клипа (вверху и внизу соответственно). Вся информация о клипе обновляется автоматически по мере того, как в этот экземпляр клипа вносятся изменения.
Рис. 10.8. Клип в окне редактора дорожек Модификация клипа станет довольно простым делом, если научиться манипулиро вать им в редакторе дорожек. •
Для изменения позиции (начальной и конечной точек) клипа следует просто пере тащить клип (взяв его за середину) в новую позицию на временной шкале.
•
Чтобы изменить длину (или масштаб) клипа, нужно перетащить правый верхний угол клипа. Курсор при этом должен превратиться в двойную стрелку с точкой посе редине, которая означает возможность масштабировать клип. Перетаскивание влево уменьшает масштаб клипа (анимация ускоряется), а перетаскивание вправо — делает анимацию более медленной. Можно также изменить значение параметра Scale (Масштаб) для клипа, дважды щелкнув на правом нижнем числе и введя номер но вого конечного кадра или загрузив персонаж в панель каналов и изменив значение параметра Scale. Кроме того, можно перетаскивать левое нижнее число в клипе, что бы масштабировать клип не с конечной точки, а с начальной.
•
Чтобы изменить количество повторений клипа (настройки цикличности), перетащи те правый верхний угол клипа, удерживая нажатой клавишу <Shift>. Либо можно задать количество циклов (параметр Post или Pre Cycle) в редакторе атрибутов или
Нелинейная анимация
381
на панели каналов (Channel Box). Если дорожка содержит несколько циклов исход ного клипа, то Майя отметит на клипе черными отметками времени (tickmark) все точки повторения исходного клипа. В дополнение к этому циклическая область кли па показывает новую конечную точку временной шкалы, а также количество допол нительно созданных циклов и немного осветляет цвет панели для всех предыдущих циклов. На рис. 10.9 показано, что дополнительно создано 1,2 цикла, и метка С 1 . 2 это подтверждает. Смещать анимационные циклы клипов можно двумя способами. Если выбран режим Absolute (Абсолютно), то значения атрибутов переустанавли ваются в исходные значения при каждом повторении цикла. В режиме r e l a t i v e (Относительно) значение атрибута прибавляется к исходному значению. Относи тельное смещение полезно, например, при создании цикла ходьбы, поскольку дви жение ног персонажа при ходьбе повторяется циклически, но к первоначальной, ис ходной, точке при каждом шаге не привязывается. Чтобы настроить относитель ные/абсолютные параметры смещения для клипа, следует выбрать клип и открыть редактор атрибутов, как показано на рис. 10.10. В разделе Channel Offsets (Смещения каналов) можно выбрать параметры All Absolute (Все абсолютные), АLL r e l a t i v e (Все относительные) или r e s t o r e Defaults (Восстановить по умолчанию). Кроме того, чтобы сделать смещение абсолютным либо относительным, можно также использовать переключатели для каждого атрибута.
Рис. 10.9. Цикличный клип
Рис. 10.10. Изменение смещения клипа в редакторе атрибутов
382
Глава 10
•
Д Л Я обрезки клипа, чтобы использовать только часть, а не весь клип, следует пере местить правый или левый верхний угол клипа. (Другой способ — двойной щелчок на числовом поле в верхнем правом или левом углу и ввод нового начального или конечного кадра для клипа.) Урезанный клип будет содержать анимацию только ос тавшейся части клипа, поэтому с вырезкой или вставкой могут возникнуть проблемы (анимация может не начаться или остановиться посередине клипа).
•
Можно создать задержку клипа: последовательность кадров, в которых зафиксиро вана последняя поза персонажа. Хотя зафиксированные позы раздражают, остановка анимации иногда оказывается полезной, особенно для фоновых персонажей. Чтобы создать задержку, перетащите правый верхний угол клипа, нажав клавишу <Shift>. (Перед первым кадром клипа, перетащив его угол влево, создать задержку невоз можно.)
•
Можно масштабировать или перемещать два или более клипа одновременно. Чтобы изменить параметры клипов как группы, выделите необходимые клипы, нажав клави шу <Shift>, а затем переместите их (перетащите центральный манипулятор перемеще ния) или измените масштаб (перетаскивая манипуляторы масштаба в любую сторону). На рис. 10.11 показаны два клипа, которые модифицируются одновременно.
Рис. 10.11. Одновременная модификация двух клипов •
Для установки весового коэффициента дорожки следует выбрать клип и щелкнуть на его имени в разделе Inputs (Входящие) панели каналов. Установка весового ко эффициента приводит к умножению анимационных кривых на число, заданное в ка нале Weight (Весовой коэффициент). Весовой коэффициент, равный 1 (значение по умолчанию), означает, что анимация остается такой же, какой была создана. Весовой коэффициент больше 1 сделает анимацию "больше", а весовой коэффициент меньше 1 приведет к уменьшению эффекта.
•
Можно отключать эффекты клипа, чтобы получить более четкую картину того, как другая анимация влияет на определенную точку. Чтобы отключить дорожку, щелкните на клипе правой кнопкой мыши и в появившемся контекстном меню выберите пункт Enable Clip (Включить клип). Чтобы включить клип снова, повторите процедуру.
•
Активизация клипа позволяет вернуться назад и переделать анимацию на временной шкале, как у обычного мультфильма, а затем загрузить эти изменения обратно в клип. Щелкните правой кнопкой на клипе и в появившемся контекстном меню вы берите пункт Activate Keys (Активизировать ключевые кадры). Ключевые кадры за грузятся на временную шкалу, где можно будет добавить или удалить ключевые кад ры и необходимым образом уточнить анимационные кривые. После завершения ра боты над анимацией выберите пункт меню Activate Keys (Активизировать ключевые кадры) снова, чтобы убрать ключевые кадры с временной шкалы сцены, и поместите клип обратно в окно просмотра и на временною шкалу редактора дорожек.
•
Наконец, можно использовать масштабирование времени для модификации анима ционного клипа в целом, не нарушая саму анимацию клипа. Хотя масштабирование может изменить только длину клипа, функцию Time W a r p (Масштаб времени) мож-
Нелинейная анимация
383
но использовать для того, чтобы инвертировать клип (т.е. воспроизвести его в обрат ном направлении) или создать плавный вход или выход клипа — это может оказать ся особенно полезным, если клип урезается в начале или в середине анимации. Что бы создать масштаб времени, щелкните правой кнопкой мыши на клипе и в появив шемся контекстном меню выберите пункт Create Time W a r p (Создать масштаб времени). Поверх клипа (если он не выделен) появится зеленая полоска, свидетель ствующая о применении к клипу масштабирования времени. Для изменения кривой масштаба времени выберите клип и щелкните на кнопке Graph Animation Curves (Редактор анимационных кривых) в редакторе дорожек, чтобы загрузить кривые клипа в редактор анимационных кривых. Выберите кривую масштаба времени и от корректируйте ее так, как нужно. На рис. 10.12 показана кривая масштаба времени после создания площадок плавного входа и плавного выхода.
Рис. 10.12. Кривая масштаба времени в редакторе анимаци онных кривых Управляя в редакторе дорожек расположением, длиной, цикличностью, весовым ко эффициентом и анимацией клипа, можно точно настроить анимацию в соответствии с самыми высокими требованиями. Если требуется еще больший контроль над формой ба зовых кривых, составляющих клип, то в редакторе анимационных кривых можно ото бразить и откорректировать их анимационные кривые, как и любые другие, В редакторе дорожек выберите пункт меню V i e w => Graph Anim Curves (Вид => Редактор анимацион ных кривых) или щелкните на кнопке Graph Anim Curves (Редактор анимационных кри вых) панели инструментов. Откроется окно редактора анимационных кривых, в котором будут загружены все кривые клипа. (Чтобы отцентрировать кривые, нажмите клави шу <А>.) Затем можно откорректировать кривые и точно настроить движения. Загруженные в редактор анимационные кривые можно просматривать либо с изме нениями значений весовых коэффициентов и хронометража, либо без них, в зависимости от конкретных задач редактирования. Чтобы увидеть исходные кривые, выберите пункт меню View => Clip Time (Вид => Клип времени) и сбросьте флажок Clip Time. Как можно заметить, кривые переключились в исходное состояние по хронометражу и коэффициен там. Чтобы возобновить клип времени, верните флажок Clip Time в исходное состояние.
Смешение клипов Хотя настройка характеристик одного анимационного клипа полезна, возможность смешивать анимацию разных клипов позволяет связывать несколько коротких анимаци онных сегментов в одну более длинную анимацию. Например, можно смешивать клипы со стоящим и с идущим или с идущим и бегущим персонажем, уменьшая необходимость задавать ключевые кадры для сложных смешанных состояний анимации.
Глава 10
384
Чтобы посмотреть на смешение в действии, можно воспользоваться простым персо нажем из предыдущих разделов. Но можно также создать персонаж из двух примитивов (например, из сферы и конуса), а затем создать два клипа: в первом клипе сфера и конус будут двигаться навстречу друг другу вверх и вниз по оси Y, а во втором клипе они будут двигаться в противоположных направлениях по оси X или Z. Возможно, создать второй клип будет проще, если отключить первый. Чтобы отключить клип, выделите его в ре дакторе дорожек, а затем щелкните правой кнопкой мыши и выберите пункт Enable Clip (Включить клип). Дорожка отключенного клипа слегка потемнеет, это означает, что дан ный клип больше не влияет на движение персонажа. Включение и отключение клипов может оказаться удобным способом проверки отдельных движений персонажа, имеюще го несколько дорожек анимации. По окончании создания клипов и их загрузки в редактор дорожек в окне для персо нажа должно быть две дорожки (рис. 10.13), при этом клипы будут расположены друг над другом. При создании для персонажа новой дорожки обратите внимание на то, что Maya размешает ее под исходной дорожкой, чтобы подогнать новый клип.
Рис. 10.13. Две дорожки для каждого персонажа, расположенные друг над другом
Если воспроизвести анимацию, то движения из двух клипов будут скомбинированы. Сфера и конус будут двигаться диагонально навстречу друг другу. Чтобы позволить ка ждому клипу работать самостоятельно, переместите один из них по временной шкале так, чтобы он не накладывался на другой клип. Однако после этого анимация "выскочит" (остановится между двумя клипами). Эту ситуацию позволит исправить смешение (blending). В редакторе дорожек можно создавать новые дорожки вручную, выбрав дорожку, щелк нув на ней правой кнопкой мыши и выбрав в появившемся контекстном меню пункт Insert T r a c k Above (Вставить дорожку выше) или Insert T r a c k Below (Вставить дорожку ниже). Что бы удалить неиспользуемую дорожку, выберите в этом же меню пункт r e m o v e Track (Удалить дорожку). Смешение клипов зависит от того, какой клип расположен на временной шкале пер вым. Иначе говоря, если клип c l i p 1 начинается на 20-м кадре, a clip2 — на 30-м, то первый клип будет содержать первоначальные значения (на 100%) для композиции, а второй клип — конечные значения (100%) композиции. Этот подход не работает, если оба клипа начинаются на временной шкале в один и тот же момент, поэтому следует из бегать смешения клипов, которые начинаются одновременно.
Нелинейная анимация
385
Добавление смешения к налагающимся друг на друга клипам Частично налагающиеся клипы создают аддитивную анимацию в кадрах. Проблема с перекрывающимися частями заключается в том, что при добавлении нового клипа ани мация появляется неожиданно, поскольку значения анимированных каналов изменяют ся внезапно. Для решения этой проблемы можно смешать клипы, сглаживая переход от значений одного клипа к значениям другого. Чтобы создать смешение, выделите два клипа, нажав клавишу <Shift>, поместите курсор над одним из клипов, щелкните правой кнопкой мыши и в появившемся контекстном меню выберите пункт Blend (Смешение). Область перекрытия клипов будет подсвечена зеленым цветом, а между клипами появится стрел ка, показывающая направление смешения (рис. 10.14).
Рис. 10.14. Две смешанные анимационные дорожки При смешении используются общие атрибуты двух клипов. Смешение не даст ре зультата, если смешиваемые клипы не имеют общих атрибутов. Смешение создаст сгла живающий переход, если между двумя клипами сохраняется похожее движение. В редакторе дорожек выберите пункт меню Create => Blend • (Создать => Смешение • ) . Обратите внимание на параметры в разделах Initial Weight Curve (Кривая начального ве сового коэффициента) и r o t a t i o n Blend (Смешение поворота). В первом разделе доступны четыре варианта, позволяющих управлять тангенциальными манипуляторами (tangent), которые используются для создания смешения. Linear (Линейный). Создается равновесный переход между клипами> Ease In (Плавный вход). Началу перехода назначается меньший весовой коэффици ент, а весовой коэффициент, заданный следующему клипу, увеличивается по мере про движения кадров в смещении. В результате начало перехода становится менее заметным. Ease Out (Плавный выход). Эффект, противоположный плавному входу; больший весовой коэффициент назначается начальным ключевым кадрам. В течение большего промежутка времени эффект первого клипа более заметен, чем эффект второго. Ease In and Ease Out (Плавный вход и плавный выход). Комбинация двух предыду щих вариантов. Каждый из вариантов, естественно, дает свой эффект. Чтобы удалить смешение, вы делите стрелку смешения и нажмите клавишу . Параметры раздела r o t a t i o n Blend (Смешение поворота) управляют комбинировани ем атрибутов поворота из первого клипа со вторым клипом (с учетом анимации ключе вых кадров вращения). Параметр Quaternion Shortest (Кратчайший кватернион) задает
Глава 10
386
наименьшее расстояние между поворотами, а параметр Quaternion Longest (Длиннейший кватернион) — наибольшее расстояние между поворотами. Как правило, если объект не должен поворачиваться в противоположном направлении в области смешения клипов, следует выбирать параметр Quaternion Shortest (Кратчайший кватернион). Параметр Linear (Линейный) в течение смешения объединяет значения поворота с постоянным ко эффициентом. Результаты использования каждой из этих возможностей различаются весьма существенно. Зная то, как работает смешение, можно гораздо проще добиться удачного перехода между клипами.
Модификация смешения клипов , Чтобы изменить длину смешения (количество кадров, на которых имеет место сме шение), следует сместить одну дорожку относительно другой, изменяя область перекры тия. Можно смешивать дорожки, которые не находятся одна над другой, — смешение возникнет между последними значениями первого клипа и начальными значениями вто рого клипа. На рис. 10.15 показаны два клипа, смешанные по пустым кадрам.
Рис. 10.15. Смешение по пустым кадрам При желании можно даже отрегулировать кривую вручную: выделите стрелку смешения и загрузите анимационную кривую в редактор анимационных кривых. (Щелкните на кнопке Graph Anim Curves (Редактор анимационных кривых) или выберите пункт меню View => Graph Anim Curves (Вид => Редактор анимационных кривых).) Откроется редактор ани мационных кривых, в котором будет показана кривая весовых коэффициентов смеше ния. Как показано на рис. 10.16, стандартная кривая смешения представляет собой про сто прямую линию на отрезке значений 0 - 1 обеих осей, горизонтальной и вертикальной. В точке 0,0 весовой коэффициент смешения полностью переносится на первый клип, т.е. значения канала персонажа 100%-но совпадают со значениями первого клипа. В точке 1,1 в конце смешения весовой коэффициент полностью переносится на второй клип. Для формирования других форм кривой (например, для плавного входа или плавного выхода) достаточно отрегулировать тангенциальные манипуляторы двух смешиваемых ключевых кадров либо добавить в форму смешения другие ключевые кадры. Редактировать форму смешения достаточно просто. Если требуется реализовать плавный вход, плавный выход или их комбинацию, то можно сэкономить время, удалив смешение и создав новое, выбрав соответствующий пункт из меню Create Blend (Создать смешение). Так как форма кривой смешения не зависит от длины смешения, можно изменить форму смешения, а затем увеличить или уменьшить его длину в редакторе дорожек (или наоборот), т.е. удлинить или укоротить смешение, не изменяя его форму. Эта обособлен-
Нелинейная анимация
387
ность формы кривой от длины является одним из преимуществ использования дорожек по сравнению с традиционными методами использования ключевых кадров.
Рис. 10.16. Кривая смешения весового коэффициента Смешение клипов позволяет осуществлять быстрые и простые переходы между раз личными анимационными состояниями персонажа. Как правило, переходы получаются хорошие, хотя и не всегда идеальные. Кроме того, их можно отрегулировать с помощью редактора анимационных кривых или изменяя длину смешения. Еще одно преимущест во редактора дорожек заключается в том, что он обеспечивает возможность применять одни и те же клипы и позы к разным персонажам в одной анимации или даже в несколь ких отдельных сценах. Время, потраченное на планирование персонажей, окупится в хо де их анимации.
Совместное использование клипов Предоставляемая Майя возможность применять одни и те же анимационные клипы и позы к разным персонажам позволяет значительно экономить время в сложном проекте с множеством персонажей или в нескольких проектах, которые заимствуют друг у друга различные движения. Чтобы рассмотреть совместное использование клипов, сначала разделим клипы в одной сцене, затем воспользуемся ссылочной сценой (referenced scene) для совместного использования клипов и наконец применим возможность импор та/экспорта для совместного использования клипов несколькими сценами.
Совместное использование клипов на сцене Для разных персонажей в одной сцене можно использовать одни и те же клипы. Для этого достаточно скопировать и вставить клипы одного персонажа в другой. Если есть простой проект из предыдущих разделов, то можно воспользоваться им. В противном случае необходимо создать простой персонаж, состоящий из двух геометрических при митивов, а также два или три клипа для него. После того как один персонаж будет анимирован с помощью этих клипов, создайте второй, похожий персонаж и отодвиньте его от первого персонажа на сцене. Можно использовать одни и те же клипы для совершенно разных персонажей, но при пе реносе может быть потеряна значительная часть анимации каждого клипа. Поэтому, как правило, одни и те же клипы лучше использовать для похожих персонажей.
388
Глава 10
Скопировать клип из одного персонажа в другой можно двумя способами. Простей ший метод (если клип уже используется другим персонажем) — скопировать клип с до рожки первого персонажа и вставить его на дорожку второго персонажа. Для этого щелкните правой кнопкой мыши на копируемом клипе и в появившемся контекстном меню выберите пункт меню Copy Clip (Копировать клип). Затем загрузите второй пер сонаж на временную шкалу редактора дорожек, щелкните правой кнопкой мыши на име ни второго персонажа и в появившемся контекстном меню выберите пункт Paste Clip (Вставить клип). На дорожке второго персонажа появится новый клип. Второй способ копирования и вставки предполагает использование окна просмотра. С помощью раскрывающегося меню первого (не второго) персонажа откройте окно про смотра, щелкните правой кнопкой мыши на копируемом клипе и выберите пункт Сору (Копировать). Затем в редакторе дорожек поместите курсор на дорожку второго персо нажа, щелкните правой кнопкой мыши и в появившемся контекстном меню выберите пункт Paste (Вставить). В результате клип будет вставлен на дорожку. (В диалоговом окне с вопросом о том, как вставлять клип, выберите ответ Yes (Да).) Результат показан на рис. 10.17.
Рис. 10.17. Клип, скопированный из персонажа c h a r a c t e r 1 в персонаж character2 Копирование в редакторе дорожек и в окне просмотра — не идентичные операции. При копировании клипа из редактора дорожек любые изменения клипа (масштаб, весо вой коэффициент или цикличность) переносятся в клип для нового персонажа. При ко пировании и вставке из окна просмотра исходный клип копируется в первоначальном состоянии, без модификаций. В зависимости от замысла аниматора один из этих двух методов может оказаться более полезным. Если при вставке клипа открыть окно параметров (выбрать в меню редактора доро жек пункт Edit => Paste • (Правка => Вставить • ) ) , то можно выбирать вставляемые атри буты по имени, по порядку, по имени узла или по карте персонажа (character map) (рис. 10.18).
Рис. 10.18. Окно параметров вставки клипа
Нелинейная анимация
389
Обычно для вставки используется имя атрибута или порядок атрибута, поскольку при этом анимационные кривые помещаются на атрибуты в новом персонаже, которые либо имеют то же имя, либо расположены в том же порядке, что и в исходном персонаже. Пункт By Node Name (По имени узла) будет работать правильно, если два персонажа находятся на одной и той же сцене (поскольку два узла одной сцены не могут иметь одно и то же имя). Однако этот пункт можно использовать при импорте или копировании клипов на новую сцену, где все узлы имеют имена, идентичные именам исходной сцены. Пункт By Character Map (По карте персонажа) создает модифицируемый пользователем сценарий MEL, который преобразует кривые одного персонажа в кривые другого. Дан ный метод может оказаться эффективным для вставки клипа одного персонажа в другой, но это довольно сложный и специализированный процесс, который обычно мало полезен для среднего пользователя редактора дорожек. Более подробная информация о создании и использовании карты персонажа представлена в документации Майя (пункт меню Character Setup => Character Set => Mapping Animation Between Characters (Постановка
персонажа => Набор персонажа => Наложение анимации среди персонажей)). После вставки клипа во второй персонаж последний, этот персонаж, вероятно, пере местится именно в ту позицию, в которой находится первый персонаж (они совместятся). Если такое положение приемлемо, то вставка закончена. Если нет, то проблему можно исправить одним из двух способов: •
активизировать клип (чтобы его ключевые кадры стали доступны для редактирова ния на временной шкале, а затем щелкнуть правой кнопкой мыши и в появившемся контекстном меню выбрать пункт Activate Keys (Активизировать ключевые кадры)), и переместить персонаж в нужную позицию на каждом ключевом кадре;
•
вывести диаграммы анимационных кривых (пункт меню View => Graph Anim Curves (Вид => Редактор анимационных кривых)) и откорректировать кривые так, чтобы пе редвинуть персонаж в нужную позицию.
Работа с диаграммами анимационных кривых более наглядна, поскольку здесь можно перемещать кривую в целом. При работе с отдельными ключевыми кадрами в режиме активизации их можно забыть или перепутать, что создаст нежелательное поведение персонажа.
Использование ссылочной сцены для совместного использования клипов Чтобы скопировать клипы из одного файла сцены в другой, на новой сцене можно создать ссылку (reference) на исходную сцену. Сохраните текущую сцену (с нетронутыми клипами), а затем откройте новую сцену и создайте еще один простой персонаж. Выбе рите пункт меню File => Create r e f e r e n c e ( Ф а й л => Создать ссылку) и выберите только что сохраненную исходную сцену. На новой сцене должна появиться геометрическая форма из старой сцены, а в меню Character (Персонаж) в дополнение к только что созданному персонажу должны быть персонажи 1 и 2 (в начале имен которых присутствует имя файла сцены). В редакторе дорожек два персонажа из исходной сцены появятся ниже персонажа те кущей сцены. После этого можно копировать и вставлять клипы, используя методики, описанные в предыдущем разделе. После того как копирование клипов будет окончено, удалите ссылку из новой сцены. Для этого выберите пункт меню F\\e => >reference Editor (Файл => Редактор ссылок). В ок-
390
Глава 10
не редактора ссылок выделите файл сцены, на которую была установлена ссылка, и вы берите пункт r e f e r e n c e d => r e m o v e r e f e r e n c e (Ссылка => Удалить ссылку). В результате этого все геометрические формы и дополнительные клипы исходной сцены будут удале ны, а в новой сцене останутся только скопированные клипы.
Экспорт и импорт
КЛИПОВ
Еще один способ совместного использования клипов заключается в том, чтобы экс портировать клипы, а затем импортировать их на новую сцену. Экспортированная сцена будет содержать только анимационные клипы (и позы), но не геометрические формы. Снова откройте старую сцену (с двумя персонажами), а затем откройте редактор до рожек или окно просмотра. Выделите все клипы, которые необходимо экспортировать (экспортируются только выделенные клипы), и выберите пункт меню F i l e d Export Animation Clip (Файл => Экспортировать анимационный клип). Откроется диалоговое ок но, которое позволяет сохранить экспортируемые клипы в новом файле сцены (по умол чанию сохраненный в каталоге C l i p s проекта). Задайте имя и экспортируйте файл. В новом файле сцены создайте новый простой персонаж. В редакторе дорожек выбе рите пункт меню File => lmport Animation Clip (Файл => Импортировать анимационный клип) и импортируйте только что экспортированные клипы. После импорта клипы из другого файла сохраняются в окне просмотра новой сцены, на вкладке Unused Clips (Неиспользуемые клипы). Теперь можно воспользоваться методом окна просмотра для копирования и вставки клипов в новый персонаж и, таким образом, совместно использо вать клипы в нескольких файлах. Экспортируя клипы из файлов сцен, можно создавать библиотеки клипов для после дующего использования. Например, создав клипы для анимации походки, бега, прыжков, сидения и стояния персонажа, можно сохранить в файле сцены (или в нескольких фай лах) только данные клипа, а затем импортировать эти данные в любой другой созданный впоследствии файл персонажа, экономя время на создание ключевых кадров для всех этих движений. Подход "созданное однажды используется многократно" может радикально сократить необходимость переделывать работу как в одном файле сцены, так и в десятках сцен раз рабатываемых проектов. Этот подход вместе с нелинейной, аддитивной природой доро жек делает их очень удобными для работы над анимацией реального мира, в которой персонажи, особенно персонажи второго плана, должны многократно выполнять похо жие задачи или множество персонажей должны иметь похожее поведение. Теперь, имея представление о принципах использования клипов и редактора дорожек, можно создать некоторую анимацию, используя оснастку персонажа Машизмо из главы 8, "Постановка и оснащение персонажа". Этот пример позволит продемонстрировать, как много времени можно сэкономить, используя технологию нелинейной анимации Майя.
Использование геометрического кэша Нововведением Майя8 является способность кэшировать движение гео метрических фигур и использовать эту анимацию как клип в редакторе до рожек. Геометрическое кэширование (geometry caching) позволяет сохранить состояние каждой вершины оболочки для каждого кадра. Таким образом, Майя не придется вычис лять сложную деформацию оболочки для каждого кадра, что значительно ускоряет вос произведение сцены. Эта возможность особенно полезна, если оболочка имеет сложную
Нелинейная анимация
391
геометрическую форму, которая замедляет воспроизведение в реальном масштабе вре мени. Это может также пригодиться при финальной анимации, поскольку позволяет удалить оснастку модели, если анимированная геометрическая форма сохранена в кэше. В любом случае задача кэширования заключается в том, чтобы осуществлять сложные, продолжительные вычисления деформации оболочки только один раз, а затем хранить их для ускорения последующего воспроизведения и экономии ресурсов процессора. Ес ли только анимация кэшируется, она сохраняется в редакторе дорожек и ведет себя очень похоже на любой другой анимационный клип. Таким образом, клипы геометриче ского кэша могут быть упорядочены, объединены и откорректированы. К дополнитель ным элементам управления геометрического кэша относятся нанесение весовых коэф фициентов кэша, слияние частей кэшей, удаление и замена отдельных кадров кэша, а также импорт кэша из других сцен. В Майя 8 . 5 возможность геометрического кэширования еще более полезна, поскольку кэши могут быть приглушены или, наоборот, проигрываться соло (за счет воспроизведе ния или удаления отдельных дорожек), новые клипы могут наследовать данные переме щения из прежних клипов (причем так, чтобы они не проигрывались при запуске нового клипа), а также корректировать точки стыковки анимации, что позволяет объединить клипы геометрического кэша вместе. В целом инструментальные средства геометриче ского кэширования предоставляют достаточный контроль над анимацией вершин, чтобы многочисленные кэшируемые клипы могли быть объединены и откорректированы уже после создания, что избавляет от необходимости возвращаться и воссоздавать движения персонажа с помощью анимации скелета, если исходная анимация была приемлемо близкой к окончательной. Чтобы создать клип кэша геометрической формы, анимируйте геометрическую фор му персонажа, а затем в наборе меню Animation (Анимация) выберите пункт Geometry Cache => Create New Cache • (Кэш геометрической формы => Создать новый кэш • ) . В окне параметров создания нового кэша, представленном на рис. 10.19, можно ввести имя кэша, каталог его хранения (по умолчанию это папка данных проекта), будет ли соз дан отдельный файл для каждого кадра, или один большой файл для всех кадров анима ции, следует ли разделять кэш на фрагменты или нет (это имеет значение только тогда, когда геометрическая форма имеет отдельные геометрические элементы), как хранить данные точек и сколько временных шкал включать в кэш.
Рис. 10.19. Окно параметров Create Geometry Cache
Как только кэшируемый клип будет создан, он появится в редакторе дорожек, как и любой другой клип. Обратите внимание на то, что анимация располагается на временной
392
Глава 10
шкале, однако ключевые кадры скелета ведущей анимации все еще остаются. Но скелет ную анимацию, обеспечивающую движения клипа геометрического кэша, можно удалить и убедиться, что анимация воспроизводится на основании позиций вершин. На рис. 10.20 представлен персонаж, "выходящий" из его скелета, поскольку анимация оболочки те перь управляется с помощью клипа геометрического кэша. Если имеется два или несколько клипов, то их можно размещать один поверх другого или располагать друг за другом, чтобы получать различные анимационные эффекты, как показано на рис. 10.21. Если сцена перегружена, а анимацию хочется просмотреть в мас штабе времени, близком к реальному, или если работа идет над созданием финальной анимации, то эта новая возможность окажется очень удобной.
Рис. 10.20. Машизмо, "покидающий" свой не подвижный скелет
Рис. 10.21. Два клипа геометрического кэша в редак торе дорожек
Практика: работа с анимационной оснасткой с помощью системы Full Body IK В главе 8, "Постановка и оснащение персонажа", была разработана оснастка для мо дели персонажа Машизмо, созданного ранее в этой книге с помощью новой анимацион ной системы Maya — Full Body IK (FBIK). Здесь эта автоматически созданная оснастка персонажа будет использована для нелинейной анимации. Система FBIK создает тело персонажа и подчиненные персонажи для различных его элементов. Поэтому, для того, чтобы с помощью клипов и редактора дорожек начать соз давать анимацию, требуются некоторые настройки. Перед анимацией персонажа рас смотрим его иерархию, предоставляемую FBIK. Как показано на рис. 10.22, в каждой ие рархии FBIK существует один главный персонаж по имени f b i k C h a r a c t e r . Ниже это го персонажа в иерархии расположены подчиненные персонажи элементов его тела, включая бедра (hips), позвоночник (spine), ноги (legs), руки (arms), пальцы (fingers) и т.д. Столь большое количество подчиненных персонажей сокращает количество дополни тельных ключевых кадров, которые должен установить аниматор. Вместе с тем необхо димость выбирать нужный подчиненный персонаж каждый раз, когда тело двигается, может показаться утомительной. К счастью, система FBIK автоматически включает нужный персонаж всякий раз, когда выбран исполнительный элемент FBIK (FBIK effector), что значительно упрощает процесс нелинейной анимации.
393
Нелинейная анимация
А теперь создадим несколько клипов для Машизмо и рассмотрим работу нелинейной анимации совместно с системой FBIK. Для начала создадим простой клип "задержка движения", в котором Машизмо стоит и слегка покачивается, а затем продолжим с более сложным циклом ходьбы. 1.
Откройте файл M a c h i s m o N L A S t a r t . m a на прилагаемом CD (или откройте свою версию оснастки).
2.
Поставьте Машизмо в устойчивую позицию. Необходимо передвинуть его руки вниз к бокам, вес перенести так, чтобы стороны его тела были не полностью сба лансированы. (Слишком точная симметрия сторон называется "связанностью" (twinning) и в анимации выглядит неестественно.) На рис. 10.23, слева пока зана устойчивая позиция.
Рис. 10.22. Система FBIK пер сонажа и подчиненных персо нажей в окне иерархической структуры 3.
Рис. 10.23. Машизмо в двух стандартных позах
Выберите персонаж f b i k C h a r a c t e r из раскрывающегося меню и нажмите клавишу <S>, чтобы установить ключевые кадры для всего персонажа. (Если требуется со кратить количество ключевых кадров, то можно установить их, только на те подчи ненные персонажи, которые имеют значение в данных позах.)
4. Теперь необходимо создать вторую позу стоя, слегка сдвинув персонаж с первой по зиции. Эта позиция будет использована в качестве переходной позы — Машизмо бу дет стоять и слегка покачиваться. Сначала передвинем его в другую точку временной шкалы. Не важно, как далеко будет сдвинуто время, — позднее клип можно будет масштабировать как угодно. В данном случае выбрано 10 кадров потому, что это удобное круглое число. 5. Немного сдвиньте Машизмо. Можно слегка сместить его бедра, передвинуть руки и, возможно, чуть-чуть наклонить голову. Удачными будут все действия, в результате которых персонаж слегка покачнется. Новая позиция показана на рис. 10.23, справа. Снова установите ключевой кадр для всего персонажа.
394 6.
Глава 10 При воспроизведении, если движение будет слишком долгим (или, наоборот, корот ким), отрегулируйте его так, чтобы оно было едва различимым. Также следует соз дать "плавный вход" в позицию и "плавный выход". Проще всего сделать это так: вы берите главный персонаж, откройте редактор анимационных кривых и выровняйте тангенциальные манипуляторы для всех анимационных кривых. На рис. 10.24 пока заны откорректированные кривые в редакторе анимационных кривых.
«
Рис. 10.24. Выравнивание тангенциальных манипуляторов для анимаци онных кривых персонажа 7.
Получив для персонажа некую анимацию, создайте клип, выделив персонаж f b i k C h a r a c t e r в раскрывающемся меню и выбрав в меню Animation (Анимация) пункт Animate => Create Clip • (Анимировать => Создать клип • ) . Присвойте ему имя shift, например, а остальные параметры оставьте в их стандартном состоянии.
8.
Если открыть редактор дорожек и щелкнуть на кнопке Load Selected Characters (Загрузить выбранные персонажи) с изображением бегуна и знака "плюс", то можно увидеть все подчиненные персонажи с анимационными клипами, загруженными для большинства из них (в зависимости от того, для каких подчиненных персонажей были ус тановлены ключевые кадры). Теперь можно переместить клипы для некоторых частей тела на несколько кадров, создавая совмещающуюся анимацию. Можно выбрать все кли пы и перенастроить анимацию, сделав ее длиннее или короче. Кроме того, можно изме нить весовые коэффициенты анимации любого подчиненного персонажа, чтобы сделать движение более или менее заметным. На рис. 10.25 показано, как могут выглядеть клипы после небольшого смещения и масштабирования анимации до 200% или 20 кадров.
Итак, задержка движения создана. Далее следует создать для персонажа цикл ходьбы. Это движение сложнее предыдущего, но принцип остается тем же: создать ключевые кадры для персонажа в разных позах, создать анимационные клипы и настроить в редак торе дорожек масштаб, весовые коэффициенты и цикличность клипов. 1.
Отключите клипы предыдущей анимации, поскольку они не должны накладываться на новую работу. В редакторе дорожек выделите все клипы задержки движения, щелкните правой кнопкой мыши на любом из них и в появившемся контекстном ме ню выберите пункт Enable Clip (Включить клип). Прежде чем продолжить, убеди тесь, что на персонаж не наложено какое-либо движение.
Нелинейная анимация
395
Рис. 10.25. Корректировка клипов в редакторе дорожек 2.
Базовый цикл ходьбы имеет четыре позиции: ход левой ноги, левая нога впереди, ход правой ноги и правая нога впереди. Имея законченный цикл, можно использовать редактор дорожек для создания нескольких шагов. Сначала создадим позицию хода левой ноги. В виде сбоку (или из вида в перспективе (Perspective)) слегка припод нимите левую ногу Машизмо, подвиньте его таз вперед и немного наклоните спину для шага. Эта позиция представлена на правом крайнем изображении рис. 10.26. Ус тановите ключевые кадры для всех соответствующих подчиненных персонажей.
Рис. 10.26. Четыре ключевые позы цикла ходьбы Машизмо 3.
Перейдите к кадру 6 на временной шкале. Переместите левую ногу персонажа вперед и поставьте пятку на землю. Слегка опустите бедра вниз и разведите руки в противо положных направлениях, как показано на втором справа изображении рис. 10.26. Снова установите ключевые кадры.
Глава 10
396 4.
Перейдите к 12 кадру на временной шкале и аналогично позиции "ход левой ноги" создайте позицию "ход правой ноги". Только на этот раз приподнять нужно правую ногу. (См. третье справа изображение на рис. 10.26.) Установите ключевые кадры.
5.
Перейдите к 18 кадру на временной шкале и создайте позицию "правая нога впере ди", подобно позиции "левая нога впереди". (См. крайнее левое изображение на рис. 10.26.) Установите ключевые кадры.
6.
Перейдите к 24 кадру и создайте еще одну позицию хода с приподнятой левой ногой, как можно более похожую на кадр 1. Установите ключевой кадр. Воспроизведите анимацию и откорректируйте цикл ходьбы. (Можно проработать стопы так, чтобы при ходьбе Машизмо отталкивался пальцами ног.)
Теперь следует создать клип для цикла ходьбы. Выделите персонаж f b i k C h a r a c t e r и выберите пункт меню Animate => Create Clip • (Анимировать => Создать клип • ) . В окне параметров задайте имя клипа walk и создайте клип с параметрами по умолчанию. Как показано на рис. 10.27, в редакторе дорожек новый клип должен появиться под клипом s t a n d (этот клип затемнен, что указывает на то, что он не активен).
Рис. 10.27. Редактор дорожек с клипом ходьбы Теперь можно откорректировать различные части тела, создавая некоторое наложе ние на персонаж Машизмо с тем, чтобы он не выглядел при ходьбе как робот. 1.
Переместите дорожки бедер и позвоночника назад на один кадр, руки — назад на три кадра, а шею и голову — назад на два кадра. (Подберите нужные значения исходя из собственного видения ходьбы персонажа.) Благодаря этому перекрывающемуся движению цикл ходьбы будет выглядеть более естественным. Можно также загру зить любой персонаж в редактор анимационных кривых и откорректировать кривые так, чтобы настроить цикл ходьбы.
2.
Наконец, анимацию можно перенастроить или создать ее цикл, откорректиро вать весовые коэффициенты или цикличность клипа. Чтобы создать цикл ходь бы Машизмо, выделите каждый клип и перетащите, нажав клавишу <Shift>, их правый нижний угол. В результате будет добавлено несколько циклов анимации.
Нелинейная анимация
397
Д Л Я изменения весового коэффициента любого из клипов выделите его в редак торе дорожек, а затем в панели каналов откорректируйте канал W e i g h t (Весовой коэффициент), чтобы увеличить (больше 1) либо уменьшить (меньше 1) влия ние этого клипа. Теперь, имея два пригодных клипа (задержка движения и ходьба), можно смешать их и создать анимацию, в которой Машизмо начинает движение из положения стоя. 1. Выделите клипы ходьбы и передвиньте их на пять кадров вперед по временной шка ле (так, чтобы для бедер цикл ходьбы начинался в кадре 5). 2. Включите клип s t a n d , выделив все соответствующие клипы и выбрав пункт меню Enable Clip (Включить клип). Если воспроизвести анимацию сейчас, то, вероятнее всего, появятся проблемы, поскольку клипы еще не были смешаны. 3. Чтобы смешать клипы, выделите клип s t a n d для одного подчиненного персонажа, выделите клип ходьбы, нажав клавишу <Shift>, щелкните правой кнопкой мыши и в появившемся контекстном меню выберите пункт Blend • (Смешение • ) . В окне па раметров выберите для параметра Initial Weight Curve (Кривая начального весового коэффициента)) значение Ease In Out (Плавный вход-выход) и создайте смешение. В области смещения клипы будут помечены зеленым цветом, а стрелка укажет на правление смешения (от клипа s t a n d к клипу ходьбы). Повторите это действие для всех подчиненных персонажей так, чтобы окно редактора дорожек выглядело подоб но рис. 10.28.
Рис. 10.28. Смешение клипов стояния и ходьбы Теперь, если воспроизвести анимацию, Машизмо должен сначала стоять, а затем пой ти. Чтобы откорректировать параметры смешения, следует выбрать смешение в редакто ре дорожек и открыть анимационную кривую. Здесь можно изменить кривую, которая представляет поток анимации от первого до второго клипа. Теперь, зная, как создавать и смешивать клипы, попытайтесь разработать для Машизмо другие клипы, создать циклы и смешать их так, чтобы получился более крупный анимационный сегмент.
398
Глава 10
Резюме В последние годы популярность нелинейной анимации среди анимационных студий существенно возросла. Это обусловлено интересом со стороны разработчиков игр, а так же необходимостью постановки крупномасштабных массовых сцен, где большие группы персонажей необходимо снабдить одинаковой смешанной анимацией. Редактор дорожек Maya (Тгах Editor) представляет собой один из лучших и самых надежных нелинейных аниматоров на рынке. Как было продемонстрировано в этой главе, используя редактор дорожек, можно быстро создавать анимацию как для простых персонажей с простейши ми движениями, так и для сложных персонажей, осуществляющих замысловатые дейст вия. Тем, кто тратит много времени на решение повторяющихся анимационных задач, редактор дорожек поможет сэкономить многие часы работы. Создавая и повторно используя позы и клипы, можно сэкономить множество време ни при анимации повторяющихся задач. Смещение клипов позволяет комбинировать различные анимационные состояния в одно целое, уменьшая при этом потребность в сложных переходных ключевых кадрах. Масштабирование времени позволяет недест руктивно перенастраивать анимационные клипы, создавая отдельные движения для час ти анимации персонажа. Наконец, совместное использование клипов и поз различными персонажами и сценами позволяет воспользоваться результатами разработки одного персонажа или сцены в других сценах и проектах. Нелинейная анимация Maya — это на столько мощная технология, что тот, кто начал ее использовать, скорее всего, уже не от кажется от редактора дорожек.
Освещение при анимации Создание удачного цифрового освещения — это одновременно и наука и искусство. Хотя между освещением реальной сцены и компьютерной есть много подобий, Майя предоставляет множество технических возможностей, которые совершенно отличаются от постановки освещения в реальном мире. Как и все остальные современные системы моделирования, компьютерное освещение в Майя неспособно воспроизвести световую модель реального мира. Однако Майя пре доставляет инструменты, позволяющие создавать ошеломляющие эффекты света и тени, которые либо имитируют освещение реального мира, либо адаптируются под художест венный стиль аниматора. Источники света в Майя обеспечивают также многие преимущества, недоступные в модели реального мира, включая источники света, не дающие теней (light with no shadow), негативный свет (negative light), рассеянный свет (ambient light), не имеющий направления или источника, а также возможность смотреть сквозь источник света, как через камеру. На сцене источники света можно размещать где угодно, задавать любую интенсивность и любой цвет. Иначе говоря, инструменты освещения Майя предоставля ют пользователю большую художественную свободу, чем освещение в реальном мире. Не существует единственно верного пути постановки освещения на любой сцене, однако представленная здесь информация дает читателю все необходимые знания для реализа ции своих замыслов по освещению. •
Концепция освещения
•
Основной рабочий процесс
•
Типы источников света
•
Манипулятор света
•
Использование теней
•
Световые эффекты
Концепция освещения Понимание основных качеств и функций света является ключевым моментом для правильной постановки света на сценах Майя. Хотя основное внимание в этой главе уде ляется главным образом техническим подробностям создания и использования источни ков света и их эффектов, знание того, как приступить к освещению сцен, само по себе яв ляется особым мастерством. Создание хорошего освещения — это нечто большее, чем просто случайная установка источников света на сцене в надежде получить наилучший
400
Глава 11
результат. Уделив внимание качествам и функциям света, читатель сможет реализовать свои идеи так, как это задумано.
Качества света Свет имеет четыре качества (quality), с которыми может работать художник. Эти ка чества могут показаться элементарными, но их следует учитывать для каждого источни ка света, помещаемого на сцену; это сделает каждый источник света важным элементом композиции. Интенсивность (intensity) — яркость света. Управление интенсивностью источников света позволяет выделить важные области сцены. Распределение (distribution) — направление и угол падения света. Направление света вычисляется по векторам и определяет угол, под которым свет падает на трехмерные объекты. Термин распределение обозначает также качество источника света; в некоторых случаях требуется создать мягкие и приглушенные контуры вокруг источников света, а иногда нужны резкие и четкие контуры. Цвет (color) — позволяет передать тему и настроение. Определение цвета освещения требует тщательного анализа. Каким будет цвет падающего на объект света, если учесть материал поверхности этого объекта? Правильно ли сбалансирован цвет с другими ис точниками света на сцене? Движение (movement) — относится к динамическому изменению света. Это может быть изменение интенсивности, распределения, цвета, позиции или угла поворота. Во время анимации важно, чтобы модели были динамичными, поэтому свет тоже должен изменяться.
Применение освещения Применение света на сцене — это не просто способ сделать модели видимыми. Суще ствует пять специфических функций света в сцене. Выборочная видимость (selective visibility). Источник света позволяет контролиро вать то, что зритель увидит и чего он не сможет увидеть. Можно выделить действие или область сцены, изолировав ее освещением. Использование в композиции постепенного проявления или исчезновения изображения может подчеркнуть течение времени. Композиция (composition). Способ, которым источники света взаимодействуют со сценой в целом. Правильная композиция позволяет аудитории сосредоточиться на важ ных элементах сцены. Раскрытие формы (revelation of form). Подразумевает применение разных способов по становки освещения с учетом текстур и теней элементов сцены. Например, лицо, освещен ное одним источником света, расположенным ниже подбородка, имеет другой вид по срав нению с тем же лицом, освещенным несколькими источниками, распложенными вверху. Создание настроения (establishing the mood). Важный элемент при представлении сцены зрителю. Различные уровни интенсивности, распределение, цвет и движение света создают сильное, иногда продиктованное подсознанием настроение, которое помогает объединить сцену с сюжетом. Усиление темы (reinforcement of the theme) имеет особую важность в схеме освеще ния. Освещение должно способствовать, а не противоречить теме постановки. Правильное применение этих возможностей на каждой сцене Maya гарантирует, что освещение будет не только дополнять, но и усиливать художественное видение.
Освещение при анимации
401
Основной рабочий процесс постановки освещения Обычно освещение реализуют в конце постановки, поэтому текстуры, моделирование и анимация могут значительно повлиять на выбор схем освещения. Все это, а также большое количество источников света, как правило применяемых при постановке, может существенно замедлить визуализацию. Хотя каждый светотехник находит собственный рабочий процесс, существует несколько базовых принципов, которые могут помочь в ус корении постановки света.
Интерактивная фотореалистическая визуализация Интерактивная фотореалистическая визуализация (Interactive Photorealistic rendering — I P r ) позволяет обновлять только часть изображения при визуализации, что бы быстро просмотреть изменения. Используя I P r , можно быстро просмотреть результаты корректировки цвета, интенсивности и других базовых атрибутов света. Ограничения I P r включают в себя невозможность динамического обновления мягких теней при перемеще нии источника света. Более того, I P r не поддерживает трассировку лучей (raytracing), трехмерное размытие (3D motion blur) и эффекты с частицами (particle effect). Чтобы включить I P r , выберите в меню rendering (Визуализация) пункты render => l P r render Current Frame (Визуализировать => Визуализация текущего кадра в режиме I P r ) . После того как откроется режим визуализации и сцена будет визуализиро вана, очертите с помощью мыши область в кадре. Эта область внутри кадра будет впо следствии быстро обновляться по мере изменения сцены. По завершении предваритель ной установки параметров визуализации для сцены попробуйте расставить несколько направленных источников света с использованием I P r ; теперь можно переместить их и посмотреть, насколько быстро обновится результат.
Основные и заполняющие источники света Следующий принцип: начинайте с создания общих основных источников света (key light), а затем позаботьтесь о контровых (kicker) и заполняющих источниках (fill light). Поскольку для хорошего освещения сцены может потребоваться множество источников света, сначала создайте общее настроение и композицию с помощью основных источни ков. Эти источники света включают в себя все явные источники (например, солнце, лам пы, пламя и т.д.). Чтобы создать более мягкий, реалистичный вид, можно использовать источники света с низкой интенсивностью. На рис. 11.1 приведен пример применения основных и заполняющих источников света. Следует отметить, что все эти источники света являются стандартными в Майя; главные и заполняющие источники света — это просто термины, связанные со сценическим освещением.
Интерактивное размещение света В Майя можно "смотреть сквозь" источники света (как и сквозь другие объекты). Иначе говоря, Майя создает камеру, позиция которой ориентируется в зависимости от позиции и угла поворота выбранного объекта. Эта возможность действительно полезна, когда требуется осветить определенную часть сцены. Чтобы включить режим просмотра сквозь источник света, выберите пункт меню Panels => Look Through Selected (Панели => Вид сквозь выбранное).
Глава 11
402
Рис. 11.1. При постановке освещения сначала разместите основные источники света, а затем для смягчения добавьте заполняющие Нововведением Maya 8 является возможность интерактивной постановки света при размещении направленного источника света, прожектора или плоского источника света, позволяющая автоматически просматривать результат. Чтобы включить эту возможность, выберите пункт меню Create => Lights => Spot Light • (Создать => Источники света => Прожектор • ) , или Directional Light (Направленный ис точник света), или Area Light (Плоский источник света), а затем установите флажок Interactive Placement (Интерактивное размещение). Интерактивное размещение источ ника света показано на рис. 11.2.
Рис. 11.2. Интерактивное размещение позволяет сразу просматривать резуль тат, облегчая выбор точки расположения источника света
Типы источников света В Maya представлены шесть типов источников света (рис. 11.3): рассеянный (ambient), направленный (directional), точечный (point), прожектор (spot), плоский свет (area) и объемный свет (volume). Зачастую для достижения желаемого эффекта исполь зуются комбинации этих источников. В реальном мире источники света аддитивны (т.е. свет от одного источника накладывается на свет от другого) и имеют направление и позицию, однако Maya предоставляет такие источники света, существование которых за пределами цифровой сферы просто невозможно. Используя правильные комбинации
Освещение при анимации
403
реалистичных и не совсем реалистичных источников света, можно создавать неотрази мые цифровые сцены. Все источники света в Майя создаются с помощью пункта главно го меню Create => Lights (Создать => Источники света) либо в меню гипершейдера.
Точечный свет
Рассеянный свет
Направленный свет
Прожектор
Плоский свет
Объемный свет
Рис. 11.3. Различные типы источников света в Майя и их управляющие символы С помощью редактора атрибутов можно легко изменить тип уже существующего ис точника света.
Рассеянный свет Рассеянный свет ведет себя так, как будто он не имеет источника, распространения и позиции. Чаще всего такой свет используется для управления общей освещенностью сцены. Равномерно освещенные планы, например дымка, лучше всего получаются с по мощью рассеянного света. При умеренном и осторожном использовании такой свет мо жет помочь равномерно смягчить сцену и сократить количество направленных или ло кальных источников света. Используйте рассеянный свет расчетливо, поскольку чрез мерное его применение приводит к созданию весьма нерельефной композиции. Параметр Ambient Shade (Рассеянная тень) позволяет контролировать вид рассеян ного света: свет со всех направлений (omnidirectional) или позиционный (positional), т.е. свет с одной стороны в зависимости от его позиции. На рис. 11.4 показано влияние на ос вещение разных значений параметра Ambient Shade (Рассеянная тень).
Ambient Shade = 0,0
Ambient Shade = 0,5
Рис. 11.4. Влияние значения параметра
Ambient Shade
Ambient Shade = 1,0
на рассеянный свет
Источники света: направленный, точечный и прожектор Направленный, точечный и прожектор — вот три наиболее широко используемых ис точника света в Майя. Свет от направленного источника проходит вдоль вектора равно мерно сквозь сцену. Несмотря на то что органы управления этим источником находятся
Глава 11
404
в пространстве XYZ, сам источник фактически не имеет позиции. Источники направ ленного света наиболее широко применяются в качестве отдаленных источников света, например, таких, как солнце. Тень от направленного источника света обычно меньше те ни, отбрасываемой источниками других типов, поскольку световые лучи параллельны друг другу и не расходятся. На рис. 11.5 показаны визуализированные изображения, для освещения которых использовались источники этих трех типов.
Направленный свет
Точечный свет
Прожектор
Рис. 113. Этот стул освещен одним источником направленного света, точечным источником и ис точником типа "прожектор". Обратите внимание на различия в освещении поверхности Точечные источники распространяют световые лучи во всех направлениях и имеют определенную позицию в пространстве. Примерами точечных Источников света могут быть электролампа и свеча. Точечные источники света имеют скорость угасания (decay rate) (потери и рассеивание энергии на расстоянии), а в связи с на правленностью лучей во все стороны они отбрасывают более крупные тени, чем на правленные источники света. Прожектор — это конический пучок световых лучей с определенной позицией и направленностью. Кроме скорости угасания прожектор имеет параметры C o n e Angle (Угол конуса), P e n u m b r a Angle (Угол полутени) и Dropoff (Спад). (Более подробно эти параметры обсуждаются позднее, в разделе "Свойства источников све та".) Возможность управления позицией и направлением света делает такие источ ники весьма гибкими. ПЛОСКИЙ
свет
Плоские источники света требуют больших вычислительных ресурсов, но создают более мягкое освещение, которое может конкурировать с качеством отраженного света. Плоский источник освещает двухмерную плоскость, а не испускает один луч вдоль век тора. Количество испускаемых лучей зависит от размера этой прямоугольной плоскости. Следовательно, если увеличить источник света, то свет будет ярче. Использовать плоские источники света следует тогда, когда необходимо имитировать свет, излучаемый большой областью, например, как отражение света от белой стены, а не как свет от одной лампочки. На рис. 11.6, а изображение визуализировано с прожекто ром, а изображение на рис. 11.6, б — с плоским светом. Обратите внимание: прожектор создает резкую, но меньшую бликовую подсветку, тогда как плоский свет создает более мягкую подсветку, но с большими бликами. Бликовая подсветка означает яркий, отраженный блик на освещенном объекте. Блики проявляются на объектах с анизотропными тенями либо тонированием по методу Blinn или Phong.
Освещение при анимации
а Прожектор
405
6 Плоский свет
Рис. 11.6. Обратите внимание, как отличаются блики у плос кого света и прожектора >
Объемный свет Объемные источники света позволяют задать объем, в котором светит свет. Главное преимущество таких источников света заключается в том, что пользователь в интерак тивном окне сцены видит трехмерную область, в которой существует свет. Это позволяет легко управлять диапазоном освещенности. Как и плоские источники света, объемные источники не имеют параметра скорости угасания; эффекты отставания реализуются с помощью параметра Color r a m p (Цветовой градиент). На рис. 11.7 представлен сфери ческий объемный источник света, примененный на сцене.
Рис. 11.7. Стул, освещенный сферическим объемным светом. Обратите внима ние на то, что точка наибольшей яркости находится в центре сферы, а интен сивность снижается в направлении границ сферы
Свойства источников света Все типы источников света в Майя имеют изменяемые параметры. Некоторые из этих параметров применимы для всех источников света, другие специфичны для определен ных источников. Все эти свойства можно изменять в редакторе параметров.
Глава 11
406
Цвет, интенсивность и тонирование Цвет и интенсивность являются основными свойствами источников света. Цвет отве чает за цвет световых лучей, испускаемых источником, а интенсивность определяет яр кость. Эти свойства для созданного источника света обычно устанавливают в первую очередь. Чтобы придать источнику света заданный цвет, можно воспользоваться диало говым окном Color Chooser (Выбор цвета). Можно также установить для источника све та текстуру, которая будет функционировать как маска (mask) или затенение. Затенение (gobo) — это театральный термин, который означает контур, помещенный на источник света для имитации тени какого-либо элемента сцены. При правильном применении за тенение позволяет сэкономить много времени, устраняя необходимость моделирования невидимых сценических реквизитов. Чтобы создать затенение, примените текстуру к па раметру Color (Цвет) источника света. Черные участки текстуры блокируют свет, а бе лые — пропускают его. Чтобы изменить цвет источника света, проходящего через эту маску, необходимо изменить значение параметра Color Gain (Усиление цвета) в узле файла маски. Создание анимированных затенений описано в конце этой главы. На рис. 11.8 показано затенение, примененное к прожектору.
Рис. 11.8. Текстура, показанная слева, применена к параметру Color прожектора для создания кон турной тени В отличие от реального мира здесь можно создавать источники света с негативной интенсивностью, т.е. с поглощением света. Негативные значения интенсивности велико лепно подходят для освещения областей, которые обычно всегда находятся в тени, на пример щели. Поскольку создаваемый программно цифровой свет избавлен от дрожания (bouncing realistically), негативные источники света позволяют добавить сцене мягкости и реализма. Чтобы создать теневую маску (shadow mask), в качестве цвета источника света выби рают черный цвет, а для теней, наоборот, — белый. Полученный в таком случае результат будет представлять собой сцену с белыми тенями; затем этот эффект можно скомбини ровать с другими уровнями сцены. Это позволит управлять тенями на завершающем этапе постановки. Следует заметить, что кроме этого для получения лучших результатов наложения теневой маски потребуется выключить прямую видимость (Primary Visibility) объекта, отбрасывающего тень, и заменить цвет основы чисто-белым. Чтобы впоследствии управлять интенсивностью и цветом световых пятен, можно создать кривые этих параметров. Для этого необходимо раскрыть панель Light Effects (Световые эффекты) источника света и щелкнуть на кнопке Create (Создать). Затем можно открыть редактор анимационных кривых и редактировать значения только что созданных кривых узла l i g h t I n f o .
Освещение при анимации
4 0 7
Скорость угасания Точечный и плоский источники света, а также прожектор имеют параметр Decay r a t e (Коэффициент угасания), который снижает интенсивность света в зависимости от расстояния. Существуют три коэффициента угасания. Линейная (linear). Интенсивность уменьшается пропорционально расстоянию. Квадратичная (quadratic). Интенсивность уменьшается пропорционально квадрату расстояния — именно так уменьшается интенсивность в реальном мире. Кубическая (cubic). Интенсивность уменьшается пропорционально кубу расстояния. Цвет света остается таким же, независимо от расстояния до источника. Коэффициент угасания начинает влиять на интенсивность света на расстоянии свыше 1 единицы от источника. Угасание света от объемных источников создается совсем по-другому. Угасание в этом случае управляется градиентом, заданным в разделе Color r a n g e (Цветовой диапа зон) редактора атрибутов для данного источника света. Левая часть диапазона представ ляет цвет на максимальном расстоянии от источника, а правая часть — цвет источника света. На рис. 11.9 показан пример применения темных цветов к цветовому диапазону.
Рис. 11.9. Для управления уровнем угасания света от объемного ис точника в цветовой диапазон добавляют темные цвета
Привязка источников света В Майя объекты, освещаемые определенными источниками света, называют связан ными (linked). Каждый источник света имеет параметр Illuminates By Default (Освещает по умолчанию), который связывает данный источник света со всеми объектами на сцене. Во время создания источника света этот атрибут включается по умолчанию. Работая над простой сценой, все атрибуты источника света, как правило, можно оставить в стандарт ном состоянии, чтобы освещались все объекты. По мере усложнения сцены возникает необходимость контролировать привязку источников света как по эстетическим причи нам, так и для того, чтобы радикально сократить время визуализации. Для контроля привязки источников света можно использовать редактор взаимосвя зей ( r e l a t i o n s h i p Editor) Maya (выберите пункт меню W i n d o w => r e l a t i o n s h i p Editors =>
Light Linking => Light-Centric (Окно => Редакторы взаимосвязей => Привязка источника света => Светоцентрический) или Object-Centric (Объектноцентрический) либо выберите
408
.
Глава 11
пункт меню Lighting/Shading => Light Linking Editor => Light-Centric (Освещение/Тонирование =>
Редактор привязки источника света => Светоцентрический) или Object-Centric (Объектноцентрический). Эти способы привязки представляют разные конфигурации привязки для сцены. Объектноцентрический режим просмотра организует между определенным объектом и источниками света на сцене взаимосвязь по принципу "один ко многим". Здесь можно указать, какие источники света освещают данный объект. Светоцентрический режим организовывает между определенным источником света и объектами сцены взаи мосвязь по принципу "один ко многим". На рис. 11.10 показан светоцентрический режим редактора взаимосвязей и результаты визуализации.
а Прожектор не связан со сферой
б Прожектор связан со сферой Рис. 11.10. Светоцентрический режим редактора взаимосвязей: поскольку сфера не связана с источником света, она не освещается вообще (а); все объекты связаны, а следовательно, ос вещаются источником света (б) Кроме того, используя пункты меню Lighting/Shading (Освещение/Тонирование), привязки можно изменять непосредственно в рабочем пространстве. Выделите объекты и источники света, привязки которых требуется изменить, а затем выберите пункт меню Lighting/Shading => M a k e Light Links ( О с в е щ е н и е / Т о н и р о в а н и е => Создать привязки
источников света), чтобы связать их, или пункт L i g h t i n g / S h a d i n g => Break Light Links (Освещение/Тонирование => Разорвать привязки источников света), чтобы удалить привязку. Обратите внимание на то, что разрыв связи между объектом и всеми источниками света не делает этот объект невидимым; привязка источников света влияет только на то, как освещены объекты. Если объект на сцене не связан ни с одним источником света, то он визуализируется как абсолютно черное пятно, загораживающее другие освещаемые объекты. Такое загораживание объектов может оказаться удобным для создания масок, позволяющих комбинировать разные сцены при визуализации.
Освещение при анимации
409
Объекты и источники света можно выбирать на основе информации о привязке. Вы делите источник света и выберите пункт меню Lights/Shading => Select Objects Illuminated By Light (Освещение/Тонирование => Выделить объекты, освещенные этим источником), чтобы выделить все объекты, связанные с данным источником. Выделите объект и выберите пункт меню Lights/Shading => Select Lights Illuminating Object (Освещение/Тонирование =>
Выделить источники света, освещающие этот объект), чтобы выделить все источники света, связанные с данным объектом.
Свойства прожектора Источник света Spot (Прожектор) имеет несколько уникальных параметров: C o n e Angle (Угол конуса), Penumbra Angle (Угол полутени) и Dropoff (Спад). Параметр Cone Angle управляет размахом светового пучка. Принятого по умолчанию значения 40° обычно вполне достаточно для большинства световых пятен. Большие углы (до 180°) за частую используются для заполняющих источников света. Свойство Penumbra Angle (Угол полутени) смягчает свет, размывая внешнюю гра ницу светового конуса. Положительные значения размывают внешнюю границу, а отри цательные — внутреннюю. На рис. 11.11 показан эффект изменения угла полутени.
Penumbra = 10
Penumbra = 0
Penumbra = 10
Рис. 11.11. Обратите внимание: отрицательное значение угла полутени размывает границы внутри, тогда как положительное — снаружи Параметр Dropoff (Спад) подобен линейному коэффициенту угасания (Linear Decay rate), но вместо угасания при увеличении расстояния от источника света он управляет степенью уменьшения интенсивности света при удалении от центра к границам светово го пучка. Как правило, целесообразные значения находятся в диапазоне от 0 до 50.
Эффекты прожектора В разделе Light Effects (Световые эффекты) редактора атрибутов можно найти два атрибута, уникальных для прожектора: Barn Doors (Шторки) и Decay r e g i o n s (Зоны угасания). По умолчанию оба они отключены. Шторки, в сущности, представляют собой заслонки, которые закрывают края конуса и могут применяться сверху, снизу, слева и справа. Значение параметра Barn Doors (Шторки) представляет угол между центром прожектора и шторками. Этот атрибут зачастую используют для того, чтобы воспрепят ствовать проникновению света за какую-либо точку на сцене; в обычных сценических источниках света такие заслонки используются для ликвидации утечки света. Эффект, создаваемый шторками, показан на рис. 11.12. Зоны угасания ( D e c a y r e g i o n s ) позволяют создавать области, в которых наблюдает ся свечение пучка света, как показано на рис. 11.14. Манипулировать этими усеченными
Глава 11
410
коническими областями можно с помощью редактора атрибутов или манипуляторов зон угасания (последние рассматриваются в следующем разделе).
Рис. 11.12. Используя шторки, можно контролировать резко очерченные края прожектора
Рис. 11.13. С помощью зон угасания имитируются области свечения. (Для более четкой иллюстрации областей к источ нику света был добавлен параметр Fog, который описывается позднее.)
Манипулятор света Манипулятор Light (Свет) представляет собой визуальный индикатор, расположен ный в Maya на информационном дисплее (Heads Up Display — H U D ) , который позволяет интерактивно управлять атрибутами источника света. Это полезно для точного позицио нирования визирных марок, зон угасания и других световых эффектов. Чтобы включить манипулятор Light (Свет), выделите источник света и выберите пункт меню Display => S h o w => Light Manipulators (Представление => Показать => Манипуляторы света) или выбе рите на панели инструментов инструмент Show Manipulator (Показать манипулятор). В результате вокруг источника света появится несколько дополнительных элементов управления. Ниже рукоятки источника света есть элемент управления Index Manipulator (Указатель) в виде круга с меткой. Щелкнув на нем можно выбрать один из семи режимов манипуля тора света: None (Нет), Center Of Interest/Origin (Центр освещения/источника), Pivot (Опорная точка), Cone r a d i u s (Радиус конуса), Penumbra r a d i u s (Радиус полутени), Decay r e g i o n (Зона угасания) и O r i g i n / r a d i u s Decay (Угасание источника/радиуса). Для каждого режима изменяется направление метки указателя. Чтобы отобразить мани пулятор определенного источника света, выберите пункт меню Display => rendering => Camera/Light Manipulator (Представление => Визуализация => Манипулятор камеры/света), а затем выберите манипулятор. Пиктограммы семи режимов показаны на рис. 1 1 . 1 4 .
Нет
Центр
Опорная точка
Радиус конуса
освещения/источника
Рис.
11.14.
Пиктограммы HUD для семи режимов дисплея
Радиус
Зона угасания
полутени
Index Manipulator
Угасание источника/радиуса
Освещение при анимации
411
Перемещение центра источника света Этот манипулятор позволяет изменить расположение (Origin) и центр освещения (Center Of Interest) источника света. Возможность визуально перемещать центр освеще ния позволяет точно задать направление, в котором источник излучает свет. Этот мани пулятор доступен для всех источников света.
Перемещение опорной точки Этот манипулятор позволяет перемещать опорную точку (Pivot Point) вектора между расположением источника света и центром освещения. Щелкните по опорной точке (метка рядом с источником света) и перетащите ее вдоль вектора. Затем переместите либо источ ник света, либо центр освещения — вектор будет вращаться вокруг опорной точки.
Перемещение радиуса конуса Перемещение желтого манипулятора радиуса конуса ( C o n e r a d i u s ) позволяет изме нить угол светового пучка. Этот манипулятор применим только для источников типа "прожектор".
Перемещение радиуса полутени Как и в случае радиуса конуса, манипулятор радиус полутени ( P e n u m b r a r a d i u s ) управляет значением угла полутени ( P e n u m b r a Angle). По мере перемещения манипуля тора можно заменить контур полутени для источника света. Этот манипулятор приме ним только для источников типа "прожектор".
Перемещение зон угасания Этот манипулятор ( D e c a y r e g i o n s ) позволяет визуально настроить зоны угасания при перемещении колец вдоль светового пучка. Чтобы добиться наилучших результатов, можно использовать предварительный просмотр с использованием визуализации IPR. Этот манипулятор применим только для источников типа "прожектор".
Перемещение шторок Манипулятор позволяет управлять шторками (Barn Doors) прожектора (рис. 11.15). Чтобы увидеть экранные элементы управления, необходимо смотреть сквозь источник света (выберите пункт меню Panels => Look Through Selected (Панели => Вид сквозь вы бранное)). Чтобы откорректировать значения шторок, горизонтальные и вертикальные линии следует перемещать с помощью средней кнопки мыши.
Рис. 11.15. Глядя сквозь выбранный источник света, можно увидеть шторки, представленные вертикальными и горизонтальными линиями
4 1 2
Глава
11
Использование теней С точки зрения эстетических результатов и времени визуализации важно понимать, когда и как использовать тени в Maya. По умолчанию источники света Maya не отбрасы вают теней. Обычно не желательно, чтобы все источники отбрасывали тени, поскольку это требует значительных вычислительных ресурсов. Тени должны отбрасывать только главные источники света. Для создания тени стандартная система визуализации Maya использует два подхода: карту глубин (depth-map) — для мягких теней и трассировку лу чей (raytraced) — для жестких теней.
Мягкие тени Карты глубин (depth map) — это внутренние структуры данных Maya, которые со держат информацию об интенсивности света между источником света и поверхностями сцены. Эта информация, которую называют глубиной по оси Z (Z-Depth), представляет собой полутоновую карту изображения. Цвета на этой карте располагаются в зависимо сти от их расстояния от источника света. Для получения этих данных Maya вычисляет глубину, "глядя" с точки зрения источника света и "зная", какие части объектов закрыты (и, следовательно, находятся в тени), а какие видимы (и, следовательно, освещены). Ло гично предположить, что единственным типом источников света, который не способен создавать мягкие тени, является рассеянный свет, поскольку источники такого типа не имеют фиксированного расположения и угла направления. Чтобы визуализировать свет, используя тени, полученные с помощью карт глубин, необходимо задействовать пункт Use Depth Map Shadows (Использовать карты глубин теней) в разделе Shadows (Тени) редактора атрибутов для данного источника света. В этом разделе можно указать и другие атрибуты, чтобы сообщить Maya, как должны вы глядеть и вычисляться карты глубин.
Цвет Тени по умолчанию имеют черный цвет. Хотя черные тени выглядят довольно типично, корректировка цвета может создать на сцене хороший контраст между светом и тенью. На пример, если для света используются теплые цвета (такие как желто-оранжевый), то холод ные цвета теней (пурпурно-синий) могут создать действительно хороший контраст. Тени карты глубин (depth-map shadow) не учитывают световые лучи, проходящие сквозь прозрачные объекты. Осветляя цвет тени, можно имитировать прозрачные тени, как показано на рис. 11.16.
а 6 в Рис. 11.16. Тень от непрозрачного объекта (а) идентична тени от прозрачного объекта (б). Чтобы устранить эту неувяжу, можно выбрать более светлый цвет тени (в)
Освещение при анимации
413
Разрешение карты глубин, размер фильтра и смещение Карты глубин представляют собой карты изображений с конечным количеством ин формации. Разрешение карты глубин (Dmap resolution) контролирует размер карты глубин. По умолчанию разрешение карты глубин равно 512. Более высокие значения (такие как 1024 или 2048) приводят к появлению более резких теней, поскольку увели ченное разрешение позволяет хранить большее количество данных о тени. Меньшие зна чения (64 или 128) дают более мягкие тени. Качество карты глубин контролирует размер фильтра. Фильтр размывает края тени так, что ступенчатость, получившаяся в результате изменения разрешения карты глубин, исчезает. Однако не следует забывать о том, что слишком сильное увеличение размера фильтра может радикально повлиять на время визуализации. Опробуйте различные зна чения в зависимости от разрешения карты глубин (чем меньше разрешение, тем больше должен быть размер фильтра); обычно значения 3 или 4 вполне достаточно для боль шинства случаев. Смещение карты глубин (dmap bias) сдвигает карту глубин либо в направлении ис точника света, либо от него. Как правило, значения по умолчанию (0.001) вполне доста точно. Если тени кажутся отделенными от поверхности, на которую они падают, то сле дует постепенно увеличить смещение. Если в тенях появляются паразитные изображе ния, такие как пятна или полосы, смещение следует постепенно уменьшать до тех пор, пока дефекты не исчезнут. На рис. 11.17, показаны эффекты, связанные с различными значениями параметров Dmap r e s o l u t i o n (Разрешение карты глубин) и Dmap Filter (Фильтр карты глубин).
Dmap resolution = 32 Dmap Filter = 1
Dmap resolution = 128 Dmap Filter = 1
Dmap resolution = 512 Dmap Filter = 1
Dmap resolution = 1024 Dmap Filter = 1
Dmap resolution = 32 Dmap Filter = 4
Dmap resolution = 128 Dmap Filter = 4
Dmap resolution = 512 Dmap Filter = 4
Dmap resolution = 1024 Dmap Filter = 4
Рис. 11.17. Более низкие значения разрешения карты глубин дают более мягкие тени и вместе с тем становятся более чувствительными к размеру фильтра
Дисковые карты глубин Карты глубин повторно вычисляются и заново создаются для каждого источника све та в каждом кадре анимации. Если на сцене присутствуют тени, то при визуализации ка ждого кадра анимации Майя приходится вычислять карты глубин для каждого источни ка света, к которому применимы эти карты. Тени очень сильно влияют на продолжи-
414
Глава 11
тельность визуализации. Зачастую фактическая информация карты глубин для источ ника света не меняется от визуализации к визуализации и даже от кадра к кадру. К сча стью, можно воспользоваться так называемыми дисковыми картами глубин (disk based dmap) и записать информацию карт в файл с тем, чтобы впоследствии Maya не требова лось вычислять эту информацию заново при каждой визуализации. Когда следует использовать дисковые карты глубин? Карты не изменяются, если ис точник света или объект не перемещается. Более того, покадровые дисковые карты мож но использовать даже тогда, когда камера перемещается по сцене (как при пролете), при условии, что объект и источник света не двигаются. Можно даже изменять атрибуты ис точника света или объектов и все равно вновь использовать сохраненные карты глубин. Чтобы использовать дисковые карты глубин для покадровой визуализации или про лета камеры, выберите из раскрывающегося списка в разделе Depth Map Shadow Attributes (Атрибуты карты глубин тени) редактора атрибутов пункт r e u s e Existing Dmap(s) (Повторное использование существующих карт глубин). При первой визуали зации Maya вычислит карту глубин и сохранит ее на диске. При последующих визуали зациях карта будет считываться с диска. По умолчанию карты глубин сохраняются в папке renderData/depth текущего проекта. К имени файла карты можно присоеди нять имя сцены и имя источника света, установив соответствующие флажки. Дисковые карты глубин можно использовать также и в анимированных сценах с дви жущимися источниками света и (или) объектами. Если для каждой визуализации необ ходимо изменить только атрибуты источника света или объектов, но не их движение, то можно сохранить серию карт глубин, которые будут считываться при каждой последую щей визуализации. Для этого необходимо установить флажок A d d Frame Ext (Добавить покадровые расширения). Maya вычислит карту глубин для каждого кадра при первой визуализации и последовательно сохранит эти кадры на диске. При каждой следующей визуализации анимации эта последовательность будет считываться. Если источник света и (или) объекты были перемещены, то сохраненные ранее дис ковые карты глубин необходимо обновить. Чтобы переписать ранее сохранённые карты, установите флажок Overwrite Existing Dmap(s) (Переписать существующие карты глу бин) и визуализируйте сцену или всю анимацию. Если новая позиция источника света и (или) объектов подходит, убедитесь, что параметр r e u s e Existing Dmap(s) задействован, чтобы Maya могла считывать заново созданные карты. Чтобы отключить считывание сохраненных карт, выберите в раскрывающемся списке параметра Disk Based Dmaps (Дисковые карты глубин) значение Off (Отключено). По сле этого Maya будет вычислять новую карту глубин для каждой последующей визуали зации каждого кадра. По умолчанию дисковые карты глубин отключены.
Трассированные тени Несмотря на большую по сравнению с картами глубин ресурсоемкость, трассировка лучей позволяет создать более четкие, а зачастую более реалистичные тени. При трасси ровке лучи направляются от источника света на сцену. Затем каждый из этих лучей от ражается от объектов и падает на другие объекты, от которых отражается снова, и т.д. Можно задать количество отражений и отражательную способность объектов. Хотя трассировка позволяет создавать более мягкие тени по сравнению с картами глубин, ви зуальные преимущества этого метода минимальны. Трассировку лучей выгоднее исполь зовать для визуализации четких теней и освещения прозрачных объектов. В отличие от
Освещение при анимации
415
карт глубин трассировка лучей создает точные тени в случаях, когда источник освещает прозрачный объект. IPR не поддерживает трассированные тени; чтобы увидеть их, необходимо полностью ви зуализировать сцену. ДЛЯ осуществления визуализации с трассированными тенями необходимо устано вить флажок Use r a y Trace S h a d o w s (Использовать трассированные тени) в разделе Shadows (Тени) редактора атрибутов данного источника света. Кроме того, необходимо задействовать параметр r a y t r a c i n g (Трассировка лучей). Он находится в разделе raytracing Quality (Качество трассировки) окна render Settings (Параметры визуализа ции) (пункт меню W i n d o w => rendering Editors => render Settings (Окно => Редакторы ви
зуализации => Параметры визуализации)). Трассированные тени несколько отличаются в зависимости от типа источника света. Чтобы создать размытую тень, которая постепенно светлеет по мере удаления от объекта, следует использовать трассированные тени с плоским источником света. Сравнение те ней для методов трассировки и карт глубин показано на рис. 11.18.
Метод карты глубин: Dmap resolution = 512, Filter Size = 3
Метод трассировки лучей: Shadow r a y s = 3
Рис. 11.18. Обратите внимание на то, как трассированная тень фактически рассеивается по мере удаления от сферы. Тень, созданная по методу карты глубин, не рассеивается; ее мягкая граница (в зависимости от разрешения карты глубин и значения размера фильтра) растяги вается Мягкость краев теней для разных типов источников света определяется различными параметрами: Shadow r a d i u s (Радиус тени) — для источников рассеянного света; Light Angle (Угол падения света) — для источников направленного света; Light r a d i u s (Радиус света) — для точечного и объемного источников, а также для прожектора. Значение "нуль" приводит к созданию жестких, резких границ; по мере увеличения значения гра ницы теней смягчаются. Максимальное значение каждого из этих параметров (все они имеют свои пределы) создает очень зернистые границы. Увеличение значения параметра Shadow r a y s (Лучи тени) размывает эту зернистость, но и значительно увеличивает длительность визуализации. На рис. 11.19 показано различное качество теней. Если про сто визуализировать мягкие тени, не имея на сцене прозрачных объектов или объектов с высокой отражательной способностью, то тени, созданные по методу карты глубин, обычно получаются лучше. Параметр r a y Depth Limit (Предельная глубина луча) определяет максимальное ко личество отражений луча в сцене. Если значение параметра r e f l e c t i o n s (Отражения) в окне render Settings (Параметры визуализации) меньше, чем предельная глубина луча,
416
Глава 11
то предельная глубина подстраивается под более низкое значение. Увеличение предель ной глубины позволяет создавать на сцене более точные тени, особенно тени от прозрач ных объектов. Более подробная информация об использовании трассировки лучей при визуализации элементов сцены приведена в главе 14, "Улучшенная визуализация с по мощью mental ray".
Shadow r a y s = 1
Shadow r a y s = 10
Shadow r a y s = 20
Рис. 11.19. Количество лучей определяет зернистость тени. Между значениями 1 и 10 наблюдается заметное визуальное отличие, тогда как отличие между значениями 10 и 20 — минимально. Более высокие значения приводят к значительному замедлению процесса визуализации
Световые эффекты Maya позволяет создавать интересные осветительные эффекты, такие как туман (fog), отблеск линз (lens flare), свечение (glow), ореол (halo) и затенение (gobo). С точки зрения композиции важно не переборщить с использованием этих эффектов. В 1990-х годах было модным использовать отблески линз везде, однако индустрия быстро пресыти лась этим эффектом и дискредитировала даже правильные предпосылки его использова ния. Световые эффекты также могут значительно замедлить визуализацию, поэтому их нужно использовать там, где это действительно необходимо. Световые эффекты доступны в разделе Light Effects (Световые эффекты) редактора атрибутов любого источника света.
Туман Эффект Light Fog (Световой туман) позволяет имитировать объемное освещение, создавая эффект дымки внутри пучка света. Туман можно добавить к таким источникам света, как точечный, объемный и прожектор. В Maya существуют три типа тумана: Light (Световой), Environment (Окружающий) и Volume (Объемный). В разделе Light Effects (Световые эффекты) редактора атрибутов щелкните на кнопке Light Fog (Световой ту ман). По умолчанию Maya создает и загружает узел Light Fog. Чтобы переключиться на Environment Fog (Окружающий туман) или Volume Fog (Объемный туман), откройте гипершейдер (выберите пункт меню W i n d o w => rendering Editors => Hypershade (Окно => Редакторы визуализации => Гипершейдер)). Опуститесь вниз по списку Create Maya Nodes (Создать узлы Maya) и откройте раздел Volumetric (Объемный). При создании нового узла можно выбрать окружающий туман или объемный туман, а затем применить его к параметру Light Fog (Световой туман) источника света. (Перетащить узел из гипершейдера на параметр Light Fog Все источники света позволяют изменять интенсивность тумана в редакторе атрибу тов. Параметр Fog Intensity (Интенсивность тумана) управляет яркостью и плотностью эффекта. Прожектор, кроме параметра Fog Intensity (Интенсивность тумана), позволяет изменять параметр Fog Spread (Рассеивание тумана). Этот параметр контролирует уменьшение интенсивности тумана по мере увеличения расстояния от источника света.
417
Освещение при анимации
На рис. 11.20 и 11.21 показаны различные варианты значений параметров Fog Spread (Рассеивание тумана) и Fog Intensity (Интенсивность тумана).
Fog Spread = 0,5
Fog Spread = 1
Fog Spread = 2
Puc. 11.20. Примеры различных значений параметра Fog Spread
Fog Intensity = 0,5
Fog Intensity = 1
Fog Intensity = 2
Puc. 11.21. Примеры различных значений параметра Fog Intensity Туман для точечного источника света несколько отличается от тумана для прожекто ра. Точечный источник света позволяет управлять такими параметрами, как Fog Туре (Тип тумана), Fog r a d i u s (Радиус тумана) и Fog Intensity (Интенсивность тумана). Три типа тумана (значения параметра Fog Т у р е ) — Normal (Обычный), Linear (Линейный) и Exponential (Экспоненциальный) — контролируют интенсивность спада тумана. Типы тумана иллюстрируются на рис. 11.22 Интенсивность обычного тумана сохраняется посто янной независимо от расстояния. Интенсивность линейного тумана уменьшается по мере увеличения расстояния от источника света. Значение Exponential (Экспоненциальный) экспоненциально уменьшает интенсивность тумана по мере увеличения расстояния. Пара метр Fog r a d i u s (Радиус тумана) управляет величиной сферы тумана.
Обычный туман
Линейный туман
Рис. 11.22. Три типа тумана, доступные для точечных источников света
Экспоненциальный туман
Глава
418
11
Световой туман Световой туман (Light Fog) — самый популярный из источников света тип тумана. Его главная отличительная особенность заключается в возможности отбрасывать тени карты глубин; другие типы тумана на это не способны. Используя узел l i g h t Fog, при соединенный к источнику света, можно изменить плотность и цвет тумана. По умолча нию используется значение Color Based Transparency (Цветовая прозрачность). Этот параметр определяет прозрачность объектов в зависимости от значений параметров Color (Цвет) и Density (Плотность). Если он установлен, то объекты тонированы полно стью, а не просто по плоскостям. Кроме того, цветовая прозрачность зависит от яркости цвета тумана, поэтому если используется темный туман, то для правильной визуализа ции этот параметр следует отключить. Параметр Fast Drop Off (Быстрый спад) определяет степень затемнения объектов тума ном. Если он отключен, то все объекты будут затемнены одинаково. В противном случае степень затемнения разных объектов будет различной в зависимости от значения плотно сти (Density) и величины тумана между камерой и объектом. Применение этого параметра позволяет добиваться более реалистичных результатов. Не следует задавать слишком большие значения плотности, иначе некоторые объекты на сцене пропадут из виду. Параметры теней для светового тумана устанавливаются в разделе S h a d o w s => Depth Map Shadow Attributes (Тени => Атрибуты карты глубин тени) данного источника света (а не в свойствах узла тумана). Существуют два параметра тени для тумана: Fog Shadow Intensity (Интенсивность тени тумана) и Fog Shadow Samples (Шаблоны тени тумана). Интенсивность тени тумана влияет на темноту тени тумана, а шаблоны тени тумана кон тролируют зернистость. На рис. 11.23 показаны визуальные эффекты использования этих атрибутов.
Окружающий туман Окружающий туман (Environment Fog) не контролируется непосредственно источниками света. Он представляет собой общий туман внутри сцены и влияет на то, как выглядят объек ты: затемнены ли они или отчетливо видимы. В отличие от светового окружающий туман не отбрасывает теней. Для создания тумана откройте окно параметров визуализации сцены (пункт меню Window => rendering Editors => render Settings (Окно => Редакторы визуализа ции => Параметры визуализации)) и на вкладке Maya Software найдите раздел render Options (Параметры визуализации). Здесь можно применить тонер тумана, щелкнув на кнопке с изо бражением шахматной доски. Существуют два типа окружающего тумана: простой (Simple) и физический (Physical). Оба типа имеют уникальные атрибуты. Простой туман
По умолчанию узел окружающего тумана является "простым", т.е. пользователь мо жет управлять только некоторыми параметрами для создания простого представления тумана. Как и в случае светового тумана, параметр Color Based Transparency (Цветовая прозрачность) управляет окрашиванием объектов — полное тонирование или тонирова ние плоскостей. Параметр Saturation Distance (Расстояние насыщения) представляет собой расстояние, на котором туман становится полностью насыщенным (цвет тумана достигает значения параметра Color (Цвет)), а объекты, находящиеся на большем рас стоянии, оказываются невидимыми. Чтобы управлять плотностью тумана, можно использовать слои для прикрепления текстур (как правило, трехмерных текстур). Для имитации облачной мозаики внутри
419
Освещение при анимации
тумана включите слой и примените текстуры. Параметр Use Height (Высота использо вания) позволяет контролировать место положения тумана. Туман визуализируется только в пределах диапазона от минимального значения высоты (Min Height) до макси мального значения ( M a x Height). Можно управлять отставанием между границами вы соты тумана, задавая протяженность диапазона смешения. На рис. 11.24 показан пример простого окружающего тумана.
Fog Shadow Intensity = 1
Fog Shadow Intensity = 5
Fog Shadow Samples = 5
Fog Shadow Samples = 30
Puc. 11.23. Обратите внимание на различия в темноте тени и зернистости, связанные с разными значениями интенсивности (Fog Shadow Intensity) и шаблонов тени тумана (Fog
Shadow
Samples)
Рис. 11.24. Простой окружающий туман с установленным диапазоном высоты
Глава
420
11
Физический туман Д Л Я физического тумана
(physical fog) используется более точная, физическая систе ма имитации воздуха, водяного пара и объема воды (при необходимости). Эти объемы имеют собственные атрибуты, позволяющие создавать реалистичный туман. Включите физический туман в редакторе атрибутов материала окружающего тумана. В приведен ной ниже таблице перечислены доступные типы физического тумана. Тип
Описание
Uniform Fog (Однородный туман)
Туман с одинаковой плотностью во всех направлениях
Atmospheric (Атмосферный туман)
Туман разрежается, поднимаясь вверх
Sky (Небо)
Лучше всего подходит для сцен с большими фрагментами неба и дальней видимостью; туман правильно переходит в горизонт
Water (Вода)
Этот туман рассеивает падающий сверху свет в подводных сце нах. Его можно использовать для подводных кадров или для объектов, которые видны сквозь воду сверху
Water/Fog (Вода/Туман)
Однородный туман, который появляется над водой
Water/Atmos (Вода/Атмосфера)
Атмосферный туман, который появляется над водой
Water/Sky (Вода/Небо)
Полный небесный туман, который появляется над водой
Параметр Fog Axis (Ось тумана) позволяет задать ось "вверх" для тумана. (Этот па раметр неактуален для однородного тумана.) Параметр Planet r a d i u s (Радиус планеты) управляет количеством объектов в атмосфере сцены; большее значение этого параметра позволяет имитировать более масштабную атмосферу. В разделах Fog (Туман), Air (Воздух) и W a t e r (Вода) можно изменять разные пара метры, такие как Color (Цвет), Density (Плотность) и Volume (Объем). (Они включают ся в зависимости от выбранного типа тумана.) Раздел Sun (Солнце) управляет солнеч ным светом в тумане. Плоскости отсечки (Clipping planes) позволяют задавать мини мальное и максимальное расстояние, в пределах которых существует туман.
Объемный туман Параметры тумана Volume Fog (Объемный туман) позволяют управлять сфериче ским, коническим или кубическим объемом частиц воздуха. Объемный туман полезен, когда требуется создать инкапсулированные трехмерные фрагменты тумана, например облака. Чтобы создать объемный туман, выберите пункт Sphere (Сфера), C u b e (Куб) или Cone (Конус) в меню Create => Volume Primitives (Создать => Объемные примитивы). Для тумана можно задать либо сплошной цвет, либо панель цветового градиента для вы бора последовательностей цветов. В разделе Dropoff (Спад) редактора атрибутов можно задать вид затухания как Off (Отключено), Sphere (Сфера), Cube (Куб), Cone (Конус) или Light Cone (Световой ко нус) (рис. 11.25). Использование светового конуса (Light Cone Dropoff S h a p e ) приводит к тому, что изменение происходит по направлению к вершине конуса. Коническое зату хание ( C o n e Dropoff S h a p e ) выглядит более однородным в пределах конической формы. Параметр E d g e Dropoff (Граничный спад) определяет, насколько резко плотность
Освещение при анимации
421
уменьшается к границам объема, а параметр Axial Dropoff (Осевой спад) доступен только для конусов и управляет плотностью затухания вниз по центральной оси конуса.
Рис. 11.25. Существует пять типов спада для объемных источников света. Обратите внимание: тип Cone дает спад от центра, тогда как Light Cone — от вершины конуса Можно выбрать один из двух методов затухания. Используемый по умолчанию метод Scale Opacity (Регулировка непрозрачности) умножает плотность на значение изменения, создавая однородную затухающую прозрачность. Метод Subtract Density (Вычитание плотности) оказывается полезным, когда есть текстура, управляющая прозрачностью тумана. Области с низкой плотностью будут прозрачными, тогда как области с высокой плотностью окажутся почти не тронутыми. Этот метод следует использовать, когда тре буется сохранить текстуру или клубы тумана в объеме.
Оптические эффекты Иногда к источникам света нужно применять визуальные эффекты, такие как свече ние, ореол или отблески линз. Эти световые эффекты применяются после визуализации кадра и видимы только в том случае, когда со стороны камеры видим сам источник света. Чтобы создать тонер Optical FX (Оптический эффект) для источника света типа "точечный", "плоский свет", "объемный свет" или "прожектор", щелкните на кнопке с изображением шахматной доски рядом с полем Light Glow (Свечение) в разделе Light Effects (Световые эффекты) редактора атрибутов. По умолчанию для источника света устанавливается четырехзвездочное свечение (four-star glow).
Свечение и ореол По умолчанию для тонера Optical FX (Оптический эффект) включено линейное свече ние (Glow Linear), а ореолы отключены (значение None). Свечение и ореол имеют другие общие типы, включая Exponential (Экспоненциальный), Ball (Шаровой), Lens Flare (Отблески линз) и r i m Halo (Ободок). На рис. 11.26 и 11.27 показаны различные типы свечений и ореолов. Следует заметить, что свечение ( G l o w ) влияет на внутреннюю часть
422
Глава
11
эффекта, а ореол ( H a l o ) контролирует плотность внешних, окружающих частей светово го эффекта.
Экспоненциальное свечение
Линейное свечение
Шаровое свечение
Свечение с отблеском линз
Свечение-ободок
Рис. 11.26. Пять типов свечений (Glow)
Линейный ореол
Экспоненциальный ореол Шаровой ореол
Ореол с отблеском линз
Ореол-ободок
Рис. 11.27. Пять типов ореолов (Halo) Размеры свечений и ореолов задают с помощью параметра Spread (Рассеивание). Кроме того, свечение также имеет такие параметры, как шум ( n o i s e ) , уровень ( l e v e l ) и непрозрачность ( o p a c i t y ) . Шум свечения оказывается полезным, когда требуется ими тировать нечто вроде дыма или тумана, искажающего свечение. При использовании шу ма необходимо отрегулировать значения смещения ( o f f s e t ) и масштаба ( s c a l e ) в раз деле Noise (Шум) редактора атрибутов. Можно анимировать значения U O f f s e t и v o f f s e t шума, чтобы "оживить" дым над источ ником света. Параметр Glow Star Level (Уровень астеризма свечения) управляет остротой вершин звезды. Более низкие значения размывают эффект астеризма, а более высокие — усили вают. Параметр Glow Opacity (Непрозрачность свечения) определяет прозрачность све чения.
Отблески линз Отблески линз (Lens Flares) используются для имитации помех от линз, когда в ка мере видны блики от них. Чтобы включить этот эффект, установите флажок Lens Flare (Отблески линз) в разделе Optical FX Attributes (Атрибуты оптических эффектов). По скольку отблески линз представляют часть цветового спектра, их цвет зависит от пара метров Flare Color (Цвет отблеска) и Flare Col Spread (Цветовая область отблеска). По следний представляет диапазон цветов в зависимости от параметра Flare Color. Более высокие значения параметра Flare Col Spread создают более широкий диапазон цветов.
Освещение при анимации
423
Параметр Flare Num Circles (Количество кругов отблеска) задает видимое в камере ко личество кругов, параметр Flare Min/Max Size (Мин/Макс размер отблеска) определяет размер кругов, а параметр Flare Length (Длина отблеска) изменяет длину светового пуч ка отблеска. Параметр Flare Focus (Фокус отблеска) обостряет или размывает круги от блеска, a Flare Vertical And HoriZontal (Вертикаль и горизонталь отблеска) определяет его позицию. На рис. 11.28 показаны примеры использования этих параметров.
Рис. 11.28. Различные параметры меняют результаты визуализации отблесков линз
Практика: создание анимированных затенений с помощью графических эффектов Такие затенения очень часто используются для создания силуэта окна и тени деревь ев. Приведенное ниже упражнение показывает, как использовать графические эффекты (систему Paint Effects) и источники света типа "прожектор" для быстрого создания зате нения в виде тени от дерева. Основная идея заключается в том, чтобы с помощью графи ческих эффектов создать силуэт, анимировать и визуализировать его, а затем использо вать полученные кадры как последовательность изображений для текстуры прожектора. 1. Откройте файл GoboTutorialOl.mb с прилагаемого CD или создайте соб ственную штриховую кисть. (В главе 17, "Система Paint Effects", графиче ские эффекты рисования рассматриваются более подробно.) На сцене дол жен быть контур в виде простой ветви (взятый из макроса TreeLeafy.mel в окне просмотра), который занимает большую часть кадра камеры, как по казано на рис. 11.29. 2.
Этот набросок уже содержит анимацию ветра, но ее можно откорректиро вать в редакторе атрибутов для узла treeLeafyl, выбрав пункт меню Tubes => Behavior => Turbulence (Тубы => Режим => Турбулентность), как пока зано на рис. 11.30. Установите значение параметра Turbulence (Турбулентность) равным 0.01. Если воспроизвести анимацию, то дерево должно слегка изги баться и шелестеть листьями.
424
Глава
Рис. 11.29. Графические эффекты используются для создания ветви дерева в окне камеры
11
Рис. 11.30. Анимацию ветви дерева можно откорректировать в разделе Turbulence редактора атрибутов
Поскольку задачей является создание маски для дерева и использование ее как зате нения, необходимо полностью отобразить дерево в белом цвете (что в конечном ито ге заблокирует свет), а все пустое пространство — в черном (чтобы пропустить свет в этих местах). Это можно сделать несколькими разными способами. В данном случае устанавливается уровень накала (incandescence level) равный 1 . 0 для материала ка ждой тубы. 3.
Выберите объект Paint Effects (Графические эффекты) и раскройте раздел Shading (Тонирование) для узла t r e e L e a f y l . Переместите ползунки Incandescence (Накал) в разделах Shading (Тонирование) и Tube Shading (Тонирование туб) пол ностью к белому.
4.
Визуализируйте текущий кадр, чтобы убедиться, что объект полностью белый (рис. 11.31).
5.
Задав все глобальные параметры визуализации (для этой сцены прекрасно подойдут значения по умолчанию), осуществите пакетную визуализацию сцены для 200 кадров, выбрав пункт меню render => Batch render (Визуализация => Пакетная визуализация). (Более подробная информация о параметрах и пакетной визуализации приведена в главе 14, "Улучшенная визуализация с помощью mental ray".) Теперь есть последова тельность изображений, которые можно использовать как анимационное затенение.
6. Чтобы опробовать полученное анимационное затенение, создайте новую сцену, плоскость и прожектор. Расположите источник света так, чтобы он указывал на плоскость. Пока источник света все еще выделен, откройте редактор атрибутов и щелкните на пестрой кнопке Texture (Текстура) параметра Color (Цвет). В окне Create render Node (Создать узел визуализации) выберите File (Файл). В поле Image Name (Имя изображения) перейдите к первому кадру файла пакета визуали зации. И наконец, установите флажок Use Image Sequence (Использовать последо вательность изображений), чтобы уведомить Майя о циклическом воспроизведении кадров.
Освещение при анимации
425
Если визуализировать новую сцену с применением созданного затенения, то на плос кости должны появиться контуры дерева. Таким образом, создана великолепная движу щаяся тень дерева, которую можно использовать для внешних сцен или для создания те ни, падающей сквозь окно спальни. На рис. 11.32 показана визуализация проекции дере ва на плоскость.
Рис. 11.31. Графический силуэт дерева можно использовать как маску для затечения
Рис. 11.32. Применение кадров из пакета визуализации Paint Effects к исходному цвету источника света создает динами ческое затенение
Резюме В этой главе рассматривались все основы, необходимые для успешной постановки ос вещения в сценах Maya. Понимая художественные свойства и назначение освещения, а также используя доступную мощь Maya, можно эффективно устанавливать освещение для объектов. Поскольку визуализация освещения требует немалых вычислительных ре сурсов, зная различные типы источников света, методы создания теней, эффекты тумана и света, можно успешно осуществлять свои художественные замыслы.
Тонирование и текстурирование при анимации Создание сложных тонеров в Maya предполагает создание комплексных связей меж ду узлами материала и узлами визуализации. Поэтому начинающим эта операция может показаться удручающе непонятной. В настоящей главе описано текстурирование неорга нической формы, МакГизмо (MacGizmo) и весьма органического тела самого Машизмо, а также то, как создавать процедурные, компьютерные эффекты для визуализации очень натуралистических металлических поверхностей и установки карт UV для изображения файловых текстур персонажа Машизмо. Здесь рассматриваются создание связей тони рования в гипершейдере, а также связи между освещением, тонированием и визуализа цией объектов. •
Концепции текстурирования в Maya
•
Окно Hypershade (Гипершейдер)
•
Создание простых сетей тонирования
•
Тонирование МакГизмо
•
Тонирование Машизмо: основа осей UV
•
Создание текстуры Машизмо
Концепции текстурирования в Maya Ничто в Maya не пугает новичков и малоопытных пользователей так, как создание тонеров или материалов для использования в анимации. Примечательно и, возможно, забавно то, что никакой другой аспект Maya не позволяет извлечь большую выгоду из понимания того, как работает структура узлов Maya. Точное воссоздание задуманного внешнего вида объекта требует весьма высокой степени контроля, знания и понимания того, как связаны узлы Maya и что следует выбрать из огромного множества поверхно стей, текстур и узлов визуализации для решения определенной прикладной задачи. Maya предоставляет пользователям широкий диапазон методов процедурного тони рования и мощных методов внедрения файловых текстур в сети тонирования. Процедур ные текстуры (procedural texture) определяются компьютером математически согласно заданным пользователем атрибутам. Файловые текстуры (file texture) представляют со бой растровые изображения, которые можно применять к моделям, используя различные методы наложения. Все типы тонеров можно использовать эффективно; иногда их ком-
Глава 12
428
бинирование позволяет создавать удивительно реалистичное изображение. Однако, не зависимо от типа используемого тонера, для создания убедительного тонирования поль зователю неизбежно придется прибегнуть к гипершейдеру.
Гипершейдер Гипершейдер (hypershade) — основной редактор тонирования в Maya. Он позволяет создавать сети тонирования необычайной сложности и глубины. Кроме того, он позволя ет наглядно связывать различные узлы для формирования тонеров. Он весьма похож на гиперграф (hypergraph), в котором можно визуально наблюдать зависимости узлов со всеми входящими и исходящими связями, но отображает каждый узел в виде образцов, которые позволяют наглядно просмотреть ответную реакцию при создании различных связей. На рис. 12.1 показан гипершейдер с обозначением главных кнопок и областей.
Рис. 12.1. Гипершейдер во всей своей красе
Тонирование и текстурирование при анимации
429
Первое, что следовало бы отметить, — это то, что окно гипершейдера довольно боль шое, и это самый существенный недостаток: окно занимает большую часть полезной площади экрана. Кнопка Toggle Create Bar On/Off (Переключатель панели создания) позволяет скрыть ту часть окна, которая отвечает за создание поверхностей, в результате чего окно становится меньше, но позволяет пользователю получать то же количество информации. Кнопки Show W o r k Area Only (Показать только рабочую область) и Show Storage Area Only (Показать только область хранения) позволяют пользователю еще больше изолировать то, над чем он работает. Кнопка Clear Graph (Очистить редактор) позволяет скрыть сеть тонирования, отображаемую в рабочей области. Кнопка Graph materials On Selected Objects (Применить материалы к выделенным объектам) позво ляет мгновенно развернуть сеть тонирования выделенного объекта в области просмотра. Это сэкономит время при поиске необходимого тонера в области хранения. Кнопка S h o w Upstream And Downstream Connections (Показать входящие и исходящие связи) разво рачивает сеть тонирования материала, выбранного в области хранения или рабочей об ласти. Четыре новые кнопки гипершейдера, относящиеся к контейнеру, упрощают работу, когда в рабочей области встречаются чрезмерно сложные узлы.
Щелчок правой кнопкой мыши в области хранения или рабочей области отображает все пункты меню гипершейдера. Поэтому расположенная выше строка меню становится излишней. Это позволяет добраться даже до команд создания материала, которые обыч но находятся на панели создания (Create Bar). Маркированное контекстное меню гипершейдера, которое открывается п работать быстрее.
В дальнейшем вместо инструкции "выберите пункт меню Create => Node (Создать => Узел)" бу дет применятся более краткая форма — "создайте узел" или "добавьте узел". Для создания и доступа к узлам можно использовать либо панель создания (Create Bar), либо меню Create (Создать). Гипершейдер (окно Hypershade) представляет собой гораздо больше, чем просто средство создания материалов или наложения текстур. Это инструмент организации ма териалов и связанных с ними текстур, утилит, источников света, камер, групп тонирова ния и наборов фиксации. В крупных проектах с большим количеством тонеров важность такой организационной возможности трудно переоценить, но поскольку здесь рассмат ривается создание отдельных сетей тонирования, особого значения это не имеет. Одной из новых организационных возможностей гипершейдера является способность создать контейнеры — специальные узлы, содержащие другие узлы, как и следует из его названия. Контейнерные узлы не имеют никаких собственных функций, за исключением чисто организационных. В рабочей области они способны скрывать множество деталей, упрощая структуру сложных узлов, когда детали ненужны. Чтобы создать контейнерный узел, выберите один или несколько узлов в хранилище или рабочих вкладках, а затем щелкните на кнопке Create Container (Создать контейнер) па нели инструментов или выберите в меню гипершейдера пункт Edit => Create Container (Правка => Создать контейнер). Как можно заметить, выделенные в рабочей области эле менты были "абсорбированы" новым контейнерным узлом (со скругленными углами). Двойной щелчок на контейнерном узле (или щелчок на кнопке Expand Container Display (Развернуть представление контейнера)) отобразит содержимое контейнера, как показа но на рис. 12.2, а щелчок на кнопке Contract Container Display (Свернуть представление контейнера) скроет его содержимое. Чтобы переместить элементы в контейнер или из
Глава 12
430
него, перетаскивайте их мышью в контейнер или из него, удерживая нажатой левую кнопку мыши и комбинацию клавиш . Чтобы удалить контейнер, выделите его и щелкните на кнопке Delete Container (Удалить контейнер). Контейнеры могут быть очень полезны при работе над сложными сценами или узлами визуализации, но по скольку в этой главе применяются достаточно простые тонеры, воздержимся от исполь зования контейнеров.
Рис. 12.2. Новый контейнерный узел
Создание простых сетей тонирования Как уже упоминалось, создание сетей тонирования предполагает создание связей ме жду различными атрибутами разных узлов. Это можно сделать разными способами, в том числе и с помощью гипершейдера (здесь рассматривается именно этот способ). Для начала создадим простую текстуру для глобуса, используя две сферы NURBS. Откройте файл GlobeTexture.mb с прилагаемого CD. Он содержит сферу NURBS, расположенную в нулевой точке создаваемого глобуса. На самом деле здесь две сферы NURBS, одна из которых чуть больше другой и распо ложена непосредственно поверх первой. 2.
Откройте иерархическую структуру в отдельном окне либо щелкните на кнопке Outliner/Persp (Иерархическая структура/Перспектива) панели ин струментов. Здесь можно увидеть две геометрические формы: GlobeGeo и AtmosphereGeo. Зачастую сеть тонеров начинают создавать, щелкнув пра вой кнопкой мыши на геометрической форме и выбрав в появившемся маркированном контекстном меню пункт materials => A s s i g n New material (Материалы => Применить новый материал). Но этот метод не подходит, ко гда одна из форм закрывает другую. Поэтому здесь сеть создается при выбо ре объекта и непосредственного назначения сети.
Правильное управление файлами крайне важно для выполнения операций тонирования, особенно при работе с внешними файлами. При копировании файлов с прилагаемого CD очень важно записать проект в соответствующую папку. Иначе возможность помещать, просматривать и визуализировать файлы останется, но при сохранении и последующем от крытии файлов возникает риск потери связи между файлом Maya и внешними файлами, а все объекты могут остаться без текстур. 3.
Выберите пункт меню Window => rendering Editors => Hypershade (Окно => Редакторы визуализации => Гипершейдер).
Тонирование и текстурирование при анимации
431
4. Щелкните на кнопке Lambert (Ламберт) панели создания, создайте и поместите ма териал Lambert в рабочую область. Уменьшите масштаб, перемещая мышь влево по рабочей области, нажав правую кнопку мыши и клавишу
Не изменяйте ни один из трех стандартных материалов на сцене (особенно материал Lambert1), если не хотите, чтобы на сцене все объекты создавались с этой поверхностью. Это может раздражать, если в гипершейдере каналу цвета материала Lambert1 необходи мо назначить изображение. Во всех создаваемых после этого объектах данное изображе ние будет связано с этим материалом. 5. Нажав клавишу , дважды щелкните в гипершейдере на названии узла Lambertn и переименуйте его в Earth_mat. 6. Перейдите вниз в панель создания и найдите раздел 2D Textures (Плоские тексту ры). В качестве метода проекции (projection method) выберите Normal (Обычный). Поскольку текстура будет помещена на сферы NURBS, а они уже имеют направле ния UV, обычный метод проекции вполне подойдет. 7. Щелкните на кнопке File (Файл), чтобы поместить узел файла и узел положения плоской текстуры в рабочую область. 8. Дважды щелкните на узле Filen, чтобы отобразить его в редакторе атрибутов. Узел файла помещает в сеть тонеров одно плоское изображение. Узел p l a c e 2 d T e x t u r e уведомляет Майя о том, как следует визуализировать это изображение на данной по верхности. 9. Чтобы открыть диалоговое окно Open File (Открыть файл), щелкните на кнопке File (Файл) (с изображением папки) рядом с текстовым полем Image Name (Имя изо бражения). Выберите файл GlobeTexture.tga и щелкните на кнопке Open (Открыть). Обратите внимание, что если проект настроен правильно, Майя по умол чанию отобразит папку Sourcelmages в каталоге проекта. Это стандартная папка для изображений используемых в текстурах. Теперь необходимо связать узел файла с каналом цвета материала Lambert. Можно просто перетащить средней кнопкой мыши узел File1 на узел Earth_mat и в появив шемся контекстном меню выбрать пункт Default (По умолчанию), чтобы связать атрибут OutColor (Внешний цвет) узла файла с каналом цвета материала Earth_mat. Однако давайте рассмотрим богатые возможности Майя по контролю над связями. 1. Щелкните в гипершейдере правой кнопкой мыши на стрелке исходящей связи узла Filen как показано в верхней части рис. 12.3. 2. Перейдите вниз в маркированном контекстном меню и выберите пункт OutColor => OutColor (Внешний цвет => Внешний цвет), как показано на рис. 12.3, посе редине. Следует однако заметить, что в случае необходимости каналы цветов R, G и В можно подключать по отдельности. 3. Если отпустить кнопку мыши, появится линия, присоединенная к курсору. Щелкни те правой кнопкой мыши на треугольнике Connect Input (Входящая связь) материа ла Earth_mat (см. рис. 12.3, снизу). 4. В маркированном контекстном меню выберите пункт Color (Цвет). Если отпустить кнопку мыши, то образец изменится и отобразится новая карта цветов.
Глава 12
432
Рис. 12.3. Этапы непосредственного связы вания атрибутов в гипершейдере 5.
Чтобы применить эту карту, выберите объект GlobeGeo в окне иерархической структуры. Щелкните в гипершейдере правой кнопкой мыши на материале Earth_mat и выберите в маркированном контекстном меню пункт меню Assign material То Selection (Применить материал к выделенному).
6.
Отодвиньте сферу A t m o s p h e r e G e o от сферы GlobeGeo (или скройте второй гло бус). Изображение накладывается на сферу неправильно. Чтобы исправить этот не достаток, дважды щелкните в рабочей области на узле р1асе2dТехturen. Если кроме двух сфер ничего не видно, нажмите клавишу <6>, чтобы перевести область просмотра в режим тонирования и текстур.
7.
Чтобы повернуть нанесенное на шар изображение на 90° по часовой стрелке, введите в поле r o t a t e Frame (Повернуть кадр) число 90. На рис. 12.4 показана сфера до и по сле поворота изображения.
Поля Translate Frame U и Translate Frame V Выше поля rotate Frame (Повернуть кадр) есть два поля — Translate Frame U (Переместить кадр по направлению U) и Translate Frame V (Переместить кадр по направлению V). Каждое значение представляет собой число с плавающей точкой. Установка любого значения рав ным 1 перемещает кадр на всю его ширину и, по существу, возвращает карту на ее перво начальную позицию. В панели каналов выделите узел p l a c e 2 d T e x t u r e n , выберите атрибут t r a n s l a t e F r a m e U и перетащите его с помощью средней кнопки мыши в область просмот ра. Карта переместится вокруг шара. Чтобы добиться более точного изменения значения атрибута, удерживайте нажатой клавишу < Ctrl >. Помните, что для этого атрибута может быть установлен ключевой кадр.
433
Тонирование и текстурирование при анимации
Рис. 12.4. Изменение параметра rotate тирует ориентацию изображения
Frame
коррек
Карта цветов глобуса представляет простую сеть тонеров. Теперь следует создать не сколько облаков, используя чуть более сложную сеть и опробовав в процессе интерак тивную фотореалистичную визуализацию (Interactive Photo-realistic rendering — IPR). 1. Поместите сферу AtmosphereGeo снова поверх сферы GlobeGeo, установив в па нели каналов ее атрибуты перемещения равными 0. 2. Создайте в гипершейдере материал Lambert и назовите его Atmos_mat. 3. Создайте трехмерную текстуру облаков (Cloud). Трехмерная текстура отображается и существует в трехмерном пространстве, в отличие от плоской двухмерной тексту ры, которая накладывается только на поверхность объекта. В анимации эта особен ность обеспечивает некоторые интересные возможности. 4. Щелкнув правой кнопкой мыши, свяжите атрибут OutColor узла C l o u d n с каналом цвета материала Atmos_mat. 5. В окне иерархической структуры выберите сферу AtmosphereGeo, щелкните правой кнопкой мыши на материале Atmos_mat и примените тонер к выбранному объекту. А теперь уделим время настройке процесса IPR, который сразу поможет оценить ви зуальный эффект операций тонирования. 1. Выберите пункт меню Window => rendering Editors => render Settings (Окно => Редакторы визуализации => Параметры визуализации) и в появившемся окне настройте пара метры визуализации на вкладке Maya Software (Программная визуализация). На вкладке C o m m o n (Общие) оставьте предустановленный размер изображения (Image Size Preset) 640x480. Убедитесь, что в разделе r a y t r a c i n g Quality (Качество трасси ровки) вкладки Maya Software (Программная визуализация) сброшен флажок raytracing (Трассировка лучей), поскольку IPR в Майя не работает с трассировкой лучей. Закройте окно render Settings (Параметры визуализации).
434
Глава 12
2. Д Л Я просмотра результата визуализации в окне render View (Вид визуализации) выберите пункт меню render => render Current Frame (Визуализация => Визуализировать текущий кадр). 3.
Чтобы начать процесс визуализации и установить на сцене направленный свет, щелкните в окне render View (Вид визуализации) на кнопке IPR. Должно получить ся изображение похожее на рис. 12.5, а.
а
б
в
г
д
Рис. 12.5. Процесс создания и обновления IPR позволяет немедленно просматривать резуль тат изменений, внесенных в сеть тонеров 4.
Нарисуйте с помощью мыши рамку вокруг шара, как показано на рис. 12.5, а. Это по зволит выбрать обновляемую область.
Теперь, когда настроен метод предварительного просмотра, следует закончить "атмосферу". 1. Чтобы открыть в редакторе атрибутов узел облаков Cloudn, дважды щелкните на нем. Для параметра Contrast (Контраст) введите значение 0.6. Этот параметр опре деляет, как сильно будут смешиваться цвета Colorl и С о 1 о r 2 . Значение 0 усредня ет два цвета по всей текстуре, а значение 1 полностью разделит их. Для параметра Amplitude (Амплитуда) установите значение 1.8. Амплитуда регулирует влияние значения шума в текстуре. Более высокие значения увеличивают разделение между двумя цветами. Чтобы смягчить границы текстуры облаков, установите флажок Soft Edges (Мягкие границы), для параметра Center Thresh (Разброс в центре) устано вите значение 0.1, a для параметра Edge Thresh (Разброс у границ) — значение 1.5. Совместно эти два значения определяют, какой будет граница текстуры, мягкой или жесткой. Установите для параметра Transparent r a n g e (Диапазон прозрачности) значение 0.5. Этот параметр управляет диапазоном, в котором текстура облаков пе реходит от сплошной к прозрачной. Чем выше значения, тем более рассеянным ста новится диапазон. Установите для параметра r a t i o (Соотношение) значение 0.9. Соотношение определяет, насколько детальной будет текстура облаков. Чем выше значение, тем четче становятся мелкие детали шума. При изменении этих значений обратите внимание на изменение внешнего вида текстуры в окне IPR. В итоге долж но получиться изображение похожее на рис. 12.5, б. 2.
В гипершейдере соедините атрибут OutColor узла Cloud с каналом прозрачности T r a n s p a r e n c y материала A t m o s _ m a t (см. рис. 12.5, в). Атрибут T r a n s p a r e n c y в
качестве карты прозрачности (transparency m a p ) использует цвет, созданный узлом Cloud, но интерпретирует белые области как прозрачные.
Тонирование и текстурирование при анимации
435
3. С помощью раздела General Utilities (Общие утилиты) панели создания создайте в рабочей области узел реверса (reverse node). Узлы такого типа инвертируют передан ные им значения цветов. 4. Свяжите атрибут OutColor узла Cloud с параметром Input (Вход) узла реверса. Ат рибут OutColor является трехзначным атрибутом, его значение состоит из чисел с плавающей точкой. Атрибуты такого типа называют векторами, и они могут пред ставлять цвета RGB или координаты XYZ. Поскольку входящее соединение узла ре верса также представляет собой векторную переменную, его можно связывать непо средственно с атрибутом OutColor. Если бы нужно было работать с одиночной пе ременной, то следовало бы связать ее с одним из атрибутов, составляющих вектор (например значение G в цветовом триплете RGB). 5. Свяжите выход узла реверса с атрибутом Transparency материала Atmos_mat. Чистые области материала Atmos_mat должны стать белыми, поскольку узел ревер са инвертирует цвет, созданный узлом Cloud, и передает его атрибуту T r a n s parency материала Atmos_mat (см. рис. 12.5, г).
6. Отмените эту операцию и свяжите выход узла реверса с атрибутом Color материала Atmos_mat. Черные области должны превратиться в белые, как показано на рис. 12.5, д. Если предыдущая версия была предпочтительнее, отмените эту опера цию и повторите шаг 5. В качестве упражнения попытаемся анимировать эти текстуры, вращая атрибут translateFrameU узла place2dTexture, примененного к материалу Earth_mat. Затем можно также анимировать канал перемещения по оси Z узла place3dTexture материала Atmos_mat. На рис. 12.6 показан узел place3dTexture, выделенный в области просмотра. Облака будут кружиться вокруг земного шара, созда вая эффект его вращения, как показано в файле EarthAnim. mov на прилагаемом CD. Чтобы просмотреть пример, откройте файл GlobeTextureAnim.mb.
Рис. 12.6. Узел place3dTexture, выде ленный в области просмотра
Тонирование МакГизмо Следующая задача — тонирование машины, которую Машизмо использует для путе шествий. В данном разделе обсуждаются типы материалов, а также методы наложения.
Глава 12
436
Далее рассматриваются создание более сложной сети тонеров и рабочие методики тони рования, позволяющие придать этим тонерам максимально качественный внешний вид при минимальных затратах времени на визуализацию. МакГизмо представляет собой одноместный аппарат с вертикальным взлетом и по садкой (Vertical Take Off and Landing — VTOL), сконструированный и построенный уче ным, которого Машизмо спас в начале своей карьеры супергероя. Для Машизмо этот ап парат очень дорог, поэтому он всегда содержит его в отличном рабочем состоянии. Ниже описан план тонирования МакГизмо. •
Сложнее всего тонировать двигатели. Хорошая новость заключается в том, что при дется тонировать только один двигатель, а затем можно применить созданный тонер к другому двигателю. Обтекатель двигателя имеет три явно выраженные области, которые выглядят по-разному. Область, покрываемая краской, описывается в разде ле "Тонирование обтекателя двигателя с помощью узла градиента". Часть обтекателя около турбины должна быть хромированной, а задняя часть двигателя будет иметь рифленую текстуру в виде бороздок, которые рассеивают тепло, вырабатываемое двигателем. Носовые конусы двигателей — это хромированная или зеркально отпо лированная сталь, а лопасти турбин — металлокерамика. Чтобы избежать смешения, эти поверхности необходимо определить.
•
Обшивка аппарата сделана из суперсовременного сплава, покрытого отполированной до блеска краской металлического цвета, как совсем новый автомобиль. Для начала тониру ем двигатели, а затем воспользуемся созданным тонером для раскраски корпуса.
•
Обод кабины и ниши шасси — это отполированная до зеркального блеска сталь.
•
Внутренняя часть кабина может быть окрашена серой или черной матовой краской. Это будет сделано в последнюю очередь, поэтому можно будет подобрать цвет, гар монирующий с остальными поверхностями.
•
Кресло — кожаное или виниловое. Это также зависит от тонирования остальной час ти корабля. Н а в ы к и , н е о б х о д и м ы е для создания с о б с т в е н н ы х т о н е р о в
Первое, что нужно сделать при создании тонеров для моделей, уже сделано — создан план. Имея план, проще определить способ выполнения необходимых действий. При соз дании плана используйте понятные термины. Обратите внимание: выше при описании то нера использовались термины краска с металлическим блеском, отполированный и совсем новый автомобиль. Теперь, чтобы понять, как должна выглядеть та или иная деталь аппара та, можно выйти на улицу и немного понаблюдать. Указание визуальных свойств — это лучший способ выяснить, что нужно делать в Maya. На следующем этапе следует определить, какие узлы и как связывать, чтобы получить в точности тот эффект, который необходим? Правильно ответить на этот вопрос можно, только имея опыт, но опыт можно получить разными способами. В данном случае используется первый и наилучший метод изучения — создание тонеров. Факти чески для создания эффектов здесь используется несколько рецептов. Задача ученика заключа ется в том, чтобы запомнить, как используются узлы, и представить способы применения их в других тонерах. Примечания по ходу изложения помогут в решении этой задачи. Также полез но дополнительно экспериментировать с настройками каждого описанного здесь узла. Впослед ствии при создании собственных тонеров у читателей будет запас знаний, который поможет в разрешении неизбежных проблем, связанных с созданием тонеров.
Тонирование и текстурирование при анимации
437
Другой ценный метод создания тонеров заключается в загрузке готовых тонеров и изуче нии того, как связаны их узлы в каждой сети. Поставляемая с Maya библиотека тонеров (Shader Library) является отличным источником сетей тонеров начальной и средней сложно сти. Доступ к этим тонерам можно получить с помощью вкладки Shader Library (Библиотека тонеров) в окне гипершейдера. Для просмотра сети тонеров достаточно перетащить их с помощью средней кнопки мыши в область хранения и щелкнуть на кнопке Show Upstream And Downstream Connections (Показать входящие и исходящие связи). Конечно, предпола гается, что библиотека тонеров установлена. Если это не так, ее стоит установить согласно руководству Инсталляция и лицензирование (Installation and Licensing) в документации Maya. Научившись читать эти сети, можно воспользоваться сайтом Highend3d.com— это отличный источник передовых и более сложных сетей тонеров. Невозможно осветить все аспекты создания тонеров в одной книге, тем более в одной гла ве. Многие из узлов можно использовать как для создания тонеров, так и для анимации, поэтому остается большой простор для самообучения. Документация хорошо описывает основные операции узлов, но описание применения этих узлов не выходит за рамки самых простых рекомендаций.
Тонирование обтекателя двигателя с помощью узла градиента Имея "план наступления" для создания собственного тонера, можно начинать плани ровать области разделения. Помните, в данном случае используются NURBSповерхности, которые имеют направления U и V. Пространство текстуры NURBSповерхности имеет неявные направления UV (implicit UVs), т.е. направления UV невоз можно изменить, и они всегда находятся в числовом диапазоне 0—1. Это важно помнить, поскольку это позволяет предвидеть, где на поверхности окажется текстура. Для иллю страции этого и для ознакомления с чрезвычайно мощным и полезным узлом градиента определим, где должны располагаться цвета. 1. Создайте новый файл и импортируйте сцену MacGiZmoEngine.mb с прила гаемого CD. 2.
Выделите объект EngineCowlSrf и выберите пункт Edit NURBS => rebuild surfaces • (Редактировать NURBS-поверхности => Перестроить поверхно сти • ) . При моделировании поверхности всегда перестраиваются с парамет рами от 0 до интервала между изопараметрическими линиями, но в данном случае необходимо перестроить поверхность с параметризацией от 0 до 1. Этот метод называется параметризация по длине связки (chord length parameteriZation), такая перестройка облегчит тонирование, переведя по верхность в те же параметры, что и направления UV текстуры. Назначив диапазон параметров (Parameter r a n g e ) от 0 до 1 и установив флажок Keep CVs (Сохранять контрольные вершины), щелкните на кнопке Apply (Применить). Обратите внимание на то, что интервалы не изменились.
3.
Выберите изопараметрическую линию на объекте EngineCowlSrf, как по казано на рис. 12.7, слева. Запомните или запишите число в заголовке (0.166666666666667); оно понадобится позднее. Если используется по верхность, созданная самостоятельно, то это число может быть другим.
438
Глава 12
Рис. 72.7. Выбор изопараметрических линий спереди и сзади объекта Engine CowlSrf; в заголовке окна отображается длина связки справа,
4.
Выберите изопараметрическую линию, показанную на рис. 12.7, число; в данном случае 0 .722222222222222.
и запишите
5.
Перестройте поверхность EngineCowl, выбрав в качестве диапазона параметров значение о То #Spans и установив флажок Keep CVs (Сохранять контрольные вершины). Чтобы получить два указанных выше значения, необходимы только па раметры от 0 до 1.
6.
В гипершейдере создайте материал Blinn и назовите его Cowl_mat.
7.
С помощью средней кнопки мыши перетащите его из рабочей области гипершейдера на объект EngineCowlSrf.
8.
Чтобы создать в рабочей области узел градиента (ramp node), найдите в панели соз дания область плоских текстур и щелкните на кнопке r a m p (Градиент).
9.
Свяжите атрибут OutColor градиента с каналом цвета материала Cowl_mat. Пер вое, что можно отметить, — градиент проходит поперек, а не вдоль по поверхности обтекателя.
10. Дважды щелкните на узле градиента в рабочей области гипершейдера. В результате от кроется редактор атрибутов для градиента. Измените значение атрибута Туре на U ramp, а для атрибута Interpolation установите значение None. Вместо плавного градиента по умолчанию будут созданы отчетливые полосы цвета. Окружности с левой стороны градиента называются манипуляторами и представляют выбранную позицию цвета на градиенте. Щелчок на них выделяет Манипулятор и изменяет образец Selected Color (Выбранный цвет), расположенный ниже линейки градиента. Для изменения по зиции цвета на линейке градиента эти манипуляторы можно перемещать вертикально. 1 1 . Удалите синюю полоску, щелкнув на прямоугольнике справа от синего цвета в верх ней части линейки градиента.
Тонирование и текстурирование при анимации
439
12. Измените цвет красной полоски, выбрав красный манипулятор и переместив ползу нок, расположенный рядом с образцом Selected Color (Выбранный цвет), в крайнюю левую позицию. 13. Щелкните на зеленом манипуляторе. Значение параметра Selected Position (Выбранная позиция) будет равно примерно 0.5. В поле Selected Position (Выбранная позиция) вве дите число 0.166, которое представляет значение изопараметрической линии, упомяну той в п. 3. В результате граница черной полосы переместится к выбранной ранее изопара метрической линии. 14. Дважды щелкнув на образце зеленого цвета, откройте диалоговое окно выбора цвета (Color Chooser) и замените зеленый цвет белым. 15. Щелкните левой кнопкой мыши на черной области линейки градиента, чтобы соз дать новый круг, который представляет индексную позицию цвета (Color Index Position) (более подробная информация об индексных позициях цветов приведена разделе "Мощь узла градиента"). Чтобы переместить позицию вверх точно к вы бранной ранее изопараметрической линии черного цвета объекта E n g i n e C o w l S r f , введите в поле Selected Position (Выбранная позиция) значение 0. 722. Поверхность должна выглядеть так, как показано на рис. 12.8.
Рис. 12.8. Поверхность EngineCowlSrf с определен ными областями для текстур
16. Переименуйте узел градиента в ColorSeprmp. Мощь узла градиента
Вероятно, есть тысяча способов использования градиента; в этой главе рассматривается только один из них. По сути, линейка градиента создает градации цвета. Впоследствии созданные градации можно связывать с различными атрибутами в гипершейдере или ре дакторе связей. Существуют два важных типа используемых здесь исходящих атрибутов градиента: outAlpha и outColor.
Первый из них представляет собой версию градиента с градацией серого цвета в редакторе ат рибутов. Неважно, сколько цветов есть в градиенте; атрибут outAlpha всегда будет соответст вовать градациям серого цвета и иметь числовое значение от О до 1. Это означает, что с его по мощью можно управлять любой входящей связью с диапазоном 0-1 любого узла. Имя атрибута outColor говорит само за себя: это изображение цвета RGB, созданное с помощью градиента. Оно может быть связано непосредственно с любым входом, пред ставляющими собой тройное значение или вектор. Исходящий цвет задают атрибуты outputR, outputG, outputB, где каждое значение находится в пределах от 1 до о. В каждой линейке градиента есть список входящих цветов (Color Entry List), каждый член которого отображается в виде одного из перемещаемых манипуляторов слева от градиен-
440
Глава 12
та. Каждая из этих окружностей имеет индексное число. Индекс начинается с [0] и увели чивается по вертикали, как показано ниже. Каждый член списка имеет атрибуты позиции и цвета. Атрибут цвета выражается в виде значения RGB, а атрибут позиции соответствует расположению цвета на градиенте. Дополнительная информация об использовании гради ентов содержится в книге Эрика Келлера (Eric Keller) Maya Visual Effects: The Innovator's Guide (Sybex, 2007).
Способ смешения цветов градиента контролирует метод интерполяции, выбранный в рас крывающемся списке Interpolation (Интерполяция), расположенном в верхней части вкладки ramp Attributes (Атрибуты градиента). В данном случае используется метод Smooth (Сгладить), в результате которого входящие цвета смешиваются равномерно, или метод None (Нет), который создает резкие границы между входящими цветами. В этой главе градиенты используются почти для каждого аспекта создания тонера. Выше рассматривалось использование градиента для определения способов наложе ния текстур на поверхность. Текстуры разных конфигураций довольно часто использу ются в описанном здесь процессе текстурирования, а данный градиент послужит базой, на которой будут созданы многие из них. На рис. 12.9 показана сеть, которую необходи мо создать. Не пугайтесь! Эта сеть будет создана с помощью выделения компонентов ма териалов в отдельные области гипершейдера. Стратегия "разделяй и властвуй" позволя ет создавать сложные тонеры и точно понимать при этом, что происходит и как это сде лать потом для других тонеров.
Наложение окружающего отражения Поскольку в данном случае создаются блестящие поверхности, придется ис пользовать материалы, способные отражать свет. Это можно сделать с по мощью окружающей сферы, как в примере на CD. Ниже описан процесс создания окружающей карты.
Тонирование и текстурирование при анимации
441
Рис. 12.9. Завершенная сеть тонеров для мате риала Cowl_mat 1. Чтобы создать окружающую сферу и узел p l a c e 3 d T e x t u r e в рабочей области, пе рейдите в панели создания гипершейдера к разделу Env Textures (Окружающие тек стуры) и щелкните на кнопке Env Sphere (Окружающая сфера). 2. Перейдите вверх к разделу плоских структур ( 2 D Textures) и добавьте на сцену фай ловую текстуру, а также узел ее положения. 3. Откройте редактор атрибутов, дважды щелкнув на узле Filen, и щелкните на кноп ке File (Файл). 4. Чтобы подключить изображение, откройте файл WhiteHouse.tga. Файл W h i t e H o u s e . t g a представляет собой фотоснимок Белого дома, который авторы сделали прошлым летом и превратили в сферическую карту, используя методику, описан ную на сайте w w w . l i Z a r d l o u n g e . c o m / h t m l / t u t o r i a l s / c 4 d / s p h e r i c a l M a p / .
5. Щелкните правой кнопкой мыши на кнопке Output Connections (Исходящие связи) узла файла и свяжите его атрибут OutColor с входящим изображением узла envSphere.
6. Щелкните правой кнопкой мыши на кнопке Output Connections (Исходящие связи) узла envSphere и свяжите его атрибут OutColor с каналом reflectedColor ма териала Cowl_mat. Результат всех этих действий можно просмотреть в файле M a c G i Z m o E n g r e f 1 Start.mb.
Глава 12
442
Наложение областей отражения с помощью узла градиента При создании процедурных тонеров начинающие разработчики нередко спотыкаются на одной из особенностей Maya: она зачастую разделяют атрибуты, кото рые интуитивно воспринимаются как связанные. В частности, атрибут reflectivity управляет величиной отражающей способности материала, а атрибут reflectedColor точно определяет то, что этот материал отражает. Неважно, что связано с атрибутом reflectedColor, если канал reflectivity материала имеет значение "нуль". В дан ном случае требуется сделать так, чтобы задняя часть обтекателя почти ничего не отра жала, тогда как две передние области имели бы максимальный блеск. Для этого будет использоваться копия только что созданного градиента. Откройте файл MacGiZmo EngrefIStart.mb с прилагаемого CD и установите общую отражающую способность так, как описано ниже. 1.
В окне гипершейдера отключите узел градиента ColorSep_rmp от канала цвета ма териала Cowl_mat, щелкнув левой кнопкой мыши на соединяющей их зеленой ли нии и нажав клавишу . На рис. 12.10 показано, какую линию необходимо выбрать и удалить.
Рис. 12.10. Выделите и удалите линию, соеди няющую атрибут outColor узла градиента ColorSep_rmp и канал цвета материала Cowl mat
2.
Выделите узел градиента ColorSep_rmp, а затем выберите пункт меню Edit => Duplicate => Shading Network (Правка => Дублировать => Сеть тонирования). В ре зультате будет создан дубликат узла градиента и его узла положения с уже имеющи мися связями. Назовите новый узел градиента reflectivity_rmp.
3. Дважды щелкнув на узле градиента, откройте его в редакторе атрибутов и замените цвет нижнего входящего цвета белым цветом. 4.
Соедините атрибут outAlpha узла градиента reflectivity_rmp с входящим ат рибутом отражения материала Cowl_mat. Связать два этих атрибута непосредствен но в гипершейдере не удастся, поэтому придется использовать редактор связей. Что бы открыть редактор связей, перетащите с помощью средней кнопки мыши узел гра диента на материал Cowl_mat и выберите из контекстного меню пункт Other (Другое). Как показано на рис. 12.11, выделите атрибут outAlpha в разделе Outputs (Исходящие). Перейдите вниз к разделу Inputs (Входящие) и с правой стороны окна найдите атрибут reflectivity. Щелкните на нем, чтобы соединить указанные ат-
Тонирование и текстурирование при анимации
443
рибуты. Если по ошибке был выбран не тот атрибут, щелкните на нем еще раз, чтобы снять выделение.
Puc. 12.11. Использование окна редактора связей для установки связи между атрибу том outAlpha узла градиента (выход) и каналом reflectivity материала (вход) 5. Откройте окно render View (Вид визуализации) и вклю чите процесс IPR, щелкнув на кнопке IPR в верхней части окна. Результат показан на рис. 12.12, сверху. Получилась поверхность, отражающая окружающие предметы, но от ражение, как и вся поверхность, кажется размытым. В дан ном случае для материала установлено слишком высокое значение капала диффузии (diffuse channel). Есть общее правило: значения отражающей способности и диффузии материала должны быть равны или приближаться к 1. Но что делать, если отражающая способность управляется гра диентом? Как приравнять оба значения к 1? Это можно сделать, создав градиент с помощью узла реверса! Рис. 12.12. Отражение мате 6. Добавьте в рабочую область узел реверса, щелкнув на риала Cowl_mat до (сверху) соответствующей кнопке панели создания. и после (снизу) создания свя7. Свяжите выходящий атрибут outAlpha градиента с зи канала диффузии входящим каналом Inputx узла реверса. Щелкните правой кнопкой мыши на кнопке Input (Вход) узла реверса и в появившемся контек стном меню выберите пункт Input => lnputX (Вход => lnputX). 8. Теперь необходимо связать атрибут OutputX узла реверса с атрибутом диффузии материала Cowl_mat. Обновленное изображение IPR должно выглядеть так, как по казано на рис. 12.12, снизу. Отражение стало насыщеннее и естественнее.
444
Глава
12
Настройка отражающей способности В большинстве случаев отражающая способность отполированных металлических поверхностей автомобилей снижается по мере того, как поверхность изгибается и пово рачивается в сторону зрителя. Это то, что позволяет показать зрителю все сверкающие, глянцевые блики. Добавление бликов рассматривается позднее, вместе с добавлением цветового компонента. Пока требуется сделать поверхность, обращенную к зрителю, ме нее отражающей. Для этого используется коэффициент обзора поверхности (Facing ratio) информационного узла образцов. Образцы этого узла направляются на поверхность по мере их визуализации. Эта ин формация об образцах выражается широким разнообразием атрибутов узла; в данном случае используется атрибут Facing ratio. Концепция этого атрибута проиллюстри рована на рис. 12.13. Все полигональные и NURBS-поверхности имеют нормали, отхо дящие от модели. Узел образцов вычисляет значение атрибута Facing ratio, измеряя угол между осью обзора объекта со стороны камеры и нормалью к поверхности объекта. Если нормаль перпендикулярна оси обзора, то поверхность отвернута от камеры и ко эффициент обзора поверхности равен 0 . 0 . Если нормаль параллельна оси обзора, то по верхность обращена к камере и коэффициент обзора поверхности равен 1 . 0 . Рассмотрим это на практическом примере.
Рис. 12.13. Нормаль, направленная от камеры, (верхняя стрелка), имеет коэффициент обзо ра, равный 0. О, а нормаль, направленная в камеру (стрелка вправо), имеет коэффициент обзора, равный 1. О 1. Создайте в гипершейдере градиент с черным цветом вверху и белым внизу. Обратите внимание на то, что Maya по умолчанию создает градиент в направлении V. Оставьте линейный метод интерполяции и присвойте градиенту имя RefTweak_rmp. 2.
Чтобы создать узел в гипершейдере, перейдите в панели создания к разделу General Utilities (Общие утилиты) и щелкните на кнопке Sampler Info (Информация образцов).
3.
Чтобы открыть редактор связей, перетащите средней кнопкой мыши информацион ный узел образцов на только что созданный градиент, удерживая нажатой клавишу <Shift>.
Тонирование и текстурирование при анимации 4.
445
Свяжите атрибут Facing ratio узла образцов с атрибутом V Coord под недоступ ным атрибутом UV Coord градиента refTweak_rmp (рис. 12.14, а).
12.14. Использование редактора связей для создания связи между атрибутом Facing
Рис.
градиентом
Со1оr
(а);
узла
связывание атрибута градиента
outColor градиента
с атрибутом
Color
Entry
List
Ratio u (1)
.
Reflectivity_rmp(б)
5. Выберите в гипершейдере градиент RefTweak_rmp и щелкните на кнопке Reload Left (Перезагрузить левую) в верхней части редактора связей, чтобы загрузить гра диент в разделе Outputs (Исходящие). 6. Выделите узел градиента Reflectivity_rmp и щелкните на кнопке Reload Right (Перезагрузить правую), чтобы загрузить узел градиента в раздел Inputs (Входящие) редактора связей. 7. Свяжите атрибут o u t C o l o r с атрибутом C o l o r Entry L i s t [ 1 ] . Color, как пока
зано на рис. 12.14, б. 8. Используя манипуляторы градиента, добейтесь нужного эффекта. На рис. 12.15 по казано несколько примеров визуализации с разным положением манипуляторов. Чтобы сделать границы менее блестящими, замените белый цвет градиента какимлибо оттенком серого. Эта чрезвычайно мощная методика. Используя ее, можно контролировать намного больше, чем только отражающую способность. Представьте, что необходимо сделать стекло, которое меняет прозрачность, отражающую способность и коэффициент прелом ления, в зависимости от того, как оно расположено перед камерой. Используя эту мето дику, можно управлять цветом или любым атрибутом, который мог бы зависеть от спо соба расположения относительно камеры.
Глава 12
446
Исходя из изложенного выше, назовем этот процесс методикой градиента коэффициента (facing ratio ramp). Чтобы создавать градиент коэффициента обзора поверхности, выполните шаги 1 -4 приведенного выше упражнения, но используйте другие имена, подходящие к конкретной ситуации.
обзора поверхности
Рис. 12.15. Манипулируя сглаживанием градиента, можно получать различные эффекты. Обратите внимание на эффект от переключения значений бе лого и черного цвета на нижнем фрагменте
Создание металлического блеска Подобно другим рассмотренным ранее каналам, канал цвета предоставляет несколько возможностей для улучшения общего эффекта тонера. Первый созданный градиент раз делил поверхность на разные цветовые области, поэтому для размещения цветов нужно использовать копию этого градиента. 1. Сдублируйте узел градиента ColorSep_rmp в сети тонирования. Присвойте дубли кату имя Color_rmp. 2.
Свяжите атрибут outColor дубликата с атрибутом colorlnput материала Cowl_mat.
3. Дважды щелкните на узле градиента, чтобы открыть его. Выберите нижний манипу лятор и измените цвет с черного на белый.
447
Тонирование и текстурирование при анимации 4.
Замените цвет среднего манипулятора на темно-зеленый со значением HSV 2 2 0 , 0 . 9 и 0.35.
5. Оставьте в верхней области черный цвет. Это будет копоть на выхлопном сопле. 6. Создайте трехмерную текстуру Granite и свяжите ее атрибут outColor с каналом Color Entry L i s t [ 2 ] .Color узла градиента Color_rmp. Для этого перетащите его на материал Cowl_mat, нажав клавишу <Shift>, и соедините оба атрибута в ре дакторе связей. 7. Откройте текстуру Granite в редакторе атрибутов. Эта текстура создает видимость гранитной или другой каменной взвеси в материале-заполнителе. Ее можно исполь зовать как металлическую грунтовку для слоя краски. Измените параметры тексту ры Granite следующим образом:
Значения остальных атрибутов оставьте принятыми по умолчанию. Чтобы посмотреть на результаты, визуализи руйте обтекатель. Они должны быть похожи на рис. 12.16, сверху. Прямая связь текстуры Granite со средним об разцом узла градиента Color_rmp внедряет гранитный цвет непосредственно в цвет обтекателя. Внедрение верх него образца в узел градиента Color_rmp создает в облас ти турбины очень блестящую металлическую поверхность, а это как раз то, что нужно. Теперь следует применить ко эффициент обзора поверхности, чтобы уменьшать цвет среднего образца по мере того, как поверхность выходит из поля зрения. Для этого понадобится выполнить дейст вия, описанные ниже. 1. Создайте в рабочей области гипершейдера градиент с учетом коэффициента обзора и назовите его Color ratio_rmp.
Рис. 12.16. Результаты непо средственного связывания гра нитной текстуры
2. Свяжите атрибут outColor гранитной текстуры с ат рибутом Color Entry L i s t [ 1 ] .Color градиента Colorratio_rmp.
3. Откройте градиент Colorratio_rmp в редакторе атрибутов и задайте для черного образца цвет между серым и светло-серым. 4. Свяжите атрибут outColor градиента Colorratio_rmp с атрибутом Color Entry List [1] . Color узла градиента Color_rmp.
Глава 12
448
5.
Чтобы просмотреть результат, выполните визуализацию. Обратите внимание, как отражение все быстрее уступает цвету по мере того, как поверхность выходит из поля зрения. Если это не то, что нужно, свяжите атрибут outColor гранитной текстуры непосредственно с атрибутом Color Entry List [1] .Color узла градиента Color_rmp, как это было раньше.
О б ъ е к т ы ссылочных текстур В качестве а л ь т е р н а т и в ы ф а й л о в ы м т е к с т у р а м и т р е х м е р н ы м п р о ц е д у р н ы м т е к с т у р а м к п о верхностям
анимируемых
объектов
можно
применить
объект ссылочной
текстуры
(Texture
reference Object — TRO). О б ъ е к т TRO — это отдельная копия геометрической ф о р м ы , по мещенная там, г д е с о з д а е т с я с с ы л о ч н ы й о б ъ е к т , с к р ы т ы й о т п р о с м о т р а . В х о д е а н и м а ц и и о н остается с т а т и ч е с к и м (если н е н у ж н о а н и м и р о в а т ь и м е н н о е г о , н о э т о п р о т и в о р е ч и т с а м о й цели п р и м е н е н и я с с ы л о ч н о г о объекта!), и т р е х м е р н а я п р о ц е д у р н а я т е к с т у р а п р и м е н я ется сначала и м е н н о к э т о м у о б ъ е к т у , а не к а н и м и р у е м о м у . В п о с л е д с т в и и т е к с т у р а п е р е н о с и т с я с о б ъ е к т а TRO на а н и м и р у е м ы й о б ъ е к т . В результате т е к с т у р а б о л ь ш е не "плавает" при анимации объекта, поскольку она остается независимой от него при существенных г е о м е т р и ч е с к и х д е ф о р м а ц и я х или п р о с т р а н с т в е н н ы х п р е о б р а з о в а н и я х . Визуализация о б ъ е к т а , и с п о л ь з у ю щ е г о о б ъ е к т TRO, п р о и с х о д и т н е с к о л ь к о медленнее и м о ж е т п о т р е б о в а т ь б о л ь ш е е п а м я т и , чем визуализация с и с п о л ь з о в а н и е м ф а й л о в о й т е к с т у р ы . О б ъ е к т T R O оставляет р а з р е ш е н и е н е з а в и с и м ы м , п о э т о м у и з м е н е н и е м а с ш т а б а о б ъ е к т а н е б у д е т в н о с и т ь и с к а ж е н и й в о в н е ш н и й в и д т е к с т у р ы , как э т о п р о и с х о д и т с ф а й л о в о й т е к с т у р о й . Кроме т о г о , о б ъ е к т T R O и н о г д а м о ж е т о б е с п е ч и в а т ь более к а ч е с т в е н н ы й вид текстуры на сложной поверхности. Чтобы создать объект ссылочной текстуры, трехмерный
процедурный
тонер,
(Визуализация) выберите пункт
затем
примените к некой геометрической форме
выделите
форму
и
в
наборе
Texturing => Create Texture reference Object
м е н ю rendering
(Текстурирование =>
Создать о б ъ е к т с с ы л о ч н о й т е к с т у р ы ) . Вот и все! Т е п е р ь о б ъ е к т TRO г о т о в к п р и м е н е н и ю на с ц е н е . В д а н н о м п р и м е р е и з о б р а ж е н и е , о б о з н а ч е н н о е б у к в о й а, п р е д с т а в л я е т собой и с х о д н у ю с ф е р у , к к о т о р о й применена трехмерная мраморная текстура. На р и с у н к е б представлена с т а н д а р т н о текстурированая с ф е р а , перемещенная по о с и Z вперед. Как м о ж н о заметить, тек стура на поверхности с ф е р ы сместилась. Рисунок в д е м о н с т р и р у е т ту же п е р е м е щ е н н у ю сфе ру, н о и с п о л ь з у ю щ у ю объект с с ы л о ч н о й т е к с т у р ы . О б р а т и т е внимание н а т о , ч т о текстура р а с п о л о ж е н а так ж е , как и на и з о б р а ж е н и и а, несмотря на перемещение с ф е р ы .
а
б
в
К сожалению, визуализация процедурных трехмерных структур, таких как гранит, мо жет оказаться очень длительной. Кроме того, если не позаботиться о правильном подчине нии подлежащих анимации узлов, создаваемые ими текстуры могут "плавать" по модели. Наконец, деформирование объектов с процедурными текстурами приводит к тому, что тек стуры при перемещении модели остаются неподвижными. Хотя в некоторых обстоятельст вах это можно использовать как преимущество (вспомните анимированные облака), как
Тонирование и текстурирование при анимации
449
правило лучше преобразовать их в файловые текстуры. Файловые текстуры быстрее ви зуализируются при анимации, а также деформируются вместе с моделью. 1. Выделите гранитную текстуру в гипершейдере. 2. Нажав клавишу <Shift>, выделите объект EngineCowlSrf в области просмотра. 3. В меню Edit (Правка) гипершейдера выберите пункт Convert То File Texture (Maya Software) • (Преобразовать в файловую текстуру (Программная визуализация) • ) . На рис. 12.17 показаны настройки, которые следует использовать. Позднее в этой главе данная возможность будет использоваться весьма часто, а ее параметры будут описаны более подробно, а пока достаточно воспроизвести показанные настройки и щелкнуть на кнопке Convert And Close (Преобразовать и закрыть). Компьютер ви зуализирует файловую версию текстуры и сохранит ее в папке исходных изображе ний проекта. Это может занять от нескольких секунд до нескольких минут в зависи мости от размера текстуры и возможностей компьютера.
Рис. 12.17. Окно свойств File
4.
Convert To
Texture
Переименуйте узел файловой текстуры в GreenMetal_file.
Майя автоматически дублирует узлы, входящие в конвертируемую текстуру. Поэто му в данном случае градиенты и материал Blinn по имени Cowl_mat дублируются и ав томатически применяются к объекту EngineCowlSrf. Хотя можно оставить эту поверх ность на модели, удалим все, кроме узла файловой текстуры, и свяжем его с материалом Cowl_mat, заменив гранитную текстуру. 1. Щелкните в гипершейдере правой кнопкой мыши на узле файловой текстуры GreenMetal_file и в появившемся контекстном меню выберите пункт Select Output Nodes (Выделить исходящие узлы).
Глава 12
450
2. Чтобы отменить выделение, щелкните, нажав клавишу <Shift>, на узле файловой текстуры GreenMetal_file. 3. 4.
Удалите те узлы, которые остались выделенными. Свяжите атрибут outColor узла файловой текстуры GreenMetal_file либо с ат рибутом Color Entry List(l) .Color градиента Colorratio_rmp, либо с атри бутом Color Entry List(l) . Color узла градиента Color_rmp.
5.
С помощью средней кнопки мыши перетащите образец материала Cowl_mat на объ ект EngineCowlSrf в области просмотра, чтобы непосредственно применить этот тонер к поверхности.
6.
Чтобы проверить новую файловую текстуру, выполните визуализацию. Видимых различий у новых результатов и рис. 12.16 быть не должно.
Создание рифлений с помощью карты выдавливания Выхлопное сопло в задней части обтекателя двигателя должно быть темной рифленой поверхностью с минимальными бликами. Его можно создать с помо щью градиента, используемого в качестве входящего цвета другого градиента, приме няемого в качестве карты выдавливания к материалу Cowl_mat. Откройте файл MacGiZmoEngineBmpStart.mb (или используйте файл из предыдущего раздела) и примените карту выдавливания так, как описано ниже. 1.
Сдублируйте узел градиента ColorSep_rmp и сеть тонирования. Присвойте полу ченной копии имя Вumр_rmр.
2.
Откройте узел градиента в редакторе атрибутов и в окне выбора цвета выберите для двух нижних манипуляторов значение серого 0.5. Это распределит нейтральное значение выдавливания по всей поверхности.
3.
Создайте новый градиент. Для красного и синего манипуляторов задайте черный цвет. Измените значение зеленого манипулятора до 0.25 процента темно-серого.
4.
Откройте узел place2dTexture, связанный с этим градиентом, и введите значение 200 в поле V атрибута repeatUV.
5.
Используя редактор связей, свяжите атрибут outColor нового градиента с атрибу том Color Entry List [2] . Color, как было описано ранее.
6.
Свяжите атрибут outAlpha узла градиента Bump_rmp с входной картой выдавлива ния материала Cowl_mat. Для этого потребуется перетащить средней кнопкой мыши узел градиента Bump_rmp на материал Cowl_mat и выбрать в контекстном меню пункт Bump Map (Карта выдавливания). В результате этого узел bump2d будет связан с гра диентом и материалом. Это обычная практика. Если дважды щелкнуть на этом узле, станет очевидно, что на карту выдавливания влияют два значения. Градиент (и любое другое накладываемое изображение, используемое как карта выдавливания) связыва ется с каналом Bump Value (Значение выдавливания). Параметр Bump Depth (Глубина выдавливания) управляет высотой или глубиной шероховатостей. В большинстве слу чаев значение 1 слишком высокое, лучше установить значение около 0.25.
7.
Чтобы просмотреть результаты, выполните визуализацию. Готовый материал содержится в файле MacGiZmoCowlFinished.mb.
Тонирование и текстурирование при анимации
451
Тонирование турбин и носового обтекателя Тонировать лопасти турбин сравнительно просто. В этом разделе рассматрива¬ ется создание материала для носового обтекателя с помощью многослойной тек стуры, а также обсуждаются полезные свойства анизотропного материала. Откройте файл MacGiZmoNoseConeStart.mb с прилагаемого CD (или используйте файл из пре дыдущего раздела) и выполните тонирование турбин, как описано ниже. 1. Очистите рабочую область гипершейдера от предыдущего упражнения, выбрав пункт меню Graph => CIear Graph (Редактор кривых => Очистить редактор). 2. Создайте тонер материала Blinn и назовите его Turbine_mat. 3. Создайте градиент в направлении U. Внизу установите белый цвет, а вверху — черный. 4. Свяжите атрибут outColor градиента с входящим цветом материала Turbine_mat. 5. В окне иерархической структуры откройте группу EngineGrp и выделите группу TurbineGrp.
6. В гипершейдере щелкните правой кнопкой мыши на материале Turbine_mat и в появившемся контекстном меню выберите пункт Assign material То Selection (Применить материал к выделенному). 7. Для просмотра результатов выполните пробную визуализацию. Теперь следует за дать некоторые параметры для эксперимента. Измените значение диффузии до 0.5, чтобы оно соответствовало значению отражающей способности. Смените градиент в направлении U на градиент в направлении V; для этого передвиньте черный манипу лятор вниз по градиенту и включите трассировку лучей ( r a y t r a c i n g ) в раскрываю щемся списке r a y t r a c i n g Quality (Качество трассировки) на вкладке Maya Software (Программная визуализация) в окне render Settings (Параметры визуализации). Для носового обтекателя нужен тонер с бликом, который наносится по всей длине но сового обтекателя. Для этого придется использовать анизотропный материал. Кроме то го, нужны другие атрибуты материала Blinn, поэтому следует использовать многослой ный тонер для комбинирования двух типов материалов. Носовой обтекатель тонируется следующим образом. 1. Очистите рабочую область гипершейдера. 2. Создайте многослойный тонер и назовите его Cone_mat. В многослойном тонере два материала располагаются друг над другом. В данном случае он используется для то го, чтобы смешать уникальную бликовую подсветку анизотропного материала с ат рибутами материала Blinn. По какой-то причине в многослойном тонере материал по умолчанию получается ярко-зеленым и частично прозрачным. Переместите ползу нок Color Slider (Ползунок цвета) — в крайнее левое положение на черный цвет, а ползунок Transparency Slider (Ползунок прозрачности) в крайнее правое положение на белый цвет. После этого зеленый образец цвета должен исчезнуть. Он будет уда лен позднее. 3. Создайте в гипершейдере материал Blinn и назовите его Trans_mat. 4. В области хранения в верхней части окна гипершейдера щелкните на вкладке Textures (Текстуры).
452
Глава 12
5.
Найдите в области хранения узел envSphere1 и с помощью средней кнопки мыши перетащите его в рабочую область.
6.
Свяжите атрибут outColor узла envSphere с входным каналом reflectedColor материала Trans_mat.
7.
Создайте два градиента на основе коэффициента обзора поверхности, как описано выше. Первый назовите Ref_rmp, а второй — Trans_rmр.
8.
Свяжите атрибут outAlpha градиента Ref_rmp с входящим атрибутом отражения материала Trans_mat.
9.
Свяжите атрибут outColor градиента Trans_rmp с входящим атрибутом прозрач ности материала Trans_mat. Значение прозрачности представляет собой трехзнач ную структуру данных, именно поэтому следует использовать атрибут outColor вместо атрибута outAlpha.
10. Откройте градиент Trans_rmp и назначьте верхнему манипулятору белый цвет, а нижнему — черный. Установите выбранную позицию (значение поля Selected Position) белого манипулятора равной 0. 7 5 5 , а позицию черного манипулятора — равной 0.385. 1 1 . Откройте градиент ref_rmp. Назначьте верхнему манипулятору белый цвет и уста новите его выбранную позицию равной 0.790. Задайте черный цвет нижнему мани пулятору и установите его позицию равной 0.24. 12. Создайте анизотропный материал и назовите его Spec_mat. С помощью двойного щелчка мышью откройте его в редакторе атрибутов. Анизотропный материал име ет разные значения коэффициента отражения (specularity) по осям X и Y; именно это качество делает его полезным в данной ситуации. Измените текущее направле ние блика на противоположное, задав значение 3 для атрибута распространения по оси X spreadX и значение 24 —- для атрибута spreadY. Это вытянет блики на по верхности в вертикальном направлении. Измените значение параметра r o u g h n e s s (Шероховатость) на 0 . 76, чтобы немного рассеять шероховатость. 13. Свяжите два материала с многослойным тонером и откройте его в редакторе ат рибутов. На рис. 12.18 показан редактор атрибутов и окно свойств многослойно го тонера. 14. Перетащите средней кнопкой мыши материал Trans_mat в раздел Layered Shader Attributes (Атрибуты многослойного тонера) в окне Layered Shader (Многослойный тонер), как показано на рис. 12.18. После этого удалите черный образец. В результате материал Trans_mat будет связан с крайним слоем тонера слева. С учетом того, что тонер частично прозрачен, для создания необходимого эффекта он должен быть са мым верхним слоем. 15. С помощью средней кнопки мыши в окне Layered Shader (Многослойный тонер) перетащите материал Spec_mat на правую сторону материала Trans_mat. 16. Чтобы применить материал к NURBS-поверхности, перетащите средней кнопкой мыши материал Cone_mat в область просмотра на поверхность NoseSrf. 17. Для просмотра результатов выполните пробную визуализацию. На рис. 12.19 пока зан обтекатель двигателя в разных ракурсах.
Тонирование и текстурирование при анимации
453
Рис. 12.18. Перетащите средней кнопкой мыши материал Trans_mat в окно многослойного тонера. Удалите слой, заданный по умолчанию
Рис. 12.19. Окончательный вид двигателя, визуализированного с включенной трассировкой лучей Теперь можно покрыть остальную часть поверхности аппарата.
Покрытие остальной части МакГизмо Тонирование обтекателя рассматривалось здесь по той простой причине, что его по верхность является самой сложной для моделирования. Разработка тонеров позволяет изучить градиенты и их применение в разделении поверхностей. Более того, сложность цвета и отражающей способности двигателя довольно легко переносится на остальную часть аппарата. Однако сначала придется экспортировать созданные тонеры из редакти руемого файла и вставить их в файл с геометрическими формами МакГизмо. Экспорти рование сетей тонирования выполняется так. 1. Откройте файл MacGiZmoEngineFinal.mb с прилагаемого CD или вос пользуйтесь файлом, который только что отредактировали.
Глава 12
454
2.
В области хранения гипершейдера выделите материалы Cowl_mat, Cone_mat и Turbine_mat.
3. Чтобы отобразить всю сеть в рабочей области, выберите пункт меню Graph => lnput And Output Connections (Редактор кривых => Входящие и исходящие связи). 4.
Выделите все узлы в рабочей области.
5.
Выберите пункт меню File => Export Selected Network (Файл => Экспортировать выде ленную сеть) и присвойте экспортируемому файлу имя Engine_mate.mb. Щелкни те на кнопке Export (Экспорт).
Майя сохраняет этот материал в несколько странном месте — в файле s h a d e r s , располо женном в папке renderData. 6.
Откройте с прилагаемого CD файл MacGiZmoFinalGeo. mb.
7.
Сохраните его как MacGiZmoShadeFinal.mb. Всегда сохраняйте файлы перед ре дактированием, чтобы случайно не уничтожить исходные данные.
8.
В окне гипершейдера выберите пункт меню File => lmport (Файл => Импорт) и выделите файл Engine_mats.mb. В области хранения гипершейдера появятся все материалы.
9.
Примените материалы Cowl_mat, Turbine_mat и Cone_mat к соответствующим поверхностям и группам. Для этого выберите их в окне Outliner (Иерархическая структура), щелкните правой кнопкой мыши на материале и в появившемся марки рованном контекстном меню выберите пункт Assign material То Selection (Применить материал к выделенному).
10. Для просмотра результатов выполните пробную визуализацию. Создание этих тонеров представляет собой большую часть работы, которая необхо дима для покрытия геометрических форм корпуса и кромок. Чтобы создать тонер для корпуса и крыльев, необходимо сдублировать некоторые узлы и связи материала Cowl_mat и связать их с новым материалом, который называется BodyWing_mat. Ниже описана последовательность создания тонера для корпуса. 1.
Откройте входящие и исходящие связи материала Cowl_mat в рабочей области гипершейдера.
2.
Сдублируйте материал Cowl_mat без сети и переименуйте его в BodyWing_mat. В результате будет создана копия поверхности Blinn со всеми несвязанными атрибу тами, имеющими те же значения, что и у материала обтекателя.
3.
Свяжите атрибут outColor узла envSphere1 с атрибутом reflectedColor мате риала BodyWing_mat.
4.
Щелкните правой кнопкой мыши на градиенте Colorratio_rmp, который связан с узлом градиента Color_rmp в сети материала Cowl_mat, и в появившемся контек стном меню выберите пункт Select Input Nodes (Выделить входящие узлы). На рис. 12.20 показано, какие узлы нужно дублировать. В окне гипершейдера выберите пункт меню Edit => Duplicate => Without Network (Правка => Дублировать => Без сети).
5.
Свяжите дублированные узлы, перетащив средней кнопкой мыши копию узла p l a c e 2 D T e x t u r e на градиент и выбрав пункт меню Default (По умолчанию).
Тонирование и текстурирование при анимации
455
Рис. 12.20. Выделение входящих узлов, связанных с тек стурой Facingratio_rmp 6. Свяжите параметр Facing r a t i o (Коэффициент обзора поверхности) дублированного узла информации образцов с атрибутом V Coord градиента. Для этого перетащите с помощью средней кнопки мыши узел информации образцов на градиент и, выбрав в контекстном меню пункт Other (Другое), откройте редактор связей. 7. Используя редактор связей, свяжите атрибут outColor дублированного узла фай ловой текстуры G r e e n M e t a l _ f i l e с атрибутом Color
Entry
List[2] .Color
дублированного градиента. 8. Свяжите атрибут outColor дублированного градиента с входящим цветом материа ла BodyWing_mat.
9. Для создания градиента отражения в новом материале выделите и дублируйте гра диент, узел информации образцов, узел place2dTexture и узел реверса, которые связны с узлом градиента reflectivity_rmp в сети тонирования материала Cowl_mat.
10. Свяжите узел place2dTexture и узлы информации образцов с дублированным градиентом (см. шаги 5 и 6). 11. Свяжите атрибут outAlpha дублированного градиента с входящим отражением ма териала BodyWing_mat. Для этого понадобится редактор связей. 12. Свяжите атрибут outAlpha того же градиента с входным каналом inputx узла ре верса. Затем свяжите канал ouputX узла реверса с входной диффузией материала BodyWing_mat.
13. В окне Outliner выберите следующие поверхности: WingSrf ConnectSrf BodySrf EngineGrp|circularFilletSurfасеб_1 EngineGrp|EngineWngSrf
Глава 12
456 rEngineGrp|circularFilletSurfасеб_1 rEngineGrp|EngineWngSrf
и примените к ним материал BodyWing_mat. 14. Для просмотра результатов выполните пробную визуализацию. Иногда направление поверхности фрагмента или поверхности NURBS может кон фликтовать с созданным тонером. Если поверхность выглядит так, как будто она не правильно отражает окружающие предметы, сначала следует проверить направление поверхности, щелкнув на фрагменте и отобразив нормали. Если нормали направлены в обратную сторону, выберите пункт меню Edit NURBS => r e v e r s e s u r f a c e Direction (Редактировать NURBS-поверхности => Обратить направление поверхности) с уста новленным флажком S w a p (Заменить) и заново выполните визуализацию. Это долж но устранить проблему. Основное преимущество такого способа создания тонеров для корпуса и крыльев за ключается в дополнительных возможностях управления, которые являются результатом дублирования двух градиентов. Регулируя манипуляторы Color Index (Индекс цвета) двух этих градиентов, можно управлять тем, как поверхность отражает окружающую об становку отдельно от материала Cowl_mat. Последний этап этого упражнения подразумевает создание металлического тонера для всех крышек и ободков из материала Cone_mat. Для этого применим предоставляе мый Майя узел трехзначного переключения тонирования (triple shading switch node). Уз лы переключения тонирования являются мощным, но непонятным средством, позво ляющим переключать атрибуты тонера в зависимости от тонируемой поверхности. Обо значения однозначное (Single), двухзначное (Double), трехзначное (Triple) и четырехзначное ( Q u a d ) подразумевают тип данных, используемый для операции пере ключения. Узел однозначного переключения обрабатывает одно число с плавающей точ кой (например, отражающая способность или канал диффузии). Двухзначное переклю чение принимает в качестве ввода двойные данные, например атрибуты repeatUV, wrapUV или UVCoord. Трехзначное переключение принимает в качестве типа переклю чающей поверхности тройные данные, например RGB, XYZ, или переменную векторного типа. Последнее, четырехзначное переключение принимает четырехзначный атрибут изображения, например RGB и прозрачность, и переключает этот атрибут между отдель ными объектами. Ниже описана последовательность создания трехзначного переключе ния тонирования (Triple Shading Switch — TSS). 1.
Примените материал Cone_mat к следующим объектам: DriveWheelrimSrf rWheelWellrimSrf LWheelWellrimSrf InnerWheelGeo DriveWheelSpokesGrp WindShieldrimSrf CockpitInteriorSrf rHubcapGeo HubcapGeo
2.
Отключите материал Spec_mat от материала Cone_mat, выделив соединяющие их зеленые линии и нажав клавишу .
457
Тонирование и текстурирование при анимации
3. В панели создания откройте раскрывающийся список Switch Utilities (Утилиты переклю чения). Выберите пункт Triple Shading Switch (Трехзначное переключение тонирования), чтобы создать в рабочей области узел трехзначного переключения тонирования. 4. Создайте тонер Phong и назовите его rimPhong_mat. Пока он предоставляет другой цвет. Кроме того, он обеспечивает более сфокусированные блики, чем материал Blinn или анизотропный материал. 5. Дважды щелкните на тонере, чтобы открыть его в редакторе атрибутов. Выберите тусклый желтый цвет. Измените параметр Cosine Power (Степень косинуса) до 60, а цвет бликов измените на светло-серый. 6. Узел трехзначного переключения тонирования связывается не совсем так, как другие узлы. Его необходимо связывать с многослойным тонером стандартным перетаски ванием средней кнопкой мыши на входящий канал Cone_mats . input [3] . color. Чтобы блики и отражаемый цвет отображались, индекс должен быть выше, чем ин декс материала Trans_mat. На рис. 12.21 показано, как это делается. 7. Щелкните правой кнопкой мыши на материале Cone_mat и в появившемся контек стном меню выберите пункт Select Objects With material (Выделить объекты с мате риалом). При этом будут выделены все ранее созданные геометрические формы. 8. Нажав клавишу <Shift>, дважды щелкните на узле tripleShadingSwitch, чтобы открыть его в редакторе атрибутов, сохранив при этом выделение всех геометриче ских форм. 9. Чтобы загрузить все геометрические формы в область inShape окна Shading Switch (Переключатель тонирования), щелкните на кнопке A d d surfaces (Добавить по верхности). Обратите внимание на то, что группы не загружаются — загружаются все дочерние узлы этих групп по отдельности. 10. Опуститесь вниз по списку и с помощью средней кнопки мыши перетащите матери ал Spec_mat или rimPhong_mat в область inTriple. В результате чего атрибут outColor будет назначен этой форме, а все остальные атрибуты останутся теми же. На рис. 12.22 показано, как это происходит.
Рис. 12.21. Связывание выхода трехзначного переключателя с входом многослойного тоне ра материала Cone_mat
Рис. 12.22. Узел трехзначного пере ключения тонирования с цветами, загруженными в области inShape и inTriple
Глава 12
458
Пробная визуализация показывает все недочеты и ошибки. Внутри кабины был при менен материал rimPhong_mat вместо материала CockpitrimSrf. Но кабина имеет неплохой вид, поэтому оставим все как есть. Добавим поверхность CockPitrimSrf и вручную назначим материал rimPhong_mat. 1. В окне Outliner с помощью средней кнопки мыши перетащите поверхность Cock PitrimSrf в область inShape окна Triple Shading Switch (Трехзначное переключе
ние тонирования). 2.
С помощью средней кнопки мыши перетащите материал rimPhong_mat в область inTripie вышеупомянутого окна.
3.
Назначьте материал Cone_mat поверхности CockPitrimSrf. Этот этап очень важ ный. До сих пор поверхность CockPitrimSrf тонировалась используемым по умолчанию методом Ламберта (Lambert). Чтобы узел трехзначного переключения тонирования работал правильно, его поверхность должна быть назначена объекту; только включить ее в область inShape не достаточно.
4.
Чтобы просмотреть результаты, выполните пробную визуализацию.
Теперь видно, что все поверхности, назначенные материалу rimPhong_mat, визуали зируются в желтом цвете, а носовые обтекатели остаются хромированными, несмотря на то, что все эти объекты назначены тонеру Cone_mat. Создавая другие тонеры, можно создать почти бесконечное множество вариантов внешнего вида для каждого ободка и колпака. Чтобы научиться получать тонеры с помощью переключателей тонирования, создайте несколько материалов, которые можно передать переключателю. В процессе визуализации можно заменить некоторые несоответствия и дефекты в цвет ной карте, которая используется для наложения на поверхности BodySrf, ConnectSrf и WingSrf. Эти недостатки являются результатом того, как была создана карта из трехмер ной текстуры, конвертированной в файловую текстуру. Во время преобразования текстуры она была назначена поверхности обтекателя двигателя, поэтому Майя визуализировала ее в файл, тогда как она была назначена плоской текстуре объекта EngineCowlSrf. Плоская текстура обтекателя отличается от примененной к поверхностям BodySrf, ConnectSrf, WingSrf, крыла и переходных поверхностей, соединяющих крыло с двигателем. Эти не достатки можно ясно увидеть, открыв файл MacGiZmoShadeFinal.mb и выполнив проб ную визуализацию области позади кабины без трассировки лучей. Если подобные недос татки слишком существенны, чтобы мириться с ними, то можно воспользоваться несколь кими способами их исправления. Кроме того, могут проявиться дефекты, вызванные неверным сопряжением геомет рических форм. Такие недостатки легко исправляются редактированием контрольных вершин (CV). В крайнем случае можно применить ко всем этим поверхностям гранитную трехмер ную текстуру, используя описанные ранее параметры и процедуру конвертирования трехмерной текстуры в файловую текстуру для каждой поверхности. Это позволило бы создать отдельную файловую текстуру и материал для каждой поверхности, а также обеспечило бы более высокую степень управления внешним видом каждой поверхности. Однако при таком подходе увеличивается объем потребляемого дискового пространства, и, вероятно, в итоге это окажется скорее проблемой, чем решением.
Тонирование и текстурирование при анимации
459
Компромиссное решение заключается в том, чтобы открыть файловую текстуру в та ком графическом редакторе, как Photoshop и, используя инструмент r u b b e r Stamp (Штамп), устранить все дефекты (которые видны в открытом файле). Сохраните файл как granitelEngineCowlSrf.tga и свяжите его с файловой текстурой, которая в на стоящий момент связана с каналом цвета материала BodyWing_mat. На рис. 12.23 показа ны результаты визуализации до и после операций редактирования контрольных вершин.
Рис. 12.23. Исправление дефектов цве товой карты корпуса с помощью пере ключения цветовых карт и редактиро вания контрольных вершин поверхно сти ConnectSrf
Чтение текстур с помощью гипершейдера Чтобы завершить моделирование МакГизмо, необходимо импортировать файл, содержащий материалы для стекла кабины, ниш шасси и кресла. Не закрывая файл MacGiZmoShadeFinal.mb, импортируйте файл MacGiZmo_matFinishPack.mb. Назначьте материал Chair_mat группе SeatGrp, материал Glass_mat — поверхности WindShieldSrf, а материал T i r e _ m a t - объектам TireGeo, LFrontWheelGrp | TireGeo и
rTireGeo. Кроме того, назначьте материал wheelWell_mat геометрическим объектам форм LWheelWellGeo, RWheelWellGeo и DriveWheelWellGeo. Выполните пробную визуализа цию основного содержимого, а после этого откройте гипершейдер и изучите эти материалы; каждый из них в определенном смысле уникален.
Материал
Glass_mat
В стеклянном тонере используется градиент на основе коэффициента обзора поверхно сти, но градиент применен к каналам прозрачности и отражения. В результате можно соз-
Глава 12
460
дать реалистичный материал, не прибегая к трассировке лучей. Чтобы увеличить отра жающую способность, можно повысить величину коэффициента преломления материала.
Материал
Tire_mat
В этом материале для создания простой уступчатой текстуры используется градиент по направлению V со значением 1 атрибута V wave. Уступчатая структура создается при связывании ее со средней индексной позицией градиента и последующем наложении градиента с использованием канала шероховатости материала.
Материал
Chair_mat
Материал Chair_mat является производным от материал Leather_mat, который был подключен во время импорта файла MacGiZmo_matFinish.Pack.mb с прилагаемо го CD. В материале Leather_mat атрибут outColor трехмерной кожаной текстуры связан с каналом цвета, а атрибут outAlpha контролирует карту выдавливания. Если выделить спинку кресла и преобразовать кожаную трехмерную текстуру в файловую текстуру, Майя создаст файл цветов (color file) и файл полутонов (grayscale file), а затем свяжет их с соответствующими каналами нового материала, который является переиме нованным материалом Chair_mat.
Материалы
WheelWell
Все материалы ниши шасси были созданы из одного исходного материала MasterWheelWell_mat. Узел плоской текстуры с вкраплениями (шумом) управляет атрибутом Blender узла blendColors. Это позволяет выбрать два цвета, которые бу дут использоваться в поле Noise (Шум). Сам по себе узел шума такой возможности не дает. Атрибут Blender определяет, как будут смешиваться два заданных пользователем цвета. В данном случае цвета Color 1 — темно-серый, a Color 2 — светло-серый. Затем выход узла смесителя связывается с каналом цвета данного материала. Однако, так как вывод узла смесителя всегда представляет собой цвет RGB, необходимо использовать узел яркости, чтобы преобразовать цвет RGB в черный и белый. Затем вывод этого узла можно связать с каналом карты выдавливания материала. Впоследствии этот материал присваивается трем объектам ниши шасси и конвертируется в файловые текстуры с соз данием отдельного материала для каждой выделенной геометрической формы. В начале этой главы упоминалось, что набор плоских и трехмерных текстур Майя по зволяет добиваться изящных и реалистичных результатов. Но для тонирования персо нажей нужны многослойные растровые текстуры, создаваемые с помощью Photoshop или других графических инструментов. Но прежде чем нарисовать первый пиксель, не обходимо создать карту UV, которая является ключевым фактором для оптимального создания текстуры.
Тонирование Машизмо: основа UV Файловые текстуры предполагают наложение изображения или набора изображений на трехмерную поверхность. В предыдущем разделе рассматривалось создание проце дурных текстур на NURBS-поверхностях, а затем файловых текстур, которые Майя впо следствии автоматически помещает в пространство UV текстуры NURBS-поверхностей. NURBS-поверхности имеют неявные направления UV пространства текстуры, кото рые очень хорошо соответствуют направлениям UV поверхностей модели. Направления
461
Тонирование и текстурирование при анимации 1
UV поверхности связаны с координатами UV пространства текстуры. Неотъемлемая "прямоугольная" форма фрагмента NURBS очень хорошо подходит к неизбежно прямо угольному характеру пространства UV. В качестве упражнения выберите из файла MacGiZmoShadeFinal.mb один из объектов NURBS на теле Машизмо и откройте ре дактор плоских текстур ( U V Texture Editor). (Выберите пункт меню W i n d o w => UV Texture Editor (Окно => Редактор плоских текстур) Чтобы увидеть, как изображение на кладывается на поверхность, выберите в меню Image (Изображение) пункт Display Image A n d UV Texture Editor Baking (Показать изображение и фиксацию редактора пло ских текстур). На рис. 12.24 показана связь между моделью и пространством текстуры.
Рис. 12.24. В редакторе плоских текстур отображается фиксированная тексту ра цветного градиента выбранной поверхности объекта EngineCowlSrf Полигональные поверхности не имеют направлений UV, а следовательно, у них нет столь жесткой связи с пространством UV текстур. Откройте файл MachismoOO_BuildUVsStart.mb с прилагаемого CD. Выберите полигональную по верхность p o l y S u r f а с е 5 и откройте редактор плоских текстур. Здесь проявляется от личие полигональной поверхности от NURBS-поверхности. Каждый многоугольник представляет собой пространство UV (т.е. плоскость); но главным образом все они рас полагаются друг на друге. Очевидно, что это придется изменить.
Удачная карта UV 2
Удачная карта UV (или карта плоских текстур ) обычно имеет минимальное количе ство швов и искажений UV. В отличие от сшивания тканей, которое в определенном смысле аналогично созданию карт UV, швы находятся не там, где соединяются два фрагмента UV, а скорее там, где границы отображаемых UV разделены на плоскости, но связаны в трехмерном пространстве. Такой шов может стать еще заметнее, если границы 1
Напомню, что направления U и V являются направлениями вдоль и поперек фрагментов NURBS, составляющих NURBS-поверхность. Поэтому под UV вполне можно подразумевать
плоскость. — Примеч. ред. 2
Или плоская шкурка для круглого апельсина. — Примеч. ред.
462
Глава 12
на плоскости имеют неодинаковую длину. Чтобы можно было наложить карту текстуры на границы, края границ должны быть одинаковой длины. В процессе создания карты UV для Машизмо будут рассмотрены различные методы создания карт и инструменты Майя для манипулирования ими. Создание удачной карты UV технически не представляет особых трудностей, но требует определенной предвари тельной подготовки, которая должна начинаться на стадии проектирования персонажа. Так как модель имеет трико, перчатки и сапоги, карту UV можно разделить на более мелкие области, для которых проще создавать карты. Затем придется поработать над го ловой, которая, несомненно, является самой сложной частью модели. В начале любого этапа трехмерного моделирования необходим некий "план наступ ления"; это же относится и к созданию текстур. На самом деле для художественных тек стур планирование даже еще важнее. На рис. 12.25 показана концепция расположения текстур. Как можно заметить, поверхность рубашки отличается от штанов, перчаток и обуви. Это позволит создавать карту по частям. Также понадобятся карты выдавливания, цветов, бликов и диффузии. Сразу по завершении плана можно создавать карту UV, ко торая поможет облегчить работу.
Рис. 12.25. Концепция окраски Машизмо Концепция окраски была разработана в Photoshop на основе экранных снимков позы, получен ной при предварительной постановке анимации. Для получения изображения, показанного на рис. 12.25, слои краски и текстуры накладывались на полутоновый (серый) снимок экрана.
Расчленение тела Открыв исходный файл Машизмо, можно заметить, что работа выполняется для од ной половины модели. Это ускоряет процесс создания карты, ведь достаточно сделать только половину работы, зеркально отразить геометрическую форму и карту UV, а затем сшить все вместе. Чтобы облегчить выбор и дальнейшее создания карты, сначала необхо димо выделить голову, грудь, руку, перчатку, штаны, ногу и сапог в отдельные области.
Тонирование и текстурирование при анимации
463
Для одной и той же области необходимо создать карту несколько раз, используя различ ные методы. Это необходимо для того, чтобы точно и быстро создавать за раз карты для как можно большего количества многоугольников. Ниже описана последовательность создания предварительной карты. 1. Откройте файл MachismoOO_BuildUVsStart.mb с прилагаемого CD. 2.
Выберите компоновку рабочей области с двумя панелями рядом. С левой стороны должно быть перспективное представление, а с правой — редактор плоских текстур ( U V Texture Editor). Последний будет использоваться для разделения и выбора компонентов по областям.
3.
Выделите половину тела и выберите пункт меню Create UVs => Planar Mapping • (Создать плоскости => Плоское проецирование О ) . Установите флажок Keep Image Width/Height r a t i o (Сохранять пропорции изображе ния), чтобы предотвратить искажение. Выберите переключатель Fit То Bounding Box (Масштаб по рамке) и переключатель оси Z, чтобы проециро вать модель по этой оси. Щелкните на кнопке Project (Создать проекцию). В результате должно получиться изображение, подобное приведенному на рис. 12.26.
Puc. 12.26. Плоская карта половины тела, расположенная вдоль оси Z в редак торе плоских текстур и в области просмотра модели В Майя 8.5 меню Polygon UV (Плоскости полигональной поверхности) было разделено на два меню: одно — для создания плоскостей UV, другое — для их редактирования. 4.
В разделе Inputs (Входящие) панели каналов задайте для атрибута p r o j e c t i o n H e i g h t значение 17.36. Это высота проекции в трехмерном пространстве. Она по надобится позднее при выяснении размера различных проекций частей тела. Это значение показано в нижнем углу на рис. 12.26.
В редакторе текстур проекция UV имеет манипулятор, который предоставляет воз можности, аналогичные возможностям манипуляторов перемещения, поворота и маc-
464
Глава 12
штабирования в трехмерном представлении. Стрелки позволяют передвигать проекцию, кубики — масштабировать, а светло-синяя дуга — вращать проект в режиме просмотра текстуры UV. В перспективном представлении видны только манипуляторы масштабиро вания, но тонкие цветные линии позволяют перемещать индикатор карты вдоль оси X и Y. Щелчок на красном перекрестии в нижнем левом углу индикатора карты открывает знако мый гномон, который можно использовать для вращения карты. Имеет смысл потратить несколько минут на эксперименты с этим инструментом и рассмотреть его влияние на кар ту, но перед этим следует убедиться, что можно вернуться к стандартным настройкам. В результате создания плоской карты получается карта, которая представляет собой развертку модели в направлении определенной оси. Естественно, многоугольники, па раллельные этой оси, например стороны головы и бедра, не получат соответствующей области на карте UV. Этот факт делает использование плоских карт неприемлемым в ка честве общей методики, но здесь создается предварительная карта как средство выделе ния. Ниже описывается последовательность разделения головы. 1.
Увеличьте область в районе воротника вверху тела.
2.
Откройте для модели контекстное маркированное меню Edge (Край), а затем выде лите край спереди и сзади воротника, как показано на рис. 12.27.
Рис. 12.27. Выбор петли краев вокруг головы 3.
Нажав клавишу , щелкните правой кнопкой мыши в представлении модели и выберите пункт меню Edge Loop Utilities => То Edge Loop (Утилиты петли краев => Выделить петлю краев) (как показано на рис. 12.27, снизу). В результате будет выбрана петля краев вокруг всей шеи. При простом выделении края спереди вся пет-
Тонирование и текстурирование при анимации
465
ля выбрана не будет, поскольку она пересекается с углом многоугольника, поэтому, чтобы завершить петлю, приходится выделять край сзади. 4.
В панели редактора плоских текстур можно заметить, что края, выделенные в пер спективном представлении, выделены также в панели редактора плоских текстур. Такое параллельное выделение весьма полезно при размещении UV. В меню редак тора плоских текстур выберите пункт Polygons => Cut UV Edges (Многоугольники => Отрезать края UV). В результате голова будет отделена вдоль выделенных краев. Теперь голову можно передвинуть в сторону от тела.
5. Выберите правой кнопкой мыши точку UV в редакторе плоских текстур. Выделите одну произвольную точку UV на голове. Она будет показана в виде зеленой точки. 6. Щелкните правой кнопкой мыши на голове и в появившемся маркированном кон текстном меню выберите пункт Select => Select Shell (Выделение => Выделить оболоч ку). Должна быть выделена только область головы. Если выделилось все тело, то от меняйте операции до тех пор, пока не будут выбраны только края головы. Убедитесь, что выделена вся голова без пропусков, а затем повторите шаги 3 - 6 . 7. Нажмите клавишу < W > , чтобы выбрать инструмент Move (Перемещение), и в ре дакторе плоских текстур отодвиньте голову от тела. На рис. 12.28 показано, как отделять ноги от торса. Кроме того, также будет отделен сапог. Используя описанную выше методику, выделите петлю краев от среднего края границы между штанами и ногой. Затем повторите описанные выше шаги 1-7.
Рис. 12.28. Отделение штанов от тела и ног Ту же методику можно использовать для отделения перчатки и сапога. Чтобы отде лить руку, выберите петлю краев, как показано на рис. 12.29.
Рис. 12.29. Выбор правильной петли краев для отделения руки
466
Глава 12
Создание карты для каждой отделенной области позволяет изучить методики цилин дрического и автоматического создания карт. Рекомендуется двигаться от простого к сложному. В данном случае порядок создания карт будет таким: нога, рука, сапог, штаны и тело, перчатка, голова.
Получение правильных размеров С созданием карт для отдельных частей тела связана одна большая проблема, которая заключается в том, что Майя при всей своей мощи неприятно последовательна в вопросе относительных размеров создаваемых карт. Внутри пространства плоской текстуры Майя всегда создает карты как можно большего размера, независимо от того, насколько велика соответствующая область при просмотре. Пользователю приходится уменьшать масштаб карты на глаз, причем каждый раз с разными результатами. Чтобы получить правильный размер проекции, выраженный в значениях атрибутов imageScaleU и imageScaleV, следует разделить исходную высоту проекции всего тела на высоту проек ции отдельной части тела. В результате этого установится правильный размер проекции по отношению к другим частям тела внутри пространства плоской текстуры. Формула для вычислений проста: длина части тела / высота тела = размер проекции. Это можно проиллюстрировать с помощью создания цилиндрической карты ноги. Откройте файл Machismo01_MappingStart.mb с прилагаемого CD. Последователь ность создания карты ноги описана ниже. 1.
а
Перейдите в режим выделения граней, щелкнув на теле правой кнопкой мыши и вы брав в появившемся контекстном меню пункт Face (Грань). Затем выделите ногу, как показано на рис. 12.30, а.
б
в
г
Рис. 1230. Выбор граней ноги (сапог исключен) (а); окно параметров Polygon Cylindrical Projection со стандартными настройками (б); узел проекции с выделенным атрибутом projectionHeight (в); уменьшение проекции в редакторе плоских текстур (г) Использование редактора плоских текстур — это фантастический способ выделения ком понентов, которые трудно выбирать в области просмотра. 2.
Выберите пункт меню Create UVs => Cylindrical Mapping • (Создать плоскости => Цилиндрическая проекция • ) . Введя значения атрибутов, как показано на рис. 12.30, б, щелкните на кнопке Project (Создать проекцию).
3.
Появится полуцилиндрический манипулятор проекции, а в панели каналов — узел polyCylProjn (см. рис. 12.30, в).
Тонирование и текстурирование при анимации
467
4. В панели каналов обратите внимание на канал высоты проекции — он должен содер жать значение 4 .274. Разделите высоту исходной проекции всего тела (17.36) на это число (4 .274) и получите значение порядка 0.25. 5. Введите это значение в поля атрибутов imageScaleU и imageScaleV узла проек ции. В результате размер проекции в редакторе текстур автоматически уменьшится (см. рис. 12.30, г). Теперь эта часть плоской проекции имеет правильный размер по отношению ко все му телу. Разделив исходную высоту части тела на высоту проекции, можно проверить, пропорционально ли уменьшена эта часть. Это значительно облегчит соединение и окра ску частей карты. Теперь, манипулируя самой проекцией, следует сжать ее в рамках плоского пространства текстуры так, чтобы выровнять края карты более точно. 1. На рис. 12.31, а показана масштабированная проекция со всеми остальными атрибу тами карты, установленными по умолчанию. 2. По умолчанию цилиндрическая карта соответствует проекции на 180°. Необходимо развернуть ее до 360°. Для этого в панели каналов нужно изменить значение атрибу та projectionHoriZontalSweep на 360°. Это заставит цилиндр проекции полно стью окружить ногу, как показано на рис. 12.31, б. Обратите внимание: проекция внутри плоского пространства становится уже. 3. Желательно, чтобы шов проекции оказался на внутренней стороне ноги (как при пошиве брюк). Щелкните на красном перекрестии манипулятора (на рис. 12.31, б над ним находится курсор) и поверните манипулятор на 90° вокруг оси Y до правильно го расположения шва, как показано на рис. 12.31, в. Теперь можно переходить к соз данию карты руки. В окончательной карте части не будут придерживаться этих пропорций; голову придется увеличить, поскольку это самая важная часть и она будет видна на крупном плане. Но на первоначальной фазе создания объединяющее масштабирование поможет убедиться, что отдельные фрагменты одной и той же части тела будут совпадать при ненесении текстуры.
Создание цилиндрической карты руки Для создания карты руки используется другая процедура, поскольку цилиндрические карты в Maya лучше всего получаются в направлении Y. В данном случае для создания карты невозможно установить другую ось по умолчанию. Поэтому атрибут projectionHeight не поможет. Сначала придется получить значение с использовани ем плоского проецирования. 1. Переведите тело в режим выделения граней, а затем на перспективном представле нии выделите грани руки. Исключите руку в перчатке, как раньше был исключен са пог. Помните, что перчатка доходит до половины предплечья. (Поскольку перчатка накладывается на предплечье, то эти грани проще выбрать в перспективном пред ставлении, а не в панели UV Layout (Компоновка UV).) 2. Выберите пункт меню Create UVs => Planar Mapping • (Создать плоскости => Плоское проецирование • ) . Можно проецировать эту черновую карту в направлении Y или Z. Щелкните на кнопке Project (Создать проекцию).
Глава 12
468
а
6
в
Рис. 12.31. Стандартные настройки создания карты (а); изменение значения атрибута Sweep со 180 на 360 (б); поворот манипулятора на 90° вокруг оси Y для правильного совмещения шва (в) 3.
Запишите значение атрибута p r o j e c t i o n W i d t h этой карты. Оно должно быть рав но 4 . 998.
4.
Отмените создание этой карты.
5.
Выберите пункт меню Create UVs => Cylindrical Mapping • (Создать плоскости => Цилиндрическая проекция • ) . Манипулятор проекции будет ориентирован в непра вильном направлении.
6.
В поле атрибута projectionHeight узла polyCylProj панели каналов введите значение 4.998. Это обеспечит правильную высоту проекции в области просмотра.
469
Тонирование и текстурирование при анимации
7. Разделите 4.998 на 17.36 (исходная высота), и вы получите значение 0.29. Введи те это значение в поля атрибутов imageScaleU и imageScaleV, чтобы получить правильный масштаб проекции в редакторе плоских текстур. 8. Поверните манипулятор проекции на 90° вокруг оси Z, чтобы совместить проекцию с осью руки. 9. Присвойте атрибуту projectionHoriZontalSweep значение 360°, чтобы манипу лятор окружил всю руку, и сузьте проекцию в редакторе плоских текстур, как пока зано на рис. 12.32, а.
а
б
в
Рис. 12.32. Установка значения охвата для цилиндрической проекции (а); поворот проекции в окне редактора плоских текстур (б); поворачивайте манипулятор (для наглядности он показан более толстым) до тех пор, пока шов не повернется к нижней части руки, а сверху и снизу проекции не появится ровный край (в)
Глава 12
470
10. В редакторе плоских текстур поверните проекцию на 90°, чтобы она визуально сов падала с изображением в области просмотра (см. рис. 12.32, б). В панели каналов можно также ввести значение 90° в поле атрибута rotationAngle. 1 1 . В области просмотра захватите красный маркер поворота со стороны манипулятора и поворачивайте его вокруг оси Y до тех пор, пока шов (отмеченный красным перекрести ем) не расположится вдоль нижней части руки и пока не появится гладкая граница гра ней вверху и внизу проекции в редакторе плоских текстур (см. рис. 12.32, в). В панели каналов введите значение 60 в поле канала rotateY. Сохраните файл. Самое простое сделано.
Создание карты сапога Сапог — это первая часть персонажа, для которой практически невозможно создать единый, бесшовный фрагмент без искажений. Для создания правильного фрагмента са пога придется комбинировать автоматическое и цилиндрическое проецирование. Ниже описывается последовательность создания карты сапога. 1. Переведите верхнюю часть сапога в режим выделения граней, а затем создайте ци линдрическую проекцию, аналогично описанной выше методике создания карты но ги. Разделите значение атрибута projectionHeight на 17,36, чтобы получить пра вильный масштаб проекции в плоском пространстве. Поверните проекцию на угол 205° вокруг оси Y, чтобы расположить шов на передней поверхности сапога. Нако нец, зеркально отразите точки UV в горизонтальном направлении, чтобы они совпа ли с картой для стопной части сапога. Чтобы выяснить значения параметров, наилучшим образом подходящих для данной ситуа ции, опробуйте разные значения; это весьма распространенная практика. Значение атрибу та rotate (Поворот), равное -2 05, и необходимость горизонтального отражения точек UV определена после нескольких проб (и ошибок). Не стоит полагать, что это наилучшее зна чение для всех случаев. 2.
а
Выберите стопную часть сапога, как показано на рис. 12.33, а.
б
в
г
Рис. 12.33. Выбор граней на стопной части сапога (а); манипулятор автоматического проецирова ния (б); масштабирование фрагментов стопы для совпадения с точками UV лодыжки (в); преобра зование выделения в грани и отражение точек UV (г) 3. Выберите пункт меню Create UVs => Automatic Mapping • (Создать плоскости => Автоматическое проецирование • ) . Задайте количество плоскостей (planes), равное 6, и установите флажок Less Distortion (Наименьшее искажение). Не изменяя ос-
471
Тонирование и текстурирование при анимации
тальных параметров, заданных по умолчанию, щелкните на кнопке Project (Создать проекцию). Результат должен быть похож на рис. 12.33, б. Maya позволяет манипу лировать осями проекции при автоматическом проецировании. Синие плоскости представляют оси проекции. При повороте этих осей изменяются углы проекции для всех плоскостей вместе, так как по отдельности их вращать невозможно. 4.
К сожалению, в данном случае для автоматического проецирования нет атрибута масштабирования, поэтому придется выполнять масштабирование вручную. В ре дакторе плоских текстур щелкните правой кнопкой мыши и в появившемся контек стном меню выберите пункт Select => Convert Selection То UVs (Выделение => Преобразовать выделение в точки UV), чтобы сделать точки UV видимыми.
5. Нажав клавишу < r > , выберите инструмент Scale (Масштаб). С помощью средней кнопки мыши перемещайте желтый блок в редакторе плоских текстур до тех пор, по ка верхние точки UV стопной части не совпадут с нижней частью голенища сапога (см. рис. 12.33, в). Переместите точки UV в необходимую позицию и увеличьте мас штаб в редакторе текстур до максимально возможного. 6. Щелкните правой кнопкой мыши и в появившемся контекстном меню выберите пункт Select => Convert Selection То Faces (Выделение => Преббразовать выделение в грани). Необходимо отразить эти точки UV вертикально, но данная операция не применима к точкам UV; для этого необходимо выбрать грани. 7. В меню редактора текстур выберите пункт Edit UVs => Flip UVs • (Редактировать UVs => Отразить точки UV •) и убедитесь, что выбраны переключатели Vertical (Вертикально) и Local (Локально). Щелкните на кнопке Apply A n d Close (Применить и закрыть) (см. рис. 12.33, г). 8. Преобразуйте выделение обратно в точки UV и сдвиньте его с голенища сапога. После создания карты стопной части сапога необходимо сшить ее так, чтобы шов спускался по верхней части стопы. Можно создать карту почти без искажений. Но как определить, какими сторонами должны соединяться стопа и пятка? Здесь поможет компоновка пане лей перспективного представления. Если перейти в режим Edge (Край) редактора плоских текстур (рис. 12.34) и выделить край вдоль пятки, то можно заметить, что выделяется соответствующий край на стопе. Ниже описана последовательность сшивания стопной части. 1. Выберите одну точку UV на боковой поверхности и перемести те ее, как показано на рис. 12.35, а. Поскольку искажение в верхней части стопы должно быть минимальным, необходимо Рис 1234. Определесделать так, чтобы сторона стопы как можно больше перекры- ние СТОРОН СОЕДИНЕ НИЯ СТОПЫ И ПЯТКИ
вала пятку. 2. Выберите три края пятки, как показано на рис. 12.35, б. 3. Выберите пункт меню Polygons => Sew UV Edges (Многоугольники => Сшить края UV) в меню редактора плоских текстур (см. рис. 12.35, в). 4. Используя ту же методику, завершите другую стороны стопы. 5. Соедините носок с одной из сторон.
472
Глава 12
6.
Переведите редактор плоских текстур в режим Edge (Край) и выделите края вдоль верхней части стопы.
7.
Выберите пункт меню Polygons => Cut UV Edges (Многоугольники => Отрезать края UV).
8.
Передвиньте каждую половину к нужной стороне стопы и сшейте точки UV вместе. Вдоль этих краев искажение должно быть как можно меньшим.
Рис. 12.35. Перемещение фрагментов стопы вплотную к пятке (а); выбор краев для сшивания (б); сшивание точек UV для устранения разрыва (в) Нижняя часть стопы может оставаться обособленной, поскольку край стопы создает естественный излом и хорошо соединит шов. Следующая задача заключается в создании карты для голенища сапога и сшивании ее со стопной частью. Ранее цилиндрическая проекция сапога была повернута, а края нижней части голе нища совмещены со стопной частью. Однако пока они слишком широкие. Их можно бы ло бы уменьшить и переместить в нужную позицию линия за линией, но лучше восполь зоваться инструментом UV Lattice (Решетка UV). 1.
Чтобы выбрать этот инструмент, выделите точки UV и выберите пункт меню Tool => UV Lattice Tool (Инструмент => Решетка UV). В данном случае хорошо подой дут стандартные настройки — три строки и три столбца. Следует учесть, что решетка будет активизирована до тех пор, пока не будет выбран другой инструмент. Для управления решеткой следует щелкать левой кнопкой мыши и перетаскивать ок ружности на пересечении линий решетки.
Тонирование и текстурирование при анимации 2.
473
Для уменьшения нижних точек UV переместите окружности в нижних углах внутрь. На рис. 12.36, а и б показана решетка до и после изменения. Задача заключается в том, чтобы как можно меньше деформировать верхние линии стоп.
Рис. 12.36. Применение решетки к выделению (а); для деформирования точек UV передвиньте точки решетки (б); выберите края (в); сшейте точки UV (г) 3. Для уменьшения голенища передвиньте внутрь средние окружности. 4. Выберите край и выделите нижние края голенища (см. рис. 12.36, в). Обратите вни мание на то, что верхние края голенища тоже выделены. 5. Сшейте эти края вместе, чтобы завершить шов (см. рис. 12.36, г). Цилиндрическое проецирование наложило точки UV кромки стопы друг на друга в плоском пространстве текстуры. Это привело к удлинению (вероятно, неприемлемому) текстуры, которая наложена на эту область. Чтобы исправить это, необходимо вытянуть точки UV вверх и раздвинуть их. 1. Переведите редактор текстур в режим UV и выделите одну точку UV на стопе. 2. Нажав клавишу , щелкните правой кнопкой мыши в окне и в появившемся маркированном контекстном меню выберите пункт То Shell Border (Обрамление границы). Тот же результат будет получен и в результате щелчка правой кнопкой мыши и выбора пункта меню Select => Select Shell Border (Выделение => Выделить об рамление границы). Пункты меню Select Shell (Выделить оболочку) и Convert Selection То (Преобразовать выделение в) также доступны с помощью этой комби нации клавиш, поэтому в дальнейшем используется щелчок правой кнопкой мыши с одновременным нажатием клавиши . 3. Нажмите клавишу <Shift>, чтобы отменить выделение всех точек UV, кроме верх ней строки. 4. Переместите верхний ряд точек UV вверх, как показано на рис. 12.37, а. 5. Передвиньте границу второго ряда точек UV вниз, как показано на рис. 12.37, б. Иногда приходится манипулировать точками UV, выбрав их в перспективном пред ставлении, если больше двух точек расположены друг на друге.
Создание карты перчатки Следующая задача — создание карты перчатки Машизмо. Для ее решения потребует ся цилиндрическое проецирование запястья и предплечья, а также плоское проецирова-
474
Глава 12
ние кисти аналогично проецированию стопы. Однако кисть является более сложной формой, не приспособленной к какой-либо методике создания карты. В результате, что бы создать пригодную к использованию карту, необходимо перемещать точки UV груп пами и по отдельности. Ниже описана последовательность создания карты перчатки.
Рис. 1237. Перемещение верхних рядов точек UV вверх (а); перемещение конечных точек UV вниз (б) 1.
Создайте плоскую проекцию кистевой части перчатки вдоль оси Y. Задайте размеры проекции в плоском пространстве, разделив значение атрибута projectionWidth (ширина проекции) на 17,36 и введя полученное значение ( 0 . 1 7 ) в поля атрибутов imageScaleU и imageScaleV (рис. 12.38).
Puc. 1238. Плоское проецирование кисти 2.
Переведите редактор текстур в режим Face (Грань) и выделите грани области пред плечья и запястья.
3.
Чтобы получить правильный размер проекций, создайте плоскую проекцию этих граней вдоль оси Y, как это было сделано для руки, а затем отмените операцию про ецирования.
4.
Выполните цилиндрическое проецирование этого выделения в правильной пропор ции, полученной при делении проекционных чисел. Введите полученное значение в поля imageScaleU и imageScaleV.
Тонирование и текстурирование при анимации
475
5. В разделе Inputs (Входящие) измените значение атрибута horiZontalProjectionSweep на 360°, атрибута rotateZ — на -90°, атрибута rotationAngle — на -90° и атрибута projectionHeight — на 1.928. В результате манипулятор располагается на оси руки, а проекция будет правильно сориентирована в редакторе плоских текстур. На рис. 12.39, а показана текущая проекция в редакторе текстур. Проблема заключа ется в том, что придется отрезать и сшить больше точек UV, чем хотелось бы; попытаем ся минимизировать эту операцию. Необходимо, чтобы граничным краем был край спере ди, но какой? Можно выделить край и использовать его, чтобы совместить проекцию. Соответствующая последовательность действий описана ниже.
Рис. 1239. Начальное проецирование (а); выделение края в области про смотра (б); поворот манипулятора после щелчка на кнопке Show Manipulator (в). Проекция поворачивается до совпадения с манипулято ром и совмещения края
Глава 12
476
1. Переведите область просмотра в режим Edge (Край) и выделите край (см. рис. 12.39, б). Обратите внимание на то, где он отображается в перспективном пред ставлении. 2.
Щелкните на кнопке Show Manipulator (Показать манипулятор) панели инструментов.
3.
В разделе Inputs (Входящие) панели каналов выберите самый верхний узел p o l y C y l P r o j . Это будет новый узел. После этого появится манипулятор.
4.
Поворачивайте манипулятор вокруг запястья до тех пор, пока выделенный край не совпадет с краем проекции (см. рис. 12.39, в). Ниже описано создание карты кисти.
1. Переведите редактор текстур в режим Face (Грань) и выделите кистевую часть пер чатки. 2.
Создайте плоскую проекцию кисти вдоль оси Y с коэффициентом масштаба 0.17.
3.
Выберите линию границ вокруг всей руки. Нажав клавишу , щелкните правой кнопкой мыши и выберите пункт Edge Loop (Петля краев).
4.
Снимите выделение с лишних краев, выбранных на руке или перчатке, отмечая их в редакторе текстур, нажав клавишу (рис. 12.40). Обратите внимание: на нижнем фрагменте выделение принимает вид зигзагообразной линии вверх и вниз вокруг основы запястья.
Рис. 12.40. Правильный путь выделения для вырезки точек UV
477
Тонирование и текстурирование при анимации 5. Для разделения верхней и нижней части кисти отрежьте точки UV.
6. Выделите оболочку нижней части ладони. Помните, что на шаге 3 были выделены не все края кисти. 7. Переместите в редакторе текстур выделение поверх кисти. 8. Преобразуйте выделение плоскостей в грани и отразите точки UV с установленными параметрами Local (Локально) и Vertical (Вертикально). 9. Передвиньте и поверните развертки ладони так, чтобы мизинцы оказались рядом (рис. 12.41, а).
а
б
в
г
д
е
Рис. 12.41. Выровненная ладонь (а); выбрано обрамление границы (б); отменено выделение точек UV (в); выделение преобразовано в край (г); сшиты точки UV (д); освобождены точки UV (е) 10. Выберите границы оболочки, как показано на рис. 12.41, б. 11. Отмените выделение всех точек UV, которые находятся не на общей границе с верх ней частью кисти. Также отмените выделение всех точек UV вдоль границы с обла стью запястья (см. рис. 12.41, в). 12. Преобразуйте выделение в края (см. рис. 12.41, г). Если оказались выделенными лишние края, перейдите в режим Edge (Край) и отмените выделение этих краев. 13. Сшейте точки UV, чтобы соединить две проекции кисти (см. рис. 12.41, д). 14. Щелкните правой кнопкой мыши в редакторе текстур и в появившемся контекстном меню выберите пункт меню Select => Select Connected Faces (Выделение => Выделить связанные грани). 15. Преобразуйте выделение в точки UV. 16. Выберите пункт меню Polygons => r e l a x UVs (Многоугольники => Освободить точки UV), установив флажки Pin UV Border (Закрепить границу UV) и Pin Unselected UVs (Закрепить не выделенные точки UV). Установите значение 1 для параметра Set Max Iterations (Максимальное количество итераций) и щелкните на кнопке r e l a x (Освободить) (см. рис. 12.41, е). 17. В области пальцев есть несколько перекрывающихся точек UV. Чтобы лучше уви деть, где именно происходят наложения, можно использовать новое средство Майя Display Overlapping UVs (Представление наложения UV). Чтобы увидеть цветное представление точек UV в области текстуры, выделите кисть и выберите пункт меню Image => Shade UVs (Изображение => Тонирование UV). Оболочка станет цветной и полупрозрачной; любое перекрытие точек UV станет заметно в связи с их различием в цвете и меньшей непрозрачности.
Глава 12
478 Порядок обхода
Для просмотра перекрытий точек UV можно использовать не только пункт меню Shade UVs (Тонирование UV), их можно выявить также по направле нию обхода точек UV на каждой поверхности многоугольника. Элементы, которые выгля дят синими, имеют порядок обхода по часовой стрелке, в то время как красные имеют по рядок обхода против часовой стрелки. Возможность увидеть порядок обхода важен пото му, что для каждой оболочки UV он должен быть одинаковым. Если одна грань перевернута, то это искажает конечное текстурирование фигуры. Обнаружив грани с не верным порядком обхода, выделите их и в наборе меню Texture Editor (Редактор плоских текстур) выберите пункт меню Polygons => Flip (Многоугольники => Обратить), чтобы перевер нув их, вернуть им правильный порядок обхода. 18. Вытягивайте перекрывающиеся точки UV наружу по отдельности до тех пор, пока они не будут выглядеть так, как показано на рис. 12.42. Особое внимание следует уделить распутыванию точек UV между пальцами. 19. Передвиньте точки UV кисти к запястью и предплечью. Со вместите их как можно точнее для последующего сшивания. 20. Выберите граничный край вдоль запястья и предплечья. 2 1 . Сшейте точки UV. 22. Щелкните правой кнопкой мыши в редакторе текстур и, вы брав в появившемся контекстном меню пункт Select Connected Faces (Выделить связанные грани), преобразуйте выделение в точки UV. 23. Освободите точки UV, чтобы разгладить границу. 24. Выделите весь каркас тела и удалите историю команд. Проек ционные данные больше не понадобятся. 25. Сохраните файл как
Machismo02_ArmLegDone.mb.
Рис. 12.42. Карта кисти откорректированными точками UV по краям
Освобождение точек UV полезно при устранении переплетения точек UV в определенных обстоятельствах. Однако чрезмер ное увлечение этой возможностью может привести к созданию нечеткой и неопределен ной карты UV. Эта карта используется как основа для нанесения окраски, поэтому она должна содержать некоторое определение каркаса.
Создание карты торса По сравнению с перчаткой создавать карту торса легко. Учитывая, что во многих предметах одежды шов проходит от воротника к пройме рукава, вниз — к пройме брюк, а затем делит пополам промежность, этот шов можно использовать как граничный край. В данном случае будет использоваться почти исключительно плоское проецирование. Ниже описана последовательность создания карты торса. 1.
Выберите грани на боку, как показано на рис. 12.43, а.
2.
Создайте плоскую проекцию этого выделения вдоль оси X. Измените масштаб точек UV, разделив значение атрибута projectionHeight на 17,36.
3.
Переместите их из центра редактора текстур.
4.
Выберите грани в области плеч, как показано на рис. 12.43,6.
Тонирование и текстурирование при анимации
а
479
б
Рис. 12.43. Выберите грани на боку и в области плеч 5. Создайте плоскую проекцию этого выделения вдоль оси Y и измените масштаб про екции так, как описывалось выше. 6. В редакторе текстур выделите один из граничных краев карты ноги. 7. В области перспективного представления (если выделение сделано в редакторе тек стур, то оно будет другим и неподходящим), нажав клавишу , щелкните пра вой кнопкой мыши и выберите пункт меню Edge Loop Utilities => To Edge Loop (Утилиты петли краев => Выделить петлю краев). В результате будет выделена нога до колена, но это разделительный край, который и требовалось получить. 8. Отмените выделение краев на карте ноги. 9. Отрежьте точки UV. 10. Выделите точку UV на передней поверхности торса и, щелкнув на них правой кноп кой мыши, выберите в появившемся маркированном контекстном меню пункт Select => Select Shell (Выделение => Выделить оболочку). В результате должна быть выделена только передняя сторона торса. 11. Отодвиньте переднюю часть торса от спины. Таким образом, были созданы передняя сторона, спина, бок и плечевые панели торса. Теперь нужно отрезать плечевые и боковые группы и присоединить эти фрагменты к со ответствующей группе. 1. Выберите края на плечах и боковых панелях, как показано на рис. 12.44. 2. Отрежьте точки UV. 3. Поместите нижнюю половину карты плеча перед торсом и сшейте точки UV, чтобы соединить их.
Глава 12
480 4.
Выделите грани верхней половины карты плеча и отразите точки UV в вертикальном направлении.
5.
Переместите этот фрагмент вверх спины и пришейте его к спине.
6.
Выделите грани на правой стороне боковой панели, отразите их в горизонтальном направлении, а затем переместите их так, чтобы они совместились с группой спины, и сшейте их вместе.
7.
Передвиньте, совместите и сшейте левую половину боковой группы с передней группой. Эта группа ставит перед разработчиком интересную проблему. Часть груди, которая была спроецирована вдоль оси X, весь ма отличается от груди в проекции вида спереди. Поэтому в передней группе желательно вытянуть точки UV, которые расположены почти Рис. 12.44. Выде друг на друге, так, чтобы сделать эту область более гладкой. лите эти края Сбросьте точки UV в разделительной области, чтобы предоставить им некоторую область в окончательной карте.
8. 9.
Вытяните перекрывающиеся точки UV на границе между штанами и ногами, а также в воротнике рубашки.
10. Выберите петлю краев вдоль границы штанов и туловища, а затем отрежьте точки UV. Отодвиньте штаны от туловища, поскольку для них будет применена другая текстура. Откройте файл Machismo03_TorsoUVdone.mb с прилагаемого CD, чтобы просмот реть окончательную карту торса.
Создание карты головы К счастью, Машизмо немного болван. Его дыня (melon) неплохо вписывается в куб, что очень поможет в работе над ней. Лицо у него нерельефное, поэтому будет легко вы полнить плоское проецирование. На самом деле небольшая часть работы при плоском проецировании уже выполнена. Разделим имеющиеся фрагменты. 1.
Выберите края вдоль естественных плоскостей головы, как показано на рис. 12.45.
Рис. 12.45. Выделите края вдоль естественных плоскостей головы 2.
В редакторе плоских текстур отрежьте точки UV, чтобы разделить карту на состав ляющие.
Тонирование и текстурирование при анимации
481
3. Выберите плоскую оболочку на переднем и заднем фрагментах. Сдвиньте их в сторону. 4. Сдвиньте в сторону нижний передний фрагмент шеи. 5. Выберите оболочку внизу шеи. Это будет первый составляющий фрагмент лица. 6. Преобразуйте выделение в грани. 7. Создайте плоскую карту этого фрагмента на плоскости Y. Задайте координаты цен тра изображения (Image Center) 0.0, 0.8. В результате центр будет помещен рядом с тем местом, где уже расположены фрагменты. Установите масштаб изображения (Image Scale) равным 0.1. Это — приблизительная оценка. Можно было бы выяс нить масштаб изображения в плоском пространстве, но на данном этапе достаточно примерно установить размер и расположение объекта, поскольку эта геометрическая форма еще будет неоднократно масштабироваться, зеркально отражаться и модифи цироваться в решетке. Щелкните на кнопке Project (Создать проекцию). 8. Преобразуйте выделение в точки UV и поместите его между передним фрагментом лица и передним фрагментом шеи. 9. Проверка краев показывает, что этот новый фрагмент под подбородком перевернут вверх ногами, поэтому его следует отразить вертикально так, чтобы он соответство вал окружающим фрагментам лица и шеи. 10. К сожалению, форма фрагментов пока неправильная, но это именно тот случай, когда необходим инструмент UV Lattice (Решетка UV). Щелкните на кнопке инструмента Lattice (Решетка), чтобы выбрать его. 11. На рис. 12.46 показан процесс деформации UV. 12. Сшейте края вместе. 13. Выберите заднюю часть головы в виде граней и отразите их горизонтально. 14. Выделите грани на этой стороне головы и создайте их плоскую проекцию вдоль оси X. Установите коэффици ент масштабирования равным 0.18 и используйте тот же параметр Image Center (Центр изображения).
Рис. 12.46. Деформация ниж ней части подбородка с помо
15. Переместите и поверните боковую проекцию так, чтобы щью инструмента UV Lattice она примерно совпадала с решеткой UV (4 ряда, 4 столб ца). Это нужно для того, чтобы деформировать боковую проекцию (рис. 12.47, а).
а
б
в
г
д
Рис. 12.47. Применение инструмента UV Lattice для облегчения соединения плоских фрагмен тов головы
482
Глава 12
16. Используя ту же решетку 4x4, деформируйте заднюю часть проекции головы (см. рис. 12.47, б). 17. Используя решетку 3x3, сожмите область подбородка по вертикали и растяните ее по горизонтали (см. рис. 12.47, в). 18. Выберите границу плоской оболочки ( U V Shell Border), а затем отмените выделение точек UV (см. рис. 12.47, г). 19. Преобразуйте выделение в края и сшейте точки UV (см. рис. 12.47, д). 20. Разгладьте карту UV, вытягивая отдельные точки UV. Не стесняйтесь включать то нирование точек UV (Image => Shade UVs (Изображение => Тонирование UV)), чтобы проверить перекрытие точек UV и выявить проблемы порядка обхода на голове.
Проблемные области: ухо и нос Голова человека является одной из самых трудных областей для создания карты UV. Это связано с тем, что главные детали, такие как нос и ухо, имеют довольно сложную форму. Например, нос имеет нижнюю область ноздри, которая плохо проецируется вдоль оси Z. Кроме того, задняя часть ноздрей, там, где нос соединяется с лицом, факти чески изгибается и разворачивается так, что не подходит ни для одной плоскости проек ции, которую можно было бы использовать. К счастью, Майя предоставляет инструмен ты, значительно облегчающие эту работу. Ниже рассматривается последовательность создания карты носа. 1.
а
Переведите перспективное представлении в режим Edge (Край) и выделите ниж нюю часть носа (рис. 12.48, а).
б
в
г
д
Рис. 12.48. Выбор краев вокруг нижней части носа (а); выбор краев вокруг задней части ноздри (б); до использования инструмента UV Smudge (в); после использования инструмента UV Smudge (г);
перемещение точек вручную (д) 2. 3.
В редакторе текстур отрежьте точки UV. Перейдите в режим UV, выделите только что созданную оболочку и сдвиньте ее в сторону.
4.
Переведите область просмотра в режим Edges (Края) и выделите те края, которые составляют заднюю часть области ноздри (см. рис. 12.48, б). Позвольте выделению распространиться за пределы задней части области ноздри и расшириться вниз ниже отверстия. Если в это время посмотреть на редактор текстур, то можно заметить, что края расширяются в запутанную область задней части ноздри.
5.
Щелкните правой кнопкой мыши в редакторе текстур и преобразуйте выделение в точки UV.
483
Тонирование и текстурирование при анимации
6. Выберите пункт меню Tool => UV Smudge Tool • (Инструмент => Пятно UV • ) , чтобы выбрать инструмент UV Smudge (Пятно UV) и открыть окно его настроек. Устано вите для параметра Effect Туре (Тип эффекта) значение Fixed (Фиксированный), что позволит сдвигать точки UV так же, как инструмент Soft Modification (Мягкая модификация) сдвигает геометрические формы. Установка значения Exponential (Экспоненциальный) параметра Falloff Туре (Тип отставания) увеличит этот эффект в зависимости от того, как далеко отстоит выделенная точка UV от центра кисти. Ус тановите небольшой размер пятна ( S m u d g e Size) — порядка 0.008. Следует отме тить, что изменять размер кисти можно интерактивно, перемещая мышь при нажа той средней кнопке и клавише <В>. 7. Оттяните точки UV от задней части носа. На рис. 12.48, виг показана карта до и по сле этого. 8. Один последний ряд согнут под ноздрей. Чтобы получить результат, подобный при веденному на рис. 12.48, д, можно воспользоваться инструментом UV Smudge (Пятно UV) или передвинуть его вручную. 9. Выберите плоский фрагмент, который был ранее отрезан в виде граней, и создайте плоскую карту этих граней вдоль оси Y. Задайте очень маленький коэффициент масштабирования, например 0.025. После создания карты поверните манипулятор проекции вдоль оси X на угол примерно -107°. В результате проекция будет отцен трирована так, что точки UV ноздри не будут накладываться на нижнюю часть носа. 10. Отразите точки UV вертикально. 11. Преобразуйте выделение в точки UV и пока немного отодвиньте их от лица. 12. Выделите точки UV носа и, используя решетку 4x4, передвиньте их, а затем создайте отверстие такой формы, как на фрагменте рис. 12.49, а.
а
б
в
Рис. 12.49. Решетка для точек UV носа (а); придание формы нижней части носа (б); окончательный вид носа (в) 13. Используя решетку, отредактируйте этот фрагмент носа и придайте ему такую же неровную форму, как форма отверстия (см. рис. 12.49, б). 14. Передвиньте фрагмент на место, выделите соответствующие края и сшейте точки UV (см. рис. 12.49, в).
484
Глава 12
В области уха имеется проблема, которая также проявляется и в областях бровей и губ: одна область перекрывается другой. Проблему бровей и губ можно решить, вытянув точки из-за закрывающей части, но область уха содержит множество точек UV, которые трудно отличить друг от друга. Ниже описана последовательность создания карты уха. 1.
Выберите линию краев вокруг линии роста волос ниже передней части уха и вокруг задней части, как показано на рис. 12.50.
Рис. 12.50. Правильный выбор последовательностей краев — ключ к созданию карты уха 2.
В редакторе текстур вырежьте точки UV, чтобы создать из уха отдельный фрагмент.
3.
Выделите плоскую оболочку фрагмента уха.
4.
Теперь нужно скрыть все, кроме этого фрагмента, чтобы облегчить манипулирование точками UV. Выберите пункт меню View => Isolate Select => View Set (Вид => Изолировать выделение => Набор видов). Затем выберите пункт меню View => Isolate Select => Add Selected (Вид => Изолировать выделение => Добавить выделенное). Это изолирует плоский фрагмент. 1
5.
Освободите точки UV, сбросив флажки Iterations (Итерации) и Pin UV Border (Закрепить границу UV), чтобы сузить часть карты, соответствующую уху.
6.
Теперь необходимо выбрать все, кроме точек UV границы оболочки. Выберите пункт Shell Border (Граница оболочки), а затем, удерживая нажатой клавишу <Shift>, вы делите весь фрагмент. В результате выделение инвертируется, т.е. будет выделено все, кроме границы оболочки.
7.
Передвигайте точки UV до тех пор, пока внутренняя часть уха полностью не помес тится в рамках карты.
8.
Выберите пункт меню V i e w => lsolate Select (Вид => Изолировать выделение) и сбросьте флажок V i e w Set (Набор видов), чтобы увидеть остальную часть карты головы.
9.
Выделите оболочку уха, преобразуйте выделение в края и сшейте точки UV.
Если бы в области уха нужно было нарисовать подробную карту, то пришлось бы вы полнить больше манипуляций с задней частью уха, разворачивая точки UV для окраши вания. Но поскольку в данном случае эта область на теле Машизмо будет иметь один цвет, то на этом можно остановиться.
Тонирование и текстурирование при анимации
485
Последний этап — выделение и создание карты верхней части головы вдоль оси Y, а также ее перемещение и пришивание на место. После выполнения всех предыдущих уп ражнений это не должно вызывать трудностей. Кроме того, на данном этапе следует изу чить части карты всего тела. Все перекрывающиеся точки UV необходимо распутать, ли бо перетаскивая их в сторону вручную, либо используя пункт меню r e l a x UVs (Освободить точки UV). После этого сохраните файл. Теперь, имея все фрагменты кар ты, нужно завершить карту UV, правильно расположив эти фрагменты.
Зеркальное отражение геометрических форм и расположение фрагментов карты До сих пор основное внимание в этой главе уделялось не организации карты, а пропорциям проекций, однако раскладка карты чрезвычайно важна. В сущности, необходимо сделать так, чтобы различные фрагменты карты заполнили квадратное плос кое пространство как можно более эффективно. Поскольку будет создаваться квадратная карта, необходимо убедиться, что фрагменты правильно заполняют пространство. К сожа лению, на настоящий момент есть только половина геометрических форм, а следовательно, только половина карты, поэтому геометрические формы необходимо зеркально отразить. Откройте редактируемый ранее файл сцены или файл Machismo04_UVLayout.mb с при лагаемого CD. 1. В режиме выделения объектов выделите тело Машизмо. Опорная точка геометриче ской формы должна быть в центре глобальных координат. Если это не так, перемес тите ее туда. 2. Удалите историю команд для этой геометрической формы. 3. Выберите пункт меню Polygons => Mirror Geometry • (Многоугольники => Зеркально отразить геометрическую форму • ) . Установите для параметров отражения (Mirror Options) значение -X и убедитесь, что флажок Merge With Original (Объединить с оригиналом) не сброшен. Щелкните на кнопке Mirror (Отразить). 4. Геометрическая форма отражается дальше от центра, чем предполагалось. Чтобы ис править это, перейдите в режим Vertex (Вершина) и в редакторе плоских текстур вы берите пункт Shell (Оболочка). Выделенной должна оказаться только левая полови на геометрической формы. 5. Передвиньте левую половину так, чтобы она встретилась с правой на центральной линии (рис. 12.51). Половины могут слегка перекрываться, поэтому главное — по ставить их как можно ближе друг к другу. 6. В редакторе текстур преобразуйте выделение в грани и отразите в горизонтальном направлении, используя глобальную систему координат (Global Coordinate). При этом различные фрагменты карты распределятся в окне редактора текстур. 7. Используя инструмент M e r g e Vertices (Объединить вершины), свяжите тело по центральной линии. Необходимо щелкнуть на каждом крае, а затем щелкнуть в третий раз для объединения выделения. Придерживайтесь центральной линии модели. Используйте каркасное представление объектов для работы с внутрен ними краями рта. 8. Переименуйте геометрическую форму в BodyGeo.
Глава 12
486
Рис. 12.51. Двигайте левую половину до тех пор, пока обе половины не совместятся посередине Теперь необходимо связать половинки головы, переднюю и заднюю части торса, пе реднюю и заднюю части штанов. Процедура связывания проста; она описана ниже. 1.
а
В панели редактора плоских текстур передвиньте каждый левый фрагмент как мож но ближе к правому фрагменту, выбрав плоскую оболочку для каждого и передвинув ее на место (рис. 12.52, а). Убедитесь, что края каждого левого фрагмента совмеща ются с краями правого.
б
в
Рис. 12.52. Перемещение фрагментов на место (а); выбор центральной линии фрагментов тела (б); выделение и отмена выделения лишних краев вручную (в) 2. В редакторе текстур выделите край вдоль центральной линии где-нибудь на теле. 3. Щелкните правой кнопкой мыши, нажав клавишу , и в появившемся контек стном меню выберите пункт Select Continuous Edge (Выделить непрерывный край). В результате края центральной линии на обоих фрагментах всех карт тела окажутся выделенными (см. рис. 12.52, б). 4.
Отмените выделение случайно выбранных краев на голове.
5.
Сшейте точки UV, чтобы объединить фрагменты тела.
6.
Выделите вручную край центральной линии головы, обведя вокруг нее с помощью мыши прямоугольник.
7.
Отмените выделение лишних краев, обводя вокруг них прямоугольник, нажав кла вишу (см. рис. 12.52, в ) .
Тонирование и текстурирование при анимации
487
Теперь необходимо организовать карту UV. В окончательном виде она должна по меститься в правом верхнем квадрате редактора текстур. Вместе с тем втискивать фраг менты в такой маленький квадрат нежелательно. В данном случае карта будет расклады ваться на большей площади, как показано на рис. 12.53, а. Можно уменьшать отдельные фрагменты карты, но лучше масштабировать правую и левую части вместе, гарантируя соответствие каждой половины карты. Очевидно, что передняя и задняя части торса объ единяются по линии плеч и что масштаб головы увеличивается.
а
б
Рис. 12.53. Разместите фрагменты карты на необходимой площади (а); выберите пункт меню Polygons => NormaliZe (б), чтобы поместить все фрагменты карты UV в плоское пространство текстуры Как только карта будет организована правильно, можно будет поместить ее в верхний правый угол. Для этого выделите всю карту в виде граней и выберите пункт меню Polygons => NormaliZe UVs (Многоугольники => Нормализовать точки UV), установив флажки Collectively (Совместно) и Preserve Aspect r a t i o (Сохранять пропорции). После этого удалите историю команд. Сохраните файл как Machismo06_UVMap.mb. Теперь можно начинать применять карты текстур к каналам цвета материала, диффузии, отра жения и шероховатости. Независимо от того, какими точными были измерения, карта UV всегда будет слегка искаженной. Это естественное следствие использования плоских многоугольников, ко торые не плотно прилегают к плоскости карты. Чтобы проверить и исправить карту UV, необходимо наложить клетчатую файловую текстуру на поверхность модели. Такой ме тод позволяет правильно оценить сравнительные размеры фрагментов карты по отноше нию друг к другу. Для работы откройте файл Machismo06_UVMap.mb. Ниже описана последовательность применения файловой текстуры и проверки карты. 1. В области просмотра выделите форму BodyGeo. 2. В гипершейдере выберите пункт меню Graph => Graph materials On Selected Objects
(Редактор кривых => Применить материалы к выделенным объектам). Должен поя виться материал Lambert. 3. Добавьте в рабочую область узел файла и свяжите его с каналом цвета узла Lambert.
Глава 12
488 4.
Дважды щелкните на узле файла, чтобы открыть его в редакторе атрибутов.
5.
Щелкните на пиктограмме папки рядом с полем Image N a m e ( И м я изобра жения). Появится диалоговое окно File Open (Открыть файл), в котором нужно выбрать файл UVCheckChecker.tga, находящийся в папке sourceimages, и щелкнуть на кнопке Open (Открыть).
6.
В области просмотра нажмите клавишу <6>, чтобы перейти в режим ото бражения тонеров и текстур. В этом режиме должно быть видно, что клетча тая текстура наложена на форму BodyGeo.
На рис. 12.54 показаны три области, которые требуют коррекции. Коррекция будет вы полняться в редакторе текстур. Воспользуемся клетчатой файловой текстурой, поскольку она хорошо видна в области просмотра, и будем обновлять ее в реальном масштабе времени по мере редактирования карты UV. Здесь рассматривается коррекция растяжения в под мышках и на перчатках, коррекцию сапог читателям предлагается выполнить самостоя тельно. Ниже описана последовательность исправления растянутой текстуры.
Рис. 12.54. Три примера растяжки карты UV 1.
Расположите окно перспективного представления справа, а редактор текстур — слева.
2.
Выберите форму BodyGeo. В редакторе текстур отобразится карта UV. Клетчатая текстура тоже должна отображаться. Если это не так, выберите пункт меню Image => Display Image (Изображение => Показать изображение), и она должна поя вится в редакторе текстур. Если изображение слишком яркое, то для его затемнения выберите пункт меню Image => Dim Image (Изображение => Затемнить изображение).
3.
Переведите область просмотра в режим UV и выделите точку UV на торсе рядом с растянутой текстурой, как показано на рис. 12.55, а.
4.
В окне редактора текстур нажмите клавишу < F > , чтобы перевести вид к выделенной точке UV. Поскольку масштаб окна увеличится, можно слегка уменьшить его так, чтобы была видна вся область (см. рис. 12.55, б).
5.
Чтобы исправить искажение текстуры, нужно растянуть узкие грани. Для этого вы делите точки UV, как показано слева на рис. 12.55, б.
6.
Передвиньте их в редакторе, и текстура сожмется на модели, как показано на рис. 12.55, б, справа.
7.
Выберите пункт Select Shell (Выделить оболочку), чтобы выделить весь фрагмент и переместить его вниз внутрь рамки UV (рис. 12.56). Возможно, для освобождения пространства придется передвинуть фрагмент кисти.
Тонирование и текстурирование при анимации
489
Рис. 12.55. Выбор нужной точки UV (а); вертикальное перемещение точек UV в редакторе текстур исправляет их растяжение на модели (б)
Рис. 12.56. Передвиньте карту UV торса вниз в рамку UV 8.
Повторите шаги 3 - 6 для другой стороны торса.
Не обязательно, чтобы квадратики клетки идеально совмещались. Главное, чтобы они были примерно одинакового размера. Сделанные ранее измерения пропорций значи тельно способствуют этому. Чтобы откорректировать перчатку, поместите на нее решет-
490
Глава 12
ку UV и растяните точки UV так, чтобы шахматные клетки не растягивались. На рис. 12.57, а и 6 показана решетка до и после этой операции. Сделайте то же самое для другой перчатки.
Рис. 12.57. Использование решетки UV позволит исправить растяжения текстуры на перчатках В целом карта имеет правильные пропорции и позволяет использовать снимок карты для рисования текстуры. Теперь следует отсоединить узел файла клетчатой текстуры от тонера Lambert, и материал вновь будет иметь стандартный серый цвет. Сохраните файл как Machismo07_UVMapDone.mb. Далее рассматривается создание детальных карт тек стуры Машизмо.
Создание текстуры Машизмо Готовая карта UV позволяет начать создание материала Машизмо. Необходимо соз дать карты для каналов цвета, диффузии, шероховатости и бликов этого материала. В ходе данного процесса будет рассматриваться эффективное взаимодействие Майя и Photoshop в формате узла сети PSD. ДЛЯ дальнейшего изучения этого раздела понадобится установить графический редактор Photoshop. Создавать карты рисованных текстур можно в любой программе, которая спо собна сохранять файлы в ф о р м а т е . t g a , . i f f или . t i f f , но в этом разделе описывается работа с файловым узлом PSD, который создает и устанавливает связь с внешним файлом .psd графического редактора Photoshop.
Тонирование и текстурирование при анимации
491
Сначала потребуется некоторая подготовка. Итак, имеется полигональная модель с низким разрешением, для которой необходимо увеличить разрешение во время визуали зации, чтобы добавить полигональные детали и сгладить объемистое тело Машизмо. Чтобы разгладить сетку, выделите форму BodyGeo, выберите пункт меню Polygons => Smooth (Многоугольники => Сгладить) и оставьте используемые по умолчанию парамет ры сглаживания. Уровень детализации можно регулировать, используя параметр Divisions (Интервалы) узла polySmoothFace в разделе Inputs (Входящие) панели кана лов. Можно переключаться от версии сетки с низким разрешением к версии с высоким раз решением и обратно, чтобы проверить, как текстуры будут выглядеть на окончательной модели. Используя эту методику, необходимо помнить несколько ключевых моментов. •
Перед удалением истории команд всегда устанавливайте нулевой уровень интервалов.
•
Прежде чем выполнять повторную визуализацию после манипуляций с точками UV, удалите историю команд и выберите пункт меню Mesh => Smooth (Сетка => Сгладить). В противном случае карта UV будет искаженной из-за предыдущих манипуляций.
•
Изменяйте карту UV только с низким разрешением (уровень интервалов — 0). Не изменяйте карту UV на более высоком уровне интервалов, поскольку она интерпо лируется из версии низкого разрешения.
Освещение Мудрый создатель карт текстур всегда учитывает условия освещения анимации, для которой предназначается персонаж. Обидно сознавать, что текстуры, созданные для оп ределенных условий освещения, выглядят плохо при фактическом освещении оконча тельного фрагмента. Поскольку окончательные условия освещения заранее не известны, можно только попытаться создать для персонажа общее и в целом мягкое освещение. Если есть доступ к фотографии или результату окончательной визуализации обстановки, то можно получить с сайта H i g h e n d 3 d . com копию сценария GI_Joe.mel. Этот сценарий MEL, написанный Эммануилом Кэмпином (Emmanuel Campin), создает на ос новании анализа изображения переданной фотографии модель общего освещения, кото рая хорошо выглядит и чрезвычайно быстро визуализируется. Чтобы не создавать себе проблем, можно импортировать файл LightDome.mb. Это "верхний свет" — простой плафон из 16 источников направленного света. Значения ат рибутов интенсивности и Dmap r e s o l u t i o n (Разрешение карты глубин) этих источников связаны со специальными атрибутами центрального локатора, который называется LightMaster_loc. Используя эти атрибуты локатора, можно увеличивать и уменьшать интенсивность верхнего света и мягкость теней. В этот файл включен источник направ ленного света для имитации солнца. Поворачивая этот источник, можно увидеть, как текстура изменяется в зависимости от различных углов освещения. Еще одной полезной особенностью верхнего света является то, что он позволяет ис пользовать тени на поверхности. Для этого группа тонирования фиксируется в файловой текстуре, как это было сделано для текстуры "гранит", описанной ранее в этой главе. В данном случае эта особенность используется для демонстрации возможности Maya фиксировать текстуры, а также для создания карты, которая впоследствии будет исполь зоваться как основа для карты диффузии. Ниже описывается процесс создания фикси рованной карты освещения.
492
Глава 12 1. Импортируйте файл LightDome. mb с прилагаемого CD. 2.
Выделите локатор LightMasterLoc, который содержит все настройки для управления источниками света. Для параметра Globe Intensity (Глобальная интенсивность) установите значение 0.2, а для параметра Floor Intensity (Интенсивность на полу) — значение 0 . 1 .
3.
Чтобы просмотреть результаты, выполните пробную визуализацию. Сохра ните изображение, щелкнув в окне render View (Вид визуализации) на кнопке Keep Image (Сохранять изображение).
4.
Выделите форму BodyGeo. Установите уровень интервалов (Divisions) для узла polySmoothFace равным 2.
5.
Откройте гипершейдер. Щелкните правой кнопкой мыши в рабочей области и в появившемся контекстном меню выберите пункт G r a p h s => Graph materials On Selected Objects (Редактор кривых => Применить материалы к выделен ным объектам).
6.
Нажав клавишу <Shift>, выделите узел Lambert, который появился в рабо чей области, а в гипершейдере выберите пункт меню Edit => Convert То File Texture (Maya Software) • (Правка => Преобразовать в файловую текстуру (Программная визуализация) • ) . Установите флажки Anti-Alias (Сгладить), Bake Shading Group Lighting (Фиксировать освещение группы тонирова ния) и Bake Shadows (Фиксировать тени). Разрешение ( r e s o l u t i o n ) по осям X и Y установите равным 1024. Задайте формат файла (File Format) — TGA. Флажок Bake Shading Group Lighting (Фиксировать освещение группы то нирования) фиксирует информацию освещения в файловой текстуре; фла жок Bake Shadows (Фиксировать тени) — визуализирует в текстуре тени карты глубин. Чтобы зафиксировать карту, щелкните на кнопке Convert And Close (Преобразовать и закрыть). 1
Эта операция займет одну-две минуты в зависимости от скорости процессора и объе ма оперативной памяти компьютера. В результате получится файловая текстура, связан ная с тонером поверхности, который автоматически применяется к форме BodyGeo. Те перь выделите локатор LightMasterLoc и измените значения параметров Globe Intensity (Глобальная интенсивность) и Floor Intensity (Интенсивность на полу) на 0, что, по сути, отключает источники света. Выполните визуализацию и сравните два изображе ния. Кроме перекрытия карты UV в области губ, ушей и глаз, эти два изображения почти идентичны. Методика фиксации света и тени зачастую применяется в видеоиграх для записи окружающего освещения в картах текстур, которые используются для моделиро вания коридоров и зданий. На рис. 12.58, справа показан результат первой визуализации с использованием источников света, а на рис. 12.58, слева — результат визуализации без источников света, но с зафиксированным тонером поверхности, примененным к форме BodyGeo. Различия минимальны, если не считать продолжительность визуализации. Можно удалить тонер поверхности и все узлы файловой текстуры. Файловая текстура находится в папке Sourcelmages текущего проекта, поэтому к ней можно получить доступ позднее. Создадим тонер Машизмо. Первый этап заключается в создании сети PSD и передачи ее тонеру Blinn, которому следует присвоить имя Machismo_mat. С этого момента поль-
Тонирование и текстурирование при анимации
493
зователь ограничен только своими навыками рисования в Photoshop. Ниже описана по следовательность создания сети PSD.
Рис. 12.58. Справа показана текстура Lambert, визуализированная с использова нием верхнего света. Для создания левого изображения информация освещения была зафиксирована в тонере 1. Создайте материал Blinn и назовите его Machismo_mat. 2. Назначьте его форме BodyGeo. 3. Выделите форму BodyGeo и сгладьте ее, выбрав пункт меню Mesh => Smooth (Сетка => Сгладить). В результате получится сглаженная модель, которую Maya будет использовать для создания снимка UV. Это гарантирует работу карты с высоким разрешением. 4. В меню гипершейдера выберите пункт Edit => Create PSD Network (Правка => Создать сеть PSD). На рис. 12.59 показано окно параметров с необходимыми настройками. Для изображения нужно задать имя. В противном случае Maya присвоит ему мало понятное длинное имя, включив в него имя геометрической формы и имя материала. Это нежелательно, поэтому назовите изображение M a c h i s m o _ m a t . p s d . Для пара метров размера (Size X и Size Y) можно задать значения 2048x2048. Если в анима ции не планируется использовать крупные планы, то можно работать с размерами 1024x1024. Более высокое разрешение 2048x2048 (в дальнейшем оно обозначается 2К) обеспечивает великолепные детали при крупных планах, но замедляет визуали зацию и обновление. В разделе UV Settings (Настройки UV), как правило, следует установить флажок Include UV snapshot (Включать снимок UV) и выбрать положе ние Тор (Вверху) переключателя Position (Позиция); это позволит включить снимок UV в верхнюю часть файла. Maya не визуализирует этот слой; он используется толь ко как ориентир. Самые полезные настройки находятся в разделе Attributes Selection (Раздел атрибутов). В перечне параметров слева выберите Color (Цвет), Bump (Шероховатость), Diffuse (Диффузия) и specularColor (Цвет бликов). Чтобы пере нести эти параметры в правый список, щелкните по стрелке, направленной вправо. Это заставляет Maya создавать отдельный слой для каждого параметра. Если есть какой-либо процедурный параметр, уже связанный с определенным каналом, то по сле щелчка на кнопке Convert То File Texture Options (Преобразовать в параметры файловой текстуры) (справа внизу в разделе параметров) Maya конвертирует его в слой, используя указанные настройки. После того как все настройки будут заданы, щелкните на кнопке Create (Создать).
494 5.
Глава 12 Сеть тонера Machismo_mat должна выглядеть так, как показано на рис. 12.60. Каж дый канал связан с отдельной файловой текстурой, но все эти карты текстур содер жатся в одном файле PSD, и все они обновляются, когда пользователь выбирает ко манду Update PSD Network (Обновить сеть PSD).
Puc. 12.59. Окно параметров создания сети PSD. Если требуется создавать крупные планы персонажа, то для изо бражения можно установить размеры 2048x2048
Рис. 12.60. Вид сети PSD в окне гипершейдера
Качество создаваемой карты текстуры в значительной степени зависит от опыта ра боты в Photoshop, но эта тема выходит за рамки рассмотрения данной книги. Файл Machismo_mat.psd на прилагаемом CD представляет собой большую карту 2К, которая была создана для данного персонажа. Она связана с файлом MachismoFinalTexture.mb, находящимся в папке shaders каталога renderData. Чтобы создать собственную карту, можно модифицировать файл Machismo_mat.psd или создать новую карту с нуля. В последнем случае придется пройти рабочий процесс, полезные рекомендации по кото рому представлены ниже. •
Поскольку создается новая карта, можно удалить историю команд для версии высо кого разрешения формы BodyGeo. Это позволяет получить сетку с более высоким разрешением, но так как карта UV уже готова, можно применить карту текстуры к более ранней версии сетки с низким разрешением.
•
Начните с создания в Photoshop отдельной маски выделения для каждого фрагмента UV и сохранения фрагментов в виде каналов прозрачности.
Тонирование и текстурирование при анимации
495
•
Создайте сначала карту выдавливания, а затем при необходимости сохраните каналы цвета, диффузии и бликов.
•
Чтобы уменьшить шероховатость карты выдавливания, можно либо уменьшить зна чение шероховатости узла bump2d в гипершейдере, либо уменьшить контраст слоя шероховатости в файле Photoshop.
•
При создании карты выдавливания следует применять кисти с мягкими краями, а затем воспользоваться фильтром blur (размытие), чтобы еще немного смягчить штрихи. При окончательной визуализации они будут выглядеть четче, чем кажутся.
•
Чтобы получить карту без включения одного или нескольких наборов слоев Photoshop, скройте эти наборы, сохраните файл, обновите сеть PSD и выполните ви зуализацию.
•
В командной строке введите команду psdUpdateTextures; и создайте для нее кнопку на панели. Это сэкономит время, необходимое для выбора пунктов меню при модификации файла PSD в Maya.
•
Помните о стандартном цвете каждого набора слоев. Maya определяет его на основе стандартных значений в каждом тонере. Стандартный серый цвет для канала цвета получается из используемого по умолчанию цвета тонера Blinn. Чтобы удалить лю бые изменения в карте, используйте инструмент Eyedropper (Пипетка) в Photoshop, получая стандартный цвет слоя и закрашивая карту.
•
Вносите изменения в карту на отдельных слоях. Объединяйте в Photoshop только полностью законченные слои (пункт меню Merge Layers (Объединить слои)).
•
Слишком большое количество слоев замедляет обновление и визуализацию, поэтому следует разумно подходить к использованию слоев в Photoshop.
•
Можно придать персонажу более теплую схему освещения, используя желтый тон в карте specularColor. Аналогично можно сделать освещение более холодным, то нируя его синим цветом.
•
Расширяйте области цвета за пределы областей, показанных в снимке UV. В против ном случае могут быть видны швы.
•
Для карты диффузии используйте созданную ранее карту света. Это даст большую глубину тонирования персонажа.
•
Будьте осторожны, редактируя сеть PSD в Maya, так как можно повредить файл, созданный в Photoshop. Лучше редактировать ее вручную. Это потребует больше времени, но зато более безопасно. Ниже описана последовательность добавления но вого слоя. 1.
Создайте в Photoshop новую группу слоев. Выделите слой Background (Фон) и выберите пункт New Group (Новая группа) в меню палитры Layer (Слой).
2.
Назовите эту группу, используя нотацию с точкой, так же, как и другие слои, например Масhismo_mat.reflectivity.
3.
Создайте слой в этой группе. Залейте его 50%-ным серым цветом.
4.
Сохраните файл.
5.
В области хранения гипершейдера Maya выделите тонер Machismo_mat и создайте сеть в рабочей области.
Глава 12
496 6. Добавьте узел файла PSD из панели создания. 7.
Дважды щелкните на узле файла PSD, чтобы открыть его в редакторе атри бутов. Переименуйте этот узел в PSD_Machismo_mat_reflectivity.
8.
Щелкните на кнопке Load File (Загрузить файл) и загрузите файл Machismo_mat.psd с прилагаемого CD.
9.
В меню Link to Layer Set (Связь с набором слоев) выберите пункт Machismo_mat.reflectivity.
10. Используя редактор связей, соедините атрибут outAlpha узла PSD_Machismo_mat_reflectivity с атрибутом reflectivity материа ла Machismo_mat.
•
По завершении карты текстур, для уменьшения времени визуализации и экономии памяти, каждый визуализированный элемент (цвет, шероховатость, диффузию и т.д.) можно сохранить во внешнем отдельном "плоском" файле (таком как . tga или . iff), а затем применить этот файл к соответствующему атрибуту материла, удалив по завершении узел PSD. Потратив время на такую замену, можно сэкономить зна чительно больше времени и ресурсов памяти, если сцена достаточно сложная или анимация слишком продолжительная. Версию тонера Machismo_mat модели с низким разрешением можно взять из файла
Machismo09_Final.mb.
Резюме В этой очень длинной главе описано большинство аспектов создания в Maya специаль ных тонеров. Сначала было создано несколько простых сетей тонеров для тонирования глобуса, а затем рассматривались имеющиеся в Maya возможности процедурного тониро вания на примере создания поверхностей аппарата МакГизмо из главы 4, "Моделирование с использованием NURBS". После этого рассматривались методики создания карт UV с правильными размерами и пропорциями, которые являются основой любой хорошей кар ты текстуры. Завершается глава описанием создания и управления сетью PSD, которая позволяет тонировать множество различных каналов, используя один файл Photoshop. В следующей главе начинается исследование визуализации файлов, непосредственно связанное с текстурированием и освещением.
Основы визуализации Когда программное обеспечение Maya (и аппаратные средства компьютера) визуали зирует сцену, оно создает изображение или последовательность изображений на основа нии моделей, источников света, динамики и, потребовавшей так много времени, анима ции. Пользователь запускает визуализацию, а дальше машина берет все на себя. Это мо жет показаться заманчивым, но машины делают в точности то, что им приказывают, — ни больше ни меньше. Поэтому переданные машине инструкции должны быть точными; в противном случае головной боли не избежать. В этой главе описано, как создавать и настраивать камеры, визуализировать изобра жение, создавать последовательности изображений, управлять размером и качеством изображений, а также осуществлять визуализацию с учетом композиции. Здесь также рассматривается визуализация растровых и векторных изображений, использование слоев визуализации, нескольких камер, а также возможность визуализации файла, слои которого были созданы в Photoshop. Важнее всего то, что читатель разовьет хорошие на выки визуализации и научится избегать распространенных проблем, которые могут соз давать серьезные проблемы. •
Визуализация объекта
•
Создание и анимация камеры
•
Настройка камеры и разрешения
•
Добавление глубины резкости
•
Добавление размытости
•
Использование параметров визуализации
•
Программная визуализация
•
Аппаратная визуализация и аппаратный буфер визуализации
•
Векторная визуализация
•
Работа с видом визуализации
•
Использование интерактивной фотореалистичной визуализации ( I P R )
•
Визуализация, компоновка и редактирование слоев
•
Полный контрольный перечень визуализации
498
Глава 13
Визуализация объекта Программы трехмерной графики создают при визуализации либо растровые, либо векторные двухмерные изображения. Растровая графика отображает информацию изо бражений в виде пикселей (цветных точек). Растровое изображение можно представить себе как большую мозаику. Если увеличить размер изображения или масштаб просмот ра, то можно увидеть отдельные пиксели, составляющие это изображение. С другой сто роны, векторные изображения можно представить себе как контуры, состоящие из линий и заполненные различными цветами. Они больше походят на иллюстрации, тогда как растровые изображения больше похожи на фотографии. Примером программы обработ ки векторной графики является Adobe Illustrator. Для визуализации сцены необходимы тонированный объект, источник света и каме ра. Создайте на пустой сцене сферу и щелкните на пиктограмме с изображением хло пушки (clapboard) в правой части строки состояния (или выберите пункт меню render => render Current Frame (Визуализация => Визуализировать текущий кадр) в на боре меню rendering (Визуализация)). Откроется окно вида визуализации, и Майя соз даст тускло-серую сферу. При этом часть работы Майя выполняет автоматически. Про грамма сама текстурировала сферу с помощью стандартного тонера Lambert, включила на сцене используемый по умолчанию источник света и применила выбранный в теку щий момент вид для камеры. Таким образом, появились три ингредиента, необходимые для базовой визуализации. Скорее всего, пользователь захочет изменить эти ингредиен ты, если только тускло-серая сфера не задумана для создания захватывающей анимации. По крайней мере, существует точка, с которой можно начать.
Создание и анимация камер Для визуализации сцен в Майя можно создавать камеры трех типов. Сами по себе ка меры, в сущности, всегда одни и те же, но они используют различные типы органов управления. •
Одноузловая камера (single-node camera) идентична перспективной камере (perspective camera). В меню Create (Создать) она называется просто Camera (Камера).
•
Двухузловая камера (two-node camera) — камера со вторым внешним органом управ ления, который направляет камеру. В меню Create (Создать) эта камера называется Camera And Aim (Камера и цель).
•
Трехузловая камера (three-node camera) представляет собой камеру с отдельными внешними органами управления для направления камеры и манипулятором "up" (вверх), который позволяет управлять наклоном камеры. В меню Create (Создать) такая камера называется Camera, Aim, A n d Up (Камера, цель и наклон).
Чтобы различия стали более понятными, следует опробовать эти камеры в действии. 1. Откройте файл streetScenel.mb с прилагаемого CD. На сцене показана простая улица с несколькими простыми зданиями. Некоторые кривые пла вают в пространстве над улицей — пока их можно проигнорировать. 2.
Выберите пункт меню Create => Cameras => Camera (Создать => Камеры => Камера). В начале координат появится объект, похожий на камеру; он будет автома тически назван Camera1.
Основы визуализации
499
3. Выделите эту камеру и выберите в меню панели перспективного представления ка меры пункт Panels => Look Through Selected (Панели => Вид сквозь выбранное). Вид переключится на вид сквозь первую камеру. Появится возможность перемещать ка меру, а также выполнять наезд и поворот, используя те же органы управления, кото рые используются в перспективной камере. 4. В окне иерархической структуры выделите камеру Camera1 и убедитесь, что для нее отображается панель каналов. Используя органы управления съемкой, перемещайте камеру до тех пор, пока не добьетесь четкого вида улицы и неправильно припарко ванного кабриолета. 5. Выделите в панели каналов все атрибуты выбранной камеры, щелкните правой кнопкой мыши и в появившемся контекстном меню выберите пункт Lock Selected (Блокировать выбранное). 6. Камера окажется заблокированной. Теперь уже не получится изменить вид с помо щью комбинаций клавиш для поворота, наезда и перемещения. 7. Снова выделите атрибуты в панели каналов, щелкните правой кнопкой мыши и в появившемся контекстном меню выберите пункт Unlock Selected (Разблокировать выбранное). 8. Не снимая выделения с камеры C a m e r a 1 , нажмите клавишу < S > на кадре 1 времен ной шкалы, чтобы установить ключевой кадр на все каналы. 9. Переместите ползунок времени на кадр 120. 10. Используя комбинации клавиш для наезда, поворота и перемещения камеры, сдвиньте камеру в другую часть сцены и попытайтесь получить другой вид — сзади автомобиля. ' 11. Нажмите клавишу <S>, чтобы установить другой ключевой кадр. 12. Воспроизведите анимацию и убедитесь, что все еще смотрите через камеру Camera1. Отличная мысль — блокировать камеру при постановке сцены. Это позволит предотвратить случайный сдвиг камеры после постановки безупречного кадра. Скорее всего, перемещение камеры — это далеко не все, что ожидалось. Это хорошо подходит для простых перемещений камеры, таких как наезд, смещение или панорами рование. Однако анимировать таким способом камеру бессмысленно, если нужно создать более сложные движения, например съемку с крана. Отсюда и необходимость использо вания других типов камер. Отмена перемещения камеры
По умолчанию изменение позиции камеры, осуществленное с помощью комбинаций кла виш для поворота, перемещения и наезда, невозможно отменить. Так, пользователь, кото рый хочет вернуть камеру на место после случайного сдвига, может быть разочарован. Пе ремещения камеры можно сделать отменяемыми. Для этого в редакторе атрибутов следует установить флажок Undoable Movement (Отменяемое движение) в параметрах движения камеры. Однако в результате этого перемещения камеры будут добавляться в очередь от мены команд, что тоже может создавать проблемы. Одной из возможностей "резервного копирования" положения камеры является выбор пункта меню View => Previous View (Вид => Предыдущий вид) в текущем представлении камеры или нажатие клавиши < [ > . Ес ли хочется предотвратить потерю позиции камеры можно также установить один ключевой
Глава 1 3
500
кадр для камеры на том кадре, который не будет использован при анимации (например, кадр - 1 ) . После этого можно перемещать камеру и изменять время на временной шкале, а камера будет всегда возвращаться на место. Рассмотрим второй тип камеры. 1.
В меню Create (Создать) выберите пункт Cameras => Camera And Aim (Камеры => Камера и цель). В результате будет создана камера Camera2. В окне иерархической структу ры можно заметить, что эта камера является членом группы, которая называется Camera2_group.
2.
Если развернуть группу в окне иерархической структуры, то будет виден другой узел — Camera2_Aim.
3.
Перейдите к перспективному представлению и поворачивайте камеру до тех пор, по ка не станет видна камера Camera2, находящаяся в начале координат.
4.
Если выбрать камеру Camera2 и перевести ее в перспективное представление, то можно будет заметить, что по мере движения она все время направлена на узел цели, почти как объект с прикрепленным целевым ограничителем.
Эта способность камеры облегчает создание динамических движений камеры, так как позволяет устанавливать ключевые кадры на узлах камеры и цели по отдельности. Для кого-то проще позиционировать камеру и узел цели в перспективном представлении, то гда как одна из панелей 'настроена на вид сквозь камеру. Можно также двигать узел группы, в результате чего камера и цель будут двигаться тоже. Однако это не всегда хо рошо. Если начать устанавливать ключевые кадры, при анимации камеры группа, камера и узел цели довольно быстро запутаются. Выберите узел группы камеры Camera2 и по смотрите на его атрибуты в панели каналов. Внизу списка можно заметить дополнитель ный атрибут, twist. Изменяя значение этого канала, можно управлять креном камеры. Чтобы корректировать крен камеры, можно установить ключевой кадр на этом атрибуте в узле группы камеры Camera2. Рассмотрим третий тип камеры. 1. В меню Create (Создать) выберите пункт Cameras => Camera, Aim, And Up (Камеры => Камера, цель и наклон). В результате создана группа камер Саmera3 (КамераЗ). Эта группа подобна предыдущей группе (Камера и цель) за исключением того, что она имеет третий узел, который позволяет контролировать наклон камеры. 2.
Откройте окно иерархической структуры и выберите камеру Camera3 из группы Camera3.
3. 4.
Нажав клавишу , щелкните на кривой Camera3_path. Перейдите
в
набор
меню Animation
(Анимация)
и
выберите
пункт меню
Animate => Motion Paths => Attach То Motion Path • (Анимировать => Траектории дви
жений => Присоединить к траектории движений • ) . 5.
В окне параметров убедитесь, что вариант Follow (Следовать) не выбран, и установи те значение временного диапазона для ползунка времени.
6.
То же самое сделайте для узла цели камеры Camera3; используя те же параметры, создайте связь траектории движения между этим узлом и кривой, которая называет ся Camera3_aim_path.
Основы визуализации
501
7. Создайте связь траектории движения между узлом наклона камеры Camera3 и тра екторией Camera3_up_path. 8. Настройте интерфейс так, чтобы было видно четыре панели: Outliner (Иерархическая структура),
Perspective
(Перспектива),
Camera3
(КамераЗ)
и
Graph Editor
(Редактор анимационных кривых). 9. Включите воспроизведение анимации и посмотрите, как камера двигается в окне Camera3. Понаблюдайте, как она двигается в окне перспективного представления. 10. В окне Outliner (Иерархическая структура) выделите, нажав клавишу <Shift>, узел Camera3, узел цели и узел наклона камеры Camera3. В редакторе анимационных кривых посмотрите на кривые траектории движения. 11. Попробуйте перемещать ключевые кадры траектории в редакторе анимационных кривых. 12. В окне перспективного представления проведите эксперименты с выбором и пере мещением контрольных вершин (CV) кривых траекторий движения. Не обязательно анимировать камеру, используя траектории движения, однако так появляется новый уровень управления. Чтобы просмотреть завершенную версию этой сцены, откройте файл streetScene2 . mb с прилагаемого CD. Использование траектории движения — это великолепный способ создания интерес ных перемещений камеры. Кроме того, при этом предоставляется множество возможно стей для точной регулировки движений. Опробуйте применение различных ограничите лей для камеры и движущихся объектов на сцене, а также попытайтесь подчинить каме ру другим объектам или каркасам.
Использование инструмента Show Manipulators Те, кого привлекает простота одноузловой камеры, могут использовать с ней инстру мент Show Manipulators (Показать манипуляторы). Это позволит получить почти тот же уровень управления, что и у камер двух других типов. Создайте новую сцену и выберите пункт меню Create => Cameras => Camera (Создать => Камеры => Камера). В начале коорди нат должна появиться простая камера. В панели инструментов выберите инструмент Show Manipulators (Показать манипуляторы). На рис. 13.1 показана одноузловая камера с выбранным инструментом Show Manipulators (Показать манипуляторы).
Рис. 13.1. Одноузловая камера с выбран ным инструментом Show Manipulators. Для анимации движения камеры и на правления съемки можно устанавли вать ключевые кадры для любых их каналов положения
502
Глава 13
Теперь камера имеет дополнительное средство управления для своего центра съемки, почти как узел цели в случае камеры и цели. Выделите камеру, в панели каналов щелк ните правой кнопкой мыши на параметре Center Of Interest (Центр съемки) и в появив шемся контекстном меню выберите пункт Key Selected (Установить ключевой кадр для выбранного). Пока выбран инструмент Show Manipulators (Показать манипуляторы), можно цик лически переходить между различными элементами управления, щелкая на кольцевом переключателе, который находится в окне перспективного представления рядом с каме рой. Затем можно интерактивно корректировать некоторые из тех параметров, которые в редакторе атрибутов камеры изменяются с помощью числовых значений. Речь идет об опорной точке камеры и плоскостях отсечения.
Просмотр плоскостей отсечения Камера Майя отличается от реальной камеры, здесь камеры представляют собой ма тематические конструкции, которые моделируют в том числе и функции реальной каме ры. Важнейшим различием между камерами Майя и реальными является то, что камеры Майя могут "видеть" только некоторую область пространства (называемую усеченной об ластью (frustum)). Это связано с математическими алгоритмами, используемыми при расчете того, что видит камера. Плоскости отсечения (clipping plane) определяют такое расстояние от камеры, после которого камера уже не способна отображать или визуали зировать объекты. Существуют ближняя плоскость отсечения (near clipping plane) и дальняя плоскость отсечения (far clipping plane). Визуализироваться будут только те объекты, которые находятся между этими двумя плоскостями. Возникает соблазн сде лать ближнюю плоскость отсечения очень близкой, а заднюю — очень далекой, но Майя использует данные плоскостей отсечения для облегчения определения расстояния меж ду камерой и объектами на сцене, что необходимо для расчета глубины визуализации объектов на разных планах сцены. Рассмотрим области отсечения подробнее. 1. Откройте файл clippingPlanes.mb с прилагаемого CD. 2.
Убедитесь, что используется вид сквозь камеру Camera1.
3.
Откройте редактор атрибутов для этой камеры.
4.
Установите значение дальней плоскости отсечения (far clipping plane) рав ным 12. Обратите внимание на то, что исчезли объекты, находящиеся на этом расстоянии.
5.
Снова установите значение дальней плоскости отсечения равным 1000, а значение ближней плоскости отсечения равным 11.
6.
Обратите внимание на то, что теперь исчезли объекты переднего плана. Бо лее того, один из гидрантов пересекается ближней плоскостью отсечения (рис. 13.2).
7.
Если визуализировать эту сцену, то гидранты по-прежнему будут видны. Это связано с тем, что автоматическая визуализация плоскости отсечения (Auto render Clip Plane) по умолчанию включена. Отключите эту возмож ность и снова визуализируйте сцену, чтобы увидеть результаты внесенных изменений.
Основы визуализации
503
Рис. 13.2. При таком значении ближней плоскости отсечения пожарный гидрант на пе реднем плане разрезан пополам Работая с Maya, иногда можно заметить, что камера отображает объекты некорректно или вообще ничего не отображает. Зачастую это происходит потому, что плоскости отсечения случайно были установлены неправильно. Канал глубины по оси Z Глубина по оси
Z (Z-depth) представляет собой отдельный канал изображения, который во время визуализации сцены можно сохранять для некоторых форматов изображений. Этот канал содержит информацию о расстоянии от объектов сце ны до камеры. Некоторые программные пакеты композиции способны использовать канал глубины по оси Z для создания и коррекции таких трехмерных эффектов, как глубина рез кости, уже после того, как сцена была визуализирована. Кроме того, Maya 8 допускает ис пользование совмещенных по глубине изображений непосредственно в представлении ка меры, что весьма удобно при размещении объектов на сцене, фон которой имеет распре деление по глубине. Например, тор на этом изображении совмещен с фоновым изображением в области просмотра Maya.
Еще одним очень важным параметром камеры является фокальное расстояние (focal length). Параметры Focal Length (Фокальное расстояние) и Angle Of View (Угол обзора) связаны друг с другом обратно пропорциональной зависимостью, т.е. увеличение одного из них ведет к уменьшению другого. Чем меньше фокальное расстояние, тем шире пер-
Глава 13
504
спектива. Это похоже на трансфокатор и может использоваться подобно масштабирова нию изображения. По умолчанию фокальное расстояние установлено равным 35 — это наиболее распространенное фокальное расстояние объективов настоящих кинокамер. В фильмах ужасов зачастую применяется эффект сокращения фокального расстояния при одновременном наезде камеры на объект съемки. Попробовав сделать это, можно почувст вовать себя попавшим в фильм Спилберга (Spielberg) или Кроненберга (Cronenberg).
Настройка камеры и разрешения Для визуализации сцены Maya позволяет использовать столько камер, сколько нужно. Для одновременной визуализации сцены вполне можно установить несколько камер с раз ными ракурсами. Наконец, сцену можно визуализировать в любом из ортогональных пред ставлений (виде сверху, спереди или сбоку) или с помощью перспективных камер Maya. При создании сцены по умолчанию перспективная камера создается имен но для визуализации. Выбрав пункт меню W i n d o w => rendering Editors => render Settings (Окно => Редакторы визуализации => Параметры визуализации) и открыв окно render Settings (Параметры визуализации), ознакомьтесь с параметрами на вкладке Common (Общие). Здесь есть раскрывающийся список Camera (Камера), позволяющий вы брать для камеры перспективное представление (persp), вид спереди (front), сбоку (Side) и сверху (top). Раскройте это меню, — в нем представлен список всех остальных камер на сцене. Выбрав одну из них, можно заменить ту камеру, которая будет визуализировать данную сцену (рис. 13.3). Выбор последнего пункта в списке, Add renderable Camera (Добавить визуали зирующую камеру), приводит к созданию в окне параметров визуализации нового раздела, где можно выбрать дополнительную камеру для визуализации сцены. Выбрав этот пункт не сколько раз, можно добавить столько камер, сколько нужно для визуализации сцены.
Рис. 133. Раскрывающийся список в окне render Settings позволяет вы брать камеру для визуализации сцены
Основы визуализации
505
Выберите в этом меню перспективную камеру, а затем откройте для нее редактор ат рибутов. На вкладке узла формы перспективной камеры есть раздел Output Settings (Исходящие параметры). Откройте этот раздел и найдите в нем флажок рядом с пара метром renderable (Визуализируемый). Этот атрибут указывает на то, что данная каме ра будет визуализировать эту сцену. Откройте атрибуты ортогональных камер на сцене, и этот атрибут автоматически будет снят для данной камеры. Но как гарантировать, что сцена будет визуализироваться нужной камерой? Рас смотрим пример. 1. Создайте новую сцену. 2. Создайте куб в начале координат. 3. Создайте новую камеру, выберите ее в окне Outliner (Иерархическая структура) и присвойте ей новое имя — renderCam. 4. Направьте камеру так, чтобы она "смотрела" на куб под углом, значительно отли чающимся от перспективного представления. 5. Откройте окно render Settings (Параметры визуализации). В списке камер снова должен быть пункт persp, который указывает на то, что эта сце на визуализируется перспективной камерой. Раскройте список камер; в нем должен быть пункт renderCam. Однако, поскольку выбран пункт persp, сцена будет визуализировать ся перспективной камерой. Чтобы переключиться на камеру renderCam, выберите в списке пункт renderCam. Закройте окно параметров визуализации, а затем откройте его снова. В качестве визуализирующей камеры теперь должна фигурировать камера renderCam. Как уже упоминалось, для визуализации одновременно из перспективной камеры и камеры renderCam в одном пакете визуализации выберите в списке пункт A d d renderable Camera (Добавить визуализирующую камеру), а затем выберите камеру p e r s p как первую и камеру renderCam — как вторую. Это несколько рискованно, пото му что можно по ошибке оставить эти настройки включенными и в итоге получить ви зуализацию сцены с множеством камер тогда, когда этого не нужно было делать. Кроме того, это может удвоить (или утроить, или учетверить, в зависимости от количества включенных камер) время визуализации. П р и б о р к а перед визуализацией
Не думайте, что удачная пробная визуализация определенной камерой гарантирует пра вильную визуализацию всей сцены. Перед запуском пакетной визуализации, всегда пере проверяйте параметры визуализирующей камеры. Причиной потери впустую многих часов визуализации, как правило, является отказ от проверки камеры выбранной для визуализа ции сцены. Кроме того, старайтесь не присваивать камерам длинные имена, такие как t o n y C h a r a c t e r _ l e f t _ b i g _ t o e _ r e n d e r _ c a m e r a _ v e r s i o n l . В таких случаях при пакет ной визуализации получаются чрезвычайно длинные имена файлов, поэтому можно не за метить, что камера t o n y C h a r a c t e r _ l e f t _ b i g _ t o e _ r e n d e r _ c a m e r a _ v e r s i o n l является визуализирующей, поскольку имя ее настолько длинное, что не помещается в списке Camera (Камера) окна render Settings (Параметры визуализации). Прежде чем запускать па кетную визуализацию, всегда дважды проверяйте исходящие параметры каждой камеры.
Глава 13
506
Установка разрешения Разрешение (resolution) отвечает за размер двухмерного изображения, которое Майя создает в результате визуализации сцены. В Майя параметры разрешения устанавлива ются в окне render Settings (Параметры визуализации), как показано на рис. 13.4. Под робно атрибуты этого окна рассматриваются в следующем разделе, а пока достаточно от крыть его и изучить атрибуты разрешения.
Рис. 13.4. Свойства визуализируе мых изображений можно задать в окне render Settings Многие термины Майя заимствованы из кинематографии. Например, среди атрибутов камеры есть такие, как Film Back (Пленочный канал) и Film Gate (Кадровое окно). Пленочный канал — это пластинка в обычной камере, на которой размещается пленка. Этот параметр связан с фактическим размером пленки. Камера с 35-миллиметровой пленкой имеет 35-миллиметровый пленочный канал. Кадровое окно — это металлическая рамка, которая удерживает негатив напротив пленочного канала. В настоящих камерах кадровое окно по крывает негатив так, что экспонируется только участок пленки внутри кадрового окна. Для 35-миллиметровой камеры могут быть разные размеры кадрового окна. Разрешение устанавливается в разделе Image Size (Размер изображения) окна render Settings (Параметры визуализации). Эти настройки определяют размер изобра жений, визуализируемых в окне render View/IPR (Вид визуализации/IPR), а также размер окна разрешения, отображаемого в камере. Естественно, параметры Image Size (Размер изображения) определяют также разрешение для пакетной визуализации. Это одна из причин, по которой, начиная проект, стоит проверить настройки в окне render Settings (Параметры визуализации). Все пробные визуализации в окне визуализации будут выполняться с разрешением, заданным в окне render Settings (Параметры визуа лизации). Можно использовать одно из нескольких предварительно заданных разреше ний в раскрывающемся списке Presets (Предустановленные) или создать собственное разрешение, введя числа в поля Width (Ширина) и Height (Высота). Если установлен
Основы визуализации
507
флажок Maintain Width/Height r a t i o (Сохранять пропорции), то соответствующие числа в полях Width (Ширина) и Height (Высота) будут автоматически обновляться при вводе нового числа в одно из этих полей. Это удобно потому, что перед пробной визуализацией можно быстро изменить размер до половины или четверти исходного. Выполняя визуализацию для видеовыхода, следует помнить о том, что видео фактически растягивает высоту пикселей, иначе говоря, изображение, предназначенное для видео про смотра, на компьютерном мониторе будет выглядеть сплющенным. Формат кадра для видео скорее прямоугольный, а не квадратный; коэффициент отношения высоты к ширине равен 0.9. (В этом можно убедиться, если выбрать в меню resolution (Разрешение) пункт CCIR 601/Quantel NTSC.) Коэффициент искажения пикселей 1.0 создает изображение, состоящее из квадратных пикселей, — именно так компьютерный монитор отображает изображение. Разрешение выражается по-разному в настройках визуализации и атрибутах камеры. Множество связанных коэффициентов определяют размеры окончательного изображе ния, а также размеры пикселей, из которых состоит это изображение. Image Aspect r a t i o (Коэффициент искажения изображения) — это разрешение изо бражения, представленное в виде соотношения размеров по вертикали и по горизонтали. Например, обычное видео имеет формат кадра 720/486 = 1.48., Pixel Aspect r a t i o (Коэффициент искажения пикселя) — соотношение размеров по вертикали и по горизонтали самих пикселей, составляющих изображение. Квадратные пиксели, которые используются в компьютерных мониторах, имеют формат пикселя 1.0. В видео используются неквадратные пиксели с соотношением 0 .9 (т.е. 1.0/1.1). Device Aspect r a t i o (Коэффициент искажения устройства) — произведение соотношений изображения и пикселя. Для видео этот коэффициент равен 1.48 х 0.9 = 1.333. Film Aspect r a t i o (Коэффициент искажения пленки) — параметр C a m e r a Aperture
(Диафрагма камеры), представленный в виде соотношения размеров по вертикали и по горизонтали. Для видео это соотношение равно 0.816/0. .612 => = 1.333. ЕСЛИ В к о н е ч н о м и т о г е н у ж н о п о л у ч и т ь в и д е о , но п р е д в а р и т е л ь н о п р о с м о т р е т ь а н и м а ц и ю на компьютере желательно не сплюснутой, м о ж н о осуществить визуализацию,
используя
с о о т н о ш е н и е и з о б р а ж е н и я 7 2 0 x 5 4 0 или 6 4 0 X 4 8 0 . Затем м о ж н о у с т а н о в и т ь с т а н д а р т н о е разрешение для в и д е о ( о к о н ч а т е л ь н о г о ) и о с у щ е с т в и т ь в и з у а л и з а ц и ю или в о с п о л ь з о в а т ь с я программой
композиции
или
редактирования,
чтобы
преобразовать
результаты
пробной
визуализации в н е к в а д р а т н ы е п и к с е л и , или и с п о л ь з о в а т ь с о о т н о ш е н и е 7 2 0 x 4 8 6 . Т о л ь к о н е следует о ж и д а т ь х о р о ш и х результатов, если и з о б р а ж е н и е 6 4 0 X 4 8 0
было "улучшено" до
7 2 0 x 4 8 6 , п о с к о л ь к у п и к с е л и и с х о д н о г о и з о б р а ж е н и я б у д у т в д а н н о м случае п р о с т о у в е л и чены, ч т о м о ж е т п р и в е с т и к п о я в л е н и ю у р о д л и в ы х а р т е ф а к т о в .
В большинстве случаев выбор одного из предустановленных разрешений Майя по зволяет правильно решить эту задачу. При создании анимации в Майя можно увидеть представление разрешения в окне ка меры, выбрав пункт V i e w => Camera Settings => r e s o l u t i o n Gate (Вид => Параметры каме ры => Рамка разрешения) в меню панели представления камеры. В этом меню также дос тупны пункты, позволяющие просмотреть безопасную область действия (safe action) и безопасную область субтитров (title-safe). Эти параметры также доступны в редакторе параметров камеры в папке Display Options (Параметры представления). Представление этих областей можно откорректировать в редакторе параметров с по мощью параметров Overscan (Развертка), Film Back (Пленочный канал) и Film Gate (Кадровое окно).
Глава 13
508 Рассмотрим вкратце работу с параметрами представления в Maya.
1. Вернитесь к сцене предыдущего примера (или создайте новую) и откройте редактор для перспективной камеры. 2.
Переключите перспективное представление на эту камеру, выбрав пункт Perspective (Перспектива) в наборе меню панели камеры.
3.
Задействуйте рамку разрешения и просто для интереса включите отображение об ластей Safe Action (Безопасная область действия) и Title Safe (Безопасная область субтитров).
4.
Откройте редактор атрибутов для перспективной камеры. По мере увеличения зна чения параметра Overscan (Развертка) в параметрах представления будет увеличи ваться видимая область вокруг окна разрешения. Эта область в окончательной ви зуализации будет не видна, но часто она оказывается полезной во время создания анимации.
Настройки камеры в Maya по возможности точно имитируют работу реальной каме ры. Это имеет особый смысл, когда во время создания композиции аниматору приходит ся сотрудничать с кинематографистами. Так, Maya облегчает работу пользователей, пре доставляя им меню предварительно заданных настроек Film Gate (Кадровое окно). Если выбрать в списке пункт 35mm TV projection (35-миллиметровой телевизионная проек ция), то разрешение автоматически переключится на соотношение пленки 1.333. Пара метры Film Back (Пленочный канал) и Film Gate (Кадровое окно) в редакторе атрибутов становятся важными только при работе с реальными съемками. Если сцена создается в Maya полностью, нет необходимости корректировать эти параметры и можно придержи ваться настроек в окне render Settings (Параметры визуализации). Для работы с реаль ными съемками важно, чтобы параметры Film Back и Film Gate соответствовали отсня тому материалу. Следует использовать либо предустановленные значения, либо полу чить необходимые параметры от кинематографиста. При настройке разрешения камеры в Maya необходимо, чтобы кадровое окно и раз решение были согласованными. Это можно проверить, установив флажки Display Film Gate (Показать кадровое окно) и Display r e s o l u t i o n (Показать разрешение). Если сплош ная зеленая линия (разрешение) не совпадает с кадровым окном (зеленая пунктирная ли ни), то необходимо изменить значение параметра Film Gate (Кадровое окно) в соответст вии с соотношением изображения в окне render Settings (Параметры визуализации). Разрешение — один из наиболее важных факторов, определяющих длительность ви зуализации кадра. Не лишним будет выполнять пробную визуализацию с половинным разрешением, а затем, когда все будет готово к окончательной визуализации, установить более высокое разрешение. Установка половинного разрешения от окончательного уско рит пробную визуализацию приблизительно до 25% относительно окончательной. При визуализации, Maya позволяет также изменять единицы измерения, такие как пик сели на дюйм или пиксели на сантиметр. Это очень удобно, когда назначением конечной визуализации будет принтер, а не монитор. Пользователям Adobe Photoshop эти парамет ры хорошо известны, поскольку они повторяют параметры диалогового окна размера изо бражения в Photoshop. Большая часть компьютерной и видеообработки может быть осуще ствлена при стандартном разрешении 72 пикселя на дюйм. Для печати зачастую использу ют разрешение 300 и более пикселей на дюйм. Широко распространенные размеры печатных форматов также добавлены в список предустановленных размеров изображений.
Основы визуализации
509
Плоскости изображений и настройки окружения Плоскость изображения (image plane) представляет собой плоскую поверхность, свя занную с перпендикуляром к камере. Плоскости изображений могут быть очень полезны при создании модели по начальным наброскам. Кроме того, накладывая изображение или последовательность изображений на плоскость изображений, ее можно использо вать для подгонки анимации к реальной съемке, и даже комбинировать текущие объекты с распределенными по глубине фоновыми (нововведение Maya 8). Создать плоскость изображения можно в разделе Environment (Окружение) редакто ра атрибутов камеры, щелкнув на кнопке Create (Создать) рядом с надписью Image Plane (Плоскость изображения). Откроется диалоговое окно, в котором можно выбрать файл, используемый в качестве плоскости изображения, а также параметры отображения плоскости в камере и ее видимость для других камер. Кроме того, можно использовать последовательность изображений почти так же, как она используется для текстуры. Это полезно для работы с реальным видеоматериалом при анимации. При использовании компонента совмещения по глубине камера визуализиру ют сначала изображение с информацией о глубине. Это изображение должно быть в формате IFF с разрешением, кратным разрешению области просмотра (например, 1280x960, если область просмотра имеет разрешение 640x480). Установите визуализирован ное изображение как фон, выделив камеру и применив в разделе Environment (Окружение) редактора атрибутов визуализированное изображение к созданной плоскости. Затем прокру тите раздел Depth (Глубина) плоскости изображения и установите флажок Use Depth Map (Использовать карту глубины), чтобы разрешить применение совмещения глубин. Теперь объекты на сцене будут правильно соотнесены с фоновым изображением согласно их глубине, как показано на рис. 13.5. Здесь тор совмещается с фоновым изображением, содержащим предварительно визуализированные геометрические примитивы.
Рис. 13.5. Совмещение геометрической фигуры (тора) с предварительно визуализированным фоном Убедитесь, что параметры визуализации соответствуют параметрам импортируемого ви део. Если соотношение пикселей импортируемого видеоизображения равно 0 . 9 , а геомет рические формы анимации визуализируются с квадратными пикселями, то при комбиниро вании видео и анимации объекты могут казаться искаженными. В разделе Environment (Окружение) камеры с помощью простых настроек можно из менить цвет фона для выполнения визуализации с этой камерой.
Глава 13
510
Глубина резкости Глубина резкости (depth of field) — имитация фотографического эффекта, при котором объекты на определенном расстоянии от камеры находятся в фокусе, тогда как все остальные объекты остаются нерезкими. В то время как обычные компьютерные изображения, как пра вило, находятся в фокусе полностью, управление глубиной резкости позволяет создавать драматические эффекты и зачастую может быть одним из элементов повествования в анима ции, поскольку способно привлечь внимание зрителя к определенным объектам на сцене. Та ким образом, Майя поддерживает глубину резкости как при программной визуализации, так и при визуализации с использованием mental ray, однако качество этого эффекта в последнем случае зачастую оказывается выше, чем при программной визуализации. Программная визуализация Майя создает глубину резкости как эффект постобработ ки. Необходимо учитывать, что это существенно увеличивает время визуализации. Ниже приведен короткий пример создания эффекта глубины резкости в Майя. 1.
Откройте файл DOF. mb с прилагаемого CD.
2.
Выберите камеру renderCam в окне иерархической структуры и откройте ее редактор атрибутов.
3.
Визуализируйте изображение с помощью камеры renderCam (в окне визуа лизации выберите пункт меню Render => Render => renderCam (Визуализация => Визуализировать => renderCam)) и сохраните его в окне визуализации (пункт File => Keep Image In render View (Файл => Сохранять изображение в
окне визуализации)). 4.
В редакторе атрибутов для камеры renderCam задействуйте параметр Depth Of Field (Глубина резкости). Убедитесь, что значение параметра Focus Distance (Фокальное расстояние) равно 7, а значение F Stop равно 5 . 6.
5.
Визуализируйте изображение снова и обратите внимание на различия. Гид ранты на переднем плане видны четко, тогда как объекты посередине сцены и на заднем плане становятся все более нерезкими.
6.
Установите значение параметра Focus Distance (Фокальное расстояние) равным 15 и снова выполните визуализацию.
Теперь объекты на переднем и заднем плане нерезкие, а объекты посередине выгля дят четко. Управлять нерезкостью можно с помощью параметра F Stop. Как и у реальной каме ры, низкие значения создают большую нерезкость (и увеличивают время визуализации). Параметры F Stop и Focus Distance (Фокальное расстояние) допускают установку клю чевых кадров. Чтобы усилить драматический эффект сцены, за счет, например, кинема тографического приема "смещения фокуса", когда фокус перемещается между двумя объектами, попробуйте установить на них несколько ключевых кадров. Параметр Focus r e g i o n Scale (Размер области в фокусе) относится к области фоку са, установленного параметром Focus Distance (Фокальное расстояние). Это можно представить как объем с фокусным расстоянием в центре. Большее фокальное расстоя ние означает, что большая область сцены вокруг фокального расстояния будет в фокусе. Значения параметров Focus Distance (Фокальное расстояние) и Focus r e g i o n Scale
измеряются в единицах сцены. Зачастую бывает трудно вычислить правильное фокаль-
Основы визуализации
511
ное расстояние от камеры, когда нужно, чтобы определенная часть сцены была в фокусе. Чтобы создать более интерактивное средство управления глубиной резкости, можно ис пользовать несколько технических приемов. Рассмотрим описанную ниже постановку. 1. На сцене из файла DOF.mb создайте инструмент расстояния, выбрав пункт меню Create => Measure Tools => Distance Tool (Создать => Инструменты измерения => Ин
струмент расстояния). 2. Чтобы создать два дистанционных локатора, щелкните в двух разных точках сцены. 3. Свяжите локатор locator1 инструмента расстояния с камерой, выбрав пункты renderCam и локатор locator1 в окне иерархической структуры. Затем в наборе меню Animation (Анимация) выберите пункт Constrain => Point (Ограничить => Точечно). Чтобы локатор привязался к позиции камеры, удостоверьтесь, что при создании ог раничителя флажок Maintain Offset (Сохранять смещение) сброшен. 4. Выберите в иерархической структуре локатор l o c a t o r 2 и переместите его в ту точ ку на сцене, которая должна быть в фокусе. Над надписью Measure Tool (Инструмент измерения) будет указано расстояние, выраженное в единицах. 5.
Выберите пункт меню W i n d o w => General Editors => Connection Editor (Окно => Общие редакторы => Редактор связей).
6. Загрузите узел формы d i s t a n c e D i m e n s i o n в левую область редактора связей. 7. Загрузите узел формы камеры renderCam в правую область редактора связей. 8. В редакторе атрибутов внизу списка distanceDimension найдите параметр Shape Node (Узел формы) и выберите параметр Distance (Расстояние). 9. В списке параметров формы камеры renderCam выберите параметр Focus Distance (Фокальное расстояние) (рис. 13.6).
Рис. 13.6. В редакторе связей можно свя зать атрибут Distance узла distance D i m e n s i o n S h a p e 1 с атрибутом узла renderCamShape
512
Глава 13
Теперь, если передвинуть локатор l o c a t o r 2 , значение фокального расстояния камеры автоматически обновится. В результате анимация фокального расстоя ния сводится к установке ключевых кадров для локатора l o c a t o r 2 . Чтобы изучить эту оснастку камеры, откройте файл DOF2 . mb с прилагаемого CD. Иногда экономически выгоднее выполнить визуализацию в Майя как отдельный этап, а за тем в программе создания композиций добавить эффект глубины резкости. Это особенно верно, когда изменения необходимо внести в уже готовый продукт. Чтобы сделать это эффективно, необходимо выполнять визуализацию с использованием канала Z- d e p t h .
Добавление размытости В реальном мире, когда объект быстро движется перед камерой, его изображение размывается в направлении движения, поскольку диафрагма камеры остается открытой на протяжении некоторого периода времени, за который движущийся объект успевает сместиться в плоскости просмотра. Подобно глубине резкости, размытость (motion blur) (или смазывание) в компьютерной графике — это поствизуализационный эффект, добавленный в Майя для имитации съемок реальной кинематографической камерой. До бавление в анимацию размытости поможет сделать движение объекта более плавным и реалистичным. Отказ от размытости может создать впечатление рывков изображения, как будто съемка осуществлялась с использованием стоп-кадра. (Традиционная анима ция с использованием стоп-кадра не имеет размытости, поскольку изображения снима ются по одному кадру за раз, независимо от скорости их перемещения. Если хочется по лучить анимацию в стиле Рэя Харрихуасена ( r a y Harryhausen), попробуйте визуализи ровать быстро движущиеся скелеты или динозавров без размытости.) Чтобы добиться этого эффекта, необходимо задействовать возможность Motion Blur (Размытость) в окне render Settings (Параметры визуализации). Программной визуализации в Майя недостает возможности добавлять размытость к отра жению объекта или к рефракции на другой поверхности. Эта возможность доступна в сис теме визуализации mental ray — об этом нужно помнить, принимая решение о выборе наи лучшего способа визуализации сцены. Создание размытости средствами mental ray рас сматривается в следующей главе. Кроме того, программная визуализация размытости в Майя имеет и ряд других ограничений, например, тени размываются не точно. Существуют две разновидности размытости: плоская и объемная. Плоская, или двух мерная, размытость визуализируется быстрее трехмерной и вычисляется после того, как кадр визуализирован. По сути, к движущимся в кадре объектам, на основании скорости их движения, применяется фильтр 2D blur. Двухмерная размытость не так точна, как трехмерная, однако в большинстве случаев она срабатывает лучше и обрабатывается го раздо быстрее. Двухмерная размытость хорошо подходит для поверхностей, которые на ходятся далеко от камеры, или когда не нужна серьезная детализация размытия. При визуализации трехмерной размытости Майя производит вычисления на основа нии позиции движущегося объекта и камеры в кадрах до и после кадра, который визуа лизируется в текущий момент. Трехмерная размытость лучше всего подходит тогда, ко гда объект изменяет направление движения или когда требуется высокий уровень дета лизации в кадре. Как можно предположить, этот более точный метод значительно увеличивает время визуализации. Размытость можно включать и выключать для каждо-
Основы визуализации
513
го объекта в отдельности. Для этого нужно открыть редактор атрибутов объекта и уста новить флажок Motion Blur (Размытость) в разделе render Stats (Статистика визуали зации). Обычно размытость нужна только для быстро движущихся объектов или для объектов, которые перемещаются рядом с визуализирующей камерой. Для управления общей размытостью сцены используется окно render Settings (Параметры визуализации). Величину размытости контролирует параметр Blur By Frame (Покадровое размытие). Этот параметр находится в разделе Motion Blur (Размытость) на вкладке Maya Software (Программная визуализация) окна render Settings (Параметры визуализации). Большее значение этого параметра дает большее размытие. Для двухмерной размытости параметр Blur Length (Длина размытости) регу лирует полосы размытости. На величину размытости влияет также параметр Shutter Angle (Угол раскрытия затвора), который находится в разделе Special Effects (Спецэффекты) редактора атрибутов. И опять-таки, чем больше значение, тем больше размытость. При визуализации сцены с большим количеством объектов необходимо заранее выяснить, какие объекты должны быть размыты, а какие нет. Если оставить установленным флажок Motion Blur (Размытость) для всех объектов на сцене, то время визуализации может значи тельно увеличиться, даже несмотря на то, что некоторые объекты находятся слишком да леко или неподвижны, а следовательно, не размываются. Если делать это с помощью окна Outliner (Иерархическая структура), то со сценой, содержащей много объектов, очень бы стро возникнут проблемы. Наилучший способ избежать этого заключается в выборе всех объектов на сцене и открытии таблицы атрибутов (Attribute Spreadsheet). Чтобы открыть ее, выберите пункт меню Window => General Editors => Attribute Spreadsheet (Окно => Общие редак торы => Таблица атрибутов). Это интерфейс, который позволяет в одном окне редактировать атрибуты нескольких выделенных объектов. 1
Откройте сцену motionBlurl.mb с прилагаемого CD. В окне render Settings (Параметры визуализации) на вкладке Maya Software (Программная визуали зация) установите флажок Motion Blur (Размытость) и поэкспериментируйте с различ ными значениями параметра Blur By Frame (Покадровое размытие) в разделе настроек трехмерной размытости папки Motion Blur. Попытайтесь установить скорость затвора камеры renderCam (в редакторе атрибутов камеры в разделе спецэффектов) равной 360. Сохраните изображения в окне визуализации для сравнения. Проведите экспери менты также с двухмерной размытостью. Пример показан на рис. 13.7.
Использование окна параметров визуализации Окно render Settings (Параметры визуализации) — вероятно, самое важное окно при создании анимации. Здесь геометрические формы, тонеры, освещение, оснастка, динами ка и сценарии превращаются в то, что увидит зритель. Если бы речь шла о выпечке пиро га, то в этом окне были бы средства управления духовкой. Понимать назначение пара метров этого окна очень важно, но еще важнее тщательно подходить к их изменению каж дый раз при подготовке визуализации, особенно если готовится пакетная визуализация. Вряд ли несколько экспериментов окажутся более болезненными, чем осознание того, что визуализация 7000 кадров прошла впустую. Особенно, если это осознание приходит как раз перед встречей с клиентом (или перед тем, как гордо показать только что визуа лизированную последовательность важным людям, которые уже достаточно наслуша лись рассказов об анимации).
514
Глава 13
Рис. 13.7. Невероятный беспилотный кабриолет, мчащийся по улице Прежде чем приступить к визуализации, необходимо заранее определить, что плани руется делать с изображениями впоследствии. Одно из важнейших правил гласит, что пе ред началом моделирования, текстурирования, анимации и окончательной визуализации необходимо внимательно просмотреть настройки в окне render Settings (Параметры ви зуализации). В упомянутом окне имеются две вкладки и доступно несколько систем визуализации. Вкладка C o m m o n (Общие) и настройки в ней остаются непротиворечивыми независимо от того, какая система визуализации выбрана. Ее можно выбрать в раскрывающемся списке render Using (Используемая система визуализации), расположенном в верхней части окна. По умолчанию принята система Maya Software (Программная визуализа ция). Пока оставьте этот пункт неизменным. Параметры второй вкладки зависят от сис темы, выбранной в раскрывающемся списке render Using (Используемая система ви зуализации), а следовательно, изменяются соответственно. Процессор визуализации Майя рассматривается далее в этой главе. Настройки для системы визуализации mental ray подробно рассматриваются в следующей главе. Начнем с атрибутов во вкладке C o m m o n (Общие) (рис. 13.8). Эту вкладку можно было бы назвать "что, где, когда". Во вкладке C o m m o n (Общие) указан путь к текущему каталогу изображений, а также имя изображения или последовательности изображений. Путь к папке с изображениями зависит от настроек проекта. Имя файла изображения или последовательности файлов
515
Основы визуализации
происходит от имени сцены, но его можно изменить с помощью полей в разделе image File Output (Результирующий файл изображения).
Puc. 13.8. Параметры, доступные во вкладке Common окна render Settings Если оставить поле File Name Prefix (Префикс имен файлов) пустым, то файлы по лучат имя файла сцены. В это поле можно ввести любой текст, но если планируется пе редавать файл изображения или последовательность монтажеру, то для последователь ности следует использовать короткое, осмысленное имя без пробелов или специальных символов. Вполне приемлемая практика, когда это поле оставляют пустым, чтобы файлы изображений получали имя файла сцены. В обширных проектах это неплохой способ на помнить, какая именно сцена создала ту или иную последовательность изображений. Раскрывающийся список Frame/Animation Ext (Расширение кадр/анимация) позво ляет выбрать маркировку изображения или последовательности. Это простой список, который можно не заметить, начиная пакетную визуализацию. Визуализируя один кадр, можно выбрать из этого списка два первых пункта, которые, по сути, позволяют маркировать изображения используя расширение кадра. Изображе ниям рекомендуется задавать расширения. Даже работая на компьютере Маc, нельзя га рантировать, что однажды визуализированные изображения не попадут на PC, где рас ширения обязательны. При визуализации одного изображения проще работать с окном render View (Вид визуали зации), чем настраивать пакетную визуализацию для одного кадра. Вышеупомянутое окно рассматривается в этой главе позднее. Следующие четыре пункта раскрывающегося списка Frame/Animation Ext (Расширение кадр/анимация) предназначены для последовательностей изображений, создаваемых
516
Глава 13
при пакетной визуализации. Они определяют позицию расширения и нумерации в по следовательности изображений. •
Формат N a m e . #. ext соответствует последовательности, которая вы глядит KaKmyimage.1. tif ... myimage .4000 . tif.
•
Формат Name. e x t . # соответствует последовательности myimage. tif. 1 ... myimage . tif .4000.
• •
Формат N a m e . # выглядит как myimage .0001... myimage .4000. Формат Name#.ext выглядит как myimage0001.tif ... myimage4000.tif.
•
Наконец, новый формат n a m e _ # . ext создает файлы m y i m a g e _ 0001. tif ... m y i m a g e _ 4 0 0 0 . tif. Этот последний формат был добав лен для упрощения объединения в пакеты там, где перед расширением файла допустима только одна точка.
Форматы Name [Mulit
Frame] и name .ext [Multi
Frame] становятся доступны
ми при визуализации непосредственно в формат видеофильма, например AVI или MOV. В чем различие этих форматов? Все зависит от того, что предполагается делать с по следовательностью изображений и какой формат предпочтительнее для импорта в про грамму создания композиций. Если выбранный формат именования не опознается сис темой монтажа, придется использовать какую-либо утилиту переименования файлов для преобразования последовательности изображений в более приемлемый формат имено вания. Здесь очень легко ошибиться, если не уделить формату именования должного внимания. Почти в любом случае подойдет формат name . #. ext или name_# . ext, но чтобы убедиться в этом, следует просмотреть документацию на программу создания композиций. Это даже хорошо, что предпочтительный формат пакета композиции неиз вестен, визуализируйте последовательность, скажем, из 10 пробных кадров, и загрузите изображения в пакет. Если имеется проблема с выбранным форматом, то намного проще обнаружить ее при пробной визуализации, а не после того, как были подготовлены сотни кадров с неправильным соглашением об именовании. Ниже раскрывающегося списка Frame/Animation Ext (Расширение кадр/анимация) расположен раскрывающийся список Image Format (Формат изображения), в котором можно выбрать необходимый формат изображений. Формат тоже зависит от того, что планируется делать с изображениями и какие программы создания композиций и редак тирования будут использоваться. Можно выполнять визуализацию непосредственно в формат фильма, например в . a v i или .mov; однако делать это не рекомендуется, по крайней мере для продолжительной или окончательной визуализации. Если в процессе визуализации последовательности изобра жений произойдет сбой компьютера, то впоследствии всегда можно будет продолжить ви зуализацию с того места, где она была прервана. Если сбой произойдет в процессе визуа лизации непосредственно в формат фильма, то визуализацию придется начинать с самого начала, поскольку файл фильма будет поврежден. Визуализация в мультипликационный формат может быть эффективна, если необходимо быстро проверить анимацию и пара метры визуализации. Следующие четыре поля доступны только тогда, когда в раскрывающемся списке Frame/Animation Ext (Расширение кадр/анимация) выбран формат последовательности изо-
Основы визуализации
517
бражений. ПОЛЯ Start Frame (Начальный кадр) и End Frame (Конечный кадр) позволяют вы брать ту часть анимации, которая должна быть визуализирована. Поле By Frame (По кадру) позволяет задать количество кадров, которое будет визуализироваться за один раз: один кадр, больше или меньше одного кадра. Можно визуализировать сцену в обратном порядке, введя большее значение в поле начального кадра и меньшее — в поле конечного кадра. Нередко визуализацию выполняют по половинам кадров, введя значение 0 . 5 в поле By Frame (По кадру). При работе над сценами с высоко динамичными элементами, та кими как частицы, аниматоры иногда прибегают к этому приему для того, чтобы обойти необходимость визуализировать поля для видео. Если проект настроен на частоту 30 кадров в секунду, а визуализация выполняется со значением 0 . 5 в поле By Frame (По кадру), то в итоге получается анимация с 60 кадрами в секунду, или, иначе говоря, уд ваивается количество кадров. В программе создания композиций можно выполнить об ратное преобразование до 30 кадров в секунду. Это позволит добиться такого же плавно го движения, которое получается при визуализации с полями, но без характерных для них трудностей. Визуализацию полей теперь можно осуществлять в программах созда ния композиции или редактирования видео. Поля и телевидение Поле
(field)— это термин, пришедший из телевидения. Прежние телевизионные системы (и многие современные) не могли визуализировать весь экран за один проход. Поэтому приме нялся оптический обман, называемый чередованием (interlacing), при котором во время первого прохода визуализировались только нечетные горизонтальные строки, а четные визуализирова лись во время второго прохода. На третьем проходе снова визуализировались нечетные строки и т.д. (Некоторые телевизионные системы визуализируют сначала четный кадр, т.е. наоборот.) Такое снижение частоты развертки уменьшало цену телевизионных систем, но создавало целый спектр проблем при отображении быстро движущихся объектов, а также с яркостью. Совре менные, более дорогие телевизионные системы зачастую способны работать в прогрессивном режиме, обеспечивающем визуализацию всего экрана за один проход (т.е. четных и нечетных полей вместе). Это существенно лучше чередуемого сигнала, поскольку ликвидирует проблемы яркости и движения, а следовательно, делает изображение более ярким и четким. (Безусловно, телевизионная станция тоже должна транслировать сигнал в прогрессивном режиме.) Однако современные телевизоры, обеспечивающие прогрессивный способ отображения, стоят сущест венно дороже, чем аналогичные с чередуемым изображением при том же разрешении. Когда зайдете в магазин электроники, обратите внимание на ценники телевизоров. На одних разреше ние указано как 1080i, например, а на других как 1080р. Сравните разницу их цен (размер экрана должен быть одинаков). Буква i на ценнике означает interlaced (чередующий), а р, соответствен но progressive (прогрессивный), т.е. поддерживающий прогрессивный режим отображения. Как можно заметить, телевизор с чередующей системой стоит существенно дешевле такого же теле визора с прогрессивной системой. Естественно, изменяя частоту кадров придется учитывать два важных момента. Вопервых, изменив частоту кадров визуализации, следует убедиться, что изменяется нуме рация кадров в разделе r e n u m b e r Frames (Перенумеровать кадры) окна render Settings (Параметры визуализации). Установите флажок r e n u m b e r Frames Using (Использовать перенумерацию кадров), а затем соответственно скорректируйте значения в полях Start Frame (Начальный кадр) и By Frame (По кадру); хорошо подойдут значения 1 и 1. По сле этого можно посмотреть на надпись в верхней части окна render Settings (Па раметры визуализации), выполненную жирным шрифтом, чтобы узнать, как перенуме-
518
Глава 13
рована последовательность. Во-вторых, визуализация с параметром By Frame (По кад ру), равным 0.5, потребует в два раза больше времени и займет в два раза больше про странства, чем со значением 1. В некоторых случаях можно визуализировать каждый второй или каждый третий кадр. Такая практика широко распространена при создании предварительной визуализа ции. В этом случае также следует проверить настройки нумерации кадров. Параметр Frame Padding (Дополнение кадра) позволяет задать количество нулей в маркировке последовательности кадров. Например, если ввести в это поле число 4, то имя будет выглядеть так: myimage .0001.tif. Некоторое дополнение кадра в последо вательности изображений полезно, поскольку большинство пакетов композиции не чи тают файлы из последовательности, если не используется дополнение. Использование дополнения кадров независимо от используемой платформы облегчает работу анимато ру и тем, кто с ним работает. В разделе renderable Cameras (Визуализирующие камеры) можно заметить такие параметры визуализации, как каналы прозрачности (alpha) и глубины (Z-depth). Приме нение канала прозрачности создает вокруг визуализированной сцены маску, упрощая ее совмещение с другими изображениями. Канал Z Depth — это специальный канал, в ко тором хранится информация глубины в виде полутонового 8-битового изображения. Этот дополнительный канал используется только в некоторых форматах изображений, на пример в IFF. Кроме того, не во всех форматах используется канал прозрачности (alpha channel). Для визуализации с использованием канала прозрачности безопаснее всего ис пользовать форматы TIFF, Targa, SGI и IFF. Подобно каналу глубины, если выбранный формат изображения не позволяет хранить карты непосредственно в том же файле, Maya создаст набор отдельных изображений, содержащих только информацию о глубине. Maya вычисляет глубину по оси Z на основании позиции объекта относительно плоскостей отсечения визуализирующей камеры. Этот параметр обновляется для каждого кадра. Уста новка флажка Auto render Clip Plane (Автоматически визуализировать плоскость отсечения) в редакторе атрибутов камеры может привести к появлению ошибок при визуализации глу бины по оси Z, поскольку Maya автоматически обновляет плоскость отсечения для каждого кадра. Поэтому при визуализации информации о глубине на сцене следует удостовериться, что этот флажок установлен. Поле Under Advanced Image Naming (Расширенное именование изображений) по зволяет использовать нестандартное расширение для изображений, но в большинстве случаев оно не требуется. Как уже упоминалось, параметр r e n u m b e r Frames (Перенумеровать кадры) полезен при визуализации с другим кадровым инкрементом. Кроме того, если визуализируется только фрагмент сцены, этот параметр можно исполь зовать для перенумерации кадров. Например, если необходимо визуализировать кадры с 241 по 360, но им нужно присвоить номера с 1 по 120, то это можно сделать с помощью поля r e n u m b e r Frames (Перенумеровать кадры). Это поле можно также использовать для визуализации сцены, которая начинается с отрицательного номера кадра, или для визуализации сцены в обратном порядке. Раздел Image Size (Размер изображения) рассматривался в предыдущем разделе, описывающем настройки камеры и разрешения. В разделе render Options (Параметры визуализации) есть флажок Enable Default Light (Применить источник света по умолчанию) и поля для назначения сценариев MEL, которые осуществляют обработку до и после визуализации. Использование полей
Основы визуализации
519
MEL — это довольно сложная функция, которая не используется индивидуальными раз работчиками и не рассматривается в этой книге. Источник света по умолчанию присутствует всегда. Поэтому, даже если визуализи ровать сцену, не установив на ней освещение, объекты все равно будут видны. Этот ис точник света влияет на освещение сцены, особенно, когда используется общее освещение в mental ray. Как правило, после добавления собственных источников света этот источ ник лучше отключить, независимо от того, как выполняется визуализация. Это позволя ет получить в результате визуализации то, что было задумано. Если источники света не добавлены и визуализация сцены выполняется только для того, чтобы создать черное изображение, то источник света по умолчанию следует отключить. Выше были рассмотрены основные настройки визуализации во вкладке C o m m o n (Общие). Далее описываются настройки во второй вкладке, которые зависят от выбран ной для сцены системы визуализации.
Программная визуализация Майя Если первую вкладку в окне render Settings (Параметры визуализации) можно на звать "что, где, когда", то вторую вкладку можно назвать "как". Настройки в этой вкладке охватывают качество изображения и зависят от используемой системы визуализации: Maya Software (Программная), Maya Hardware (Аппаратная), Maya Vector (Векторная) или mental ray. Многие из этих настроек связаны с параметрами камер, текстур и геомет рических форм в редакторе атрибутов. Измените значение параметра render Using (Используемая система визуализации) на Maya Software (Программная визуализация) и перейдите на вкладку Maya Software (Программная визуализация) (рис. 13.9). Раскрывающееся меню в разделе Anti-Aliasing Quality (Качество сглаживания) содержит предустановленные наборы значений для остальных атрибутов вкладки Maya Software (Программная визуализация). Если выбрать один из этих наборов, а потом изменить на стройки, то название набора автоматически изменится на Custom (Специальные). Предустановленные наборы расположены в порядке увеличения качества и времени визуализации. В большинстве случаев для окончательной визуализации начинать можно с набора Production Quality (Производственное качество).
Сглаживание и качество изображения Сглаживание или плавность изображений в Майя рассчитывается независимо как на уровне геометрической формы, так и на уровне образцов тонирования. Сначала вычис ляется геометрическое сглаживание. Его параметры задаются с помощью раскрывающе гося списка Edge Anti-Aliasing (Сглаживание краев) в окне render Settings (Параметры визуализации). Коррекция триангуляции объекта в редакторе атрибутов также может повлиять на гладкость этого объекта. Мелкие визуализированные объекты могут мерцать, даже если установлен максимальный уровень сглаживания краев. Чтобы исправить это, в редакторе атрибутов включите сгла живание геометрических форм и откорректируйте количество образцов. Эта возможность доступна, только если значение параметра Edge Anti-Aliasing (Сглаживание краев) равно High Quality (Высокое качество) или Highest Quality (Наивысшее качество).
520
Глава 13
Рис. 73.9. Software
Настройки во вкладке Maya
Значение параметра Shading (Тонирование) в разделе Number Of Samples (Количество образцов) определяет качество сглаживания или относительную визуаль ную гладкость тонирования объектов, текстур и освещения на сцене. Значение 1 обеспе чивает более быструю визуализацию, но тонирование получается зазубренным. Большее значение обеспечит более гладкий вид изображения, но потребует больше времени на визуализацию. Обратите внимание: образцы тонирования изменяются, если выбрать другой предопределенный набор настроек в раскрывающемся меню Quality (Качество). С выбором наивысшего качества (Highest Quality) включается адаптивный контроль об разцов (adaptive sampling). Адаптивный контроль образцов более эффективен, поскольку позволяет при необходимости корректировать уровень образцов тонирования на уровне пикселей. Для установки максимального уровня образцов тонирования можно исполь зовать ползунки. Раздел Number Of Samples предоставляет дополнительные уровни управления для трехмерного размытия и программно визуализированных частиц. Как можно догадаться, увеличение количества этих частиц увеличивает время визуализации, но также способ ствует получению более высокого качества изображения. Раздел Multi-Pixel Filtering (Многопиксельная фильтрация) доступен только тогда, когда в меню Edge Anti-Aliasing (Сглаживание краев) выбран пункт High Quality (Высокое качество) или Highest Quality (Наивысшее качество). Эти настройки обеспе чивают дополнительный уровень сглаживания при визуализации. Настройки в разделе Contrast Threshold (Порог контрастности) связаны с адаптив ным контролем образцов, поэтому их можно корректировать только тогда, когда в меню Edge Anti-Aliasing (Сглаживание краев) выбран пункт Highest Quality (Наивысшее каче-
Основы визуализации
521
ство). При программной визуализации изображения с адаптивным контролем образцов каждый пиксель сравнивается с пятью соседними визуализируемыми пикселями. Когда достигается определенный порог, основанный на параметрах порога контрастности для красного, зеленого и синего цветов, к пикселю применяется дополнительный контроль образцов. На это влияет уровень контраста визуализируемого изображения. Стандарт ные настройки основаны на контрастной чувствительности человеческого глаза.
Визуализация в Майя с использованием полей Визуализация с использованием полей (field rendering) применяется для визуализации изображений, которые должны отображаться на видеомониторах. Видеомониторы выво дят изображение в чередующихся строках или полях (см. раздел "Поля и телевидение" ра нее в этой главе). Каждое поле можно представить себе как половину изображения. Чере дование полей называется разверткой. Параметры раздела Field Options (Параметры по лей) окна render Settings (Параметры визуализации) позволяют указать, как должны визуализироваться поля. •
Параметр rendering Frames (Визуализация кадров) эквивалентен визуализации без полей.
•
Параметр Both Fields, Interlaced (Чередующиеся поля) объединяет два изображения в одно, На экране компьютера такое изображение выглядит разделенным на гори зонтальные линии.
•
Параметр Both Fields, Separate (Отдельные поля) визуализирует половины кадров в виде отдельных файлов изображений, которые можно объединять в программе ре дактирования или создания композиций.
•
Параметр Odd Fields (Нечетные поля) и Even Fields (Четные поля) визуализирует только ту половину изображения, которая соответствует данному полю.
Визуализация с использованием полей может оказаться чрезвычайно сложной и за частую требовать планирования и проверки. В одних программных пакетах используют ся термины нечетные (odd) и четные (even) поля, в других (например, в Adobe After Effects) — термины верхние (upper) и нижние (lower) поля. Визуализация с использова нием полей позволяет добиться более плавного движения объектов на видеоэкране; од нако в случае неправильной визуализации движение получается прерывистым или воз никает мерцание (flicker). Опробуйте несколько вариантов небольшого фрагмента ани мации, в котором много движения. Если нужно визуализировать поля непосредственно в Майя, просмотрите по возможности эти варианты на видеомониторе. Лучше всего визуа лизировать кадры и преобразовывать их в поля в программе редактирования или созда ния композиций.
Трассировка лучей при программной визуализации По умолчанию используемым в Майя методом визуализации является построчное сканирование (scanline). Визуализация методом построчного сканирования выполняется быстро; кроме того, она проста и обычно вполне достаточна для элементарных сцен. Это система, в которой объекты на сцене сортируются и визуализируются в зависимости от расстояния до камеры. Трассировка лучей (raytracing) — система, в которой лучи испускаются из камеры на сцену. Если эти лучи встречают отражающие или преломляющие объекты (или тексту-
Глава 13
522
ры), они отражаются от поверхности или преломляются. Если отраженные или прелом ленные лучи попадают на другие объекты сцены, они также могут отражаться или пре ломляться, как и в случае исходного объекта. Благодаря возможности создавать отражение и преломление, трассировка лучей за частую считается более реалистичным методом визуализации по сравнению с построч ным сканированием. Трассировка лучей требует большего времени визуализации, по этому ее следует применять тогда, когда это действительно нужно. Трассировка лучей включается глобально в разделе r a y t r a c i n g Quality (Качество трассировки) окна render Settings (Параметры визуализации). Если источники света на сцене создают трассированные тени или в тонерах есть трассированное отражение и пре ломление, но они визуализируются не правильно, то, возможно, что в окне render Settings не включена трассировка. Для указания количества образцов, используемых при создании трассированного изображения, используются ползунки в разделе r a y t r a c i n g Quality (Качество трассировки). Более высокий уровень управления трассировкой обеспечивает редактор атрибутов, используемый для применяемых на сцене тонеров и источников света. Для достижения более впечатляющего уровня реализма трассированных изображений можно использовать систему mental ray, которая описывается в следующей главе. Работая с отражениями и преломлениями, приходится переключаться между окном render Settings системы Maya Software, атрибутами отражаемых или преломляемых объектов и тонерами, примененными к отражаемым или преломляемым объектам. Для работы с трассированными тенями приходится использовать объекты и источники света, отбрасывающие тени, а также окно render Settings (Параметры визуализации). Напри мер, чтобы реализовать преломление объекта, находящегося в стакане, необходимо убе диться, что: •
в настройках render Stats (Статистика визуализации) редактора атрибутов для объекта внутри стакана выбран параметр Visible In refractions (Видимо в преломлении);
•
в меню r a y t r a c e Options (Параметры трассировки) примененного к стакану тонера включено преломление;
•
в окне render Settings (Параметры визуализации) включена
•
установлен режим r a y t r a c e d Shadows (Трассированные тени), если это первичный источник света (для правильного создания теней).
трассировка
(raytracing);
Для отражений характерен аналогичный набор требований, за исключением того, что если трассировка лучей включена в окне render Settings, то отражающая способность таких материалов, как Blinn и Phong, включена по умолчанию. Отражающую способ ность можно регулировать с помощью ползунка reflectivity (Отражающая способность) в редакторе атрибутов для этих материалов. Визуализация трассированных отражений, преломлений и теней является весьма ре сурсоемким процессом. Лучи, используемые для создания этих эффектов, можно огра ничить с помощью ползунков в разделе r a y t r a c i n g Quality (Качество трассировки) окна render Settings, а также с помощью ползунков редактора атрибутов для тонеров, свя занных с трассированными объектами. Параметры в окне render Settings влияют на все трассированные тонеры сцены. Используется меньшее ограничение из двух: либо огра ничение количества используемых лучей в окне render Settings (Параметры визуализа ции), либо ограничение, установленное для трассированного тонера или трассированных теней, отбрасываемых источником света.
523
Основы визуализации
Параметры визуализации В разделе render Options (Параметры визуализации) вкладки Maya Software окна render Settings доступны дополнительные средства управления, которые влияют на вид визуализированных изображений (рис. 13.10).
Puc. 13.10. Раздел render Options окна render Settings Можно создать окружающий туман, который также можно реализовать в окне гипершейдера. Окружающий туман п может усилить ощущение глубины на сцене — объекты постепенно исчезают из вида по мере удаления от камеры. Параметр Ignore Film Gate (Игнорировать кадровое окно) включен по умолчанию. Это означает, что при визуализации изображения для определения его размеров исполь зуются настройки r e s o l u t i o n Gate (Рамка разрешения). Если этот параметр задейство ван, Майя визуализирует объекты, видимые в кадровом окне, а все остальное визуализи руется с цветом фона. Параметр Shadows Obey Light Linking (Тени подчиняются привязкам источников света) также включен по умолчанию. Это означает, что тени на сцене будут отбрасывать ся с учетом связей источников света и объектов в меню Light Linking (Привязка источни ка света) (выберите пункт меню W i n d o w => r e l a t i o n s h i p Editors => Light Linking (Окно => Редакторы взаимосвязей => Привязка источника света)). Если этот параметр отключен, объекты (которые должны отбрасывать тени) будут отбрасывать тени независимо от то го, связаны ли они с источниками света. Очевидно, что это может привести к несколько странным результатам. => Майя 8.5 включены параметры связывания тени и источника света. Используя эту возможность, с вычислениями теней можно связывать только некото рые объекты, что способно существенно снизить время визуализации.
Глава 13
524
Переключатель Enable Depth Maps (Включить карты глубин) является глобальным. При его включении карты глубин тени будут отбрасываться теми источниками света, для которых они разрешены. Раздел Color/Compositing (Цвет/Композиция) содержит несколько параметров, ко торые влияют на то, как визуализированные изображения ведут себя при передаче их в программу работы с композициями (такую как Adobe After Effects). Параметр G a m m a (Степень яркости) определяет степень яркости изображения. Иногда может понадобить ся изменение степени яркости визуализированных изображений в зависимости от того, что нужно делать с изображениями в программе работы с композициями. Параметр Clip Final Shaded Color (Ограничение окончательного цвета тонирования) гарантирует, что значения цветов в окончательном изображении остаются в диапазо не 0 - 1 . Это предотвращает передержку изображений. Параметр Jitter Final Color (Дрожание окончательного цвета) ликвидирует полосы в тех областях, где должен быть гладкий переход. Параметр Premultiply (Предварительное умножение) гарантирует, что края визуализируемых в Майя объектов не сглаживаются по фоновому цвету. Если этот параметр отключен, то используется параметр Premultiply Threshold (Порог предварительного умножения).
Параметры памяти и производительности Параметры в разделе Memory A n d Performance Options (Параметры памяти и произ водительности) позволяют управлять тем, как Майя оптимизирует визуализацию с по мощью файлового кэша, экземпляров, триангуляции и ограничивающего блока во время вычисления карт смещения (рис. 13.11). Эти параметры предназначены для сокращения времени визуализации, и обычно безопаснее оставить их в стандартном состоянии On (Включено). Подробнее эти настройки описаны в документации по Майя.
Puc. 13.11. Performance
Раздел Options
Memory
окна
And render
Settings
Параметры трассировки обеспечивают глобальное управление уровнем детализации трассированных объектов на сцене. Параметр r e c u r s i o n Depth (Глубина рекурсии) мож но установить равным 1 для простых сцен либо равным 2 или 3 — для более сложных.
525
Основы визуализации
Аналогично, для более сложных сцен можно увеличить значения Leaf Primitives (Листовые примитивы) и Subdivision Power (Мощность секционирования). Параметр Subdivision Power весьма чувствительный, поэтому, если сцена сложная, его следует увеличивать лишь незначительно. Параметр Multi Processing (Многопроцессорная обработка) позволяет использовать для визуализации все доступные процессоры либо задать количество процессоров с по мощью ползунка. Этот параметр предназначен для многопроцессорных машин или ком плексов визуализации.
Дополнительные параметры Параметры в разделах IPR Options (Параметры
IPR)
и
Paint Effects rendering
Options (Параметры визуализации графических эффектов) управляют тонированием, тенями и размытостью при визуализации IPR и визуализации Paint Effects. Отключение ненужных параметров раздела IPR Options повышает скорость визуализации и позволя ет сэкономить дисковое пространство, хотя, безусловно, ценой уменьшения точности окончательного изображения. Если параметр Enable STROke rendering (Разрешить визуализацию штрихов) в свой ствах графических эффектов выключен, то Maya не визуализирует штрихи Paint Effects. Это глобальный параметр, который можно использовать, когда необходимо визуализи ровать сцену быстро без графических эффектов. Напротив, если желательно видеть штрихи Paint Effects, можно выбрать параметр Only render STROkes (Визуализировать только штрихи). Параметр r e a d This Depth File (Считать файл глубин) необходимо ис пользовать тогда, когда для работы с композицией требуется получить данные глубины по оси Z для визуализированных штрихов. Единственным форматом изображений, ко торый может содержать данные глубин, является . i f f . Подробнее этот аспект описан в документации Maya. Включение параметра Oversample (Дискретизация) в разделе Paint Effects rendering Options (Параметры визуализации графических эффектов) может повысить качество штрихов Paint Effects за счет визуализации их с двукратным разрешением. Естественно, это увеличивает продолжительность визуализации сцены. Параметр Oversample Post Filter (Дискретизация пост-фильтров) применяет фильтр для дальнейшего сглаживания дискретных штрихов. Эти параметры могут оказаться полезными при визуализации во лос Paint Effects и других отделочных элементов.
Аппаратная визуализация и аппаратный буфер визуализации Аппаратная визуализация (Maya Hardware) и аппаратный буфер визуализации (hardware render buffer) представляют собой два похожих и связанных друг с другом, но разных процесса. Это может несколько сбивать с толку. Различие главным образом каса ется качества, процесса и возможностей этих двух видов визуализации. В обоих случаях для визуализации изображений используется графическая плата компьютера (а не про цессор). Естественно, это означает, что на визуализацию изображений влияет тип ис пользуемой графической платы. Перечень пригодных графических плат приведен на Web-сайте компании Autodesk по адресу w w w . a l i a s . c o m / g l b / e n g / s u p p o r t / M a y a /
Глава 13
526
q u a l i f i e d _ h a r d w a r e / i n d e x . j s p . Если используемой платы нет в этом списке, то, скорее всего, ее все равно можно использовать, но результаты не гарантируются. Чаще всего аппаратная визуализация любого типа используется для визуализации определенных типов частиц, а также для ускорения и упрощения процесса визуализа ции. По существу, аппаратный буфер визуализирует каждый кадр в окно на экране. По сле этого визуализированное изображение захватывается аппаратным обеспечением и записывается на диск. Самая большая проблема этой системы заключается в том, что не обходимо жестко следить за тем, чтобы буферное окно (buffer window) не перекрывалось другими окнами. Проблемы могут возникать даже из-за срабатывания хранителя экрана во время длительной визуализации. Доступ к аппаратному буферу визуализации можно получить
с
помощью
меню
W i n d o w => rendering Editors => Hardware
render
Buffer
(Окно => Редакторы визуализации => Аппаратный буфер визуализации), как показано на рис. 13.12. Для доступа к настройкам выберите атрибуты в меню render (Визуализи ровать) окна Hardware render Buffer (Аппаратный буфер визуализации).
Рис. 13.12. Вид кабриолета в окне аппаратного буфера ви зуализации Компьютеры Маc менее восприимчивы к проблемам перекрытия окон и хранителей экрана (screensaver), чем машины Windows или Linux. При визуализации сцены через аппаратный буфер визуализации визуализирующее окно может быть нечаянно скрыто, а хранитель эк рана способен внезапно включиться, что приведет к проблемам. Поэтому возможность ап паратной визуализации весьма полезна, поскольку позволяет осуществлять другую работу на компьютере, пока происходит визуализация. Доступ к аппаратной визуализации, обладающей рядом преимуществ по сравнению с аппаратным буфером визуализации, осуществляется с помощью окна render Settings (Параметры визуализации). Инструмент Maya Hardware (Аппаратная визуализация) позволяет реализовать пакетную визуализацию и поддерживает возможности, недоступ ные в буфере. Получаемые изображения, как правило, имеют более высокое качество, а созданные с помощью этого метода частицы также выглядят лучше. Аппаратная визуа лизация поддерживает следующие возможности: бликовая подсветка по пикселям (реrpixel specular highlight), карты выдавливания (bump map), размытость (motion blur), ко торая по качеству превосходит размытость, созданную с помощью аппаратного буфера,
527
Основы визуализации тени
(shadow), отражения (reflection), карты смещения (displacement map), нормальные (normal map), полупрозрачность тонеров (shader translucency), а также градиент ные тонеры и тонеры Blinn. На вкладке Maya Hardware (Аппаратная визуализация) окна render Settings (Параметры визуализации) (рис. 13.13) доступны такие возможности, как выбор форма та кадрового буфера — 8 байт на канал или 16-битовое число с плавающей точкой на ка нал, карты прозрачных теней, цвет и разрешение шероховатости, а также аппаратное кэширование геометрических форм (hardware geometry caching). Кэширование позволяет графической плате кэшировать данные геометрических форм, когда они не используют ся для других задач. В некоторых случаях это повышает производительность. карты
Puc. 13.13. Параметры аппаратной визуализации доступны в окне render Settings
Векторная визуализация Как уже упоминалось в начале этой главы, Майя может визуализировать как рас тровые, так и векторные изображения. Векторные изображения можно экспортировать непосредственно в другие программы для работы с векторной графикой, такие как Illustrator и Flash. Эта возможность полезна, поскольку создавать трехмерные изобра жения в программе векторной графики трудно. Преимущество векторных изображе ний заключается в том, что их размеры обычно не велики, а кроме того, их можно масштабировать без потери качества. Недостатком использования векторной графики является то, что создавать таким способом фотореалистичные изображения довольно тяжело.
Глава 13
528 Векторную визуализацию
(vector rendering) не следует путать с визуализацией мультфиль мов (Toon rendering). Это внешне похожие и во многом связанные, но разные инструменты. В системе Toon Shading для создания внешнего вида мультипликационного объекта исполь зуется комбинация тонеров и штрихов системы Toon Shading. Объекты Toon Shading визуа лизируются с помощью программной визуализации или системы mental ray, а не векторной визуализации, и создают они растровые изображения, а не векторные. Инструменты Тооn Shading подробнее обсуждаются в главе 1 5 , "Система Toon Shading". На настройки векторной визуализации оказывает влияние формат файлов, выбран ный на вкладке C o m m o n (Общие) окна render Settings (Параметры визуализации). Векторное изображение можно визуализировать в растровый формат, такой как Targa или TIFF; однако, если требуется отредактировать изображение в другой программе, на пример в Adobe Illustrator или Macromedia Flash, то следует выбрать векторный формат. Векторные форматы (SWF, SWFT, EPS, AI и SVG) удобно сгруппированы в верхней части списка форматов файлов на вкладке C o m m o n . Выбор значения Maya Vector в раскрывающемся списке render Using (Исполь зуемая система визуализации) окна render Settings (Параметры визуализации) позво ляет получить доступ к параметрам формирования векторного изображения. Параметры здесь отображаются в зависимости от выбранного формата (на рис. 13.14 представлено окно render Settings, в котором для вывода выбран формат SWF). Например, формат Flash позволяет задать частоту кадров (frame rate) анимации Flash, а также версию Flash, для которой выполняется визуализация.
Puc. 13.14. Вкладка Maya Vector ок на render Settings Параметры Curve Tolerance (Допуск кривой) и Detail
Level
Preset (Предуста
новленный уровень детализации) влияют на время визуализации и размер изображения.
Основы визуализации
529
При низком допуске для кривой создается множество строк, а кривая выглядит более похожей на исходную модель, но размер файла будет больше, чем в случае более высоко го допуска. Можно указать уровень детализации с помощью предустановленного набора значе ний или ввести его вручную. Понятие уровня детализации самоочевидно: чем больше де талей, тем больше размер файла и больше время визуализации, однако изображение по лучится более детальным. Раздел Fill Options (Параметры заполнения) позволяет контролировать вид тонирован ных изображений. Векторная визуализация поддерживает анизотропный (anisoTROpic) то нер, а также тонеры Blinn, Lambert, Phong и Phong Е. На рис. 13.15 показаны примеры век торной визуализации с различными параметрами заполнения. Для создания изображе ний использовалось несколько вариантов настроек. Левое верхнее изображение визуализировалось с единственным цветом заполнения и без границ. Правое верхнее изображение визуализировалось с единственным цветом и со скрытыми границами, вы бранными в параметрах границ. Левое нижнее изображение визуализировалось с четы рехцветным заполнением и детализацией, заданной в параметрах границ. Правое нижнее изображение визуализировалось с градиентом, выбранным в качестве параметра запол нения, а также с детализацией границ, выбранной для данных параметров.
Рис. 13-15. Кабриолет, визуализированный с помощью векторной визуализации Maya Параметры Edge Options (Параметры границ) позволяют контролировать контуры, которые рисуются вокруг заполняемых форм. Чтобы создать каркасную версию модели, выберите пункт меню Hidden Edge (Скрытая граница).
Глава 13
530
Векторная визуализация поддерживает только точечные источники света. Если на сцене имеются неточечные источники, то во время визуализации будет создан источник, находящийся в позиции камеры. Тени доступны только для некоторых форматов визуа лизации, например для SWF. Изображение в формате SWF можно импортировать и редактировать в программе Adobe Flash 8. Изображение или последовательность изображений появляются во Flash в виде от дельных слоев, похожих на проходы визуализации. Слои будут созданы для цвета, бликов, теней, отражений и прозрачности, в зависимости от модели, настроек и тонеров.
Использование окна просмотра визуализации Окно render View (Вид визуализации) является удобным инструментом для точной настройки способа визуализации сцены. Инициируя визуализацию в окне render View, можно заметить, что Майя создает изображение в реальном времени. Данное окно рабо тает как для программной, аппаратной и векторной визуализации, так и для mental ray. Это окно используется также для IPR (Interactive Photorealistic rendering — интерак тивная фотореалистичная визуализация), рассматриваемой в следующем разделе. Открыть окно render View можно несколькими способами. Если видна строка со стояния, то можно щелкнуть на пиктограмме кинематографической хлопушки. В ре зультате чего откроется окно render View (Вид визуализации) и немедленно начнется визуализация текущего вида. Кроме того, можно выбрать пункт меню W i n d o w => rendering Editors => render View (Окно => Редакторы визуализации => Вид визуализации) и отобразить окно render View, выбрав его в окне панели. Этот способ удобен при использовании многооконного режима работы. Можно держать окно render View под рукой, настраивая сцену, и осуществлять визуализацию, когда это необходимо. На рис. 13.16 показано окно render View (Вид ви зуализации) с визуализированным кабриолетом.
Рис. 13.16. Окно render View позволяет настроить сцену, визуализируя и сохраняя снимки
Основы визуализации
531
У Maya 8.5 есть новая возможность — открыть окно просмотра визуализации без создания экземпляра новой задачи визуализации. Кнопка Open render View (Открыть вид визуализации), расположенная слева от пиктограммы render View (Вид визуализации), открывает окно просмотра визуализации, но не запускает новый процесс. Это может быть очень полезно, если это окно было закрыто после визуализации изображе ния и его необходимо открыть снова, причем без повторной визуализации сцены. В верхней части рассматриваемого окна расположена панель меню File (Файл), View (Вид), render (Визуализировать), IPR, Options (Параметры), Display (Представление) и Help (Справка). В меню File имеются параметры загрузки и сохранения изображений. Зачастую для сохранения одного изображения вместо создания пакетной визуализации удобнее визуализировать изображение, используя окно render View, и сохранить его с помощью меню File. Параметры в меню View (Вид) позволяют просматривать каналы красного, зеленого и синего цветов, канал прозрачности изображения, а также делать снимки невизуализированного вида со стороны камеры. Меню render (Визуализировать) позволяет выбрать камеру, с которой желательно осуществлять визуализацию. Если не изменять настройки по умолчанию, то инструмент render View всегда осуществляет визуализацию, используя ранее выбранную камеру, когда окно открыто. Ниже строки меню находится ряд пиктограмм, которые управляют содержимым окна render View (Вид визуализации). Щелчок на первой кнопке с пиктограммой кинемато графической хлопушки позволяет визуализировать изображение, используя ту же каме ру, что и в предыдущий раз. Кнопка с пиктограммой хлопушки и красного прямоуголь ника позволяет визуализировать определенную пользователем область изображения. Этот инструмент экономит массу времени, когда нужно просто отрегулировать часть изображения и не хочется ждать, пока Maya визуализирует все изображение. Для визуализации области нажмите кнопку мыши и начертите область на изображе нии, — на экране должен появиться красный прямоугольник. Щелкните на кнопке render r e g i o n (Визуализировать область) и убедитесь, что изображение внутри красной рамки обновилось. Если изменить что-либо на сцене и снова щелкнуть на кнопке, то внутри красной рамки появится обновленное изображение. Работая в окне render View (Вид визуализации), можно увеличивать масштаб и па норамировать визуализируемое изображение, используя те же комбинации клавиш, ко торые позволяют перемещаться в окне камеры. Это удобно для тщательной проверки ви зуализируемых изображений. Чтобы быстро переключиться на фактический размер изо бражения, можно щелкнуть на кнопке 1 : 1 панели окна render View. Зачастую после случайного уменьшения масштаба кажется, что изображение визуализировалось с зазубренными краями и дефектами. Не забудьте щелкнуть на кнопке 1:1, прежде чем пытаться путем решить проблему изменения настроек сглаживания и качества визуализации. Наиболее полезной возможностью окна render View (Вид визуализации), после IPR, является его способность быстро сравнивать результаты визуализации, сохраняя изо бражения. Попробуйте выполнить описанную ниже последовательность действий. 1. Создайте простую сцену со сферой NURBS. 2.
Создайте прожектор и направьте его на сферу.
3.
Примените к сфере тонер Blinn.
Глава 1 3
532 4.
В редакторе атрибутов источника света установите интенсивность света равной 1.
5.
Визуализируйте изображение в окне render View, щелкнув на пиктограмме кинема тографической хлопушки в верхней панели инструментов Maya.
6.
Должно автоматически открыться окно render View (Вид визуализации), в котором будет быстро создано изображение сферы.
7.
В панели инструментов упомянутого окна щелкните на кнопке Keep Image (Сохранять изображение), пиктограмма которой представляет собой стрелку, направленную в от крытый ящик, или выберите пункт меню File => Keep Image In render View (Файл => Сохранять изображение в окне визуализации).
8.
Измените интенсивность источника света до 0.4 и снова визуализируйте изображение.
9.
Сразу после визуализации (Сохранять изображение).
изображения
щелкните
на кнопке
Keep
Image
10. Используя полосу прокрутки в нижней части окна render View, можно переходить вперед и назад, сравнивая два изображения. Это можно сделать и для большего ко личества изображений, если каждое из них было сохранено после визуализации. Чтобы удалить изображение из этого буфера, можно перейти к нему с помощью по лосы прокрутки и щелкнуть на кнопке удаления, на которой изображена стрелка, на правленная из ящика. Возможность сохранять и просматривать результаты визуализации очень удобна при доводке и сравнении изображений. Но еще удобнее в Maya возможность IPR. После визуализации в нижней части окна render View (Вид визуализации) поверх изображения появляются статистические данные: размер, масштаб, система визуализа ции, кадр, время визуализации, камера и слой визуализации (если это применимо).
Использование интерактивной фотореалистичной визуализации (IPR) IPR в Maya представляет собой еще один удобный инструмент настройки визуа лизации. Лучше всего она проявляет себя при коррекции текстур, освещения, свече ния, оптических эффектов, теней карт глубин, размытости, глубины резкости и мно гих других аспектов визуализации. Она не поддерживает трассировку лучей и неко торые другие аспекты визуализации, но работает с системой mental ray. На самом деле IPR для mental ray позволяет предварительно просматривать трассированные отражения и преломления, что является преимуществом перед процессором визуа лизации IPR Maya. При использовании IPR создается средство визуализации, использующее особый формат изображений, содержащий информацию, специфическую для данной сцены. Этот формат не пригоден для окончательной визуализации (в отличие от форматов IFF, TARGA и T I F F ) . Он используется исключительно в окне IPR. Использование IPR похоже на использование описанного выше инструмента render Region (Визуализировать область), за исключением того, что визуализируемая область об новляется автоматически, когда изменяются параметры определенных элементов сцены (повторная визуализация обычно осуществляется намного быстрее, близко к реальному масштабу времени, если сцена не слишком сложна). Выполните дейст вия, описанные ниже.
Основы визуализации
533
1. Откройте файл IPR, содержащийся на прилагаемом CD. 2.
Щелкните на кнопке IPR панели инструментов Maya, а если открыто окно render View (Вид визуализации), щелкните на кнопке IPR его панели. До вольно медленно, но начнется визуализация сцены. Происходящее может несколько отличаться от программной визуализации, но так и должно быть. Эта система визуализации предназначена для настройки различных пара метров. Maya создает исходное изображение IPR, с которого можно начать настраивать визуализацию. Визуализация области IPR не сможет работать до тех пор, пока не будет создано первоначальное изображение.
3.
Как только изображение будет визуализировано, нажмите кнопку мыши и начертите прямоугольник где-нибудь на поверхности корпуса автомобиля. В результате в окне render View (Вид визуализации) должна появиться зе леная рамка — это и есть область визуализации IPR.
4.
Откройте редактор атрибутов для расположенного на сцене плоского источ ника света и медленно перемещайте ползунок Intensity (Интенсивность) вверх и вниз. По мере перемещения ползунка должно быть заметно, как из меняется освещение в рамке визуализации IPR.
5.
Попробуйте изменить цвет тонера, связанного с корпусом автомобиля. Как можно заметить, область обновляется после внесения изменений.
Представление IPR не будет обновляться, если изменить модель или вид со стороны камеры. В таких случаях необходимо создать новую систему визуализации IPR, опира ясь на которую можно начать настройку изображения. Если создание изображения IPR при работе над сценой занимает слишком много времени, его можно сохранить. Щелкая правой кнопкой мыши в окне IPR, можно выделять на сцене объекты и свя занные с ними узлы. Попробуйте щелкнуть на шасси автомобиля в ранее созданной об ласти визуализации. В результате выделенным окажется примененный к автомобилю тонер Blinn.
Визуализация слоев, композиция и редактирование Визуализация и композиция зачастую осуществляются одновременно. Идея проста: сцена визуализируется в несколько проходов, а результаты комбинируются как слои в какой-либо программе для работы с композициями, например в Adobe After Effects или Apple Shake. Как правило, вносить незначительные изменения гораздо быстрее и проще в программе для работы с композициями, чем заново визуализировать всю сцену в Maya. Тот, кто хоть раз работал с требовательным клиентом (а все хорошие клиенты — требо вательны), знает, что изменения будут многочисленными и частыми. Проходы визуализации можно разделить по специфическим объектам и элементам: на пример, декорации на заднем плане и персонажи переднего плана, либо источник рассеянного света, бликовая подсветка, тени, отражения, окружающее затемнение (ambient occlusion) и другие элементы текстурирования и освещения определенного объекта, либо и то и другое. Слои визуализации (render layer) Maya, полностью переделанные в версии 7, предос тавляют чрезвычайно мощный набор инструментов для контроля и подробного управле ния процессом визуализации.
534
Глава 13 Начнем рассмотрение слоев визуализации с простого упражнения. 1. Откройте файл convertible_textureLayers . mb с прилагаемого CD. 2.
3.
Переключите представление на камеру renderCam и визуализируйте сни мок. В окне render View (Вид визуализации) должен отображаться малень кий красный игрушечный кабриолет. Откройте редактор слоев визуализации ( r e n d e r Layer Editor), выбрав пункт меню W i n d o w => render Editors => render Layer Editor (Окно => Редакторы ви
зуализации => Редактор слоев визуализации) или щелкните на переключате ле render (Визуализировать) палитры слоев (по умолчанию она располо жена под панелью каналов). 4.
В окне Outliner (Иерархическая структура) выберите группу кабриолета.
5.
В меню Layers (Слои) редактора слоев выберите пункт меню Create Layer From Selected (Создать слой из выделенного) или щелкните на соответст вующей кнопке (на ней изображены голубая сфера и желтая звездочка).
6.
В редакторе слоев будут два слоя: главный слой (masterLayer) и слой layer1 (рис. 13.17). Выделенным будет главный слой. Снова выполните визуализацию для камеры renderCam. Все должно выглядеть так же.
7.
В редакторе слоев переключитесь на слой layer1. В виде со стороны камеры исчезнут плоскость земли и источники света, останется только автомобиль. Выполните еще одну визуализацию для камеры renderCam. Рис, 13.17. Редактор слоев визуаВ результате новой визуализации будет показан красный автомо- лизации с новым биль, но без земли, поскольку источники света сцены не включены в слоем визуализацию слоя layer1. Чтобы источники света и земля на слое layer1 стали видимыми, необходимо добавить их к этому слою. 1. В окне Outliner (Иерархическая структура) выделите элементы a r e a L i g h t 1 , directionalLight1, NURBSPlane1 и spotlight1. Щелкните правой кнопкой мыши в редакторе слоев и выберите пункт меню Add Selected Objects (Добавить выделенные объекты). 2.
Обратите внимание на то, что теперь видны источники света и земля. Еще раз вы полните визуализацию для камеры renderCam. Сохраните изображение. В окне render View (Вид визуализации), в нижней части изображения, появился текст layer: layer1. Если в редакторе слоев переключиться на главный слой (masterLayer), то изображение будет выглядеть так же, как и изображение слоя layer1, но внизу будет текст layer: masterLayer. Если появятся слова Layer: Composite, перейдите в меню Options (Параметры) редактора слоев и сбросьте флажок render All Layers (Визуализировать все слои).
Как уже было продемонстрировано выше, объекты и источники света могут распола гаться на нескольких слоях. Зачем это нужно? Давайте продолжим работу над сценой примера.
Основы визуализации
535
1. В редакторе слоев выберите слой l a y e r l , щелкните правой кнопкой мыши и в появившемся контекстном меню выберите пункт layerl. В контекстном меню переиме нуйте этот слой в redCar. 2.
В меню Layer (Слой) выберите пункт Create Empty Layer (Создать пустой слой) или щелкните на кнопке Create New Empty render Layer (Создать новый пустой слой визуализации) (на ней изображена желтая звездочка, но без голубой сферы). Пере именуйте слой в greenCar. Обратите внимание — если переключиться на этот слой, то все исчезнет. Если выполнить визуализацию этого слоя, то в результате получит ся только черный экран.
3.
Выделите геометрическую форму и источники света в окне Outliner (Иерархическая структура). Щелкните в редакторе слоев правой кнопкой мыши на слое greenCar и в появившемся контекстном меню выберите пункт A d d Selected Objects (Добавить выделенные объекты). В виде со стороны камеры появятся все объекты. Переключе ние с одного слоя на другой не показывает никаких отличий.
4.
Выделите корпус красного автомобиля и откройте окно гипершейдера. На вкладке materials (Материалы) найдите тонер g r e e n P a i n t . Щелкните правой кнопкой мы ши на пиктограмме Shader (Тонер) и в появившемся контекстном меню выберите пункт Assign material То Selection (Применить материал к выделенному).
5.
Автомобиль станет зеленым. Выполните визуализацию для камеры renderCam при выделенном в редакторе слоев слое greenCar. Получился красивый зеленый авто мобиль.
6.
В редакторе слоев вернитесь к слою r e d C a r . Автомобиль станет красным. Выполни те визуализацию, и снова получится красный автомобиль.
7. Если что-то работает не так, как описано, проверьте, установлен ли флажок Auto Overrides (Автопереопределение) в меню Options (Параметры) окна render Layers (Слои визуализации). Как демонстрирует приведенный выше пример, один и тот же объект может нахо диться на нескольких слоях и на каждом из них он может быть текстурирован по-своему. Визуализация различных вариантов объекта проста. Более того, каждый слой визуали зации имеет собственную схему постановки освещения. Есть и другие возможности, но не будем забегать вперед. До сих пор рассматривалось создание слоев с разным текстурированием по каждому объекту. Теперь создадим слои с разным текстурированием для каждого компонента. Новая возможность Майя 8 — способность дублировать слои визуализации. Если, скажем, имеется несколько слоев, которые должны быть почти иден тичными, можно сдублировать "главный" слой и изменить его копию Так будет намного быстрее, чем создавать каждый слой с самого начала. 1.
Загрузив файл c o n v e r t i b l e _ t e x t u r e L a y e r s . mb, откройте окно гипершейдера и найдите пиктограмму тонера hubCap1. Щелкните на ней правой кнопкой мыши и в появившемся контекстном меню выберите пункт Select Objects With material (Выделить объекты с материалом). Выделенными оказались многоугольники, которые формируют колпаки на колесах. Колесо представляет собой один полигональный объ ект с отдельным тонером, примененном к многоугольникам, составляющим колпак.
536
Глава 13
2.
В редакторе слоев переключитесь на слой greenCar. В гипершейдере найдите слой hubCap2. Щелкните на нем правой кнопкой мыши и выберите пункт меню Assign material То Selection (Применить материал к выделенному).
3.
Визуализируйте изображения слоев redCar и greenCar. Сохраните изображения в окне render View (Вид визуализации) и сравните результаты для каждого слоя. Об ратите внимание на то, что колпаки на зеленом автомобиле имеют меньшее значение диффузии, а потому выглядят более темными. Итак, только что были успешно соз даны слои с разным текстурированием по компонентам.
В файле convertible_textureLayers2 .mb имеется описанная только что сцена. Кроме возможности изменения текстур или показа разных объектов на различных слоях, слои позволяют раздельно визуализировать части сцены. Давайте создадим отдельные проходы визуализации для бликового и диффузного тонирования кабриолета. Откройте сцену convertible_renderPresets .mb с прилагаемого CD. 2. 3.
Выделите в иерархической структуре все объекты и источники света. В редакторе слоев визуализации ( r e n d e r Layer Editor) выберите пункт меню Layers => Create Layer From Selected (Слои => Создать слой из выделенного).
4.
В редакторе слоев визуализации выберите новый слой, .который называется layerl. Щелкните на нем правой кнопкой мыши и в появившемся контек стном меню выберите пункт Presets => Specular (Предустановленные => Блик). Обратите внимание на пиктограмму слева от надписи layerl — ее текст стал красного цвета, а это означает, что для этого слоя разрешены про ходы визуализации.
5.
В редакторе слоев визуализируйте изображение для камеры renderCam при выделенном слое layerl. В окне должна появиться модель автомобиля с бликовой подсветкой, как показано на рис. 13.18.
Рис. 13.18. Визуализация толь ко бликового прохода 6.
Повторите процесс, но на этот раз выберите пункт Presets => Diffuse (Предустанов ленные => Диффузия).
7.
Снова визуализируйте сцену при выбранном слое Lауеr2. Появится изображение со значениями диффузии данного тонера.
Существуют следующие предустановленные настройки визуализации: Luminance Depth (Глубина яркости), Occlusion (Затемнение), Normal Map (Карта нормалей), Geometry Matte (Маскирование форм), Diffuse (Диффузия), Specular (Блик) и Shadow
(Тень). Описание каждого параметра визуализации приведено ниже.
Основы визуализации
537
Luminance Depth (Глубина яркости). Визуализируется полутоновое изображение, за висимое от удаленности от камеры. Это похоже на визуализацию с глубиной по оси Z и может использоваться для определения позиций трехмерных геометрических форм в двухмерной композиции. На визуализацию изображения могут оказывать влияние на стройки плоскостей отсечения камеры. Occlusion (Затемнение). Для визуализации нужна система mental ray. Фактически выбор этого набора автоматически настраивает слой на использование системы визуали зации mental ray. Кроме того, геометрической форме на слое назначается поверхностный тонер с узлом окружающего затемнения. Это зачастую используется для черновых про ходов или как альтернатива окончательной сборке. Normal Map (Карта нормалей). Визуализирует информацию карты норма лей, позволяющей применять информацию о нормалях моделей с высоким разрешением к моделям с более низким разрешением. Карты нормалей широко приме няются в современных высококачественных видеоиграх, позволяя полигональным моде лям с низким разрешением выглядеть весьма подробно. Geometry Matte (Маскирование форм). Геометрическая форма на слое визуализиру ется как маска для композиции. Diffuse (Диффузия). Геометрическая форма визуализируется только со значениями диффузии, без теней или бликовой подсветки. Specular (Блик). Визуализируется только бликовая подсветка геометрической фор мы. В данном случае каналы прозрачности не визуализируются, поскольку, как и следо вало ожидать, этот слой будет наложен на слои цвета и (или) диффузии. При этом про ходе будут показаны также отражения, если они включены в тонере. Это имеет смысл, поскольку технически бликовая подсветка представляет собой один из типов диффузно го отражения. Shadow (Тень). Визуализируются только тени. Тени видны в канале прозрачности визуализированного изображения. Объект можно назначать нескольким слоям, и каждый из этих слоев может иметь один из предустановленных наборов значений, а результирующее изображение может быть скомбинировано в программе редактирования изображений или в программе для работы с композициями (при создании всех этих слоев проходов визуализации возмож ность дублирования слоев весьма удобна). Более того, для каждого из предустановлен ных слоев можно назначить другие настройки визуализации, доступные в окне render Settings (Параметры визуализации). Иначе говоря, для визуализации прохода с затем нением можно использовать систему mental ray, а затем применить программную визуа лизацию Maya для прохода с диффузией и т.д. Если вы хотите иметь меньше слоев (и меньше работы с ними), укажите Maya на необходимость визуализировать данный слой с несколькими проходами. Для этого щелкните правой кнопкой мыши на слое и выбери те в появившемся контекстном меню пункт Attributes (Атрибуты). В появившемся окне редактора атрибутов откройте раздел render Pass Options (Параметры проходов визуа лизации) и выберите все параметры, которые необходимо использовать при визуализа ции данного слоя: Beauty (Красиво) (здесь собраны все элементы), Color (Цвет) (информация о цвете), Diffuse (Диффузия) (отражающие и неотражающие области, свет и цвет), Specular (Блик) (информация о бликовой подсветке) и Shadow (Тень) (чтобы создать тени на отдельном проходе). Рассмотрим предыдущий пример еще раз.
Глава 13
538 1.
Выберите слой layer1 из предыдущего примера (слой, для которого ис пользован набор Specular (Блик)). Или откройте файл c o n v e r t i b l e _ renderPresets2 . mb с прилагаемого CD и выберите слой layer1.
2.
Обратите внимание на то, что при добавлении предустановленного набора настроек пиктограмма окна render Settings рядом с пиктограммой данного слоя визуализации изменяется — на ней появляется красная метка. Щелкни те на пиктограмме слоя layer1. Откроется окно render Settings (Параметры визуализации), в котором рядом со списком систем визуализа ции появляется оранжевый текст render Using. Выберите систему визуа лизации mental ray.
3.
На вкладке mental ray в окне render Settings выберите пункт Preview (Предварительный просмотр) из списка Quality Presets (Предустановленное качество). (Система mental ray рассматривается в следующей главе.)
4.
Щелкните на пиктограмме окна render Settings для слоя Lауеr2. Окно render Settings (Параметры визуализации) откроется или обновится, если оно уже было открыто. В списке систем визуализации выберите пункт Maya Software (Программная визуализация). Вверху вкладки Maya Software окна render Settings выберите пункт Intermediate Quality (Среднее качество) ме ню Quality Presets (Предустановленное качество).
5.
При открытом окне render Settings (Параметры визуализации) переключи тесь в редакторе слоев между слоями Layer1 и Lауег2. При переключении окно render Settings обновится, и в нем отобразятся соответствующие на стройки для каждого слоя. Это означает, что для одной сцены можно исполь зовать несколько вариантов настройки визуализации.
6.
Щелкните на главном слое, чтобы открыть окно render Settings (Параметры визуализации), в котором обновятся вкладки для всех четырех типов систем визуализации. Здесь также показаны настройки, которые не применены к данным слоям визуализации.
Настройки переопределения параметров render Settings (Параметры визуализации) для не скольких слоев остаются согласованными. Иначе говоря, невозможно создать две версии на строек системы визуализации mental ray или программной визуализации для двух разных слоев. Одно из главных преимуществ использования слоев визуализации — почти неогра ниченная гибкость. Можно создавать неограниченное количество слоев для объектов на сцене и их композиционных проходов. В дополнение к этому тонирование в окнах openGL Shading (Тонирование openGL) обновляется и позволяет предварительно про смотреть, что будет визуализироваться при этом проходе. Чтобы назначить слою отдель ную систему визуализации (mental ray или аппаратную визуализацию), не полагаясь на использование предустановленных наборов настроек, откройте окно параметров визуа лизации данного слоя, щелкнув на пиктограмме render Settings (Параметры визуализа ции), а затем щелкнув правой кнопкой мыши на надписи render Using. В контекстном меню выберите пункт Create Layer Override (Создать переопределение для слоя), а затем выберите систему визуализации из меню render Using (Используемая система визуали зации). Текст render Using станет оранжевым — это указывает на то, что для данного слоя установлено переопределение.
Основы визуализации
539
Не забывайте, что слои представления действительно влияют на объекты в слоях визуали зации. Если есть объект, назначенный одновременно слою представления и слою визуали зации, и видимость слоя визуализации отключена, то данный объект будет невидимым при переключении на слои визуализации. Кроме того, пока слой представления отключен, этот объект также не будет визуализироваться. Это означает, что перед началом визуализации, или если объект, который должен находиться на слое визуализации, не обнаруживается в области просмотра, следует тщательно проверить слои представления. Теперь, имея представление о том, что можно делать со слоями визуализации, рас смотрим их работу. Читатели, должно быть, заметили, что в первый раз при создании но вого слоя визуализации в редакторе слоев фактически появились два слоя: новый и главный. Главный слой всегда включен, независимо от того, используются ли слои ви зуализации. Он скрыт, когда другие слои не представлены, и появляется в редакторе сло ев только тогда, когда создается новый слой визуализации. Обратите внимание на то, что поле рядом с надписью Master Layer (Главный слой) пусто. В редакторе слоев в поле ря дом с пиктограммой нового слоя отображается буква R. Она означает, что слой является визуализируемым (R — renderable — визуализируемый). Как только начинается визуа лизация, в каталоге изображений автоматически создаются подкаталоги, которые име нуются по слоям визуализации (и каждый проход, если их несколько, создает их для данного слоя). Изображения из слоя визуализации помещаются в соответствующий подкаталог. По умолчанию главный слой не является визуализируемым, если были соз даны другие слои визуализации. Но его можно сделать таковым, выбрав пустое поле ря дом с его пиктограммой. Главный слой содержит все объекты сцены. Это исходная точка, относительно кото рой Майя вычисляет различия в других слоях. Если использовать множество схем осве щения и вариаций объекта, каждая из которых связана с отдельным слоем визуализации, то визуализация главного слоя может оказаться уродливой. Именно поэтому визуализа ция главного слоя по умолчанию отключена. Следует отметить, что главный слой в ре дакторе слоев не имеет пиктограмм параметров, а щелчок правой кнопкой мыши на нем не приводит к появлению контекстного меню. Великолепной возможностью Майя 8, позволяющей сэкономить время, является способность повторной визуализации слоев. Предположим, что не обходимо создать пять слоев визуализации, каждый из которых визуализируется в три прохода (скажем, один — для диффузии, второй — для бликов, третий — для теней). При запуске визуализации сцены Майя придется создать 15 изображений (5 х 3) и сохранить их. Если делать это при каждой повторной визуализации сцены, особенно при внесении незначительных изменений на одном из слоев, то чрезмерные затраты времени станут вполне очевидными. Отметив слои для повторного использования (recycling), можно проинструктировать Майя пропускать их при повторной визуализации сцены, экономя тем самым время. В данном примере, если отметить четыре слоя из пяти, то для новой версии сцены повторно визуализировать придется только три изображения. Чтобы включить возможность повторного использования для определенного слоя визуализа ции, установите флажок повторного использования (пиктограмма с двумя изогнутыми стрелками на рис. 13.17). Если пиктограмма зеленого цвета, слой будет использован по вторно; если красного, то он будет визуализирован заново. Реальная мощь слоев визуализации проявляется в предоставлении пользователю возможности настраивать визуализацию отдельных слоев. Это осуществляется с помо щью переопределений. Ранее уже было продемонстрировано переопределение настроек
Глава 13
540
окна render Settings (Параметры визуализации). Теперь рассмотрим переопределение материалов и атрибутов. 1.
Откройте файл c o n v e r t i b l e _ m a t e r i a l O v e r r i d e s . mb с прилагаемого CD.
2.
В окне Outliner (Иерархическая структура) выделите группу кабриолета и все источники света.
3.
Открыв в редакторе слоев параметры слоя визуализации, выберите пункт меню Layers => Create Layer From Selected (Слои => Создать слой из выделен ного). Проделайте это дважды (или выберите пункт меню Layers => Copy Layer (Слои => Копировать слой) для дублирования первого слоя), чтобы по лучить два новых слоя визуализации и главный слой.
4.
Откройте гипершейдер, щелкнув на пиктограмме сферы рядом с пиктограм мой слоя Lауег2 в редакторе слоев. Оставьте слой Lауег2 выделенным в редакторе слоев.
5.
Найдите тонер r e f l e c t i o n S h a d e r .
6.
В гипершейдере щелкните правой кнопкой мыши на пиктограмме тонера отра жения и в появившемся контекстном меню выберите пункт Assign material Override For Iayer2 (Применить переопределение материала для слоя Lауег2), как показано на рис. 13.19. При этом один и тот же тонер назначается всем объек там на данном слое визуализации. Этот метод можно использовать для создания прохода отражения всех объектов в определенном слое. Обратите внимание: пик тограмма сферы в редакторе слоев стала голубой. Если теперь щелкнуть на ней, то откроется редактор атрибутов для тонера, назначенного данному слою.
Рис. 13.19. Выбор в гипершейдере пункта Assign material Override For Iayer2 Переопределения можно комбинировать так, чтобы слой имел и переопределение набора настроек Specular с выбранной системой визуализации и переопределение материала с собственными настройками отражения. Иногда такой подход срабатывает лучше, иногда хуже. Предустановленный набор настроек Diffuse по своей природе не визуализирует от ражения независимо от переопределения материала, примененного к слою.
Основы визуализации
541
7.
Выделите на автомобиле передние фары.
8.
В редакторе атрибутов выберите пункт меню Layers => Create Layer From Selected (Слои => Создать слой из выделенного).
9.
В редакторе слоев должен появиться слой LауегЗ. Дважды щелкните на его пикто грамме и в появившемся окне введите glow (свечение).
10. Щелкните правой кнопкой мыши на пиктограмме этого слоя и в появившемся кон текстном меню выберите пункт Create New material Override (Создать новое пере определение материала). Это еще один способ создания переопределений с исполь зованием предварительно установленных переопределений материалов. В списке выберите пункт surface Shader (Поверхностный тонер). 1 1 . В редакторе слоев щелкните на голубой сфере, чтобы появились атрибуты для ново го поверхностного тонера. Измените параметр Out Color (Исходящий цвет) на жел тый. Передвиньте ползунок Out Glow Color (Исходящий цвет свечения) к темносерому цвету. 12. Визуализируйте сцену с помощью камеры renderCam. Теперь есть отдельный слой для светящихся фар автомобиля. Переопределения можно также создавать для атрибутов каждого слоя. Это удобно при раздельной визуализации размытости движущихся объектов, отбрасывания тени, видимости в отражении и т.д. Давайте рассмотрим это на примере. 1. Откройте файл convertible_AttributeOverrides. mb с прилагаемого CD. 2.
В окне Outliner (Иерархическая структура) выделите геометрические формы и источники света, а в редакторе слоев выберите пункт Create Layer From Selected (Создать слой из выделенного).
3.
Выполните быструю визуализацию и проверьте, отбрасывает ли автомобиль тень на землю.
4.
Щелкните на пиктограмме с флажком рядом с пиктограммой нового слоя, чтобы открыть его в редакторе атрибутов. Отобразится список переопределений.
5.
В редакторе атрибутов выберите пункт меню Override For Casts Shadows (Переопределение для отбрасывания теней). В окне Casts Shadows (Отбрасывание теней) щелкните на галочке, чтобы очистить окно.
6.
Еще раз выполните визуализацию при выбранном в редакторе слоев слое layer1. Теперь автомобиль не отбрасывает тени.
Опробуйте другие настройки в переопределениях атрибутов слоя layer1. Различные уровни переопределения, доступные с помощью предустановленных наборов настроек, переопределений материалов и атрибутов, позволяют точно настроить визуализацию для оптимальной композиции. Прежде чем будет выработан рабочий процесс, придется попрактиковаться. Главный принцип — аккуратность, поскольку все эти подкаталоги и последовательности изображений очень скоро могут заполнить жесткий диск. Немного попрактиковавшись, можно заметить, что предустановленные наборы на строек на самом деле являются комбинациями переопределений материалов и атрибу тов. Вполне можно создавать собственные предустановленные наборы настроек. Попро буйте скомбинировать для объектов на слое переопределение материала и какие-нибудь специальные переопределения атрибутов. Затем щелкните правой кнопкой мыши на
Глава 13
542
пиктограмме слоя и выберите пункт меню Presets => Save Preset (Предустановленные => Сохранить набор). Задайте имя и сохраните набор. Создайте новый слой с какими-либо объектами и снова откройте меню Preset. В нем должен отобразиться только что создан ный и готовый к применению предустановленный набор настроек.
Визуализация для Photoshop Пользователи Adobe Photoshop обнаружат, что слои визуализации аналогичны слоям Photoshop. Это не случайно. На самом деле слои визуализации оснащены неко торыми общеизвестными режимами комбинирования, которые имеются в таких паке тах, как Adobe Photoshop и After Effects. Существуют следующие режимы: Normal (Обычный), Lighten (Освещение), Darken (Затемнение), Multiply (Умножение), Screen (Экран) и Overlay (Наложение). Эти режимы определяют то, как пиксели на визуали зируемом слое взаимодействуют с пикселями слоев, лежащих ниже. Следующее уп ражнение познакомит читателя с возможностью визуализации непосредственно на слои Photoshop. 1. Откройте файл l a y e r M o d e s . mb с прилагаемого CD. 2.
Откройте редактор слоев и переключитесь на слои визуализации. Здесь можно увидеть главный слой и еще пять слоев.
3.
Пощелкайте на слоях. Как можно заметить, каждый слой содержит полуша рие. Фон также имеет собственный слой.
4.
Развернув меню над слоями в редакторе слоев, можно заметить перечень ре жимов комбинирования. Каждому слою назначен свой режим. Для нагляд ности каждый слой назван по имени режима, в котором он находится.
5.
В меню Options (Параметры) редактора слоев выберите пункт render All Layers (Визуализировать все слои). Откроется окно с тремя пунктами: Composite
Layers (Комбинировать слои), Composite A n d
Keep
Layers
(Комбинировать и сохранять слои) и Keep Layers (Сохранять слои). Выбе рите пункт Composite A n d Keep Layers.
6.
Щелкните на кнопке Apply A n d Close (Применить и закрыть). Убедитесь, что в окне параметров установлен флажок рядом с параметром render All Layers (Визуализировать все слои).
7.
Откройте окно render View (Вид визуализации), визуализируйте текущий кадр, установите флажок render All Layers (Визуализировать все слои) в меню render (Визуализировать). Как можно заметить, каждый слой визуа лизируется по отдельности, а затем все слои визуализируются вместе.
Каждому слою задан собственный режим, т.е. пиксели, составляющие каждый слой, скомбинированы с нижележащим слоем с помощью такой операции, как умножение (multiply) или экран (screen). Параметр Composite And Keep Layers (Комбинировать и сохранять слои) в редакторе слоев позволяет сохранить каждый слой отдельно в окне визуализации, при этом последнее изображение объединяет все слои. В окне render View (Вид визуализации) можно сохранить скомбинированное изображение или слои в файле Photoshop; но в этом файле такая композиция не будет разделена на слои. Удо стоверьтесь, что слои будут создаваться по отдельности, для этого при пакетной визуа лизации необходимо задать формат изображения PSD Layered (psd).
Основы визуализации
543
В редакторе слоев можно изменить порядок слоев. Выделите слой и с помощью средней кнопки мыши перетащите его вверх или вниз. Объект на сцене не сдвинется, но порядок, в котором комбинируются слои, изменится.
Пакетная визуализация Пакетная визуализация (batch rendering) представляет собой процесс, при котором Майя получает сцену и последовательно визуализирует каждый файл, создавая либо по следовательность изображений, либо файл фильма. Как уже упоминалось, практически всегда имеет смысл создавать последовательность изображений, а не визуализировать непосредственно в файл фильма. Параметры пакетной визуализации устанавливаются на вкладке C o m m o n (Общие) окна render Settings (Параметры визуализации). Стоит еще раз отметить: прежде чем начать пакетную визуализацию, уделите внимание именованию изображений, позиции но мера файла изображения и расширению. Определите, где на диске будут сохраняться изо бражения. Пакетная визуализация может занимать длительное время и создавать большое количество файлов. Необходимо убедиться, что на диске имеется достаточно свободного пространства, что для окончательных файлов задан правильный формат именования и ме сто сохранения, поскольку впоследствии к ним может понадобиться вернуться. Для начала пакетной визуализации перейдите к набору меню визуализации и выбе рите пункт render => Batch render (Визуализация => Пакетная визуализация). Параметры пакетной визуализации просты. Можно выбрать количество используемых процессоров, если машина имеет их несколько. Можно также выбрать параметр Use All Available Processors (Использовать все доступные процессоры) и позволить Майя автоматически использовать все доступные ресурсы. Сразу после начала пакетной визуализации можно наблюдать ход процесса в редакторе сценариев или строке ответа. В панели истории редактора сценариев можно выяснить время визуализации каждого кадра, а также другие статистические данные. Кроме того, редактор сценариев помогает выяснить причину аварийного завершения визуализации. Выбрав пункт Show Batch render (Показать пакетную визуализацию) в меню render (Визуализация), можно посмотреть последний визуализированный кадр. В результате откроется окно вида ви зуализации, отображающее текущий кадр. После записи на диск нескольких кадров рекомен дуется проверить это окно и убедиться, что визуализируется именно то, что нужно. По окончании пакетной визуализации можно просмотреть последовательность изо бражений. Для этого необходимо запустить утилиту FCheck или другую программу для просмотра изображений, выбрав пункт меню File => View Sequence (Файл => Просмотреть последовательность). Если выполняется визуализация в формате Photoshop со слоями, то файл Photoshop должен появиться в каталоге изображений. Этот файл должен содержать все слои визуа лизации в виде отдельных слоев Photoshop. Настройки режимов смешения также долж ны сохраниться.
Основной контрольный список визуализации Ниже приведен пример контрольного списка (checklist), который можно использо вать при подготовке к пакетной визуализации сцены. Повесьте его перед глазами или просмотрите вместе с коллегой или помощником, прежде чем запустить пакетную ви зуализацию.
Глава 1 3
544
1.
Проверьте систему визуализации: программную визуализацию (Maya Software), ап паратную визуализацию (Maya Hardware), mental ray, векторную визуализацию.
2.
Настроена ли анимация на визуализацию последовательности или на отдельные кадры?
3.
Правильно ли указаны числовые значения границ диапазона кадров?
4.
Правильно ли задан порядок именования файлов? Проверьте дополнение имени кадра.
5.
Выбран ли верный формат файла?
6.
Будут ли визуализироваться вместе с файлами каналы прозрачности и глубины?
7.
Правильно ли выбрана камера или группа камер для визуализации?
8.
Будут ли файлы записываться в нужный каталог или каталоги?
9.
Будут ли использоваться слои визуализации? Если да, то правильно ли они настрое ны и верно ли назначены объекты?
10. Правильно ли выбрано разрешение? 1 1 . Правильно ли выбраны настройки для необходимого качества (сглаживание краев, порог контрастности, трассировка лучей и т.д.)?
изображения
12. Нужно ли перенумеровать последовательность кадров? 13. Включен ли источник света по умолчанию? 14. Для тех ли объектов на сцене настроена размытость? Привычка просматривать этот контрольный список каждый раз перед запуском па кетной визуализации позволит избежать досадных недоразумений.
Резюме Теперь читатели должны понимать концепцию визуализации и методику использо вания встроенных инструментов Maya для создания изображений и последовательно стей изображений на основе поставленных сцен. В данной главе рассматривалось созда ние и анимация камер, установка разрешения и настройка параметров во вкладке Common (Общие) окна render Settings (Параметры визуализации). Здесь также описано примене ние программной, аппаратной и векторной визуализации, а также использование слоев ви зуализации при создании композиций. Наконец, в главе были описаны некоторые эффек ты, которые можно создавать с помощью размытости и глубины резкости. В следующей главе рассматривается визуализация с помощью системы mental ray — еще одного средства, которое можно использовать при создании изображений в Maya. Многие обсуждаемые в главе принципы применимы к материалу следующей главы, они помогут разобраться с системой mental ray.
Улучшенная визуализация с помощью mental ray Система mental ray представляет собой приложение для фотореалистичной визуали зации, которое создает физически корректную модель света, размытости, тумана, глуби ны резкости, солнечных зайчиков и т.д. Система mental ray — передовой программный продукт для визуализации профес сиональных рекламных роликов и важный компонент кинопромышленности. Кроме то го, это еще один способ визуализации, который полностью интегрирован с Maya лишь в версии 8.5. Этот продукт использовался для создания ряда фантастических и ультрареа листичных кадров в таких фильмах, как трилогия "Матрица" (The Matrix), "Братья Грим" (The Brothers Grimm), "Посейдон" (Poseidon), "Халк" (The Hulk), "Терминатор-3" (Terminator 3) и др. В этой главе рассматриваются следующие темы. •
Введение в mental ray
•
Изучение параметров визуализации
•
Специальные тонеры mental ray
•
Источники света, тени и туман
•
Размытость в mental ray
•
Непрямое освещение
•
Освещение, основанное на анализе изображений, и HDRI
•
Аппроксимация поверхностей и карты смещений
Введение в mental ray Автономный программный пакет mental ray (как и многие другие пакеты для работы с трехмерной графикой) интегрирован в Maya и обеспечивает пре восходное качество изображений и реалистичные видеоэффекты. Система mental ray ви зуализирует файлы сцен таких кинематографических систем, как Maya, в файлы собствен ного формата с расширением . mi. Это значит, что когда Maya вызывает систему mental ray, текущая сцена Maya преобразуется в сцену mental ray; этот процесс можно контролировать в редакторе сценариев или на панели ответа командной строки. Однако не все возможности Maya поддерживаются в системе mental ray, и визуализация выполняется не так, как с по мощью программной визуализации Maya. Например, применение тонеров дает другие ре зультаты, триангуляция объектов — тоже иная. Кроме того, система mental ray не поддер живает штрихи системы Paint Effect, если они не преобразованы в трехмерные объекты.
546
Глава 14
Карты нормалей, аппаратная визуализация и объемный мех— все это новые средства Майя 8 и 8.5. На рис. 14.1 представлены параметры визуализации систем mental ray.
Puc. 14.1. Окно render Settingsсердце системы mental ray. Это главный пункт управления всеми ее возможностями Так что же такое mental ray? Это отдельная программа со своими ограничениями и собственными файлами? Все это как то непонятно. На самом деле ничего сложного здесь нет, поскольку Майя сама выполняет все преобразования незаметно для пользователя. Все, что нужно знать, — как в Майя выбрать систему mental ray и запустить визуализа цию. Хотя система mental ray накладывает некоторые ограничения, преимущества зна чительно их превосходят. Система mental ray для Maya обычно загружается по умолча нию. Если это не так, то выберите пункт меню W i n d o w => Settings/Preferences => PIug-in Manager (Окно => Параметры/Предпочтения => Диспетчер дополнений) и в появившемся окне диспетчера загрузите систему mental ray, выбрав файл Mayatomr. mll. Чтобы выбрать систему mental ray для визуализации, откройте окно render Settings (Параметры визуализации), щелкнув на пиктограмме в строке состояния или воспользо вавшись пунктом меню Window => rendering Editors => render Settings (Окно => Редакторы визуализации => Параметры визуализации). В раскрывающемся списке render Using (Используемая система визуализации) выберите пункт mental ray (рис. 14.1). В резуль тате рядом с вкладкой C o m m o n (Общие) откроется вкладка mental ray, которая позволя ет задействовать визуализацию с помощью системы mental ray. Еще один простой способ задействования системы mental ray заключается в исполь зовании раскрывающегося списка в панели render View (Вид визуализации), которая показана на рис. 14.2.
Рис. 14.2. Панель render View. Раскрываю щийся список render позволяет выбирать системы визуализации Майя
547
Улучшенная визуализация с помощью mental ray
Систему визуализации mental ray можно легко установить в качестве используемой по умолчанию. 1. Откройте окно Preferences (Предпочтения), выбрав пункт меню W i n d o w => Settings/ Preferences (Окно => Параметры/Предпочтения). 2.
В списке Categories (Категории) выберите пункт rendering (Визуализация), а затем выберите пункт mental ray в раскрывающемся списке Preferred renderer (Предпочти тельная система визуализации), как показано на рис. 14.3.
Рис. 14.3. Облегчите себе жизнь, ус тановив mental ray в качестве сис темы визуализации, используемой по умолчанию Система mental ray обеспечивает высокую степень контроля над процессом визуали зации. Окно render Settings (Параметры визуализации) позволяет управлять настрой ками визуализации, а с помощью множества других средств (вкладок и разделов) можно дополнительно настраивать отдельные атрибуты объектов, источников света и т.д. В этой главе рассматривается большинство этих средств и атрибутов.
Изучение параметров визуализации В окне render Settings (Параметры визуализации) доступны все средства управле ния визуализацией с помощью системы mental ray. Общие атрибуты, такие как формат изображений, разрешение и дополнение кадров, устанавливаются на вкладке C o m m o n (Общие); в данном случае эта вкладка работает так же, как и для других встроенных в Maya систем визуализации. Вкладка mental ray в окне render Settings — это душа и сердце системы mental ray. Здесь можно управлять качеством изображения, размытостью, непрямым освещением и многими другими параметрами. В следующем разделе подробно описаны как основные возможности, так и способы их применения. Выработайте привычку отключать при работе с mental ray используемый по умолчанию ис точник света. Это делается на вкладке Common (Общие) окна render Settings (Параметры визуализации). Необходимо обеспечить полный контроль над освещением, без всяких "стандартных" источников света, влияющих на визуализацию.
Средства визуализации Новый раздел rendering Features (Средства визуализации) вкладки mental
ray
окна
Render
Settings
(Параметры
визуализации),
представлен
ный на рис. 14.5, позволяет быстро откорректировать общие настройки визуализации. Переключатель первичной системы визуализации (Primary renderer) контролирует об щее качество и скорость визуализации. Режим визуализации Scanline (Построчно) —
548
Глава 14
"самый дешевый", он может использоваться, когда на сцене мало движений и нет отра жающих или преломляющих поверхностей. Режим растрирования ( r a s t e r i Z e r ( r a p i d Motion)) предназначен для сцен с быстрыми движениями (но без отражений или пре ломлений), в то время как трассировка лучей ( r a y t r a c i n g ) учитывает преломляющие и отражающие поверхности, но ценой существенного замедления визуализации.
Рис. 14.4. Раздел вкладки mental ray
rendering Features
Хотя параметры первичного процессора визуализации устанавливаются в верхней части, элементы управления режимом трассировки частей сцены, которые нуждаются в этом, устанавливаются ниже. Для этого предназначен флажок r a y t r a c i n g (Трассировка лучей) части Secondary Effects (Вторичные эффекты). Здесь расположены также флаж ки Final Gathering, Caustics (Солнечные зайчики) и Global Illumination (Глобальное ос
вещение), обсуждаемые далее в этой главе. В нижней части можно также установить приведение теней. Если флажок Shadows (Тени) установлен, появляется возможность управлять размытием с помощью переключателя Motion Blur (Размытие). Пункт Off от ключает размытость, при выборе пункта No Deformation (Без деформаций) процессор визуализации попытается сохранить форму поближе к исходной, в то время как пункт Full (Полная) обеспечит для размытости полной учет искаженных геометрических форм при быстрых движениях, но может увеличить время визуализации.
Раздел Anti-Aliasing Quality Раздел Anti-Aliasing Quality (Качество сглаживания) вкладки mental ray окна render Settings (рис. 14.5) позволяет контролировать качество изображения, указывая цветовые значения для каждого пикселя на фазе визуализации. Сглаживание достигается за счет дискретизации цветов внутри определенной области, их сравнения со значением порога контрастности и, наконец, фильтрации результата, что обеспечивает плавные переходы от одной цветовой области к другой. Если область на сцене должна быть помещена внутрь пространства одного пикселя, то можно использовать только одно цветовое значение. Однако на сцене может быть множество цветов, представляющих пространство этого пикселя. Параметры Sampling (Дискретизация) и Contrast Threshold (Порог контрастности), которые находятся в раз-
Улучшенная визуализация с помощью mental ray
549
деле Anti-Aliasing Quality (Качество сглаживания), задают способ сравнения цветов на уровне ниже одного пикселя, обеспечивая выяснение значения цвета для каждого пиксе ля, что в результате позволяет добиться точной визуализации с высоким качеством сглаживания.
Pиc. 7 4 . 5 . Раздел Anti-Aliasing Quality
обеспечивает доступ к большинству параметров, позволяя корректиро вать сглаживание тонеров при ви зуализации Некоторые возможности системы mental ray, такие как реалистичная глубина резкости, требуют чрезвычайно высоких значений дискретизации, а потому визуализация начинает занимать большой объем памяти.
Раздел raytrace/Scanline Quality В этом разделе находятся параметры управления точностью определения цветов пик селей в системе mental ray. При адаптивной дискретизации (режим Adaptive Sampling установлен по умолчанию) система mental ray корректирует процесс дискретизации (выборки значений цветов) на основании требований сцены. Используя ползунок Мах Sample Level (Максимальный уровень дискретизации), можно экспоненциально кор ректировать процесс дискретизации; установка ползунка в позицию 2 обеспечивает ми нимум одну и максимум шестнадцать выборок на пиксель. При фиксированной дискре тизации ползунок Max Sample Level задает точное количество выборок на пиксель. В режиме Custom Sampling (Специальная дискретизация) ползунки Min Sample Level (Минимальный уровень дискретизации) и Max Sample Level (Максимальный уровень дискретизации) используются для установки минимального и максимального уровня дискретизации независимо друг от друга. При использовании адаптивной дискретизации
550
Глава 14
система mental ray использует значение минимального уровня для сравнения области с контрастным пороговым значением и выясняет, нужно ли произвести выборку на более высоком уровне или самом высоком уровне, заданным значением ползунка Мах Sample Level.
Уровень дискретизации экспоненциально увеличивает количество отбираемых фрагментов. При отрицательных значениях это называется недовыборка (infrasampling), т.е. количество учитываемых выборок меньше, чем количество имеющихся пикселей. При значении 0 для каждого пикселя осуществляется одна выборка. Значения больше нуля экспоненциально увеличивают количество фрагментов, отбираемых внутри про странства каждого пикселя; это называется перевыборка (oversampling), она обеспечива ет более высокое качество визуализации. Например, одна выборка (2 в степени 2) равна 4 выбираемым фрагментам, две выборки (степень 4) равны 16 фрагментам, три выборки (степень 6) — 64 фрагментам, и т.д., значение 2 всегда возводится n-ю степень, завися щую от количества выборок. Поскольку дискретизация является адаптивной, повышение нижнего уровня значительно увеличивает время визуализации и заставляет систему mental ray осуществить перевыборку областей, которые в противном случае требовали бы меньшего количества выборок. Лучше всего устанавливать низкое значение параметра Min Sample Level (Минимальный уровень дискретизации).
Раздел Contrast Threshold Параметры раздела Contrast Threshold (Порог контрастности) определяют, какой уровень дискретизации следует использовать между значениями Min Sample Level и Max Sample Level, используемыми для расчета значений цвета каждого пикселя. Эти на стройки работают как дозирующее устройство при сравнении контраста между двумя отобранными цветами (соседними отобранными фрагментами внутри области пикселя). Пока контраст между отобранными цветами превышает значения в разделе Contrast Threshold (иначе говоря, контраст больше разрешенного), система mental ray продолжа ет увеличивать уровень дискретизации для этой области вплоть до достижения значения Max Sample Level или пока отбираемые значения не окажутся в пределах Contrast Threshold.
Используя низкие значения в разделе Contrast Threshold, можно повысить качество. Чем ниже значение, тем больше время визуализации.
Раздел Multi-Pixel Filtering Параметры раздела Multi-Pixel Filtering (Многопиксельная фильтрация) позволяют обеспечить лучшее смешение или сглаживание пикселей. Это достигается за счет фильт рации кластера пикселей. Более высокие значения фильтрации означают использование более крупных кластеров пикселей, что приводит к большей размытости. Поэтому высо кие значения следует применять осмотрительно — они могут чрезмерно размыть изо бражение и замедлить визуализацию.
Раздел Sample Options Оба флажка, Sample Lock (Блокировка выборки) и Jitter (Дрожание), позволяют так управлять расположением фрагментов, чтобы такие дефекты, как полосы, шум или мер-
Улучшенная визуализация с помощью mental ray
551
цание, "растворились" в последовательностях изображений. Установка флажка Sample Lock заставляет систему mental ray отбирать одни и те же фрагменты, сокращая шум или мерцание. Установка флажка Jitter заставляет систему mental ray смещать расположение фрагмента. Это полезно для сокращения таких полос, как видимые переходы между зна чениями градиента. На практике при проверочной визуализации для параметра Min Sample Level реко мендуется использовать значение -2 и значение 0 — для параметра Max Sample Level. Установите все ползунки Contrast Threshold в значение 0.1 или выше и выберите зна чение Box Filtering (Фильтрация блоков) в раскрывающемся списке Filter (Фильтр) раз дела Multi-Pixel Filtering (Многопиксельная фильтрация). При реальной визуализации для параметров Min Sample Level и Max Sample Level
обычно выбирают значения между 0 и 2, а для параметра Contrast Threshold — значение между о. 1 и о . 05. Используйте многопиксельную фильтрацию (Multi-pixel Filtering) по Гауссу ( G a u s s ) или Митчелу (Mitchell). Если нет необходимости использования канала прозрачности, оставьте параметр Alpha Contrast (Контраст прозрачности) равным 1, чтобы предотвратить замедление визуализации. В раскрывающемся списке Quality Presets (Предустановленное качество), расположенном вверху окна render Settings (Параметры визуализации), можно увидеть, как Maya учитывает соответствующие зна чения для разных установок качества визуализации, от черновой до рабочей или высоко качественной.
Раздел raytracing Раздел r a y t r a c i n g (Трассировка лучей) окна render Settings (Параметры визуализа ции) предоставляет доступ к элементам управления, задающим и ограничивающим трас сировку лучей (рис. 14.6). По умолчанию система mental ray инициирует визуализацию по методу построчного сканирования.
Рис. 14.6. Раздел raytracing позволя ет оптимизировать трассировку лу чей во время визуализации. Правиль ные значения этих параметров позво ляют сократить время визуализации При визуализации методом построчного сканирования сцена преобразуется в двух мерную плоскость просмотра с точки зрения камеры, которая впоследствии использует-
552
Глава 14
ся для анализа цветовых значений каждой видимой точки в этой спроецированной плос кости просмотра. Визуализация методом построчного сканирования используется для сокращения за трат на вычисление трассировочных лучей, которые испускаются из камеры и проходят (распространяясь вокруг) по отражающим или преломляющим поверхностям сцены. Таким образом, сначала цвет каждой точки изучается с использованием алгоритма по строчного сканирования, и если обрабатываемый цвет требует изменения направления луча (как при отражении или преломлении), то инициируется трассировка луча. Когда трассировка завершается, система mental ray, продолжая процесс построчного сканиро вания, переходит к анализу значения цвета следующей точки.
Параметры ограничения трассировки лучей Теоретически трассировка лучей может продолжаться до бесконечности, если не установить для нее предел. Параметры Reflections (Отражения) и r e f r a c t i o n s (Преломления) определяют максимальное количество изменений направления одного луча. Эти параметры ограничивают количество лучей, которые можно использовать, что позволяет сократить издержки на визуализацию. Когда количество отражений луча дос тигает значения параметра reflections (Отражения), остальные отражения для данного лу ча не учитываются. Если существует окружающий тонер, то по достижении предела отра жений цвет его точки возвращается для отражения как результирующий. Параметр r e f r a c t i o n s (Преломления) ограничивает проникновение и изменение направления луча при его проходе через поверхность, кроме случаев, когда значение коэффициента преломления (Index Of refraction — I O R ) равно 1. Значение IOR, равное 1, рассматри вается как обычная прозрачность и визуализируется с использованием алгоритма по строчного сканирования, поскольку луч не изменяет своего направления при прохож дении сквозь объект. Параметр Max Trace Depth (Максимальная глубина трассировки) действует как об щее ограничение трассировки по сумме значений r e f l e c t i o n s (Отражения) и r e f r a c t i o n s (Преломления). Это значение ограничивает количество возможных отражений и пре ломлений одного луча. Например, если значение параметра Max Trace Depth (Максимальная глубина трассировки) равно 3, то любые комбинации отражения и пре ломления лучей ограничены 3 лучами (1 отражение, 2 преломления). Параметр Shadow Trace Depth (Глубина трассировки теней), подобно параметрам r e f l e c t i o n s (Отражения) и r e f r a c t i o n s (Преломления), ограничивает количество трассированных теней на сцене. При нулевом значении этого параметра тени не появляются, при значении 1 — тени по являются, при значении 2 или больше тени появляются также и в отражениях. Эти па раметры являются глобальными для сцены, но их также необходимо задавать локально. Для источника света, отбрасывающего трассированные тени, необходимо увеличить зна чение параметра r a y Depth Limit (Предельная глубина луча) в списке r a y t r a c e Shadow Attributes (Атрибуты трассированных теней) редактора атрибутов для источника света. Ползунки r e f l e c t i o n Blur Limit (Предел размытия отражения) и r e f r a c t i o n Blur Limit (Предел размытия преломления) определяют размытие при от ражении и преломлении. Чем выше их значения, тем более расплывчатыми выглядят от раженные или преломленные объекты при визуализации. Параметры других разделов окна render Settings (Параметры визуализации) обсуж даются позже, когда придет время использовать их.
Улучшенная визуализация с помощью mental ray
553
Специальные тонеры mental ray Корректировка тонеров для системы mental ray осуществляется двумя способами. Первый заключается в использования тех атрибутов системы mental ray, которые дос тупны в разделе mental ray вкладки соответствующего тонера Майя редактора атрибутов (рис. 14.7). Эти атрибуты позволяют точнее управлять тем, как тонеры Майя визуализи руются с помощью системы mental ray.
Puc. 14.7. Атрибуты mental ray для тонеров Maya — путь к мощным воз можностям системы mental ray, та ким как расплывчатые отражения и преломления
Другой способ корректировки тонеров для mental ray заключается в использовании библиотеки тонеров mental ray, содержащей коллекцию тонеров, текстур, утилит и т.д., — все это доступно во вкладке Create mental ray Nodes (Создать узлы mental ray) гипершейдера или в окне Create render Nod вкладку Create mental ray Nodes (Создать узлы mental ray), щелкните во вкладке Create (Создать) на пункте Create Maya Nodes (Создать узлы Майя) и выберите пункт Create mental ray Nodes (Создать узлы mental ray). Некоторые из этих дополнительных тоне ров предоставляют целый набор инструментов для создания эффектов визуализации, таких как рассеяние под поверхностью или контурная визуализация (создающая изо бражения, похожие на мультипликационные).
554
Глава 14
Применение специальной текстуры Тонеры mental ray можно использовать совместно с тонерами Maya и добиваться, та ким образом, уникального сочетания лучших качеств обоих видов тонеров. Например, для визуализации текстурного затемнения текстуру mental ray зачастую связывают с ка налом Ambient Color (Окружающий цвет) тонера Lambert или даже, что еще лучше, — с параметром Out Color (Исходящий цвет) на поверхностном тонере. Этот подход подроб нее описан в последующих упражнениях. Затемнение (occlusion) означает блокировку (заграждение) света, которая осуществляется в зависимости от расстояния между гео метрической формой, например ближайшими объектами и изгибами или изломами на поверхности. Располагаясь ближе, поверхности препятствуют прохождению света, соз давая эффект рассеянного света. Для помощи в создании карт затемнения Maya предос тавляет текстуру Occlusion (Затемнение) как параметр в предустановленном наборе Preset
Passes (Предустановленные проходы) в диспетчере
render
Layer Manager
(Диспетчер слоев визуализации) (см. главу 13, "Основы визуализации"). Проходы ви зуализации чрезвычайно эффективны для работы с композициями. Если применить за темнение при проходе для слоя визуализации, то Maya автоматически создаст поверхно стный тонер и свяжет текстуру Occlusion (Затемнение) с его параметром Out Color (Исходящий цвет), создав таким образом специальный тонер. Этот тонер можно будет найти в раскрывающемся меню окна гипершейдера при создании прохода Occlusion (Затемнение) из предустановленных наборов. В приведенной ниже инструкции рассмат ривается создание нескольких подобных связей. 1.
Откройте сцену o c c l u s i o n O 1 .mb с прилагаемого CD. В окне гипершейдера создайте текстуру mental ray Occlusion (Затемнение), выбрав пункт меню Create mental ray Nodes => Textures => mib_amb_occlusion (Создать узлы
mental ray => Текстуры => m i b _ a m b _ o c c l u s i o n ) . 2.
Перетащите с помощью средней кнопки мыши тонер Occlusion (Затемнение) на тонер Lambert1 (этот тонер используется по умолчанию) и выберите пункт ambientColor из контекстного списка. Установите для тонера Lambert1 белый цвет.
3.
Визуализируйте сцену (используя процессор визуализации mental ray); об ратите внимание на то, что, поскольку источники света не использовались, здесь видна только работа тонера. Этот тонер затемняет ближайшие объекты в зависимости от значений затемнения, заданных текстурой Occlusion (Затемнение). Для повышения качества (и очистки изображения) увеличьте количество выборок (параметр S a m p l e s ) в текстуре m i b _ a m b _ o c c l u s i o n l . Попробуйте задать значение 64 и выполните визуализацию. Результаты по казаны на рис. 14.8. Этот полутоновый результат визуализации может быть наложен поверх "нормального" (с использованием умножения, мягкого света или другого режима наложения), чтобы создать изображение с мягким об щим освещением.
4.
Удалите текстуру Occlusion (Затемнение) и примените ко всем объектам но вый тонер Lambert. В редакторе слоев визуализации создайте новый слой ви зуализации и примените его ко всем объектам. (Подробно о редакторе слоев визуализации см. в главе 13, "Основы визуализации".) Щелкните правой кноп кой мыши на новом слое (но не m a s t e r L a y e r ) и в появившемся контекстном
Улучшенная визуализация с помощью mental ray
555
меню выберите пункт Presets => Occlusion (Предустановленные => Затемнение). В окне гипершейдера должна появиться новая сеть тонирования, связывающая текстуру затемнения с параметром Out Color (Исходящий цвет) поверхностно го тонера. Изучите эту сеть, чтобы понять, как можно откорректировать дан ную текстуру вручную, аналогично описанным выше шагам.
Рис. 14.8. Поразительное изящество окружающего затемнения делает результаты визуализации более эстетичными и интересными Документация системы mental ray содержит подробную информацию о большинстве тоне ров mental ray. Связями с текстурами mental ray можно управлять точно так же, как и текстурами Maya, поэтому они просты в применении. Существует одно отличие в способе примене ния тонеров mental ray к объекту. На рис. 14.9 показаны два механизма тонирования, связанных с тонерами Maya и mental ray. Механизм тонирования (shading engine) пред ставляет собой узел, который управляет связями между объектами и материалами. То неры Maya и mental ray имеют отдельные связи с механизмом тонирования, а следова тельно, могут соединяться с ним одновременно; однако во время визуализации специфи ческие тонеры mental ray затирают тонеры Maya.
Применение специального тонера Чтобы перейти к панели Create mental ray Nodes (Создать узлы mental ray), в окне гипершейдера щелкните на панели Create (Создать) и в появившемся кон текстном меню выберите пункт Create mental ray Nodes (Создать узлы mental ray). Соз-
556
Глава 1 4
дайте любое количество тонеров mental ray и изучите их свойства. Очевидно, что они от личаются от тонеров Maya. Они позволяют контролировать только цвет диффузии, ок ружение и, в зависимости от тонера, несколько дополнительных атрибутов тонеров.
Рис. 14.9. Специальные тонеры mental ray, связанные с механизмом тонирования Maya. Эти связи отличаются от связей Maya Тонеры mental ray значительно отличаются от тонеров Maya и не позволяют управлять всеми параметрами, которые определяют поверхность во время ви зуализации, такими как Transparency (Прозрачность), r e f l e c t i o n (Отражение) и r e f r a c t i o n (Преломление). Чтобы можно было использовать эти параметры, они должны быть связаны определенным образом. Узел Shading Engine (Механизм тонирования) на рис. 14.9, слева демонстрирует типичную схему связи тонера Phong системы mental ray с узлом r e f l e c t i v e (Отражающий) (узел mental ray Sample Compositing), который связан с механизмом тонирования. Механизмы тонирования создаются по умолчанию для каждого нового тонера и обозначаются буквами SG (Shading Group — группа тони рования) с дополнительным префиксом, соответствующим типу тонера, например LambertSG2. Чтобы изучить эти связи в окне гипершейдера, откройте сцену shader .mb с прилагаемого CD. Эта сцена имеет несколько связей, использующих тонеры mental ray, текстуры и другие узлы. На вкладке mental ray для тонеров Maya присутствуют параметры r e f l e c t i o n Blur (Размытость отражения) и r e f r a c t i o n Blur (Размытость преломления), которые позво ляют визуализировать размытость, зависящую от расстояния. Это позволяет системе mental ray поддерживать реалистичную размытость отражения и преломления. Напри мер, если надавить пальцем на отражающую поверхность, то отражение станет быстро терять "фокус" по мере удаления от точки контакта с поверхностью. Недостаток этих па раметров заключается в том, что с увеличением их значений увеличивается и время ви зуализации. Однако потраченное время стоит того, поскольку эти параметры позволяют добиться удивительного реализма визуализации.
Улучшенная визуализация с помощью mental ray
557
Источники света, тени и туман mental ray Источники света Майя хорошо работают с системой mental ray, особенно точечные источники света, прожекторы и направленные источники света. На вкладке mental ray в редакторе атрибутов этих источников света можно найти допол нительные атрибуты (рис. 14.10); поэтому данные источники света предпочтительнее ис пользовать при визуализации mental ray. Не все настройки доступны для каждого типа ис точника света; поэтому эти атрибуты основаны на настройках, поддерживаемых системой mental ray для каждого типа источника света. Новой в Майя 8 является возможность непо средственно использовать плоские источники света в системе mental ray (а не определять необходимые атрибуты области для точечного источника света или прожектора).
Puc. 14.10. Атрибуты mental ray для то чечного источника света В системе mental ray используются следующие дополнительные категории парамет ров источников света: Caustic A n d Global Illumination (Солнечные зайчики и глобальное освещение), Shadow Maps (Карты теней), Area Light (Плоский источник света) — для точечных источников и прожекторов, Custom Shaders (Специальные тонеры) и Light Profile (Световой профиль) — только для точечных источников света. Light Profile — уникальный атрибут точечного источника света, он допускает использование описания источника света от его производителя, в котором описываются реалистичные характери стики данного источника. Это имеет большое значение при визуализации архитектуры.
Источники плоского света Теперь источники света создаются очень просто, достаточно выбрать пункт меню Create => Lights => Area Light (Создать => Источники света => Плоский источник света). Источники плоского света чрезвычайно эффективны и имитируют ес тественное распространение света, исходящего от реальных источников. По сути, систе ма mental ray размещает несколько точечных источников света в испускающей свет об ласти источника плоского света. Эта световая область определяется размером геометри ческой фигуры, которая образуется вокруг источника света сразу после установки флажка Area Light (Плоский источник света) (подробнее об этом — ниже, в разделе "Создание плоского источника света"). Тот факт, что плоские источники испускают свет из области, а не из неопределенной точки пространства, является существенным, по скольку это позволяет рассеивать свет так, как если бы это был источник света реального
558
Глава 14
физического размера. Так можно реализовать эффекты мягких теней и светового охвата. Еще одной значительной особенностью системы mental ray является то, что эта характе ристика обеспечивает также реальную бликовую подсветку в зависимости от фактиче ского размера источника света (области).
Создание плоского источника света Откройте сцену a r e a l i g h t _ 0 1 .mb из папки этой главы на прилагаемом CD. Сцена содержит некую простую геометрическую форму, изогнутый отражаю щий фон и точечный источник света. Для проверочной визуализации перспективная ка мера закреплена на месте. Для сокращения времени визуализации установлено низкое качество сглаживания (параметр Anti-Aliasing Quality), так как визуализация плоского источника света может оказаться весьма ресурсоемкой. Для сравнения изображений со храните кадры в окне вида визуализации. 1.
Проверьте, отключен ли источник света по умолчанию, и визуализируйте кадр. Если не видно отражающего свет объекта, проверьте, включена ли трассировка лучей.
2.
Создайте плоский источник света (обратите внимание на то, что по умолчанию при нята прямоугольная форма) и переместите его в ту же позицию, что и точечный ис точник света; затем удалите точечный источник света. Поверните источник света так, чтобы вектор его направления указывал немного вниз и влево от точки зрения пер спективной камеры. Визуализируйте изображение. Качество источника света изме няется, и свет не излучается за пределы прямоугольника источника (только стрелка направления указывает, что источник испускает свет). Пока источник света не ока зывает существенного влияния на освещенность, но вскоре это будет исправлено.
3.
Установите флажок Use Light Shape (Использовать форму источника света), чтобы разрешить использование формы источника света, а затем установите флажок Visible (Видимый) в разделе A r e a Light и выполните визуализацию. В результате прямо угольник источника света станет видимым. Это можно использовать, например, для того, чтобы сделать видимым галогенный или люминесцентный источник света. За метьте, что источник света виден на отражении, но не на самой сцене. Дело в том, что источник испускает свет довольно далеко от перспективной камеры. Если перемес тить камеру или повернуть источник света так, чтобы он светил в камеру, то он ста нет виден на сцене.
4.
В разделе Shadows (Тени), но не на вкладке теней mental ray, установите в атрибутах трассированных теней флажок Use r a y Trace S h a d o w s (Использовать трассирован ные тени) (рис. 14.11) и выполните визуализацию. Это включит трассированные те ни в системе mental ray и при использовании с источниками плоского света. С источ никами плоского света следует использовать только параметр r a y Depth Limit (Предельная глубина луча). Этот атрибут определяет количество отражений тени; иначе говоря, сколько раз тень может падать с одного отражения на другое.
5.
Обратите внимание, что на стене нет теневых отражений. Чтобы исправить это, уве личьте значение параметра r a y Depth Limit (Предельная глубина луча) до 2 и вы полните визуализацию снова.
6.
Обратите также внимание на то, как точно падает тень от объекта. Этот эффект на зывается мягкой тенью, но здесь его качество низкое. Повысить качество можно за счет увеличения количества выборок в разделе A r e a Light (Плоский источник света).
Улучшенная визуализация с помощью mental ray
559
Установите значение параметра High Sample Limit (Верхний предел дискретиза ции) равными 16, а затем осуществите визуализацию. Качество тени и отраженной тени значительно возросло, как и время визуализации. Повышение верхнего пре дела дискретизации до 32 улучшает качество еще больше, естественно, за счет уве личения времени визуализации. Обратите также внимание на то, что мягкое зате нение вокруг отражения источника света на фоновой заставке стало менее зерни стым и более четким.
Рис. 14.11. Включение трассировки теней для источников плоского света mental ray. Подходящим является только параметр ray
Depth
Limit
7. Параметр Туре (Тип) позволяет выбрать одну из пяти геометрических фигур в каче стве области излучения источника плоского света; каждый тип рассеивает свет в за висимости от своей геометрической формы. Опробуйте их на практике. Поведение света и тени зависит от используемой геометрической формы источника плоского света. Обратите внимание, что цилиндр и сфера видимы как на сцене, так и в отра жении, поскольку они рассеивают свет на все 360°, а не в одну сторону. 8. Снова выберите для плоского источника света прямоугольную форму, а затем в об ласти просмотра немного измените по оси X размер прямоугольника, который появ ляется вокруг источника света. Выполните визуализацию для разных размеров пря моугольника, чтобы понять, как масштаб фигуры управляет рассеянием света (световым охватом объекта) и мягкой тенью. 9. Поле Shape Intensity (Интенсивность формы) контролирует яркость плоского ис точника света на сцене. Чтобы уменьшить видимую яркость источника света, значе ние этого параметра можно сделать меньше 1. Однако в отражении источник света остается таким же ярким, как прежде.
Управление качеством дискретизации Как уже упоминалось, плоский источник света mental ray, по сути, представляет со бой кластер точечных источников света, расположенных случайным образом в пределах геометрической фигуры плоского источника света. Таким образом, прямоугольный ис точник, излучающий свет на сцену в пределах прямоугольной области, может иметь по четыре точечных источника света вдоль каждой стороны. Направление света определя-
560
Глава 14
ется тем, какая форма используется. Прямоугольник и диск распространяют свет на 180°, а сфера и цилиндр — на 360°. Корректируя качество источника плоского света, следует учитывать оба параметра, Sampling (Дискретизация) и Anti-Aliasing (Сглаживание).
Атрибут Sampling Атрибут Sampling (Дискретизация) в разделе Area Light (Плоский источник света) определяет количество источников света, помещаемых в световую область. Этот пара метр следует использовать осмотрительно, поскольку его высокие значения существенно увеличивают время визуализации. Этот атрибут можно использовать для того, чтобы со кратить зернистость в мягких тенях. Для этого необходимо увеличить количество выбо рок, т.е. использовать больше лучей для вычисления мягких теней. Параметр High Samples (Верхние значение дискретизации) задает количество точеч ных источников света, устанавливаемых в качестве эмиттеров по размерностям X и Y плоского источника света. Вполне очевидно, что чем большее эмиттеров, тем менее зер нистым выглядит изображение, но, как обычно, за счет увеличения времени визуализа ции. Параметр High Sample Limit (Верхний предел дискретизации) задает количество отражений луча света, пока система mental ray обратится к параметру Low Samples (Нижнее значение дискретизации). Как правило, для получения хороших результатов после нескольких отражений (или преломлений) не возникает необходимости прибегать к верхнему значению дискретизации источника света, поэтому данное значение можно оставить относительно низким. Параметр Low Samples (Нижнее значение дискретиза ции) контролирует количество эмиттеров точечного источника света при достижении отражениями значения параметра High Sample Limit (Верхний предел дискретизации). Как правило, здесь прекрасно подходит принятое по умолчанию значение 1.
Тени Тени mental ray могут быть либо трассированными (raytraced), либо построчно ска нированными (scanlined). Карты теней представляют собой не трассированные тени, а созданные при визуализации методом построчного сканирования. Трассирование обес печивает точные тени, цветные прозрачные тени и мягкие тени от источников плоского света, а также объемные эффекты теней, такие как отбрасывание тени клубами пыли или облаками. Как трассированные тени, так и подробные карты теней поддерживают размы тые тени в движении. Преимущество построчно сканированных карт теней заключается в том, что они вычисляются быстрее, а также обеспечивают средства для хранения и повторного ис пользования карт теней (отсюда название) при условии, что тень остается той же. Ме тод карт теней позволяет также использовать ускорение OpenGL. Реализация карт те ней в системе mental ray позволяет также визуализировать прозрачные карты теней с прекрасной детализацией — главным преимуществом перед процессором программной визуализации Майя. Построчно сканированные карты теней также способны визуализировать мягкие те ни, однако вычисления в этом случае получаются менее точными по сравнению с трасси рованными тенями. Построчно сканированная мягкая тень представляет собой эффект размытости наружной кромки тени в зависимости от указанных значений атрибутов ис точника света. Однако обычно этого эффекта более чем достаточно для тени.
Улучшенная визуализация с помощью mental ray
561
Трассировка мягких теней Откройте сцену r a y t r a c e _ 0 1 . mb с прилагаемого CD. Эта сцена содержит про жектор, направленный на прозрачный объект, а также отражающую стену. Ка мера имеет два ключевых кадра для различных ракурсов. 1. Выберите прожектор, переименуйте его в KeyLight и отобразите атрибуты трасси рованных теней ( r a y t r a c e Shadow Attributes) в разделе Shadows (Тени) редактора атрибутов. Установите флажок Use r a y Trace Shadows (Использовать трассиро ванные тени), присвойте параметру r a y Depth Limit (Предельная глубина луча) зна чение 2 и выполните визуализацию. Трассированные тени обеспечивают прозрач ность цвета в тенях. 2. Присвойте параметру Light r a d i u s (Радиус света) значение 2 и выполните визуали зацию. Обратите внимание на то, что мягкие тени имеют низкое качество. Для по вышения качества увеличьте значение параметра S h a d o w r a y s (Лучи тени). Попро буйте использовать значение 20. Спад мягких трассированных теней — это реалистичный эффект, зависящий от рас стояния до объекта. Кроме того, тень точно представляет прозрачность и цвет. Мягкость тени также видна в отражениях. Этот тип мягкой тени настраивается иначе, чем мягкая тень плоского источника света, которая включается на вкладке A r e a Light (Плоский ис точник света) системы mental ray.
Атрибуты карты теней Атрибуты карты теней (shadow map) доступны в разделе mental ray для источников света Майя (рис. 14.12). Карта теней представляет сбой эквивалент mental ray для карты глубин теней в Майя. По умолчанию значения параметров карт тени наследуются от карт теней Майя, облегчая их создание. Однако сброс флажка Derive From Maya (Наследовать из Maya) предоставляет доступ к набору элементов управления переопре делением карт теней, где для процессора mental ray можно непосредственно задать атри буты карты. Параметр Take Settings From Maya (Получить настройки из Maya) передает текущие значения карты глубин из раздела Default Shadows (Стандартные тени) в раз дел Shadow Map (Карта теней mental ray). Это позволяет легко перенести настройки те ней карт глубин на карты теней mental ray. Атрибут r e s o l u t i o n (Разрешение) определяет размер изображения карты теней, так же, как и в случае карт глубин теней. Если выбирать подробную карту теней ( D e t a i l S h a d o w M a p ) из контекстного ме ню вверху раздела S h a d o w s (Тени), появляется доступ к разделу Detail S h a d o w M a p Attributes (Детальные атрибуты карты теней), позволяющему настроить качество карт теней при использовании алгоритма подробного сканирования строк тени. Бо лее подробная информация по этой теме приведена ниже, в разделе "Размытость в mental ray". Не забудьте сбросить флажки Shadow Casting (Отбрасывание тени) и receiving (Восприятие) для объектов, которым эти настройки не нужны, поскольку они могут сни зить качество теней, использовав большую часть разрешающей способности карты изо бражения. Эти атрибуты можно отключить для каждой формы на вкладке render Stats (Статистика визуализации) в редакторе атрибутов.
562
Глава 14
Puc. 14.12. Атрибуты теней и карты де тализации теней для источников света mental ray. Карты детализации поддержи вают прозрачность цвета и карты размытых теней, устраняя необходимость в трассировке лучей и уменьшая время ви зуализации Атрибут Shadow Method Переключатель Shadow Method (Метод создания тени) раздела -Shadows (Тени) вкладки mental ray окна render Settings (Параметры визуализации) определяет метод вычисления теней в системе mental ray. Сброс флажка Shadows (Тени) отключает также построчное сканирование и трассирование теней. Переключатели Simple (Простой), Sorted (Сортированный) и Segments (Сегменты) связаны только с трассированными тенями. Для параметра Shadow Linking (Связывание тени) могут быть выбраны значе ния Obeys Light Linking (Подчиняться привязке источника света), это значение по умол чанию используется чаще всего, On (Включено), включено для всех объектов, или Off (Отключено), как показано на рис. 14.13. Метод Simple (Простой) подразумевает поиск объектов, которые отбрасывают тени, между источником света и освещенной точкой на поверхности. Как только найден пол ностью непрозрачный объект, вычисляется его тень и с этого момента система mental ray прекращает расчет теней для данного луча. Это предотвращает вычисление ненужных теней для объектов, которые могут находиться на пути луча. Метод Sort (Сортированный) работает аналогично, за исключением того, что сна чала выполняется перечисление всех закрывающих свет объектов, а затем изучаются тени этих объектов, в зависимости от того, какой объект находится ближе к источнику
Улучшенная визуализация с помощью mental ray
563
света. Расчет теней прекращается, когда свет полностью закрывается объектом. Этот режим является более дорогостоящим при визуализации и используется со специаль ными тонерами mental ray, которые требуют информации об объектах, находящихся на пути луча света.
Рис. 74.75. Параметры раздела
Shadows вкладки mental ray ок на render Settings Метод Segments (Сегменты) — самый ресурсоемкий и передовой метод расчета те ней при использовании объемных эффектов, таких как облака. Если метод Sorted или Segments не требуется, то для сокращения времени визуализации рекомендуется использовать метод Simple. Параметры карты теней
Существуют три способа вычисления карт теней. •
Обычный ( r e g u l a r ) , используемый по умолчанию в mental ray алгоритм вычисления карт теней.
•
Установка флажка openGL Acceleration (Ускорение openGL) в обычном режиме ускоря ет вычисление теней в зависимости от производительности аппаратного обеспечения.
•
Подробный (Detail) использует передовой алгоритм для вычисления карт теней, который учитывает прозрачность карт теней, а также более детализированное размытие.
Значение Detail (Детально) превращает каждую карту теней mental ray в карту дета лизации теней. Этот параметр можно включать глобально для всей сцены или для ис точников света по отдельности, задействовав параметр Detail Shadow Map (Карта дета лизации теней) в раскрывающемся меню Shadow Map Format (Формат карты теней). Параметр r e b u i l d Mode (Режим перестройки) в разделе Shadow Maps (Карты теней) определяет, следует ли перестраивать или многократно использовать карты тени. Значе ние r e b u i l d All And Merge (Перестроить все и объединить) указывает, следует ли пере строить карты теней или использовать их повторно. Значение r e u s e Existing Maps (Повторно использовать существующее карты) запрещает вычисление новых теней, ко гда существуют их старые версии, созданные ранее. Значение r e b u i l d All A n d Overwrite (Перестроить все и переписать) предписывает заново рассчитать все тени, что соответст-
564
Глава 14
вует значению Off в предыдущих версиях mental ray. Установка флажка Motion Blur Shadow Maps (Карты размытых теней) включает вычисление построчно сканированных карт размытых теней. Чтобы опробовать на практике настройки карт теней, откройте сцену s h a d o w m a p _ O l .mb из папки этой главы на прилагаемом CD. Эта же сцена использовалась в примере с трассировкой мягких теней. 1. Осмотрите источник света и откройте редактор атрибутов. Выполните быструю ви зуализацию сцены. В результате должна получиться трассированная мягкая тень из предыдущего примера. 2.
Выберите источник света K e y L i g h t , установите флажок Depth Map S h a d o w s (Карта глубин теней) в разделе Shadows (Тени) главного источника света и визуа лизируйте сцену. Обратите внимание на то, что тень визуализировалась быстро, но выглядит плохо.
3.
Установите разрешение карты теней (атрибут r e s o l u t i o n ) равным 1024 и снова ви зуализируйте сцену. Качество тени остается низким, а прозрачность в тени не видна.
4.
Сбросьте во вкладке mental ray флажок Derive From Maya (Наследовать из Maya), снова установите разрешение 1024, присвойте параметру Samples (Дискретизация) значение 10 и визуализируйте сцену заново. Время визуализации возросло, но каче ство не улучшилось. Это связано с тем, что выборки увеличивают качество только мягких теней. Установите значение 0.030 для параметра Softness (Мягкость) и снова выполните визуализацию.
5.
Появились мягкие тени, хотя качество остается низким. Увеличьте значение Samples (Дискретизация) до 40 и визуализируйте сцену; должно быть заметно улучшение качества мягкой тени. Большие численные приращения параметра Softness значительно влияют на распространение тени.
6. Установите для параметра Softness (Мягкость) значение 0.09 и значение 80 — для Samples (Дискретизация), а затем снова выполните визуализацию. Результат визуа лизации после внесенных изменений приведен на рис. 14.14.
Рис. 14.14. Результат изменения значе ний параметров дискретизации и мягко сти накладываемых теней mental ray Это упражнение должно прояснить координацию параметров Samples (Дискретиза ция) и Softness (Мягкость). Стоит заметить, что хотя при разрешении карты, равном
Улучшенная визуализация с помощью mental ray
565
1024, изображение выглядело зазубренным, применение мягких теней позволило пре одолеть необходимость увеличения разрешения. Размер объектов сцены, отбрасываю щих тени, также существенно влияет на разрешение; поэтому необходимо сбросить фла жок Cast Shadows (Отбрасывание теней) раздела render Stats (Статистика визуализа ции) для тех объектов, которые не должны влиять на эти вычисления. Отключение параметра Cast Shadows позволяет сфокусировать карту глубин на меньшей области, в которых содержатся только те объекты, которые отбрасывают тени, и, таким образом, максимально использовать разрешение карты. Рассмотрим действие параметра Detail S h a d o w Map (Карта детализации теней) на текущей сцене. 1.
В разделе Shadow Map Attributes (Атрибуты карты теней) редактора атрибутов уменьшите значение Softness до 0.015, а значение Samples (Дискретизация) — до 25 и визуализируйте сцену.
2.
В окне render Settings (Параметры визуализации) на вкладке Shadow Maps (Карты теней) выберите значение Detail (Детально) в раскрывающемся списке Format (Формат) и выполните визуализацию.
Использование параметра Detail добавляет прозрачность в тень, хотя тень в этом слу чае получается не такой точной, как трассированная тень с прозрачным цветом. Допол нительные преимущества карт детализации теней рассматриваются в упражнении по изучению размытости.
Туман Система mental ray предоставляет два абсолютно разных способа визуализации объ емного света и тумана. •
Использование специальных тонеров mental ray для визуализации эффектов участ вующей среды. Участвующая среда (participating media) — это эффект, который реа листично имитирует частицы, присутствующие в воздухе и участвующие в решении освещения, поглощения и отражения света.
•
Использование тонера объемного тумана Майя на вкладке Light Effects (Световые эффекты) в окне Maya Lights (Источники света Майя); однако рабочий процесс mental ray для управления качеством тумана несколько отличается. Тонер тумана Майя работает намного быстрее и проще в управлении, но если есть возможность ис пользовать эффекты участвующей среды mental ray, то результаты будут действи тельно впечатляющими. Недостатком является то, что эффекты участвующей среды требуют большего времени визуализации, а кроме того, они сложнее в освоении.
Качество объемного света зависит от сбалансированности настроек. Проведите экс перименты с туманом. 1.
Откройте сцену fogOl.mb с прилагаемого CD. Прожектор (spotLight1) сквозь шторки создает туман вокруг сферы. Узел blindsCNTRL имеет атри бут CNTRL, который открывает и закрывает шторки. Источник света PointLightl используется здесь для освещения передней стороны стены и не допускает настройки. Тонер Fog (Туман) применен к источнику света spotLight1 на вкладке Light Effects (Световые эффекты) со значениями
566
Глава 14 параметров Fog Spread (Рассеивание тумана) и Fog Intensity (Интенсивность тума на), равными 2. В атрибутах Depth Map S h a d o w (Карта глубин тени) параметры Fog Shadow Intensity (Интенсивность тени тумана) и Samples (Дискретизация) управ ляют качеством объемного света при программной визуализации Майя; их значения равны 3 и 80. Сейчас сцена настроена на использование программной визуализации.
2.
Перспективная камера имеет ключевые кадры, способствующие просмотру сцены. В первом кадре используется программная визуализация Майя. Обратите внимание, как объемный свет распространяется сквозь шторки с четкими линиями и создает отчетливый разрыв вокруг сферы.
3. Теперь переключитесь на mental ray и выполните визуализацию. Низкое качество изображения обусловлено в первую очередь тем, что параметры Fog S h a d o w Intensity (Интенсивность тени тумана) и Samples (Дискретизация) не влияют на систему mental ray; поэтому объемные выборки придется задавать иначе. 4.
Перейдите на вкладку coneShape1 в верхней части редактора атрибутов и раскройте раздел render Stats (Статистика визуализации). В этом разделе имеется флажок Volume Samples Override (Переопределение объемной дискретизации) (рис. 14.15), который управляет объемными выборками в mental ray. Установите его и визуали зируйте второй кадр.
Puc. 14.15. Флажок Volume Samples Override — секрет управления туманом в mental ray 5.
Туман полностью исчез из-за того, что значением переопределения является 0. Нач ните увеличивать значение Volume Samples. Установите значение 2 и визуализи руйте первый кадр. По мере увеличения количества выборок качество улучшается; но это может сделать туман чересчур размытым. Установите значение 30, выполните визуализацию, сохраните снимок, установите значение 15 и снова выполните визуа лизацию. Относительное различие между снимками должно быть очевидным: 15 вы борок обеспечивают вполне приемлемое качество, правда, заметна зернистость, 30 выборок снижают зернистость, но изображение немного расплывчатое.
6.
На туман в системе mental ray влияют также значения рассеивания и интенсивности источника света s p o t L i g h t 1 . Раскройте раздел Light Effects (Световые эффекты),
Улучшенная визуализация с помощью mental ray
567
установите значение 1 для параметра Fog Spread (Рассеивание тумана) и выполните визуализацию. Туман ослабел, но выглядит лучше. Увеличьте значение параметра Fog Intensity (Интенсивность тумана) до 6, выполните визуализацию и сохраните снимок. 7.
Теперь установите интенсивность тумана равной 12, а рассеивание — равным 1.1. На вкладке coneShape1 установите значение параметра Volume Samples (Объемная дискретизация) равным 30, визуализируйте сцену и сохраните снимок. Сравните этот снимок со снимком, полученным на предыдущем этапе. Туман имеет более чет кие линии, но для его видимости необходимо увеличить интенсивность. Значение Fog Spread (Рассеивание тумана) может увеличить интенсивность и сделать туман гуще или плотнее, а также заставить его сильнее распространяться от лучей света. Выполните визуализацию, установив рассеивание равным 2, а интенсивность — рав ной 1. Следует отметить, что для того, чтобы сделать туман видимым, понадобилось гораздо меньшее значение интенсивности.
Кроме того, необходимо настроить скорость спада тумана. Это можно сделать, уста новив более высокую скорость спада для источника света spotLight1. Скройте слой шторок, установите значение 2 для параметра Fog Intensity (Интенсивность тумана) и значение 1 — для параметра Fog Spread (Рассеивание тумана), установите квадратич ную скорость угасания света (значение Quadratic параметра Decay r a t e ) , увеличьте ин тенсивность света до огромного значения 350, ООО и выполните визуализацию.
Размытость в mental ray Размытость (motion blur) возникает при движении снимаемых на пленку объек тов, когда затвор камеры открыт. Величина размытости зависит от времени экспо зиции пленки. Maya позволяет извлекать значительные преимущества из способности системы mental ray визуализировать реалистичные эффекты размытости. Система mental ray реа листично размывает источники света, цвета текстур, тени, солнечные зайчики, глобаль ное освещение и все, на что размытость в движении повлияла бы в реальном мире. На пример, в случае движения камеры по сцене все, что находится в поле ее зрения, будет подвержено влиянию размытости (при этом, естественно, увеличивается время визуали зации). Размытость в mental ray поддерживается обоими методами визуализации — трассировкой лучей и построчным сканированием. В окне render Settings (Параметры визуализации) для mental ray имеется одна важнейшая вкладка, которая используется для управления настройками размытости (рис. 14.16). Кроме разделов r a y t r a c i n g (Трассировка лучей) и S h a d o w s (Тени), существуют и другие, содержащие дополни тельные атрибуты управления построчной разверткой размытостью и тенями. Коэффициент размытости (motion blur factor) вычисляется на основании выборки перемещения и деформации объекта за заданный промежуток времени, который уста навливается с помощью атрибута Motion Blur By (Размытие по) на вкладке Motion Blur (Размытие). Этот промежуток времени можно рассматривать как общую шкалу от 0 до 1, представляющую период времени, используемый для дискретизации движения. Па раметр Motion Steps (Шагов движения) контролирует точность размытости, и на осно вании его значения осуществляется выборка каждого кадра. Другими словами, если для параметра Motion Steps (Шагов движения) установлено значение 2, система mental ray
568
Глава 14
делит текущий кадр на две половины и исследует размытость по каждой половине кадра, чтобы лучше определить точную размытость. Параметры Shutter Open (Затвор открыт) и Shutter Close (Затвор закрыт) определяют, когда в пределах этого промежутка време ни затвор должен открыться и закрыться. Например, можно задать такие значения, что бы затвор открывался в середине упомянутого промежутка времени и оставался откры тым до его окончания; это обеспечивает возможность смещения коэффициента размыто сти, а также сокращает количество выборок, осуществленных в течение промежутка времени. Приведенные ниже упражнения помогут разобраться в этих настройках.
Рис. 14.16. Параметры раздела Motion Blur позволяют создать эффект вы держки, как при реальной кинемато графической съемке ДЛЯ усиления эффекта размытости необходимо увеличить различие между значениями па раметров Shutter Open (Затвор открыт) и Shutter Close (Затвор закрыт) или увеличить коэф фициент Motion Blur By (Размытие по). Новый параметр, Time Samples (Время выборки), контролирует время выборки для разных точек в плоскости изображения при визуализации кадра. Это напоминает способ сглаживания "дребезга" ("jitter"), возникающего при слишком регулярных выборках за счет эффекта смещения при создании размытости. Увеличение значения параметра Time Samples (Время выборки) улучшает качество размытости за счет увеличения времени визуализации. Алгоритм визуализации методом ускоренного построчного сканирования, который можно применить, выбрав пункт r a y t r a c i n g (Трассировка лучей) раскрывающегося спи ска Primary renderer (Первичная система визуализации), обеспечивает более быстрое вычисление размытости. Если требуется трассировка лучей, то следует использовать стандартное построчное сканирование, поскольку быстрый метод ( r a p i d Motion) не поддерживает эти функции. Если требуется создать размытость в отражениях, используйте либо переключатель Scanline, либо r a y t r a c i n g . В параметрах Quality Preset (Предустановленное качество) в верхней части окна render Settings (Параметры визуализации) можно выбрать один из нескольких предустановленных вариантов быстрого построчного сканирования.
Улучшенная визуализация с помощью mental ray
569
Управление размытостью Чтобы увидеть размытие mental ray в действии, откройте сцену mb_01 .mb с прилагаемого CD. Эта сцена содержит анимированный пропеллер, а так же ключевой кадр для камеры перспективного представления. Цвета пропеллера визу ально поддерживают движение. Главный источник света отбрасывает мягкую тень, а в качестве значения атрибута Shadow Maps (Карты теней) выбрано Detail (Детально). Визуализацию в данном случае необходимо выполнять для кадра 15. 1.
Параметр Motion Blur (Размытие) на одноименной вкладке позволяет выбрать метод вычисления размытости. Установите значение No Deformations (Без деформаций). При использовании метода размытия без деформаций объект будет размываться только при перемещении, вращении и изменении масштаба, а при деформации, та кой как плавная модификация, размытия не будет. Суть метода заключается в ап проксимации размытости на основании начальной и конечной позиции объекта в те чение промежутка времени.
2.
Визуализируйте сцену. Размытость линейная, т.е. отсутст вует интерполяция пропеллера между открытием и закры тием затвора. Чтобы исправить это, увеличьте значение ат рибута Motion Steps (Шагов движения) до 6. Каждый раз при увеличении этого значения система mental ray интер полирует другой шаг в пределах интервала дискретизации Риc. 14.17. Увеличение знадвижения. Визуализируйте сцену снова и обратите внима- чения параметра Motion ние, что конец пропеллера выглядит при размытии изогну- Steps: линейный характер тым, а не линейным, как показано на рис. 14.17. Увеличе- размытия со значением 1 ние значения параметра Time Samples (Время выборки) (a) дугообразная размыулучшит качество размытости, уменьшит зернистость и тость со значением 6 (б) сгладит внешний вид. Попробуйте установить для пара метра Time Samples (Время выборки) значение 6 и обратите внимание на незначи тельное различие в размытии, к которому это привело.
Метод Full ( П о л н ы й ) обеспечивает реалистичное вычисление размытости, кото рое требует больше времени для визуализации, но дает более точные результаты. Этот метод размывает деформации и движения, а следовательно, такие эффекты, как мягкие тела и плавные модификации. Движение в данном случае исследуется на уровне отдельных вершин.
Управление затвором Совместно параметры Shutter Open (Затвор открыт) и Shutter Close (Затвор закрыт) определяют, когда на протяжении экспозиции кадра за твор будет открыт. Увеличив значение параметра Shutter Open (Затвор открыт) свыше О, можно задержать время начала экспозиции, а уменьшив значение параметра Shutter Close (Затвор закрыт) — приблизить момент конца экспозиции. Корректировка этих значений позволяет смещать размытость внутри кадра, а также уменьшать или увеличи вать ее, поскольку уменьшение периода экспозиции уменьшает эффект размытия, как будто камера имеет очень короткую выдержку (как у видеокамеры). Большее время экс позиции соответственно увеличивает эффект размытия.
Глава 14
570
1. Установите для параметров Shutter Open (Затвор открыт) и Shutter Close (Затвор закрыт) значение 0.5 и визуализируйте сцену. Очевидно, что нет никакого размы тия, поскольку затвор вообще не открывался. Данный параметр влияет только на размытость, поэтому объект остается видимым. 2. Теперь установите для параметра S h u t t e r C l o s e (Затвор закрыт) значение 1 и снова выполните визуализацию. Сравните снимок с предыдущим, когда значе нием параметра Shutter O p e n (Затвор открыт) было 0. Обратите внимание на то, что теперь дуга размытия намного меньше и смещение происходит только в нижней половине предыдущего. Установите для параметра S h u t t e r O p e n (Затвор открыт) значение 0, а для параметра Shutter C l o s e (Затвор закрыт) — значение 0.5. Несложно предугадать, что визуализироваться будет только пер вая половина интервала времени. Как можно заметить, качество становится лучше, если визуализировать меньшие значения затвора, поскольку требуется меньшая дискретизация.
Регулировка качества Можно улучшить качество размытости за счет корректировки значения параметра Time Contrast (Временной контраст) в разделе Motion Blur (Размытие). Эти значения ра ботают подобно значениям порога контрастности при сглаживании, но применимы толь ко к эффектам размытости и определяют количество осуществляемых выборок движе ния в то время, когда затвор открыт. Меньшие значения повышают качество и увеличи вают время визуализации. Значения параметра Time Contrast (Временной контраст) позволяют точно настраивать качество дискретизации по красной, зеленой и синей со ставляющим независимо от остальной сцены и без необходимости увеличивать порого вое качество контраста сглаживания. 1. Перестройте сцену, используя значение 0 для параметра Shutter Open (Затвор от крыт), значение 1 — для параметра Shutter Close (Затвор закрыт) и значение 6 — для параметра Motion Steps (Шагов движения). 2.
Измените временной контраст для цветовых каналов (RGB) до значения 0.08 я вы полните визуализацию.
Очевидно, что качество улучшится (уменьшится зернистость), а время визуализации увеличится. Цвета пропеллера легко корректировать, потому что система mental ray под держивает размытые текстуры, а также отражения, тени и все остальное, что должно быть размытым.
Размытые тени и трассировка лучей Главное отличие между размытостью, полученной методами построчного сканирова ния, и трассировкой лучей заключается в качестве теней. Трассированные тени обеспе чивают более высокое качество размытия, это относится также к цвету и прозрачности (в отличие от карт теней, которые с размытостью работают не так хорошо). Но эту про блему решают карты детализации теней, которые содержат более качественные карты размытых теней. Это позволяет избежать необходимости использования трассирован-
Улучшенная визуализация с помощью mental ray
571
ных теней. В этом случае размытие объекта методом построчного сканирования и мето дом трассировки лучей должно давать одинаковые результаты. Когда используются карты теней, рекомендуется применять формат Detail S h a d o w Maps (Карты детализации теней), установить который можно в разделе Shadow Maps (Карты теней) вкладки mental ray окна render Settings (Параметры визуализации), рас считывающий карты размытых теней, которые больше походят на трассированные раз мытые тени. Следует учесть, что увеличение детализации потребует увеличения количе ства подробных выборок. Недостаток заключается в том, что по умолчанию цвет не на следуется. Хотя формат Detail Shadow Maps (Карты детализации теней) предусматривает уровни прозрачности в картах теней, а также в границах размытости, цвет зависит от прозрачного цвета, заданного в тонере. Установив флажок Detail Shadow Map (Карта детализации теней) в раскрывающемся списке Shadow Map Format (Формат карты теней) раздела mental ray для источника света, можно повысить качество теней за счет увеличения значений параметров Samples (Дискретизация) и Accuracy (Точность). Первый из этих параметров определяет коли чество выборок, осуществляемых на уровне ниже пикселей. Если этот атрибут равен ну лю, то используются значения по умолчанию. Увеличение значения параметра Samples (Дискретизация) до 1 снижает качество, а значение, равное б, значительно повышает его. Опробуйте эти атрибуты на практике, используя полупрозрачную сферу с простой анимацией, которая перемещается по сцене под отбрасывающим тень источником света. Проведите также эксперименты с движущимися камерами, источниками света и солнеч ными зайчиками. Размытость в mental ray действительно реалистична и гораздо более эффективна, чем размытость при программной визуализации Maya. При визуализации размытости и глубины резкости время визуализации увеличивается экс поненциально. Если требуется реализовать оба эффекта, попытайтесь добавить глубину резкости с проходом по оси Z в программе для работы с композициями.
Непрямое освещение Система mental ray дополняет Maya возможностью визуализировать реалистичные модели света, используя глобальное освещение, солнечные зайчики и возможности Final Gather (Окончательная сборка), которые вычисляют взаимодействие непрямого света между объектами. Без возможностей непрямого света, например при использовании стандартной программной визуализации, для расчета светового воздействия на сцене Maya может использовать только прямое освещение. В отличие от прямого освещения (direct lighting), непрямое освещение (indirect lighting) имитирует естественное поведение света. Например, в случае прямого освеще ния, если расположить один источник света непосредственно над столом, то он будет воздействовать на плоскость стола только сверху. В случае непрямого освещения, как и в реальном мире, источник света будет воздействовать на всю комнату, включая области, которые находятся непосредственно под столом.
Глобальное освещение и солнечные зайчики Глобальное освещение (global illumination) и солнечные зайчики (caustic light) связаны с диффузным, зеркальным и глянцевым отражением, а также с переходом света с одного
572
Глава 14
объекта на другой. Глобальное освещение создает отраженную диффузную составляю щую света, а солнечные зайчики создают зеркальное и глянцевое отражение, а также преломление света (например, увеличительное стекло, которое фокусирует проходящий сквозь линзу свет, создавая пятно света на диффузной поверхности). Солнечные зайчики и глобальное освещение в системе mental ray разделены, поэтому оба эффекта можно на страивать независимо друг от друга. Оба эффекта рассчитываются с помощью фотонов, которые являются частицами, ис пускаемыми источником света. Источник света испускает фотоны с определенными зна чениями цвета и световой энергии. Затем свет проходит сквозь сцену, переходя от одного объекта к другому, до тех пор, пока не потеряет энергию или пока есть поверхности, на которые он может падать. Каждый фотон оставляет свою метку в каждой точке контакта, а также наследует некоторое цветовое воздействие поверхности. Таким образом, фотоны передают цветовое воздействие между поверхностями, которое называется просачивани ем цвета (color bleeding).
Освещенность Термин освещенность (irradiance) описывает общую интенсивность света, попадаю щего на заданную точку сцены. Освещенность можно представить себе как общее воз действие света от тонеров объектов или фотонов на сцене на определенную точку. Если говорить еще проще, то это мера светового воздействия на каждую точку среды со сторо ны окружающих предметов. Каждый тонер в Майя имеет атрибуты Irradiance (Освещенность) и Irradiance Color (Цвет ос вещенности), находящиеся на вкладке mental ray. Этот атрибут используется с непрямым освещением для точной настройки влияния, которое освещенность оказывает на объект.
Окончательная сборка Атрибут Final Gather (Окончательная сборка) определяет световое и цветовое влия ние, которое объекты оказывают друг на друга. Этот атрибут можно использовать как средство освещения сцены и/или как дополнительный способ усиления освещения. Его основное преимущество заключается в том, что он рассчитывает освещенность сцены на основании значений цвета поверхности и не использует источники света для осве щения объектов. Окончательная сборка — это процесс испускания отдельных лучей (лучей Final Gather) из полусферической области вокруг точек на поверхности (точек окончательной сборки (Final Gather point)), которые используются для мо делирования светового и цветового влияния от других поверхностей. Каждый луч окончательной сборки может отражаться на сцене дважды, до того как возвратит значение, влияющее на точку окончательной сборки. Окончательная сборка не явля ется процессом трассировки фотонов. Визуализация окончательной сборки широко используется с освещением, основанным на (Image Based Lighting), и изображениями HDR. Освещение HDR опи сано ниже, в разделе "Освещение на основании анализа изображений, физическое осве щение и HDRI". анализе изображений
Улучшенная визуализация с помощью mental ray
573
Визуализация глобального освещения Рассмотрим пример визуализации глобального освещения (Global Illumination 1.
GI).
Откройте сцену r o o m _ 0 1 . m b с прилагаемого CD. Источник света areaLightl был преобразован в плоский источник света mental ray, который используется для испускания фотонов в комнату через штор ки. Для сокращения времени визуализации, эта сцена настроена на низкое качество. Чтобы оценить влияние прямого света, выполните ви зуализацию первого кадра для камеры Camera1.
Включение глобального освещения разделяется на две части. Во-первых, необходимо определить объект areaLight1 как источник света, испускающий фотоны. В редак торе атрибутов для этого источника на вкладке mental ray раскройте раздел Caustics A n d Global Illumination (Солнечные зайчики и глобальное освещение), как показано на рис. 14.18. Она управляет физическими свойствами фотонов, такими как энергия, первоначальный цвет, скорость угасания фотона и количество испускаемых фотонов. Установите флажок Emit Photons (Испускать фотоны) и оставьте значения по умол чанию для всех остальных параметров.
Рис. 14.18. Испускание фотонов ис точником света Maya — это метод, который используется для вычисления реалистичного перехода света и про сачивания цвета на сцене Во-вторых, перейдите к разделу Caustics A n d Global Illumination (Солнечные зайчи ки и глобальное освещение) окна render Settings (Параметры визуализации) (рис. 14.19). Этот раздел позволяет управлять визуализацией фотонов, а также огра ничивать трассировку (переход) фотонов так же, как при трассировке лучей. Кроме того, здесь есть возможность сохранять файлы фотонных карт, которые можно ис пользовать впоследствии для предотвращения повторного вычисления эмиссии фо тонов. Установите флажки Global Illumination (Глобальное освещение) и r e b u i l d Photon Map (Перестраивать фотонную карту) и введите имя в поле Photon Map File (Файл фотонной карты), как показано на рис. 14.19. Выполните визуализацию кадра
Глава 14
574
1 для камеры Cameга1. Во время визуализации обратите внимание на надпись " m e n t a l r a y P h o t o n E m i s s i o n " (Эмиссия фотонов mental ray) в строке справки, которая описывает процесс испускания фотонов.
Puc. 14.19. Сердце непрямого осве щения, раздел Caustics And Global Illumination, позволяет управлять ими тацией того, как распространяется непрямой свет и как он влияет на объ екты сцены Сравнив результаты с предыдущими, в комнате можно заметить небольшое измене ние. Однако, очевидно, что на ближайшие к источнику света шторки оказывает влияние глобальное освещение. Световая энергия фотона низкая и подавляется пря мым светом. При визуализации с использованием глобального освещения попытайтесь согласовать ин тенсивность света и фотонов со скоростями угасания. 4.
Установите для плоского источника света линейную скорость угасания (значение Linear (Линейно) атрибута Decay r a t e ) и выполните визуализацию. Теперь ясно видна область, на которую влияет глобальное освещение. Чтобы повлиять на всю комнату, необходимо увеличить энергию фотонов. Это можно сделать двумя способами, кото рые предполагают использование вкладки areaLightShape1 системы mental ray.
5.
Первый способ увеличения энергии фотонов заключается в использовании атрибута Exponent (Показатель), который контролирует скорость угасания фотонов. Стан дартное значение 2 соответствует обратно квадратичному затуханию. Измените это значение на 1 и выполните визуализацию. Теперь скорость затухания линейна, и в конечном итоге это добавляет на сцену больше света и цвета. Видно множество цвет ных пятен, которые представляют фотоны в комнате.
6.
Другой способ увеличения энергии фотонов заключается в увеличении значения па раметра Photon Intensity (Интенсивность фотонов), который представляет первона чальную энергию каждого фотона. Установите для параметра Exponent (Показатель)
Улучшенная визуализация с помощью mental ray
575
значение 2, увеличьте значение параметра Photon Intensity (Интенсивность фото нов) до ВО, ООО и выполните визуализацию. Теперь используется обратно квадра тичное затухание, и фотоны имеют более реалистичный спад света.
Управление глобальным освещением Д Л Я повышения качества и сокращения пятнистости требуется корректировка атри бутов в разделе Caustics And Global Illumination (Солнечные зайчики и глобальное ос вещение) окна render Settings (Параметры визуализации). Чтобы ускорить выполнение этого упражнения, была создана фотонная карта. Для нескольких следующих этапов от ключите параметр r e b u i l d Photon Map (Перестраивать фотонную карту) в окне render Settings (Параметры визуализации) и обратите внимание на то, что во время визуализа ции не будет фазы эмиссии фотонов. Используйте
фотонную
карту
при
корректировке
параметров
в
окне
render
Settings
( П а р а м е т р ы в и з у а л и з а ц и и ) . О д н а к о п р и к о р р е к т и р о в к е з н а ч е н и й и с т о ч н и к а света ф о т о н ную карту следует перестраивать.
1.
Установите в разделе Global Illumination Options (Параметры глобального освещения) для параметра r a d i u s (Радиус) значение 1 и выполните визуализацию. Цветные круги (рис. 14.20) — это фотоны, отображающие цвет, интенсивность и позицию на сцене. Ра диус определяет размер каждого фотона. Наиболее заметное просачивание цвета про исходит от сфер, которые переносят различные цвета в комнату. Увеличение значения параметра r a d i u s приводит к увеличению количества накладывающихся друг на друга и смешивающихся фотонов. Установите для этого атрибута значение 5 и выполните визуализацию. Это увеличивает смешение цветов, но комната все еще полна цветных пятен. Глобальное освещение зависит от количества используемых фотонов, их цвета, интенсивности, радиуса, а также от того, как они смешиваются.
Рис. 14.20. Фотоны света распространя ются по сцене. В основе регулировки гло бального освещения лежит идея о нало жении этих кругов и смешивании цветов Сокращение количества пятен — это поиск баланса между значениями параметров r a d i u s (Радиус) и Accuracy (Точность) в разделе Caustics A n d Global Illumination
(Солнечные зайчики и глобальное освещение) окна render Settings (Параметры ви зуализации). Параметр Accuracy определяет количество фотонов, которые необхо димо учитывать при смешении накладывающихся областей.
Глава 14
576 2.
Установите значение Accuracy равным 1 и выполните визуализацию. Обратите вни мание — смешения нет. Установите для радиуса значение 5, для точности — значение 250 и выполните визуализацию. Теперь цвета фотонов начали смешиваться.
3.
Увеличьте значение параметра r a d i u s (Точность) до 10 и снова выполните визуали зацию. Смешение фотонов на сцене улучшилось.
4.
Установите значение параметра Accuracy равным 650 и выполните визуализацию, постоянно сравнивая результаты. Большой радиус проявляется в слишком большой интенсивности света от оконных проемов на стене. Вероятно, для улучшения резуль тата следует использовать меньшие фотоны, но в большем количестве.
При увеличении значения параметра r a d i u s (Радиус) в разделе Global Illumination Options (Параметры глобального освещения) цвета сцены становятся более размытыми и создают в целом одинаково тонированное глобальное освещение. С другой стороны, меньший радиус требует увеличения количества фотонов и обеспечивает большую дета лизацию и более точное решение. Как для параметра Accuracy, так и для параметра radius существует точка, после которой увеличение значения не дает результата. Следовательно, увеличивайте радиус, а затем корректируйте точность. Если точность больше не влияет на сцену, снова увеличьте ради ус, а потом опять увеличьте точность. Если решение получается неудовлетворительным, добавьте фотонов.
Повышение качества и корректировка настроения Для правильного смешения на сцене недостаточно фотонов, имеющих малый радиус. Ниже показано, как исправить эту проблему. 1. Снова установите значение параметра r a d i u s (Радиус) в окне render Settings (Параметры визуализации) равным 1, присвойте параметру Accuracy (Точность) значение 64, а затем в атрибутах источника света a r e a L i g h t S h a p e 1 увеличьте зна чение Global Ilium Photons (Количество фотонов глобального освещения) до 100,000. Проверьте, установлен ли флажок r e b u i l d Photon Map (Перестраивать фотонную карту), а затем выполните визуализацию. Посмотрите, как фотоны накла дываются друг на друга. Необходимо немного увеличить радиус. 2.
Попытайтесь использовать предыдущие настройки: значение 10 — для r a d i u s и значе ние 650 — для Accuracy, а затем сравните результаты. Благодаря увеличению количе ства фотонов достигается лучшее смешение цветов, но темные углы обычно имеют бо лее слабые фотоны, имеющие небольшой радиус, они не наследуют свет от более ярких фотонов. Чтобы прояснить происходящее, выполните визуализацию с радиусом 4 и посмотрите на верхний угол между стенами. Поскольку настройки сглаживания ухуд шают качество, для более качественной визуализации увеличьте дискретизацию. Чтобы откорректировать первоначальный цвет источника света, измените в редакто ре атрибутов значение параметра Photon Color (Цвет фотонов) — это способ усиле ния теплых/холодных схем освещения. Это значение должно быть синхронизирова но со значением цвета точечного источника света.
3.
Измените цвет фотонов на синий и установите флажок r e b u i l d Photon Map (Перестраивать фотонную карту) в окне render Settings (Параметры визуализа ции). Установите значение 64 для параметра Accuracy (Точность) и значение 1 —
Улучшенная визуализация с помощью mental ray
577
для параметра r a d i u s (Радиус), а затем выполните визуализацию. Результат должен быть светлым, поскольку комната полностью унаследовала синий цвет. 4.
Теперь попытайтесь использовать яркий цвет с меньшим влиянием, создающий хо рошее настроение, и снова выполните визуализацию.
Использование системы визуализации карт и корректировка освещенности Эмиссию фотонов можно визуализировать в области просмотра, а не только в окне вида визуализации. Проведите эксперименты с инструментом Map VisualiZer (Система визуализации карт), который используется для создания трехмерных карт фотонов в об ласти просмотра. 1.
В разделе Caustics And Global Illumination (Солнечные зайчики и глобальное осве щение) окна render Settings (Параметры визуализации) установите флажок Enable Map VisualiZer (Включить систему визуализации карт) и осуществите визуализацию. Система визуализации карт создает в области просмотра район, заполненный красны ми точками, которые представляют расположение фотонов на сцене (рис. 14.21).
Рис. 14.21. Используя систему визуализации карт, можно выяснить, где фотоны падают на сцену 2. Откройте окно системы визуализации карт, выбрав пункт меню W i n d o w => rendering Editors => mental ray => Map VisualiZer (Окно => Редакторы визуализации => mental ray =>
Система визуализации карт). Это окно содержит параметры для управления отображе нием красных точек. Чтобы лучше понять имеющиеся здесь значения, опробуйте их на практике. Для удаления точек со сцены выберите в окне иерархической структуры узел mapViZ1, который можно удалить в любое время без воздействия на визуализацию. Все тонеры объектов имеют собственные атрибуты освещенности. Чтобы управлять влиянием падающего на них света, откорректируйте значение параметра Irradiance Color (Цвет освещенности), который находится в разделе mental ray настроек тонера. 3. Выберите шторки, измените ( b l i n d s _ B l i n n ) на 0 . 1 (V из ра. Цвет тонера шторок снова стью белым из-за интенсивной
значение параметра Irradiance Color их тонера HSV), а затем выполните визуализацию второго кад начнет проявляться вместо того, чтобы стать полно энергии фотонов в этой области.
578 4.
Глава 14 Выберите стену, уменьшите значение ее параметра Irradiance Color (Цвет освещен ности) (V) до 0.9 и выполните визуализацию. Обратите внимание: на стену свет по влиял меньше. Можно провести эксперименты с этими значениями для сфер, кото рые находятся в поле зрения.
Использование полутонового цвета для атрибута Irradiance Color (Цвет освещенности) оп ределяет воздействие освещенности для используемого тонера. Однако изменение значе ния параметра Color (Цвет) заменяет цвет освещенности сцены новым, если этот цвет дос таточно яркий.
Точная настройка прямого освещения Корректировка освещенности позволяет улучшить освещение за счет увеличения воздействия прямого света. Чтобы добиться хорошего рассеивания света по комнате, в данном случае используется плоский источник света. Следует заметить, что этот источ ник света не отбрасывает мягких теней и имеет низкую интенсивность. Теперь имеет смысл удостовериться, что в окне render Settings (Параметры визуализации) для источ ника света установлены флажки Global Illumination (Глобальное освещение) и Emit Photons (Испускать фотоны). Чтобы скорректировать прямое освещение, можно сбросить флажок Global Illumination, и если прямое освещение будет удовлетворительным, установить его снова и оценить результат комбинации прямого и глобального освещения. 1.
Установите интенсивность источника света равной 100 с линейной скоростью угаса ния и согласуйте атрибут Color (Цвет) плоского источника света с атрибутом Photon Color (Цвет фотонов). Установите флажок Use raytrace Shadows (Использовать трас сированные тени) на вкладке Shadows (Тени), сбросьте флажок rebuild Photon Map (Перестраивать фотонную карту) в разделе Caustics And Global Illumination (Солнечные зайчики и глобальное освещение) окна render Settings (Параметры визуализации) и ви зуализируйте кадр. Комната будет освещена сильным прямым светом с хорошим рассеи ванием, поскольку используется комбинация характеристик источника плоского света для прямого освещения, а также глобального освещения для непрямого освещения.
2.
Установите для сглаживания значения Min Sample Level (Минимальный уровень дискретизации) и Max Sample Level (Максимальный уровень дискретизации) рав ными 0 и 2 соответственно и выполните визуализацию. Комната должна выглядеть значительно лучше (рис. 14.24), но все равно есть темные области, на которые дол жен повлиять непрямой свет. Кроме того, все еще наблюдается некоторая пятни стость, которая должна рассеяться после введения окончательной сборки.
Для улучшения освещения будет введена окончательная сборка в виде дополнитель ного непрямого света В следующем разделе описывается использование солнечных зай чиков для моделирования влияния непрямого света на стеклянные объекты.
Солнечные зайчики Большая часть материала этого раздела основывается на терминологии, методи ке и инструментах, описанных в предыдущих разделах, посвященных глобаль ному освещению. В этом разделе рассматривается влияние отраженного света на бле стящие объекты. Как уже упоминалось, при расчете солнечных зайчиков учитываются блики, глянцевое отражение и преломление света. Откройте файл r o o m 0 2 .mb с прила-
Улучшенная визуализация с помощью mental ray
579
гаемого CD. Это та же сцена, но над столом помещен прожектор CausticsLight, кото рый используется для испускания отражающихся фотонов.
Рис. 14.22. Комбинация глобального и прямого освещения создает более мягкое, более естественное освещение с просачиванием цвета. Однако комната все еще остается темной — здесь можно увели чить освещение и использовать солнечные зайчики Объекты на столе представляют собой преломляющие, полупрозрачные поверхности, которые в реальном мере создавали бы солнечные зайчики, фокусируя свет на столе. Для повышения скорости обработки у источника света pointLightOl (из предыдущего примера) отключено глобальное и прямое освещение. 1. Визуализируйте сцену с прямым освещением, чтобы оценить воздействие прожекто ра. Поскольку этот источник света испускает отражающиеся фотоны, можно выбрать только параметр излучения бликового света. Однако в этом случае следует также со хранить влияние прямого освещения. 2. В разделе Caustics A n d Global Illumination (Солнечные зайчики и глобальное осве щение) окна render Settings (Параметры визуализации) установите флажок Caustics (Солнечные зайчики), а для параметра Accuracy (Точность) установите значение 64. Эти атрибуты работают точно так же, как и в случае глобального осве щения. В редакторе атрибутов прожектора установите флажок Emit Photons (Испускать фотоны) в разделе Caustics A n d Global Illumination. Обратите внимание на то, что когда установлен флажок Caustics, корректировать можно только количе-
Глава 14
580
ство фотонов солнечных зайчиков (Caustic Photons) от источника света. То же спра ведливо и для глобального освещения. 3.
Перейдите к кадру 3 (камера Camera1) и визуализируйте сцену с текущими на стройками. Солнечные зайчики едва виды, поскольку энергия фотонов слишком ма ла или скорость угасания слишком велика. Энергию фотонов солнечных зайчиков можно увеличить так же, как и в случае глобального освещения: установите значение параметра Photon Intensity (Интенсивность фотонов) равным 80, ООО и выполните визуализацию снова.
Детализированные солнечные зайчики фокусируются через преломляющие поверх ности, такие как стекло, вода и т.д. (рис. 14.23).
Рис. 14.23. Солнечные зайчики имитируют свет, проходящий через стекло. Они создают на поверх ности стола интересные узоры
Настройка солнечных зайчиков и комбинирование их с глобальным освещением Теперь следует настроить сцену подробно, скомбинировав солнечные зайчики с гло бальным освещением. 1.
Сохраните снимок области просмотра визуализации и настройте параметры визуа лизации. Можно сбросить флажок rebuild Photon Map, как в случае с глобальным освещением, и использовать текущую карту для корректировки параметров точности
Улучшенная визуализация с помощью mental ray
581
солнечных зайчиков. Установите значение параметра Accuracy равным 350 и вы полните визуализацию. Теперь солнечные зайчики размыты больше, чем раньше. Солнечные зайчики обычно выглядят лучше, когда они сужены, поэтому меньшие значения радиуса и точности могут улучшить эффект. 2. Попробуйте подобрать такое значение точности, которое обеспечит баланс между резкостью и сглаженностью при визуализации. Используйте значение порядка 120. Кроме того, увеличьте в редакторе атрибутов количество фотонов солнечных зайчи ков (Caustic Photons) до 20, ООО и не забудьте перестроить фотонную карту в окне render
Settings.
3. Общую интенсивность солнечных зайчиков можно сократить за счет изменения зна чения цвета Caustic Scale (Масштаб солнечных зайчиков) в разделе Caustics. От кройте этот цвет и выберите значение 0.5 V (HSV). 4.
Объединим глобальное освещение и солнечные зайчики. Выберите источник света pointLight1 и установите флажок Illuminates By Default (Освещает по умолча нию). В разделе mental ray редактора атрибутов установите флажок Emit Photons (Испускать фотоны), а в разделе Area Light (Плоский источник света) установите флажок Visible (Видимый). В окне render Settings (Параметры визуализации) уста новите флажок Global Illumination (Глобальное освещение).
5. Выберите источник света CausticsLight и обнулите параметр Global Ilium Photons (Количество фотонов глобального освещения). Для источника света areaLight1 также обнулите параметр Caustic Photons (Фотоны солнечных зайчиков). В обоих случаях оставьте флажок Emit Photons (Испускать фотоны) установленным. Это га рантирует, что каждый источник света будет испускать тот тип фотонов, который необходим для выполнения его роли в освещении сцены. 6. Установите флажок r e b u i l d Photon Map (Перестраивать фотонную карту) в окне render Settings (Параметры визуализации) и визуализируйте первый кадр. В ре зультате визуализации должен быть виден эффект от использования глобального освещения и солнечных зайчиков для непрямого света. И глобальное освещение и солнечные зайчики вносят свой вклад в непрямое освещение: глобальное освещение влияет на диффузный свет, а солнечные зайчики — на бликовый. Однако на стене ос тается несколько нежелательных цветных пятен. Тени от солнечных зайчиков
При использовании солнечных зайчиков возникает проблема, связанная с отбрасыванием теней: тени прозрачных объектов будут непрозрачными. Можно визуализировать сцену в несколько отдельных проходов, а затем скомбинировать результаты в программе для работы с компози циями, такой как After Effects или Shake. Этот метод требует визуализации отдельного прохода с тенями без солнечных зайчиков и наложения его на результат прохода с солнечными зайчиками.
Переопределение глобального освещения, солнечных зайчиков и окончательной сборки Точки на стене появляются из-за фотонов солнечных зайчиков. Дело в том, что сей час используется небольшое количество фотонов солнечных зайчиков, которых недоста точно для покрытия стены. Существуют два варианта решения этой проблемы: увели-
582
Глава 14
чить количество фотонов и отрегулировать их значения или, что еще лучше, полностью устранить их воздействие на стену. Система mental ray предоставляет способ переопре деления солнечных зайчиков, глобального освещения и окончательной сборки для каж дого объекта в отдельности. Для этого необходимо выбрать форму объекта и скорректи ровать настройки в разделе mental ray (рис. 14.24).
Рис. 14.24. Параметры системы mental ray можно переопределить на уровне отдельных объектов 1. Чтобы удалить солнечный зайчик, установите флажок Caustics Override (Переопределение солнечного зайчика) для стены и обнулите значение параметра Caustics Accuracy (Точность солнечного зайчика). Это заставит систему mental ray не учитывать фотоны солнечных зайчиков для стены. 2.
Сбросьте флажок r e b u i l d Photon Map (Перестраивать фотонную карту) в окне render Settings (Параметры визуализации) и визуализируйте какую-нибудь область на стене, чтобы убедиться в исчезновении точек.
Визуализация окончательной сборки Окончательная сборка (Final Gather — FG) представляет собой средство визуализа ции непрямого света на основании освещенности. Как было сказано выше, это означает, что яркий объект отражает на сцену больше света, а если объекты расположены близко друг к другу, то они закрывают свет друг от друга. Например, при хлопке в ладоши ладо ни по мере приближения друг к другу становятся все более темными. Окончательная
Улучшенная визуализация с п о м о щ ь ю mental ray
583
сборка широко применяется для визуализации проходов затемнения, которые показы вают, как объекты закрывают друг от друга свет и отбрасывают тени друг на друга. Про ход затемнения обычно визуализируется как полутоновое изображение, которое на ста дии композиции используется для распределения цветовых значений из прохода цвета. Другая методика заключается в поиске воздействия окружающей среды на объекты с помощью купола окружения. В ходе этого процесса визуализируется проход окружаю щей среды, который описывает цветовое воздействие от изображения, обычно связанно го с узлом IBL. Обе эти методики рассматриваются в следующих разделах. Сначала следует ознакомиться с основами FG. 1. Откройте сцену F G _ 0 1 . mb с прилагаемого CD и изучите ее. Она содержит несколько объектов Paint Effects, которые преобразованы в трехмерную сетку. Камера имеет два ключевых кадра для разных ракурсов. При визуализации этих ракурсов придер живайтесь приведенных здесь рекомендаций. 2.
Отключите используемый по умолчанию источник света, выберите камеру (perspShape) и отобразите вкладку Environment (Окружение) в редакторе атрибу тов. Измените фоновый цвет на белый и визуализируйте кадр. Очевидно, что дерево будет черным (нет освещения), а фон — белым.
3.
На вкладке mental ray окна render Settings (Параметры визуализации) установите флажок Final Gather (Окончательная сборка) в одноименном разделе (рис. 14.25) и выполните визуализацию. Так должен выглядеть проход полутонового затемнения.
Puc. 14.25. Настройки визуализации Final Gather. Это мощное дополнение к непрямому освещению, вероятно, является в производстве самым широ ко используемым методом
Глава
584
4.
14
Окончательная сборка рассматривает фоновый цвет как цвет окружающей среды, который вносит свой вклад в освещенность сцены. Проведите эксперименты с фоно вым цветом, используя разные цветовые значения, чтобы оценить их влияние на дере во. Следует отметить, что параметр Final Gather (Окончательная сборка) работает, только если на вкладке r a y t r a c i n g установлен флажок r a y t r a c i n g (Трассировка лучей).
Управление настройками окончательной сборки Параметр Accuracy (Точность) в разделе Final Gathering (Окончательная сборка) оп ределяет количество лучей, которые испускаются каждой точкой окончательной сборки. По мере увеличения этого количества улучшается качество и увеличивается время ви зуализации, поэтому, чем больше используется лучей, тем лучше интерполяция воздей ствия освещенности. Д Л Я проверки используйте значение около 100. В реальном производстве можно увеличить количество до 1 0 0 0 лучей, особенно для сокращения мерцания в последовательностях. Пытайтесь сохранить как можно меньшее значение этого параметра, поскольку он сущест венно влияет на время визуализации. Эмиссия лучей окончательной сборки для каждой микроскопической точки поверх ности оказывается очень дорогостоящей при визуализации. Когда в разделе Final Gathering Options (Параметры окончательной сборки) установлен флажок Use r a d i u s Quality ConTROl (Использовать радиальный контроль качества), атрибуты Min r a d i u s (Минимальный радиус) и Max r a d i u s (Максимальный радиус) ограничивают эту об ласть, определяя радиус вокруг точки окончательной сборки так, что в пределах этого радиуса больше нет точек, отбрасывающих лучи. Эти атрибуты также определяют, как должна быть освещена данная область, используя информацию о дискретизации сцены с лучами окончательной сборки, а также средние значения ближайших точек окончатель ной сборки. Если требуется точная детализация, такая как при визуализации самозатенения в плотных складках, то следует использовать меньшие значения параметров Min radius и Max radius. Но если нужно только некоторое затемнение без точных деталей, используйте более высо кие значения, которые обеспечивают быструю визуализацию. Новый параметр Point Density (Плотность точек) контролирует количест во рассчитываемых точек окончательной, сборки. Значение выше 1 увели чит и качество, и время визуализации. Параметр Point Interpolation (Интерполяция то чек) контролирует количество других точек окончательной сборки, например точек, учи тываемых при визуализации; результирующие точки интерполируются, сглаживая зер нистость, зачастую сопровождающую визуализацию Final Gathering. Чем больше точек учитывается, тем более гладким выглядит результат, причем увеличение этого значения не увеличивает значительно время визуализации. Когда установлен флажок Use r a d i u s Quality ConTROl (Использовать радиальный контроль качества), интерполяция точек не доступна, поскольку значение радиуса каждый точки окончательной сборки уже опреде лено. И наконец, флажок OptimiZe For Animations (Оптимизировать для анимации) по зволяет осуществить временную интерполяцию, когда система mental rау просматривает кадры вперед и назад, сглаживая различия между ними и снижая таким образом меж кадровое мерцание, которое зачастую сопровождает визуализацию Final Gathering. Рассмотрим некоторые параметры FG.
Улучшенная визуализация с помощью mental ray
585
1.
Используем ту же сцену с белым фоном и камерой на первом ключевом кадре. При свойте параметру Final Gathering Accuracy (Точность окончательной сборки) значение 100 и выполните визуализацию. Присвойте параметру Point Interpolation (Точечная интерполяция) значение 30 и, выполнив визуализацию, сохраните снимок.
2.
Измените значение параметра Point Interpolation (Точечная интерполяция) на 1 и выполните визуализацию (рис. 14.26). Сравните этот результат с предыдущим. Чрезмерно высокие значения использовались для того, чтобы подчеркнуть различие между разными значениями. Начиная постановку сцены, как правило, стоит исполь зовать эмпирическое правило "десяти процентов": значение параметра Point Interpolation равно 10% от размера сцены. Оценив сцену, измените эти значения, ос новываясь на визуальном восприятии. Обратите внимание на более точное тониро вание листьев и области под корнями, где используются низкие значения в противо положность высоким.
Рис. 14.26. Окончательная сборка используется для добавления естественного закрытия света, за висящего от уровней освещенности 3.
Выберите дерево и откройте параметры Irradiance (Освещенность) и Irradiance Color (Цвет освещенности) тонера LambertTree. Выберите для Irradiance Color любой цвет и выполните визуализацию. При этом цвет освещенности сцены заменяется только что установленным цветом.
Глава 14
586
Другими важными параметрами являются Max Trace Depth (Максимальная глубина трассировки), r e f l e c t i o n (Отражение) и r e f r a c t i o n (Преломление), расположенные в разделе Final Gather Options (Параметры окончательной сборки) окна render Settings (Параметры визуализации). Они аналогичны соответствующим атрибутам на вкладке r a y t r a c i n g (Трассировка лучей), а также в разделах Caustics And Global Illumination (Солнечные зайчики и глобальное освещение) (см. выше раздел "Размытые тени и трас сировка лучей"). Принятое по умолчанию значение 2 параметра Max Trace Depth (Максимальная глубина трассировки) обеспечивает два отражения окончательной сбор ки, чего вполне достаточно для большинства сцен. Однако принятого по умолчанию зна чения 1 для параметров r e f l e c t i o n (Отражение) и r e f r a c t i o n (Преломление) обычно не достаточно. Для определения количества отражений источника света система mental ray использует самое низкое из значений параметров Max Trace Depth, r e f l e c t i o n и r e f r a c t i o n , поэтому при изменении сцены следует скорректировать и эти параметры. Хо тя в окончательной сборке используются диффузные лучи с одним или несколькими от ражениями, эти лучи могут отражаться или преломляться несколько раз при попадании на отражающий объект, такой как зеркало. Обычно эти лучи не должны преломляться или отражаться более чем два раза. Существует возможность записать на диск файл окончательной сборки, который можно использовать повторно, не вычисляя лучи окончательной сборки заново, если условия сце ны не изменяются. Это очень похоже на работу карт теней или карт глобального освеще ния. Установленное по умолчанию значение On (Включено) раскрывающегося списка r e b u i l d (Перестроить) раздела Final Gather (Окончательная сборка) приводит к повторном расчету окончательной сборки при каждой визуализации. Значение Off (Отключено) включает использование карты окончательной сборки (Final Gather map). Значение FreeZe (Фиксировать) позволяет добавлять в карту детали, что может быть удобно в разных об стоятельствах. Карта окончательной сборки вычисляется на основании визуализированно го вида со стороны камеры, поэтому для движущейся камеры этот параметр может добав лять на карту детали, а затем повторно использовать полученную информацию.
Комбинация глобального освещения и финальной сборки Чтобы придать комнате больше непрямого освещения, на финальном этапе добавля ется окончательная сборка (глобальное освещение и солнечные зайчики описаны в пре дыдущих разделах этой главы). Глобальное освещение и солнечные зайчики в комнате отключены. В предыдущем примере в комнате оставалось много темных областей и на блюдался недостаток эффекта затенения между близлежащими поверхностями, такими как ножки стола на полу. Исправим это. 1.
Откройте сцену room_03.mb на прилагаемом CD, выберите белую плос кость за окном и посмотрите на ее тонер (surfaceShaderl). Этот тонер бу дет использоваться для управления светом, падающим из окна в комнату.
2.
Включите окончательную сборку в окне render Settings (Параметры визуали зации) и визуализируйте кадр, используя стандартные значения. (Источники света отключены.) На самом деле белый тонер surfaceShaderl плохо осве щает сцену, поскольку его значение света довольно низкое. Чтобы увеличить его, выберите значение параметра Out Color в атрибутах тонера surfaceShaderl, затем в диалоге выбора цвета, установите V (value — значение) равным 10 и выполните визуализацию.
Улучшенная визуализация с помощью mental ray
587
3.
Попытайтесь установить значение 4 0 и выполните визуализацию снова. Вы замети ли, как увеличение значения повлияло на освещенность сцены? Такой тип поведения непосредственно связан с преимуществом использования изображений HDR, кото рое подробно рассматривается в следующем разделе.
4.
Выберите камеру и на вкладке Environment (Окружение) установите яркий цвет фо на. Этот цвет может создавать теплое или холодное ощущение. Выполните визуали зацию и обратите внимание на то, что некоторые из темных областей стали светлее. Это связано с влиянием яркого света из двух источников — извне комнаты и изнутри комнаты (перед камерой).
5.
Сохраните снимок, установите флажок Secondary Diffuse Bounces (Количество вто ричных диффузных отражений) на вкладке Final Gathering Options (Параметры окончательной сборки) в окне render Settings (Параметры визуализации), а затем снова выполните визуализацию. Разрешение вторичных отражений означает, что каждый луч может отразиться дважды, прежде чем возвратит значения света и цвета; таким образом, темные области получают большие значения света и цвета. Теперь дальняя стена комнаты освещена лучше.
6.
Установите флажки Global Illumination (Глобальное освещение) и C a u s t i c s (Солнечные зайчики) в окне render S e t t i n g s (Параметры визуализации) и для обоих источников света ( a r e a L i g h t l и c a u s t i c s L i g h t ) установите флажки Emit P h o t o n s (Испускать фотоны) Illuminates By Default (Освещает по умолча нию). Для плоского источника света a r e a L i g h t l установите в разделе атрибу тов mental ray флажок Visible (Видимый). Визуализируйте кадр, используя все особенности непрямого освещения. Окончательная сборка приносит несколько дополнительных деталей, необходимых для создания более реалистичного внешнего вида. На рис. 14.27 показан результат визуализации комнаты, который выглядит как высококачественное фотореалистичное изображение. Сравните его с изображениями, полученными в ходе визуализации с использованием гло бального освещения и солнечных зайчиков.
Как уже упоминалось, управлять некоторыми параметрами окончательной сборки можно на уровне отдельных объектов. В случае общей сборки следует отметить, что для каждого объекта можно откорректировать значения минимального и максималь ного радиуса. Этот подход может решить некоторые проблемы при визуализации объ ектов с совершенно разными масштабами, такими как сильно детализированный объ ект в большом пространстве, — например, если в комнате находится проигрыватель, то детализация и масштаб проигрывателя будут значительно отличаться от детализация и масштаба комнаты. В следующем разделе рассматривается использование прямого и непрямого освеще ния совместно с освещением, основанным на анализе изображений.
Освещение на основании анализа изображений, физическое освещение и HDRI Освещение на основании анализа изображений (Image-based lighting — IBL) представ ляет собой процесс использования изображения или последовательности изображений для определения освещения на сцене.
588
Глава 14
Рис. 14.27. Здесь представлен результат визуализации при комбинации непрямого освещения, гло бального освещения, солнечных зайчиков, окончательной сборки и прямого освещения При этом осуществляется дискретизация (выборка) имеющихся в изображении цвето вых значений и использование их одним из следующих способов: в качестве источников направленного света, в качестве значений освещенности для окончательной сборки или в качестве излучателей фотонов (глобальное освещение). Все эти методы имеют одну об щую характерную черту — они определяют освещение сцены на основе изображения. Кнопка Image Based Lighting (Освещение на основании анализа изображений) раздела Environment (Окружение) вкладки mental ray окна render Settings (Параметры визуа лизации) (рис. 14.28) позволяет создать сферический контейнер, который используется как полусферическое ограничивающее пространство — узел IBL. Узел IBL может быть связан с изображением, которое затем используется для распределения световых и цве товых значений на сцене (представляя окружающую среду) или просто для передачи значений отражения от окружающей среды. При создании узла IBL на сцене появляется представляющий его сферический объ ект. Данный объект можно перемещать, масштабировать и поворачивать в области про смотра. На рис. 14.29 показано окно редактора атрибутов для узла IBL, в котором фла жок Infinite (Бесконечно) по умолчанию сброшен. Узел IBL считается тонером источни ка света и находится в гипершейдере на вкладке Lights (Источники света), как показано на рис 14.30.
589
Улучшенная визуализация с помощью mental ray
Puc. 1428. Раздел Environment вкладки mental ray окна render Settings
Puc. 14.29. Атрибуты узла IBL позво ляют управлять использованием изо бражения (обычно изображения HDr) в качестве источника света, определяя окружающее воздействие света и обес печивая более реалистичную интегра цию между трехмерными элементами и съемками из реального мира
Puc. 14.30. В гипершейдере узел IBL располагается на вкладке Lights
В режиме Infinite (Бесконечно) узел IBL действует исключительно как бесконечное пространство, которое используется системой mental ray для моделирования окружаю щего воздействия, такого как отражения и квантование света, и поэтому на него не влия-
590
Глава 14
ет ни позиция, ни масштаб узла. Узел IBL окружает всю сцену. Однако вращение актив но и используется для ориентации изображения на сцене. В конечном режиме (когда флажок Infinite сброшен) все преобразования действуют; поэтому узел IBL можно мас штабировать и позиционировать на сцене. Это позволяет освещать с помощью узла IBL объекты в закрытом пространстве, таком как комната. Освещение IBL в конечном режиме использует точечные источники света, а в бесконеч ном — направленные. Это значительно увеличивает время визуализации, так как точечные источники света являются для компьютера более ресурсоемкими, чем направленные.
Моделирование неба и солнца Нововведением в Maya 8.5 является возможность моделирования таких физи ческих явлений, как солнце и небо (кнопка создания этих эффектов находится ниже кнопки создания узла IBL, как показано на рис. 14.28). Создание узла физического солнца и неба осуществляется практически так же, как и создание узла IBL, за исключением того, что здесь используется процедурное моделирование, а не сканирование строк изображе ния. Таким образом, если необходимо визуализировать сцену, где используется солнце и небо, необходимо сначала выйти и осуществить их съемку, а затем импортировать в Maya. Этот но вый узел предоставит, вероятно, более чем достаточные возможности внешнего вида. Узел m i a _ e x p o s u r e _ s i m p l e — это новый узел mental ray, используемый для разбиения изображения HDR на диапазон, допустимый для отображения на мониторе. Более подроб ная информация о HDRI приведена в следующем разделе. После щелчка на кнопке Create Physical Sun And Sky (Создать физическое солнце и небо) Maya делает доступными параметры Final Gathering в окне render Settings (Параметры визуализации) и создает две сети тонирования (mia_physicalSunl и mia_physicalSkyl), а также узел экспозиции (exposure node) и помещает их во вкладку Utilities (Утилиты) гипершейдера. Кроме того, узел sunDirectionShape помещается во вкладку гипершейдера Lights (Источники света). Для корректировки атрибутов этой се ти узлов выделите в редакторе атрибутов узел physicalSkyl (узел physicalSunl происходит от узла неба), который позволяет изменить освещенность и другие парамет ры внешнего вида неба. На рис. 14.31 приведен пример сцены (файл simpleSky.mb на прилагаемом CD), визуализированной с моделями физического солнца и неба. Обратите внимание — сцену освещает только модель солнца (совместно с Final Gathering).
Изображения с высоким динамическим диапазоном (HDRI) Изображения с высоким динамическим диапазоном (High Dynamic r a n g e Images — HDRI) лучше передают интенсивность света, присущую реальному миру, за счет записи значений интенсивности для разных уровней экспозиции и, следовательно, предусмат ривают высокий динамический диапазон света, сохраненный в изображении. Значения света в реальном мире не ограничиваются никаким диапазоном вроде обычного 0 - 1 . Например, если посмотреть прямо на солнце, то из-за высокой интенсивности света при дется немедленно отвести взгляд. Возможность находить составляющую света по ее ин тенсивности в реальном мире и использовать ее в компьютерной графике открывает путь к реалистичному моделированию света. Например, изображения HDR используются для моделирования света, поступающего извне, который затем используется как значение света на трехмерных автомобилях, обеспечивая их изображениям почти гиперреали-
591
Улучшенная визуализация с помощью mental ray
стачное качество. Это стало распространенной практикой для рекламы автомобилей и характерной чертой многих фильмов, изобилующих спецэффектами. Рассмотрим узел IBL и окончательную сборку. 1. Откройте с прилагаемого CD сцену IBL_LightO1 и ознакомьтесь с ней. Объекты представляют различные типы материалов — от полностью отра жающих до простых тонеров Lambert. Рассмотрим, как можно использовать HDRI с IBL для освещения сцены. 2.
Убедитесь, что используемый по умолчанию источник света отключен, и создай те узел IBL, щелкнув на кнопке Create (Создать) вкладки Image Based Lighting (Освещение на основании анализа изображений) окна render Settings (Параметры визуализации). В области просмотра появится каркасная сфера, представляющая узел IBL. Если сфера не видна, то можно уменьшить масштаб; он не имеет значения, поскольку используется режим Infinite (Бесконечно).
3.
Выберите узел IBL и откройте редактор атрибутов. В раскрывающемся спи ске Туре (Тип) выберите пункт Texture (Текстура), а затем измените значе ние параметра Texture с черного цвета (используемого по умолчанию) на бе лый. Выполните визуализацию, которая установит белый цвет для окру жающего пространства.
4.
Обратите внимание на то, что белый фон виден в отражающих объектах. До бавим освещение с окончательной сборкой. Задействуйте окончательную сборку со значением 20 параметра Point Interpolation (Точечная интерполя ция) (см. выше раздел "Визуализация окончательной сборки"). Визуализи руйте кадр.
5.
Благодаря окончательной сборке все цвета становятся видимыми и наблюда ется подходящая степень тонирования (рис. 14.32). Чтобы увеличить интен сивность света (освещенность), установите флажок Color Gain (Усиление цвета) на вкладке Image Based Lighting Attributes (Атрибуты освещения на основании анализа изображений) (для узла mentalraylb1Shapel), уве личьте значение V (HSV) до 2 и выполните визуализацию. Это увеличивает интенсивность света и для изображений HDR действует как средство управ ления уровнем экспозиции.
Рис. 14.31. Модели физического солнца и неба позволяют создать освещение, как ранним вечером
Рис. 14.32. Освещение на основании ана лиза изображений для трех сфер
Глава 14
592
Теперь рассмотрим совместные действия IBL, окончательной сборки и HDRI. В списке Туре (Тип) выберите пункт Image File (Файл изображения), который свя зывает файл изображения с узлом IBL. В списке Image Name (Имя изображения) выберите изображение l a t _ l o n g _ l d r . t i f f , расположенное на прилагаемом CD. Если уменьшить масштаб в области просмотра, то можно будет увидеть изображе ние, отображаемое на узле IBL (в режиме тонирования); используя параметры Hardware Filter (Аппаратный фильтр) и Alpha (Прозрачность), этим изображением можно управлять. Восстановите значение 1 для параметра Color Gain (Усиление цвета) и выполните визуализацию. На рис. 14.33 показано, что теперь на хромиро ванном шарике отражается изображение окружающих предметов.
Рис. 14.33. Результаты использования карты текстур для окружающего осве щения на основании анализа изображения Параметр Mapping (Наложение) (со значением Spherical (Сферическое)) предос тавляет два способа наложения изображений на узел IBL. Различие этих методов за ключается в том, как изображения охватывают узел IBL. И угловые (Angular), и сфе рические (Spherical) изображения могут содержать панорамный вид (360°), который представляет окружающее пространство. Воспользуемся изображением "широтадолгота" (как на глобусе), которое применяется при сферическом наложении. Угло вая карта похожа на отражающий хромированный шар и накладывается с использо ванием углового метода. Оба формата изображений показаны на рис. 14.34.
Рис. 14.34. "Широта-долгота" в сравнении с угловыми изображениями HDR. Оба типа можно ис пользовать с узлом IBL и накладывать на сцену, обеспечивая окружающее воздействие света
Улучшенная визуализация с помощью mental ray
593
7.
Это изображение видно в отражениях, и с его помощью создается некоторое освещение для сцены. Сохраните снимок. Теперь заменим это изображение его версией HDR.
8.
Загрузите изображение l a t _ l o n g . H D R в качестве текстуры и выполните визуали зацию. Динамический диапазон виден на диффузных и отражающих поверхностях. Обратите внимание на отличия в небе и облаках на отражающей сфере. Поскольку изображение темное, увеличьте значение Color Gain (Усиление цвета) до 2 и выпол ните визуализацию. Результат показан на рис. 14.35.
Рис. 14.35. Узел IBL с изображением HDR в качестве текстуры 9. Замените изображение HDR изображением A N G U L A R . HDR и измените значение па раметра Mapping (Наложение) на Angular (Угловое). Выполните визуализацию и посмотрите, как сцена реагирует на новое окружение. Переверните сцену и посмот рите, как угловое изображение охватывает узел IBL. В области просмотра сравните это с результатами сферического наложения.
Управление экспозицией Изображение HDR можно визуализировать на разных уровнях экспозиции. Хотя просматривать можно только по одному уровню за раз, присутствует весь динамический диапазон — от низкого до высокого уровня экспозиции. Значение атрибута Color Gain (Усиление цвета) узла IBL увеличивает используемый диапазон, но в изображения HDR, в отличие от стандартного изображения, не дает общего увеличения. Это может оказаться трудным для понимания, но нескольких экспериментов и дополнительной ин формации о изображениях HDR должно быть достаточно для освоения этой методики. Чтобы разобраться в этом вопросе, посетите Web-сайт Пола Дебевека (Dr. Paul Debevec) www. d e b e v e c . o r g или www. HDRshop. com. Для удобства пользователей система mental ray содержит теперь узел перевыборки, m i a _ e x p o s u r e _ s i m p l e , который позволяет по вторно накладывать изображение HDR с низким разрешением для представления на мо ниторе. Более подробная информация об использовании узла экспозиции приведена в документации Maya. Рассмотрим IBL, HDRI и световое излучение. 1. Отключите на предыдущей сцене окончательную сборку. 2.
В редакторе атрибутов для узла IBL в разделе Light Emission (Световое излучение), показанном на рис. 14.36, установите флажок Emit Light (Излучать свет) и выполни те визуализацию.
Глава 14
594
Рис.14.36. Параметры раздела Light Emission используются для моделирова ния тех источников направленного све та, на которые влияет цвет и интен сивность. Значения цвета и интенсивно сти берутся из изображения, которое используется узлом IBL 3.
Тень отчетливо видна и зависит от направления солнечных лучей. Это иллюстрирует то, как изображения HDR предоставляют информацию для освещения на основе ин тенсивности света в изображении HDR. Чтобы оценить различие, замените изобра жение IBL сферическим изображением, l a t _ l o n g . HDR, и выполните визуализацию.
Параметры Quality U (Качество по направлению U) и Quality V (Качество по направ лению V) определяют разрешение для изображения, которое накладывается на сферу. Разрешение фактического изображения уменьшается в соответствии со значениями по направлениям U и V. IBL использует каждый пиксель субдискретизированного изобра жения в качестве источника направленного света. Поэтому увеличение значений качест ва по направлениям U и V увеличивает количество доступных для сцены источников света; уменьшение этого значения сокращает время визуализации. Параметр Samples (Дискретизация) определяет, сколько из этих доступных источ ников направленного света фактически будет использоваться. Это еще один процесс фильтрации, оптимизирующий время визуализации, поскольку визуализация 256x256 источников направленного света занимает много времени. Для выборки используются два числовых значения, соответствующих главным и второстепенным источникам света, которые также называются основными и заполняющими источниками света. Основное число (первое значение) сообщает системе mental ray, сколько следует использовать пикселей, имеющих более высокий диапазон. Второстепенное значение соответствует
Улучшенная визуализация с помощью mental ray
595
среднему диапазону изображения. В случае HDR это особенно важно, поскольку изо бражение может иметь крайне высокий диапазон значений света; следовательно, выбор ка большего количества основных или средних источников света может значительно по влиять на визуализацию. При использовании светового излучения интенсивность изображения HDR управляется значением Color Gain (Усиление цвета) раздела Light Emission (Световое излучение). Для то го чтобы управлять этим значением, необходимо установить флажок Adjust Light Emission Color Effects (Корректировать цветовые эффекты светового излучения). Параметр Low Samples (Нижнее значение дискретизации) определяет, сколько будет использоваться выборок света, если установлен флажок Final Gather (Окончательная сборка). Это значение должно быть гораздо ниже, чем значение параметра Samples (Дискретизация), поскольку Final Gather добавляет на сцену много света. Остальные параметры, включая Emit Diffuse (Порождать диффузию) и Specular (Блик), а также Use r a y Trace Shadows (Использовать трассированные тени) и Shadow Color (Цвет тени), довольно простые и используются так же. Качество изображения можно корректировать за счет установки более высоких значений параметров Quality U и Quality V, количества выборок и значений в разделе Anti-Aliasing Quality (Качество сглаживания). Однако при проверке сцен рекомендуется использовать низкие значения.
Рассеивание Нововведением системы mental ray в Maya 8 является возможность без про блем моделировать подповерхностное рассеивание (scattering). Подповерхн остное рассеивание возникает в случае, когда лучи света от источника проникают сквозь по верхность (а не отражаются от нее сразу), проходят полупрозрачный слой, рассеиваются ниже на менее прозрачных областях и, приобретя их цвет, возвращаются сквозь поверх ность назад, где становятся видимыми. Хотя описание этого эффекта может быть не очень понятным, само явление наблюдается повседневно: все, от крови, автомобильной краски и молока до мрамора и фарфора, обладает подповерхностным рассеиванием, и, безусловно, кожа человека, на цвет которой частично влияет цвет кровеносных сосудов и жировой ткани, находящейся непосредственно под ней (безусловно, этот эффект более заметен там, где кожа тоньше). Подповерхностное рассеивание учитывает несколько сложных визуальных эффек тов. Во-первых, свет приобретает комплексные цветовые атрибуты, проходя путь от источника света до поверхности объекта. Во-вторых, свет частично отражается от объ екта сразу, а частично, рассеявшись под его поверхностью и отразившись от внутрен них слоев, добавляет мягкую расплывчатую составляющую. В-третьих, на краях объ ектов может возникать эффект "рассвета", поскольку луч света, падающий под не большим углом, способен пройти под поверхностью некоторое расстояние перед отражением наружу, где он станет виден. Этот последний эффект заметен на обломке мрамора или на лице человека, когда они перекрывают источник света. Хотя сам ис точник света невиден, просвечивающий сквозь край обломка или кожи лица свет за частую создает эффект светового ободка (rim light). Если не хватает воображения, что бы представить этот эффект, попросите друга встать перед лампочкой в темной комна те, и эффект сразу станет вполне очевидным.
596
Глава 14
Без такого эффекта, как подповерхностное рассеивание, объекты выглядят жесткими, как будто "пластмассовыми", поэтому у реалистичных изображений эффект подповерхностного рассеивания весьма популярен. К сожалению, настоящее подповерхностное рассеивание — это очень сложный и дорогой (с точки зрения вычислений) эффект. Именно поэтому так ин тересны новые параметры рассеивания mental ray: несколько простых корректировок по зволяют создать эффект, очень похожий на подповерхностное рассеивание, всего за не сколько минут, в то время как прежде для получения результата потребовалось бы много усилий. Параметр Scattering (Рассеивание) доступен для анизотропного тонера, тонера Blinn, Lambert, OceanShader и Phong (включая Phong Е). Чтобы увидеть рассеивание в действии, давайте переделаем модель, Машизмо, в мра морную статую. Откройте на прилагаемом CD файл M a c _ f o r _ s c a t t e r i n g . ma. Как мож но заметить, Машизмо стал более гладким, чем раньше (особенно округлилось его лицо). На сцене установлены три простых источника света, включая главный, заполняющий и контровой прожекторы, освещающие Машизмо. На сцену добавлена камера (Camera1) и пара ключевых кадров для ее позиций, с которых будут просматриваться разные особенно сти подповерхностного рассеивания. К Машизмо применен стандартный тонер Lambert ( L a m b e r t 1 ) , который немного перенастроен под мрамор, чтобы придать фигуре внешний вид мраморной скульптуры. Визуализируйте сцену. Как можно заметить, "бюст" выглядит вполне мраморным, но ему немного недостает естественности. Это именно тот случай, ко гда необходимо подповерхностное рассеивание. Сохраните копию визуализированного изображения, чтобы впоследствии сравнить ее с полученным результатом. Поскольку мрамор обычно имеет блестящие включения, возможно, лучше подошел бы то нер Blinn, однако бликовая подсветка на сцене не нужна, поскольку она помешает рассмот реть эффект рассеивания. Чтобы создать эффект рассеивания, откройте редактор атрибутов для тонера Lambertl и в разделе mental ray (рис. 14.37) измените значение параметра Scatter r a d i u s (Радиус рассеивания) на отличное от 0; например на 1. Сравнив результат визуа лизации со стандартным, можно заметить, что общее освещение стало намного более яр ким, чем прежде, за счет света, рассеиваемого под поверхностью модели. Кроме того, за тененные области (например, подмышками и с левой стороны щеки) стали из-за рассеи вания намного светлее. Различия между результатами визуализации представлены на рис. 14.38. Увеличьте радиус до 10 и повторите визуализацию; различие весьма незначи тельное, но демонстрирует некоторое повышение рассеивания в теневых областях и уменьшение общего контраста. Прежде чем продолжать, верните параметру Scatter r a d i u s (Радиус рассеивания) значение 1. В общей схеме освещения эффект почти незаметен. Чтобы рассмотреть его лучше, отклю чим главный и заполняющий источники света ( s p o t l i g h t l и spotlight2), уменьшив их интенсивность до 0. Снова визуализируйте сцену с радиусом рассеивания 0 и 1. Как можно заметить, теперь различие между результатами визуализации с подповерхностным рассеива нием и без него стали заметнее (рис. 14.39). В частности, обратите внимание на расплывчатые светлые области спереди фигуры, освещение правой стороны лица Машизмо, груди и руки, на которые не падает прямой свет. При большом значении радиуса, например 10, рассеива ние фактически смажет детали модели; в результате увеличения значения радиуса модель должна казаться все меньше, поскольку прозрачный слой материала будет становиться все толще, а расплывчатых светлых областей вокруг будет все больше. Если перейти к кадру 2,
Улучшенная визуализация с помощью mental ray
597
где модель полностью загораживает свет, сквозь камеру можно лучше увидеть результат изменения значения радиуса.
Puc. 1437. Элементы управления рассеи ванием системы mental ray для тонера
Рис. 1438. Результат визуализации без подповерхностного рассеивания (а) и с радиусом рассеива ния 1(6) Работу эффекта рассеивания можно откорректировать с помощью других параметров раздела mental ray. Параметр Scatter Color (Цвет рассеивания) корректирует цвет света, рассеиваемого внутри модели и проникающего наружу. Сделав этот цвет существенно отличающимся от цвета модели, можно заставить модель выглядеть так, как будто она имеет сложную цветовую внутреннюю структуру (это весьма тонкий эффект, наилуч шим образом проявляющийся при освещении спереди и сзади).
598
а
Глава 14
б
Рис. 14.39. Визуализация с использованием только контрового источника света (а) без рассеивания (б) при рассеивании с радиусом 1 Параметр Scatter Accuracy (Точность рассеивания) задает количество точек, учиты ваемых при рассеивании; чем больше их количество, тем выше реализм эффекта, но на визуализацию потребуется больше памяти и времени. Параметр Scatter Falloff (Затухание рассеивания), подобно затуханию освещения, определяет, как быстро спадает яркость рассеивания внутри модели. Для получения более реалистичного эффекта по пробуйте поменять значения Linear (Линейно) и Quadratic (Квадратично). Параметр Scatter Limit (Предел рассеивания) ограничивает общее количество отражений и пре ломлений луча при определении окончательного цвета пикселя. Для большинства случаев вполне достаточно значения 5 или 10; значение 0 отключает эффект рассеи вания. Параметр Scatter C a c h e Size (Размер кэша рассеивания) задает количество то чек рассеивания, сохраняемых в кэше рассеивания. Чем больше точек используется — тем лучше результат визуализации, но памяти используется больше. Если избытка памяти не наблюдается, оставьте значение 0, при котором система mental ray кэширует все точки рассеивания. С помощью этих относительно простых элементов управления можно создать весьма убедительный (и сложный) эффект, который несколько лет назад заставил бы поблед неть от зависти признанных мастеров визуализации.
Аппроксимация поверхностей и карты смещений Редактор аппроксимаций (Approximation Editor) (рис. 14.40) обеспечивает замену триангуляции Maya триангуляцией mental ray, которая достигается за счет примене ния к объектам специальных инструкций mental ray. Система mental ray обеспечивает лучшие методы триангуляции и большие возможности управления детализацией (например, вокруг отсеченных поверхностей) без равномерного увеличения триангу ляции по всей поверхности. Применять описание аппроксимации довольно просто. Создайте сферу NURBS, а затем откройте редактор аппроксимаций, выбрав пункт меню Window => rendering Editors => mental ray => Approximation Editor (Окно => Редакторы визуализации => mental гау => Редак-
Улучшенная визуализация с помощью mental ray
599
тор аппроксимаций). Этот редактор отображает методы аппроксимации для текущего выделения. Все они называются D e r i v e F r o m M a y a . Это означает, что в настоящее время специальная аппроксимация к сфере не применяется. Поэтому система mental ray вос пользуется настройками триангуляции из Майя.
Puc. 14.40. Редактор аппроксимаций: канал mental ray для применения специальных триангуляцион ных инструкций mental ray к объектам Если выбрать многофрагментарную модель, а затем установить переключатель Single (Одиночная), то будет создана одна аппроксимация для всех поверхностей/фрагментов. Если установить переключатель Multi (Множественная), то новая аппроксимация будет создана для каждой поверхности. Установка флажка Show In Hypergrapgh (Показать в гиперграфе) открывает окно гиперграфа и отображает новые связи аппроксимаций. Откройте редактор атрибутов, убедитесь, что выбрана сфера, и щелкните на кнопке Create (Создать) в разделе NURBS Tessellation (Триангуляция NURBS) — на компью терах Мас или в разделе surface Approx (NURBS) (Аппроксимация поверхности (NURBS)) — в Windows и Linux. В редакторе атрибутов появится новое всплывающее окно, отображающее параметры mental ray, относящиеся к аппроксимации поверхности. В списке surface Approx (NURBS) (Аппроксимация поверхности (NURBS)) редактора аппроксимаций появится пункт mentalraysurfaceApprox1, представляющий новую, только что созданную аппроксимацию. Как только аппроксимация будет создана, она окажется на сцене. Поэтому активную аппроксимацию можно заменить другой аппроксимацией из списка на любой вкладке в редакторе аппроксимаций. Опять щелкните на кнопке Create. Чтобы кнопка Create сно ва стала доступной, необходимо сначала переключиться в режим DeriveFromMaya. Но вая аппроксимация создается и применяется к поверхности. Теперь можно выбрать пре дыдущую аппроксимацию из списка и щелкнуть на кнопке Assign (Применить), чтобы заменить старую аппроксимацию новой.
Предустановленные наборы, метод аппроксимации и стили Окно Approximation (Аппроксимация) в редакторе атрибутов предоставляет доступ к нескольким параметрам триангуляции. Ниже кратко изложена суть этой обширной тех нической темы. Подробное объяснение всех методов триангуляции можно найти в доку ментации по mental ray.
Глава 14
600
Предустановленные наборы настроек аппроксимации поверхностей Список Presets (Предустановленные) позволяет выбрать настройки, управляющие параметрами Approx Method (Метод аппроксимации) и Approx Style (Стиль аппрокси мации) (обратите внимание, параметр Approx Style доступен только для некоторых ме тодов). В списке Approx Style находятся настройки качества (от низкого до высокого) для каждого предустановленного набора. Например, набор r e g u l a r Grid Low Quality (Обычная сетка низкого качества) содержит меньшие значения секционирования по на правлениям U и V, чем набор High Quality (Высокое качество), но оба набора основаны на одном и том же методе и стиле.
Метод аппроксимации поверхности Параметры Approx Method (Метод аппроксимации) управляют настройкой "правил" триангуляции поверхности. Например, должна ли адаптивная триангуляция основы ваться на размере в пикселях, т.е. должны ли поверхности, находящиеся ближе к камере, иметь большую триангуляцию, как в случае метода Length/Distance/Angle (По длине/по расстоянию/по углу)? Или она должна основываться на фрагментах поверхности, как в случае методов Parametric (Параметрический) и r e g u l a r Parametric (Обычный парамет рический)? Оба метода управляют триангуляцией NURBS-поверхности. Параметриче ский метод используется также для полигональных поверхностей и во время визуализа ции осуществляет контроль секционирования. СТИЛЬ аппроксимации
поверхности
Параметр Approx Style (Стиль аппроксимации) обусловливает триангуляцию по верхности на основе выбранного метода. Таким образом, этот метод предписывает, где должно иметь место адаптивное секционирование, для какой части поверхности и как оно должно осуществляться. Стиль обеспечивает различные алгоритмы для управления разделением поверхности на треугольники; различие заключается в том, как система mental ray управляет адап тивным секционированием. Существуют четыре варианта: Grid, Tree, Delaunay (только для NURBS-поверхностей) и Fine. Fine (Точный) — ресурсоемкий, высококачественный стиль разделения поверхности, который создает треугольники одинакового размера. Tree (Древовидный) — локализация секций древовидным прогрессивным способом, со кращающим общую триангуляцию поверхностей. Grid (Сетка) — используется равно мерная сетка на поверхности и более плотная сетка — в детализированных областях; в результате получается весьма дорогостоящая триангуляция, которая может оказаться невостребованной. Delaunay (триангуляция Делоне) — оптимизация триангуляции; осуществляется триангуляция областей с большим количеством углов; использование этого метода может привести к весьма непредсказуемым результатам. Проведите эксперименты с параметрами управления аппроксимацией. 1.
Откройте сцену a p p r o x _ 0 1 . m a с прилагаемого CD и выберите сферу NURBS с отсеченным отверстием (NURBSSpherel). В редакторе аппрокси маций становится доступной кнопка Edit (Правка), если в списке surface Approx. (NURBS) (Аппроксимация поверхности (NURBS)) выбран пункт mentalraysurfaceApprox1. Щелкните на этой кнопке, чтобы просмотреть на стройки аппроксимации, а затем визуализируйте первый кадр.
Улучшенная визуализация с помощью mental ray 2.
601
Обратите внимание на зазубренные края наружного контура. Чтобы исправить это, можно в редакторе атрибутов (mentalraySurfaceApprox1) увеличить значения атрибутов секционирования по направлениям U и V с 1 до 2. Удостоверьтесь, что выбран метод Parametric (Параметрический), и выполните визуализацию.
3. Качество существенно улучшилось, потому что при каждом увеличении значения секционирования с помощью параметрического метода экспоненциально разделяет ся каждый фрагмент (поверхность между изопараметрическими линиями); это зна чительно увеличивает количество треугольников для каждого фрагмента поверхно сти. Это не совсем экспоненциальное увеличение; в данном случае используются го раздо более сложные вычисления. 4.
Измените метод аппроксимации (Approx Method) на r e g u l a r Parametric (Обычный параметрический), при котором секционируется поверхность в целом, и выполните визуализацию. Поверхность выглядит плохо, так как для всей поверхности приме няются только два уровня секционирования. Однако отсеченная область выглядит хорошо, поскольку для нее используется отдельная аппроксимация поверхности. Увеличьте значения секционирования по направлениям U U и V до 4 0 и 4 0 , после чего выполните визуализацию. Следует заметить, что уровень секционирования действу ет по-разному для методов Parametric (Параметрический) и r e g u l a r Parametric (Обычный параметрический).
5.
Создайте в редакторе аппроксимаций новую аппроксимацию Trim Curve (на Mac) или Trim Curve Approx. (на Windows и Linux) при триангуляции NURBS для сферы и визуализируйте второй кадр. Сохраните снимок в окне вида визуализации, а затем в редакторе атрибутов увеличьте значение N Subdivisions (Количество секций) до 4 и снова выполните визуализацию. Качество в отсеченных поверхностях должно улучшиться. Отсекающая аппроксимация влияет только на отрезанные области и не затрагивает граничные кривые.
6.
Выберите полигональную сферу и перейдите к третьему кадру. В разделе Polygon and Subd surfaces (Полигональные и SDS-поверхности) редактора аппроксимаций создайте аппроксимацию Subdivision (на Маc) или Subdivision Approx. (на Windows и Linux) и убедитесь, что она применена к объекту, а затем визуализируйте кадр. Вы берите пункт Edit (Правка) для этой аппроксимации и в редакторе атрибутов ис правьте отверстие, указав тип используемого преобразования, — внизу окна выбери те значение Quads То Triangles (Четырехугольники в треугольники) для параметра Conversion (Преобразование), а затем выполните визуализацию. Увеличение коли чества секций, как и предполагалось, повышает качество и сокращает время визуали зации. Выполните визуализацию со значением секционирования, равным б, и обра тите внимание на повышение качества. В случае метода Parametric (Парамет рический) секционирование равномерно увеличивается по поверхности.
7. Измените метод аппроксимации (Approx Method) на Length/Distance/Angle (По длине/по расстоянию/по углу), который позволяет управлять секционированием объекта в зависимости от камеры и пространства пикселей. Визуализируйте кадр и обратите внимание на низкое качество. Атрибуты Min Subdivision (Минимальное секционирование) и Max Subdivision (Максимальное секционирование) определяют, сколько раз можно секционировать треугольник; атрибуты Length (Длина), Distance (Расстояние) и Angle (Угол) управляют правилами, определяющими, когда требует-
Глава 14
602
ся большее секционирование. Таким образом, это процесс адаптивного секциониро вания. Параметр Length (Длина) определяет максимальную длину для каждого края, параметр Angle (Угол) определяет максимально допустимый угол между двумя со седними гранями в зависимости от нормалей, а параметр Distance (Расстояние) пы тается осуществлять секционирование до тех пор, пока грани не будут удалены от поверхности больше чем на n единиц. Значения этих трех атрибутов устанавливают ся в единицах сцены или (если установлен флажок View Dependent (В зависимости от представления)) в пикселях. Параметр Any Satisfied (Любой совпавший) указы вает на то, что, как только выполняется условие одного из трех атрибутов, процесс секционирования прекращается. Измените значение параметра Length на 1, устано вите флажок View Dependent и выполните визуализацию. Длина каждого края не превышает 1 пикселя.
Карты смещения в mental ray Система mental ray обеспечивает возможность визуализации чрезвычайно подробных карт смещения без дефектов. Это называется точным смещением. При точном смещении для триангуляции используется точный (Fine) стиль аппроксимации, обеспечивающий чрезвычайно высококачественную адаптивную триангуляцию. Смещение в mental ray работает как с прямым, так и с непрямым освещением. Проведем эксперименты со смещением. 1. Откройте сцену dissp_01.ma с прилагаемого CD и выберите плоскость Poly. Обратите внимание на тонер, связанный со смещением этой плоско сти. Выполните визуализацию. Результаты, полученные с помощью смеще ния Maya, не особенно впечатляют. Выберите плоскость и в редакторе аппрок симаций создайте смещение (Displace). В редакторе атрибутов (рис. 14.41) выберите предустановленный набор Fine View Low Quality (Точное представ ление низкого качества), в результате чего стиль аппроксимации изменится на Fine (Точный). Визуализируйте изображение и сравните с результатом предыдущей визуализации. 2. Выберите текстуру G r i d (используется для смещения), в разделе Color B a l a n c e (Цветовой баланс) редактора атрибутов увеличьте значение A l p h a Gain (Усиление прозрачности) с 1 до 3 и выполните визуализа цию. Значение смещения увеличится. Создайте текстуру Maya Fractal 2D, примените ее к параметру C o l o r Gain (Усиление цвета) текстуры Grid, а затем выполните визуализацию. Никакого результата нет, по скольку смещением управляет усиление прозрачности, а не значение цвета. Прозрачность для текстуры G r i d получена из значений Filler (Заполнитель) и Line Color (Цвет линий). Свяжите текстуру F r a c t a l 1 с атрибутом Filler Color (Цвет заполнителя) и выполните визуализацию. Высоту можно менять как с помощью параметра Grid A l p h a Gain (Усиление прозрачности текстуры Grid), так и с помощью параметра Fractal1 Color B a l a n c e (Цветовой баланс текстуры Fractal1); чтобы оценить эффект, опробуйте их значения на практике.
Улучшенная визуализация с помощью mental ray
603
Рис. 14.41. Раздел аппроксимации смещения Рекомендуется визуализировать эту сцену с включенным параметром Final Gathering (Окончательная сборка) и узлом IBL, чтобы увидеть их эффекты со смещением. На рис. 14.42 показано смещение с HDRI и окончательной сборкой.
Рис. 14.42. Визуализация смещения в mental ray создает подробную триангуляцию и позволяет получить поразительные результаты
604
Глава 14
Используя усложненную процедурную сеть текстур, обратите внимание на связывание зна чений цвета со смещением через узел яркости. Оно позволяет контролировать величину смещения с помощью значений цвета, а не с помощью усиления прозрачности.
Резюме В этой главе подробно рассматривались основы управления визуализацией mental ray. Настройки системы mental ray могут как улучшить, так и ухудшить результат визуа лизации, поскольку некоторые системы визуализации способны значительно загружать процессор. Для успешной работы очень важно знать, как оптимизировать визуализацию. Выше рассматривались настройки системы mental ray; специальные тонеры; источ ники света, тени и туман; размытость; непрямое освещение; освещение IBL и HDRI, но вый эффект рассеивания, а также аппроксимация поверхностей и карты смещения. Са мой важной из обсуждаемых выше особенностей является HDRI и окончательная сбор ка; в современной киноиндустрии — это широко распространенная практика моделирования освещения реального мира. Рекомендуется глубже изучить изображения HDR и гармонику сфер. Это будет особенно полезно тем читателям, которые интересу ются усложненными изображениями и фотографией. Тем, кто интересуется исключительно моделированием и анимацией, полезно знать, что базовая визуализация затемнения может продемонстрировать модель или анимацию с хорошим эстетическим внешним видом. Это поможет избежать дополнительной рабо ты с текстурированием и визуализацией.
Система Toon Shading Система Toon Shading представляет собой набор инструментальных средств, позво ляющих придать трехмерным объектам сцены вид и стиль мультипликации, нарисованной от руки. Инструменты системы Toon Shading просты в применении, очень мощные и по зволяют получить мультипликационный результат весьма высокого качества. Используя инструмент Toon Shading, в трехмерном пространстве можно создавать мультипликацион ные персонажи или добавлять стилистические штрихи к фотореалистическим сценам. В этой главе использован практический подход к исследованию инструментальных средств Toon Shading на примере простой трехмерной сцены: если применить к ней ли нии и заполнители Toon Shading, получим стилизацию под мультфильм. Здесь также описаны способы применения инструментальных средств Toon Shading в сфере научной фантастики. Однако, прежде чем переходить к выполнению упражнений этой главы, ре комендуется просмотреть главы 17, "Система Paint Effects", и 12, "Тонирование и тексту рирование при анимации". В этой главе рассматриваются следующие темы. •
Концепция Toon Shading
•
Применение заполнений
•
Создание мультипликационных линий
•
Технологии мультипликационных контуров
•
Применение штрихов Paint Effects для мультипликационных контуров
•
Модификаторы мультипликационных контуров
Концепция Toon Shading В набор меню rendering (Визуализация), представленный на рис. 15.1 и доступный в качестве панели, входят новые инструменты, с помощью которых можно создать эффект мультипликационного изображения. Результат работы набора инструментов Toon Shading напоминает векторную визуализацию или работу в векторном графическом ре дакторе, таком как Adobe Illustrator, когда полученное изображение состоит из набора линий, определяющих заполненные цветом формы как в традиционных мультфильмах, например "Белоснежка" (Snow White) или "Скубиду" (Scooby Doo). Однако инструмен тальные средства и методы Toon Shading отличаются от средств векторной визуализации (поскольку создают принципиально иной, более специализированный результат), и пу тать их не следует. Для заполнения формы и создания графических эффектов набор ин струментов Toon Shading использует комбинацию тонов градиента, а для создания рисо ванных контуров — сетку смещения (offset mesh). Визуализацию объектов, созданных
Глава 15
606
системой Toon Shading, можно осуществить как программно, так и с помощью системы mental ray или аппаратной визуализации; однако для правильной визуализации объектов с помощью mental ray и аппаратной визуализации необходимо предпринять некоторые до полнительные действия. Система Toon Shading работает с NURBS-поверхностями, поли гональными поверхностями и SDS-поверхностями. Применяя графические эффекты к контурам, созданным в Toon Shading, можно получить самую разнообразную стилиза цию под мультфильм.
Применение заполнений Рассмотрим процесс применения мультипликационных тонеров (toon shader) на сцене, а также проведем небольшое исследование. Откройте файл t o o n 1 . m b с прилагаемого CD и перейдите в набор меню rendering (Визуализация). Сцену составляют три глуповатых гриба на холме, как показано на рис. 15.2. На сцене есть направленный источник света, но тонеры к поверхностям еще не применялись. Гри бы и холм созданы из NURBS-поверхностей, но, как было упомянуто ранее, с системой Toon Shading можно использовать полигональные поверхности и SDS-поверхности.
Рис. 15.1.Меню
Toon
Рис. 15.2. Три серых гриба
1. Переключите перспективное представление в режим shotCam. 2.
Чтобы открыть панель выбора цвета, выберите в меню Toon (Мультфильм) набора меню rendering (Визуализация) пункт Set C a m e r a Background Color => shotCam
(Установить цвет фона камеры). Подберите для неба подходящий оттенок синего цвета. Этот пункт меню позволяет быстро изменить цвет фона на вкладке Environment (Окружение) камеры без необходимости открывать редактор атрибутов. 3. Чтобы применить тонер поверхности к форме холма, выделите ее и выберите пункт меню T o o n => Assign Fill Shader => Solid Color (Мультфильм => Применить заполняю
щий тонер => Сплошной цвет), а затем откройте редактор атрибутов для тонера по верхности. Измените цвет тонера холма на сочный травянисто-зеленый. Пункты меню Assign Fill Shader (Применить заполняющий тонер) являются, по су ществу, ссылками на некоторые предварительно заданные значения, которые можно использовать для преобразуемых в "мультфильмы" объектов. Данные средства должны быть читателю знакомы — это тонеры поверхности и градиента, идентичные тем, которые уже созданы в гипершейдере. Единственное отличие тонера градиента из меню Assign Fill Shader (Применить заполняющий тонер) от аналогичного тонера гипершейдера заключается в том, что в нем уже присутствует стилизация под
Система Toon Shading
607
мультфильм. He обязательно использовать именно эти специфические тонеры, но они вполне годятся для начала. 4.
Чтобы применить тонер градиента к первому грибу, выделите объект mushrooml и вы берите пункт меню Toon => Assign Fill Shader => Light Angle T w o Tone (Мультфильме
Применить заполняющий тонер => Двухтоновый по падению света). Цвета градиента вычисляются на основании угла падения света. Значения диффузии и отражения здесь установлены в о, а значение полупрозрачности — в - 1 . Измените цвета с серого и белого на фиолетовый и лиловый (рис. 15.3 ).
Рис.
Редактор атрибутов для за
полнения Light Angle Two Tone. Факти чески это тонер градиента, значения параметров которого настроены так, чтобы он выглядел как мультипликаци онный заполнитель 5.
Выделите объект m u s h r o o m 2 и выберите пункт меню Toon => Assign Fill Shader => Shaded Brightness T w o Tone ( М у нер => Двухтоновый по яркости). Цвета этого градиента определяет смешение яркости тонирования. Значение диффузии здесь установлено равным 1, а коэффициента от ражения — 0. Замените серый и белый цвета на темно-оранжевый и желтый.
6.
Выделите третий гриб (объект
m u s h r o o m 3 ) и выберите пункт меню Toon => Assign Fill Shader => Shaded Brightness Three Tone (Мультфильм => Применить заполняю
щий тонер => Трехтоновый по яркости). Все точно так же, как и в предыдущем приме ре, только градиент определяется уже тремя цветами, а не двумя. Расположите эти цвета так, чтобы был переход от темно-зеленого к светло-зеленому.
Глава 15
608 7.
Визуализируйте сцену в режиме shotCam и обратите внимание на различия во внешнем виде грибов (рис. 15.4).
Рис. 15.4 А. Сцена с грибами, к которым приме нены четыре типа мультипликационных за полнителей Теперь, получив некоторое представление о параметрах заполнений, доступных в ме ню Toon (Мультфильм), опробуйте их на практике: примените к грибам другие парамет ры заполнений. Измените цвета и интерполяцию градиентов, получив таким образом новые тонеры. Ниже приведено краткое описание других переустановленных тонеров (все они представлены на рис. 15.5). Dark Profile (Темный профиль). Цвета градиента этого тонера определяются на основа нии яркости поверхности. Для диффузии установлено значение 0 . 5 , а для полупрозрачно сти — 0 . 2 5 . Чтобы края поверхности выглядели темней и появился эффект темного про филя, накал (incandescence) градиента для первого цвета установлен в темные тона. r i m Light (Световое обрамление). Этот тонер похож на предыдущий, отличие заклю чается в том, что цветами градиента здесь являются темно-серый и серый, а накал гради ента установлен в белый цвет с линейной интерполяцией к черному. Так создается эф фект белой подсветки края поверхности. Circle Highlight (Круговая подсветка). Этот тонер подобен двум предыдущим, за исключением того, что у него коэффициент отражения имеет значение 1, а градиент наложен на блестящий цвет. Градиент отражения переходит от черного цвета к бе лому без интерполяции, при этом белая подсветка играет роль блика (рис. 15.5). Этот тонер прекрасно подходит для изображения блестящих поверхностей вроде пластмассы или металла. Он также прекрасно подходит для роботов в классическом стиле аниме (Anime). 8.
Если новый образ грибов вызывает симпатию, примените тонеры к глазам, векам и зубам каждого гриба. Или откройте файл t o o n 2 . mb с прилагаемого CD. Визуализируйте и оцените сцену. Пока исследовалось применение за полнений, все было довольно просто, а сейчас начинается самое интересное: применение контуров к геометрическим фигурам.
9.
Выделите объект mushrooml и выберите пункт меню Toon => Assign Outline => Add New Toon Outline (Мультфильм => Применить контур => Добавить новый мультипликационный контур).
Система Toon Shading
Рис. 15.5. Три стандартных мультипликационных тонера заполнения. Слева направо: rim Light и
609
Dark Profile,
Circle Highlight
10. По краю гриба и некоторых его частей появилась толстая черная линия. В иерархи ческой структуре гриба также появился новый узел, обозначенный как pfXToonl. Выделите этот узел и откройте редактор атрибутов. 11. Установите значение толщины линии (Line W i d t h ) равным 0. 033. 12. В представлении камеры осмотрите гриб под разными углами. (Как можно заметить, мультипликационный контур подстраивается под ракурс камеры.) 13. Визуализируйте сцену, чтобы увидеть, как выглядит гриб с мультипликационным контуром (рис. 15.6). Контур (outline) — это особый вид контура Paint Effects, который изменяется в зави симости от ракурса камеры. Узел pfxToon, подобно большинству объектов Maya, имеет узлы формы и преобразований, т.е. контур вполне можно отодвинуть от гриба и при этом он будет продолжать реагировать на изменение положения камеры.
Создание мультипликационных линий Существуют четыре типа мультипликационных линий (toon line): профиль (profile), граница (border), пересечение (intersection) и складки (crease). Профильные линии оп ределяют внешнюю форму объекта. Они повторяют силуэт объекта, начиная с точки, наиболее удаленной от камеры. Например, если набросать на клочке бумаги улыбаю щуюся рожицу, то профильной линией будет круг, определяющий контуры лица. При применении Paint Effects Maya подправляет профильные линии в зависимости от ра курса камеры. Однако, если сцена перегружена линиями, ее производительность пада ет, и тогда вместо системы Paint Effects лучше использовать средство Offset Mesh (Сетка смещения).
610
Глава 15
Рис. 15.6. Гриб mushrooml с примененным мультипликационным контуром Существуют два способа создания профильных линий. Их можно скомпоновать из линий Paint Effects или с помощью сетки смещения. В редакторе атрибутов для узла pfxToonl есть меню Profile Lines (Профильные линии), с помощью которого можно выбрать способ создания профильных линий. По умолчанию они создаются линией Paint Effects. При переключении на параметр Offset Mesh (Сетка смещения) создается новый узел pfxToonlProfileMeshes. Это видно в иерархической структуре). Группа pfxToonlProfileMeshes содержит узел геометрической формы polysurface1, по лигональный объект, несколько смещенный относительно исходного объекта с обращен ными нормалями. Заглянув в меню render Stats (Статистика визуализации) редактора атрибутов объекта polySurfacel, можно заметить, что параметры наложения и отбра сывания тени, а также параметр Double Sided (Двухсторонний) отключены; цвет объекта совпадает с цветом мультипликационной линии. Таким образом, есть два разных способа создания мультипликационных контуров. В использовании линий, созданных с помо щью сетки смещения, есть несколько преимуществ: в областях просмотра они обновля ются быстрее, чем линии, созданные в системе Paint Effects, они визуализируются и сис темой mental ray, и аппаратной визуализацией, не деформируются при анимации и не пропадают при отражении и преломлении (рис. 15.7). Создание профилей (profile) с помощью линий Paint Effects также имеет свои пре имущества и недостатки, которые подробно описаны в следующем разделе.
Система Toon Shading
611 Складка Профильная линия
Пересечение
Рис. 15.7. Визуализация демонстрирует различие между типами мульти пликационных линий. Кубы слева используют для линий штрихи Paint Effects, а кубы справа — сетку смещения Граничная линия (border line) окаймляет незамкнутые геометрические контуры или границу между двумя тонерами. В редакторе атрибутов для узла p f x T o o n S h a p e есть специальное меню, которое позволяет применять граничные линии к незамкнутым кра ям объектов и границам тонеров (либо использовать оба варианта). Давайте используем это тип контура, чтобы добавить некоторые детали к лицевой части грибов.
1. Выделите оба века первого гриба (объект m u s h r o o m l ) , а затем выберите пункт меню Toon => Assign Outline => A d d New Toon Outline (Мультфильм => Применить контур => Добавить новый мультипли ликационный контур можно применить к нескольким объектам. 2. Установите для линии толщину 0.033. Веки гриба — это полые полусферы, расположенные над глазными яблоками. По скольку у них есть незамкнутые края, граничная линия создастся по краю век. Складки (crease) возникают на внешних краях полигональных объектов. Если создать полигональный куб и применить к нему мультипликацион ный контур при установленном параметре Crease (Складка), то линии складок совпадут с профильными. Складки не зависят от области просмотра. В редакторе атрибутов для узла p f x T o o n существуют параметры минимального и максимального углов складок, изменяя значения которых можно указать углы объекта, для которых будут применены линии складок. Если объекту необходимо придать внешний вид, напоминающий каркас, то примените инструмент Crease Lines (Линии складок) к каждой его поверхности. Для этого примените мультипликационный контур к полигональному объекту, обнулите ми нимальный угол складки и отключите параметр Hard Creases Only (Только резкие
612
Глава 15
складки), как показано на рис. 15.8. Нововведением является возможность исключать изнаночные складки, чтобы Maya не создавала линии складок для тех частей объекта, ко торые не видны через камеру. Так получается меньше линий, что облегчает работу со сценой. Для применения этой возможности выделите узел p f x T o o n l , откройте редактор атрибутов и в разделе Crease Lines (Линии складок) сбросьте флажок Backfacing Creases (Изнаночные складки).
Рис. 15.8. Чтобы полигональный объект выглядел как кар кас, примените мультипликационные линии при отклю ченном параметре Hard Creases Only и значении О пара метра Crease Angle Min
Линии пересечения (intersection line) появляются при пересечении двух объектов, имеющих одинаковый мультипликационный контур. У основания фиолетового гриба с мультипликационным контуром никакой линии нет. Это связано с тем, что гриб пересе кается с холмом. Чтобы появилась линия пересечения, одинаковый мультипликацион ный контур должен быть применен к обоим объектам. К одному объекту может быть применено несколько разных мультипликационных контуров, которые, впрочем, могут перекрываться. Попробуем сделать следующее. 3.
Выделите геометрическую форму первого гриба (объект m u s h r o o m l ) , а затем, нажав клавишу <Shift>, выделите холм.
4.
Выберите пункт меню Toon => >Assign Outline => A d d New Toon Outline (Мультфильм =>
Применить контур => Добавить новый мультипликационный контур). 5.
Откройте редактор атрибутов для нового мультипликационного контура (pfхТооn2).
6.
Отключите профильные линии.
7.
Отключите граничные линии.
8.
Отключите линии складок.
9.
Установите флажок Intersection Lines (Линии пересечения). В результате будут применены только линии пересечения.
Система Toon Shading Теперь появилась линия пересечения гриба с холмом. Кроме того, при перемещении гриба относительно холма эта линия будет обновляться. Обратите внимание, это линия Paint Effects, и повто рить ее с помощью сетки смещения не получится. Майя 8.5 предоставляет локальную перегородку (local occlusion), которая обеспечивает более точное пред ставление мультипликационных контуров, когда грани нескольких объектов расположены близко друг к другу. Без локальной перего родки мультипликационные линии могут накладываться на другие объекты, нарушая их форму и сам смысл мультипликационных контуров и правил их пересечения. Как только мультипликацион ная линия создана, в разделе Common Toon Attributes (Общие муль типликационные атрибуты) редактора атрибутов для узла pfxToonShape2 можно обратиться к раскрывающемуся меню Local Occlusion (Локальная перегородка). Для выбора доступны пункты Off (Отключено), принято по умолчанию, Line surface (Линейные поверхности) и All Toon surfaces (Все мультипликаци онные поверхности). При выборе пункта Line surface локальная пе регородка создается только другими линиями, проходящими через поверхность, в то время как пункт All Toon surfaces обеспечивает создание перегородок для всех поверхностей, присоединяемых к то му же узлу pfх. Если нет вполне определенных причин для исполь зования режима Line surface, выбирайте параметр All Toon surfaces. На рис. 15.9 продемонстрировано, как выглядит локальная перего родка на сцене с перекрытием геометрических примитивов.
Технологии мультипликационных линий
613
Рис. 15.9. Перекрытие геометрических при митивов, визуализи руемое без локальной перегородки (сверху), при использовании перегородки для по верхностных линий (посередине) и всех мультипликационных поверхностей (снизу)
К одному объекту можно применить несколько мультипликационных линий, а мож но применить одну линию к нескольким объектам. Все зависит от того, какой эффект ожидается от сцены. Если нужно, чтобы все объекты сцены были выдержаны в одном стиле, то лучше применить ко всем им один тип линии, — так, параметрами всей сцены можно будет управлять с помощью одного узла. В редакторе атрибутов для узла pfxToon, ниже раздела C o m m o n Toon Attributes (Общие мультипликационные атрибу ты), находятся элементы управления для каждого из четырех типов линий, что позволя ет управлять любым типом мультипликационной линии без ее применения к объекту. Другими словами, если после применения мультипликационных линий к объекту необ ходимо, чтобы граничные линии отличались по толщине от профильных линий, можно воспользоваться элементами управления в разделе Border Lines (Граничные линии) ре дактора атрибутов. В некоторых ситуациях может понадобиться, чтобы к сцене или даже к одному объек ту было применено несколько мультипликационных линий. Чтобы продемонстрировать концепции, лежащие в основе применяемых методов, рассмотрим несколько примеров и ознакомимся с некоторыми параметрами, изменяющими способ прорисовки мультипли кационных линий, а также с тем, как с помощью кисти Paint Effects модифицировать мультипликационный стиль.
Глава 15
614 1. Откройте файл t o o n 3 . mb с прилагаемого CD. 2.
В данной версии сцены с грибами ко всем объектам была применена одна мультипликационная линия. Единственное, к чему линия не применена, — это к кривым NURBS, которые являются элементами глаз грибов. Дело в том, что мультипликационные линии применяются только к сеткам; но не к кривым. Однако к кривым можно применить штрихи Paint Effects. Устраним это небольшое недоразумение, вернув грибам нормальные глаза.
3.
Выберите пункт меню W i n d o w => General Editors => Visor (Окно => >Общие редакторыОПросмотр). В левой части окна Visor (Просмотр) найдите на вкладке Paint Effects папку t o o n . В ней находится множество самых разно образных штрихов Paint Effects, напоминающих мультипликационные ли нии, а также некоторые их забавные варианты.
4.
Выберите из папки мягкую кисть ( S m o o t h ) .
5.
Чтобы выделить кривые зрачков, выберите пункт меню Edit => Select All By Type => NURBS Curves (Правка => Выделить все по типу => Кривые NURBS).
6.
Выделив все кривые зрачков, выберите пункт меню Paint Effects => Curve Utilities => Attach Brush To Curves (Графические эффекты => Утилиты кри-
вой => Присоединить кисть к кривым). Зрачки превратятся в громадные чер ные шары. 7.
В иерархической структуре выделите только что созданные штрихи и выбе рите пункт меню Paint Effects => Share One Brush (Графические эффекты => Совместно использовать одну кисть). Это делается для того, чтобы можно было управлять всеми штрихами, примененными к зрачкам, изменяя пара метры настройки только одной из кистей.
8.
Откройте один из штрихов в редакторе атрибутов и установите для парамет ра Global Scale (Глобальный масштаб) его кисти значение 0.165.
9.
Визуализируйте сцену.
Завершив обзор возможностей Paint Effects, займемся чем-нибудь интересным. Выделите в иерархической структуре узел p f x T o o n 1 и откройте его в редакторе ат рибутов. 1. Чтобы убедиться в независимости профильных линий, граничных и линий пересечения, попробуйте изменить их толщину и цвет. В документации Maya содержится хорошее описание каждого из параметров профильных линий, складок, граничных линий и линий пересечения. Ниже приведена последо вательность действий, демонстрирующая использование некоторых из этих параметров для изменения вида мультипликационных объектов. 2.
Удостоверьтесь, что во вкладке Profile Lines (Профильные линии) установ лен флажок Smooth Profile (Сглаженный профиль), и увеличьте значение параметра Profile Width Modulation (Модуляция толщины профиля). Теперь толщина профильной линии будет варьироваться в зависимости от кривиз ны, в результате чего объект будет производить впечатление скорее наброска, сделанного вручную, чем компьютерной графики.
615
Система Toon Shading
3. Перейдите на вкладку Curvature Based Width Scaling (Толщина на базе кривизны) и попробуйте изменить толщину кривизны. Это позволяет тоже изменять толщину линии в зависимости от ее кривизны. 4.
В разделе C o m m o n Toon Attributes (Общие мультипликационные атрибуты) устано вите для параметра Lighting Based Width (Толщина на базе освещенности) значение 1.0. Теперь линии будут тоньше там, где поверхность объекта освещена, и толще там, где лежат тени. Это заметно только при визуализации сцены (рис. 15.10)
Рис. 15.10. Применение параметра Lighting линии толще там, где поверхность темнее 5.
Based Width
к мультипликационному контуру сделает
Верните значения параметров Lighting Based Width (Толщина на базе освещенно сти) и Profile Width Modulation (Модуляция толщины профиля) в 0. В разделе Common Toon Attributes (Общие мультипликационные атрибуты) рядом с картой толщин линии (Line Width Map) щелкните на кнопке Texture (Текстура) и в поя вившемся окне текстур выберите текстуру Noise (Шум). Визуализируйте сцену и обратите внимание на то, что линии выглядят, как нарисованные фломастером. Что бы увеличить или уменьшить толщину линий, откорректируйте на вкладке Color Balance (Цветовой баланс) этой текстуры значения параметра Alpha Gain (Усиление прозрачности). При анимации такой текстуры линии будут выглядеть неровно и не брежно (рис. 15.11).
Глава 15
616
Рис. 15.11. Применение текстуры Noise — это еще один способ получить неровную волнистую линию 6.
Щелкнув правой кнопкой мыши в поле рядом с картой Line W i d t h Map (Карта тол щин линии) узла p f х Т о о п и выбрав в появившемся контекстном меню пункт Break Connection (Разорвать связь), удалите текстуру Noise (Шум).
Как можно заметить, если изменить значения параметров узла p f х Т о о п , то можно быстро создать уникальный стиль для мультипликационной линии.
Применение штрихов Paint Effects для мультипликационных контуров Теперь рассмотрим, как можно улучшить внешний вид мультипликационных объек тов с помощью кисти Paint Effects. Для мультипликационной линии можно применить любой штрих Paint Effects или несколько штрихов, что, несомненно, обеспечит разнооб разие стилей линий. Выполним небольшое упражнение. Тем, кому система Paint Effects не знакома, имеет смысл перейти к главе 17, "Система Paint Effects", в которой она рассматривается более подробно. 1.
Если проект предыдущего упражнения закрыт, откройте файл t o o n 3 . m b на CD, а затем, выбрав пункт меню W i n d o w => >General Editors => Visor (Окно => Общие редак торы => Просмотр), откройте окно просмотра (Visor).
Система Toon Shading
617
2. Откройте папку toon. 3. Выберите линию стиля brokenWiggle.mel. 4.
Выберите пункт меню T o o n => Assign Paint Effects Brush To T o o n Lines (Мульт
фильм => Применить кисть Paint Effects к мультипликационным линиям). 5. Визуализируете сцену. Теперь мультипликационные линии стали тонкими и волни стыми (рис. 15.12). Опробуйте также другие типы линий из папки toon.
Рис. 15.12. Штрихи Paint Effects вполне применимы для мультипликационных контуров. В данном случае использована линия Broken Wiggle
6. Примените к мультипликационному контуру линию Doodle (Каракули). Для на стройки параметров линии Doodle (Каракули) откройте ее в редакторе атрибутов и, используя стрелки входящих/исходящих (input/output arrows), перейдите к узлу doodleLine1. Правда, чтобы добраться до узла doodleLine1, придется сначала пройти несколько узлов NURBSTessellate. 7. Узел doodleLine1 является кистью Paint Effects с теми же параметрами, что и все кисти brushes24 Paint Effects. Чтобы создать необычный стиль, попробуем нало жить несколько мультипликационных линий друг на друга. Выделите геометриче ские формы всех трех грибов и холма. 8.
Выберите пункт меню T o o n => Assign Outline => A d d New T o o n Outline ( М у л ь т ф и л ь м е
Применить контур => Добавить новый мультипликационный контур). В иерархиче-
618
Глава 15 ской структуре появился новый узел p f x T o o n 2 , а по контуру грибов и холма воз никнет толстая линия.
9.
Выделите в иерархической структуре узел pfхТооn2.
10. В окне Visor (Просмотр) откройте папку toon и выберите линию brokenGlopLine. 1 1 . Выберите
пункт
меню
Toon
=>
Assign
Paint
Effects
Brush
To
Toon
Lines
(Мультфильм => Применить кисть Paint Effects к мультипликационным линиям). 12. Откройте узел p f x T o o n 2 в редакторе атрибутов и найдите линию brokenGlopLine1.
13. В меню Brush Туре (Тип кисти) выберите тип Smear (Смазывание). 14. Визуализируйте сцену. Обратите внимание на то, что линия Doodle (Каракули) и границы заполнения видимы, но выглядят смазанными. Вторая мультипликацион ная линия была применена только к грибам и холму, поэтому контуры глаз грибов не пострадали (рис. 15.13).
Рис. 15.13. Смазанная кисть наложена поверх штриха Doodle, примененного к геометрическим фи гурам гриба у холма. В результате размытия цвета создается эффект смазывания
Примеры стилизации под мультфильм Maya содержит множество файлов примеров, которые можно использовать для изучения. Чтобы получить к ним доступ, выберите пункт меню Toon => Get Toon Example (Мультфильме Пример мультфильма). В окне Visor (Просмотр) появятся примененные к объектам всевоз-
Система Toon Shading
619
можные стили мультипликации, которые можно использовать в своей сцене. К каждому примеру прилагается описание эффектов, использованных в файле сцены. Чтобы лучше понять, как использовать средства Toon Shading, потратьте немного времени на изучение этих примеров.
Модификаторы мультипликационных линий Инструментальные средства, используемые при стилизации под мультфильм, до вольно гибкие и разнообразные и помогут без особого труда претворить в жизнь самые разные идеи. Они фактически не ограничены параметрами мультипликации, а дополни тельная гибкость, которую придает возможность замены мультипликационных контуров штрихами Paint Effects, позволяет использовать эти инструменты для стилизации даже фотореалистических сцен. В этом примере рассмотрим применение инструментальных средств мультипликационных линий совместно со средствами Paint Effects и модифика торами мультипликационных линий для улучшения и станции научно-фантастического сюжета космической станции. 1.
Откройте файл s t a t i o n l . m b с прилагаемого CD и визуализируйте сцену в перспективном представлении (рис. 15.14).
Рис. 15.14. Космическая станция в ис ходном состоянии Сцена состоит из одного полигонального объекта с примененным тонером Blinn, не скольких объемных источников света и нескольких сфер, к которым применен све тящийся тонер для имитации источников света, а также луча — обтянутой NURBSповерхности с примененным к ней прозрачным материалом Lambert. У объекта луча установлены ключевые кадры на каналы поворота по оси Y, сам же объект сгруппи рован и расположен так, чтобы на сцене из станции исходил луч. 2. Выделите объект s t a t i o n и выберите пункт меню Toon => Assign Outline => Add New Toon Outline (Мультфильм => Применить контур => Добавить новый мультипликаци онный контур). 3. Выберите в иерархической структуре узел p f x T o o n l . 4. Откройте окно Visor (Просмотр) и в папке g l o w s выберите кисть n e o n Y e l l o w . 5.
Выберите пункт меню Toon => Assign Paint Effects Brush To Toon Lines (Мультфильме
Применить кисть Paint Effects к мультипликационным линиям).
Глава 15
620 6.
Откройте узел p f x T o o n l в редакторе атрибутов и перейдите на вкладку n e o n Y e l l o w . Установите для параметра Global Scale (Глобальный масштаб) значе ние 0 . 5 .
7.
Визуализируйте сцену.
8.
В редакторе атрибутов для узла pfxToonl перейдите к параметрам переустановки линии и задействуйте параметры r e s a m p l e Profile (Переустановить профиль), r e s a m p l e Crease (Переустановить складки) и r e s a m p l e Border (Переустановить
границы). Можно также задействовать параметр Local Occlusion (Локальное затем нение) на вкладке C o m m o n Toon Attributes (Общие мультипликационные атрибу ты). Теперь можно также устранить большинство ошибок в линиях. 9.
В редакторе атрибутов кисти neonYellow1 перейдите в раздел Shading (Тонирова ние) и поместите ползунок параметра Incandescence 1 примерно напротив ползунка параметра Color1.
10. Визуализируйте сцену (рис. 15.15).
Рис. 15.15. Модель станции с неоновой мультипликационной линией 1 1 . Поскольку эта сцена перегружена мультипликационными контурами, для повыше ния быстродействия имеет смысл отключить в редакторе атрибутов для узла pfxToonl параметр Display in Viewport (Отображать в области просмотра). Теперь мультипликационные контуры будут видны только при визуализации сцены, но не в интерактивном представлении. Это ускоряет взаимодействие со сценой.
621
Система Toon Shading 12. Выберите объект луча beam в группе beamGroup.
13. Выберите пункт меню T o o n => Assign Outline => A d d New T o o n Outline ( М у л ь т ф и л ь м е
Применить контур => Добавить новый мультипликационный контур). 14. Выберите в иерархической структуре узел pfхТооп2. 15. Откройте окно Visor (Просмотр) и выберите в папке glows кисть goldSparks. 16. Выберите
пункт
меню
Toon
=>
Assign
Paint
Effects
Brush
To
Toon
Lines
(Мультфильм => Применить кисть Paint Effects к мультипликационным линиям). 17. Откройте узел pfxToon2 в редакторе атрибутов и перейдите на вкладку goldSparksl.
18. Установите для параметра Global Scale (Глобальный масштаб) значение 2.0. 19. Визуализируйте сцену. 20. Выберите в иерархической структуре узел pfхТооп2. 2 1 . Выберите пункт меню Toon => Create Modifier (Мультфильм => Создать модификатор). На сцене появилась каркасная сфера. Результат ее применения схож с результатом действия инструмента Soft Modification (Мягкая модификация), но вместо деформа ции геометрической формы она меняет свойства мультипликационных контуров, а также штрихов Paint Effects, примененных к мультипликационным линиям. С по мощью этого модификатора можно создать некоторые интересные эффекты. Давайте используем его для того, чтобы заставить станцию испускать лучи и пульсирующий шар энергии примерно каждые 20 кадров. 22. В иерархической структуре выберите узел lineModifier1. 23. Раскройте группу beamGroup и, нажав клавишу , выделите кривую curve1 так, чтобы выбранными оказались и узел lineModifierl, и кривая curve1. 24. Перейдите в набор меню Animation (Анимация) и выберите пункт меню Animate => Motion Paths => Attach То Motion Path • (Анимировать => Траектории движений =>
Присоединить к траектории движений • ) . 25. В окне параметров Motion Path (Параметры траектории движений) перейдите к раз делу Start/End (Начало/Конец). Установите для параметра Start Time (Время нача ла) значение 1, а для параметра End Time (Время конца) — значение 20. 26. Удостоверьтесь, что параметр Follow (Следовать) применен, для параметра Front Axis (Фронтальная ось) выбрано значение X, а для параметра Up Axis (Вертикальная ось) — Y. 27. Щелкните на кнопке Apply (Применить). 28. Выберите в иерархической структуре узел lineModifierl и откройте редактор анимационных кривых. 29. Выделите узел lineModifierl и нажмите клавишу < F > . В результате должна стать видимой анимационная кривая для траектории движений. 30. Чтобы можно было увидеть, как кривая ведет себя после 20-го кадра, выберите в ме ню View (Вид) пункт Infinity (Бесконечность). 31. В меню Curves (Кривые), при выделенной кривой lineModifierl выберите пункт Post Infinity => Cycle (Постбесконечность => Цикл). Теперь кривая траектории движе ний должна повторяться каждые 20 кадров.
Глава 15
622
32. Закройте редактор анимационных кривых и запустите анимацию в перспективном представлении. Заметно, что инструмент lineModifier1 перемещает луч каждые 20 кадров. 33. Перейдите к кадру, где инструмент lineModifier1 находится над станцией (это 4-й или 5-й кадр). 34. Выберите инструмент lineModifier 1 и увеличьте его по осям X, Y и Z примерно в два раза. 35. Откройте в редакторе атрибутов узел lineModifierShapel. 36. Измените его параметры и посмотрите, как они преобразуют штрихи кистей, приме ненные к мультипликационным контурам. Визуализируйте кадр, а потом в визуали зированном представлении выделите область вокруг инструмента lineModifier. с по мощью инструмента render r e g i o n (Визуализировать область). Это значительно сэкономит время, так как визуализируется лишь небольшая область. 37. Попробуйте установить такие значения: Width Scale = 1.983 W i d t h Offset - 0.2 surface Offset = 0.5
В меню Brush Tube Attributes (Свойства кисти) установите такие значения: Force = 0.3 Directional Force = 0.3 Displacement = 0.4 Directional Displacement = 0 . 7 Tube Scale = 3 . 5
38. При желании, чтобы увидеть, как контур ведет себя на границах действия модифика тора, можно попробовать скорректировать анимационную кривую атрибута Dropoff (Спад). 39. Для изменения пульсации энергии можно также откорректировать параметры на стройки штриха кисти goldSparks. Выброс энергии из станции представлен на рис. 15.16.
Рис. 15.16. Пульсирующий энергетиче ский шар, исходящий из космической станции
Система Toon Shading
623
Чтобы увидеть законченную сцену, откройте файл s t a t i o n 2 . m b с прила гаемого CD. Секрет столь блестящей анимации заключается в том, что штрихи кисти присоединяются к мультипликационным контурам, которые реагируют на изменение ракурса камеры. В редакторе атрибутов у формы lineModifierShapel есть параметр цвета. Однако штрих кисти goldSparks заменил собой исходные мультипликаци онные контуры, поэтому этот параметр не будет влиять на цвет искр. Но при использовании модификаторов с обычными мультипликационными конту рами он поможет добиться определенно интересных эффектов. Чтобы просмотреть визуализированную анимацию, откройте файл station.mov с прилагаемого CD. Для завершения сцены можно подчинить узлу line Modifierl оранжевый точечный источник света, установить ключевой кадр на измене нии интенсивности исходящего энергетического импульса, а для отставания установить линейный характер. Модификаторы можно использовать и с теми сетками смещения, к которым приме нены мультипликационные линии, однако с элементами управления атрибутами кисти они работать не будут, поскольку воздействуют только на штрихи Paint Effects.
Резюме Новые инструментальные средства Toon Shading позволяют применять к объектам интереснейшие стили. Однако, подобно большинству инструментов Майя, гораздо инте реснее использовать их не по прямому назначению, а находить новые неожиданные спо собы применения. Попробуйте, например, скомбинировать мультипликационные линии пересечения и штрихи Paint Effects, чтобы создать всплески от движения лодки по воде или искры от попадания пуль в стену. Прочитав эту главу, читатель получит хорошее представление о работе системы Toon Shading и сможет в дальнейшем изучать эти инструментальные средства самостоятельно. В частности, в этой главе рассматривалось применение к объектам мультипликационных тонеров, а также использование контуров Paint Effects совместно с контурами сетки смещения. Документация Майя содержит подробные описания каждого узла и свойств инструментальных средств Toon Shading. Кроме того, в Майя есть множество примеров, из которых можно почерпнуть новые идеи. В следующей главе рассматривается встроенный язык сценариев Maya — MEL, ле жащий в основе работы всех функций Майя, а также его применение для упрощения и автоматизации большинства задач, выполняемых с помощью этой программы.
Встроенный язык Maya (MEL) В этой главе рассматривается встроенный язык сценариев Maya MEL (Maya Embedded Language) и описывается, как он используется в Maya для повышения произ водительности, автоматизации выполнения часто повторяемых задач. Кроме того, в гла ве рассматриваются основы программирования MEL и объясняется, как продолжить са мостоятельное изучение этого мощнейшего компонента Maya. Применение MEL требует некоторых навыков программирования, поэтому тем, кто никогда не занимался программированием, этот язык может показаться сначала немного сложным, однако не стоит расстраиваться: в данной главе содержится вполне достаточно информации, чтобы начать использовать язык MEL и применять его для управления Maya практически без единой собственноручно написанной строки кода. Для тех, кто имеет некоторый опыт программирования, синтаксис языка MEL окажется довольно простым, а для тех, кто знаком с языками С или С++, еще и очень знакомым. Maya 8.5 поддерживает также язык программирования Python; опытным разработчи кам сценариев MEL будут интересны разделы, описывающие интеграцию этих языков. •
Основные принципы языка MEL и сценариев
•
Редактор сценариев
•
Справочная система языка MEL
•
Методы программирования языка MEL
•
Отладка сценариев MEL
•
Создание процедур и сценариев
•
Изучение работ других разработчиков
Основные принципы языка MEL Встроенный язык Maya (Maya Embedded Language — MEL) является основным уровнем взаимодействия пользователя с Maya. При запуске Maya фактически выполня ется несколько сценариев MEL, которые и формируют все окна. На самом деле Maya ни какого интерфейса не имеет. Запустить Maya можно даже из командной строки операци онной системы — достаточно лишь ввести команду Mayа. -prompt. Практически все, что делается в Maya, выполняют сценарии MEL. Но что же это означает для среднего пользователя Maya? Упрощенно, он имеет воз можность сделать все, что уже сделали разработчики исходного интерфейса. Пользова тель может создавать окна с ползунками, вкладки, текстовые поля и кнопки для них; ат-
626
Глава 16
рибуты в панели каналов; может даже добавлять пункты в меню и новые панели. Тот факт, что Maya построена на языке MEL, — уже является одним из наиболее существен ных преимуществ этой программы. Поскольку синтаксис языка Maya подобен синтаксису языков программирования С, С++ и С#, это является хорошим подспорьем для тех, кто знаком с этими языками. Ав торы рекомендуют ознакомиться с такими первоисточниками, как Beginning Programming (издательство Wrox, 2005 г.), С для "чайников", 2-е издание (2007, Диалектика) и С# 2005 для "чайников" (2006, Диалектика).
Что такое язык сценариев MEL— это не язык сценариев (script), а полноценный язык программирования (как Java и С++). Программа, написанная на языке программирования, компилируется и стано вится независимой программой (как базовая программа Maya), для выполнения который необходима только операционная система компьютера. Язык сценариев, напротив, сущест вует внутри другой программы, в данном случае Maya. Его код интерпретируется построч но, а не компилируется. Поскольку сценарий интерпретируется "родительской" програм мой, выполняется он немного медленнее, чем откомпилированная программа, однако и до полнительных затрат они требуют намного меньше, чем откомпилированные программы. Те, кому нравится программировать, вполне могут создавать дополнения для про граммы, используя такие языки программирования, как С и С++. Maya имеет собствен ный интерфейс прикладных программ (Application Programming Interface — API), имею щий соответственно название Maya API. Язык MEL прекрасно подходит для выполне ния почти 95% всех задач, и этого вполне хватает большинству, а кроме того, делает язык не слишком трудным в изучении. Хотя изучение API выходит за рамки рассмотрения этой книги, вполне можно связаться с компанией Autodesk и выяснить подробности применения SDK Maya для разработки дополнений Maya.
Редактор сценариев Лучше всего изучать язык MEL с помощью редактора сценариев (Script Editor). MEL — довольно обширный язык (более 600 команд и приблизительно 75 функций), од нако редактор сценариев способен проконсультировать пользовате ля о том, как использовать эти команды, а также "копировать и вставлять" в код готовые сценарии без единой строки собственного кода. Для ввода команд MEL не нужно даже использовать команд ную строку. Все операции, выполняемые в интерфейсе Maya, напи саны в редакторе сценариев как команды MEL. Даже не умея программировать вовсе, здесь можно с помощью копирования и вставки создавать довольно сложные сценарии. Командная строка (Command line), обсуждавшаяся в главе 1, "Интерфейс Maya", является только одной строкой ввода редактора сценариев. При вводе команды в командной строке она отображается в окне истории редактора сценариев, а также в строке вывода (output line), которая расположена справа от командной строки и является фактически последней строкой окна истории редактора сценариев.
Редактор сценариев можно открыть двумя способами: можно выбрать пункт меню Window => General Editors => Script Editor (Окно => Общие редакторы => Редактор сценариев)
Встроенный язык Maya (MEL)
627
или щелкнуть на кнопке Script Editor (Редактор сценариев), расположенной в нижнем правом углу экрана. Открытый редактор сценариев показан на рис. 16.1.
Рис. 16.1. Редактор сценариев Редактор имеет две панели: верхняя панель называется панелью истории (history pane); а нижняя — панелью ввода (input pane). Давайте рассмотрим редактор сценариев в действии. Открыв редактор сценариев, создайте полигональный куб (выберите пункт меню Create => Polygon Primitives => Cube • (Создать => Полигональные примитивы => Куб • ) ) . Теперь посмотрите на панель истории. Последние строки в ней должны выгля деть примерно так: setToolTo CreatePolyCubeCtx; polyCube -ch on -о on -cuv 4; // result:pCubel p o l y C u b e l / /
Представленная в верхней панели команда— это выбранная в меню инструкция Maya создать куб. Команда setToolTo — это новая возможность Maya 8, реализующая интерактивный инструмент создания примитивов (но это только по умолчанию, в группе флажков примитивов он может быть установлен в неинтерактивное состояние). Затем команда polyCube создает полигональный куб в том месте на сцене, где пользователь дважды щелкнул. Все символы, которым предшествует знак - ("минус"), т.е. -ch, -о, cuv и т.д., называются флагами (flag). Они уточняют, как именно команда p o l y C u b e должна создать куб. Например, флаг -ch отвечает за историю создания (когда он установ лен, запись истории создания разрешена), флаг -cuv указывает Maya, как создать точки UV для куба (4 в данном случае означает, что следует создать такие точки UV, текстура ко торых не будет искажаться при наложении на куб). И наконец, точка с запятой в конце строки уведомляет Maya о том, что команда закончена. (Почти все строки кода MEL долж ны завершаться точкой с запятой.) Здесь есть также строка результата (result line), кото рая начинается символами / / . Она обеспечивает обратную связь, свидетельствуя об успехе выполнения команды (более подробная информация об этом приведена далее).
Глава 16
628
Иногда в панель ввода вносят больше символов, чем она способна вместить. В результате происходит перенос строки, а точка с запятой позволяет выяснить, где фактически завер шается одна команда и начинается следующая. Вводя команды примеров этой книги в ре дакторе сценариев, не забывайте нажимать клавишу < Enter > после ввода точки с запятой. Измените значения некоторых из атрибутов куба (масштаб, поворот, положение и тд.) и посмотрите, как это отобразится в панели истории редактора сценариев. Как можно за метить, каждое действие, выполненное в интерфейсе базовой программы Майя, привело к выполнению некоторых команд MEL. Чтобы команды было проще читать, верхнюю панель можно очистить в любой момент. Для этого выберите в строке меню редактора сценариев пункт меню Edit => Clear History (Правка => Очистить историю). Это очистит верхнюю панель от всех команд. Теперь попробуйте открыть одно из окон Майя, например окно гиперграфа (пункт меню W i n d o w => Hypergraph: Hierarchy (Окно => Гиперграф: Иерархия). Что появилось в панели истории? Вероятно, ничего вообще. Чтобы переключение между окнами не за громождало панель истории, разработчики Майя создали фильтр, который блокирует отображение в панели истории большинство команд MEL, которые обычные пользова тели не должны видеть. Но иногда полезно видеть все, что Майя Делает в действительно сти. Закройте окно гиперграфа, выберите в редакторе сценариев пункт меню History => Echo All C o m m a n d s (История => Отображать все команды) и снова откройте ок но гиперграфа. Теперь в панели истории должно появиться нечто вроде следующего: editMenuUpdate MayaWindow|mainEditMenu; HypergraphHierarchyWindow; hyperGraphWindow "" "DAG"; addHyperGraphPanel hyperGraphPanel1 HyperGraphEdMenu hyperGraphPanel1HyperGraphEd; createModelPanelMenu m o d e l P a n e l 1 ; createModelPanelMenu m o d e l P a n e l 2 ; createModelPanelMenu m o d e l P a n e l 3 ; createModelPanelMenu m o d e l P a n e l 4 ; buildPanelPopupMenu scriptEditorPanel1; buildPanelPopupMenu h y p e r G r a p h P a n e l 1 ;
Все эти странные строки кода соответствуют действиям, которые Майя предприняла для создания окна гиперграфа. (Практически все слова, такие как buildPanelPopupMenu, яв ляются обращениями к другим сценариям MEL, расположенным в папке Mауа8.5/ scripts/others, хотя точный путь зависит от конкретной операционной системы. Чтобы увидеть, как фактически создается окно, эти и другие сценарии можно просмот реть.) Как можно заметить, даже окна в Майя создаются с помощью команд MEL. Теперь рассмотрим панель ввода (она находится в нижней части окна редактора сцена риев). Сначала освободите сцену от всех объектов и очистите панель истории; поместите курсор в нижнюю панель и введите следующий код (чтобы упростить чтение панели исто рии, можно сначала отключить функцию Echo All Commands (Отображать все команды)): polyCube
-name myCube;
Нажмите клавишу <Enter> на цифровой клавиатуре (но не на основной) или комби нацию клавиш на основной клавиатуре. Как можно заметить, код исчез из панели ввода и появился в панели истории. Одновременно в исходной точке сцены дол жен появиться куб myCube. Примите поздравления, только что была выполнена первая команда MEL!
Встроенный язык Maya (MEL)
629
Строка кода, подобная // result: hyperGraphPanellWindow / / , называется (result line). Две наклонные черты в начале строки — это маркер комментария, который уведомляет о необходимости игнорировать при выполнении ос тальную часть этой строки. (В хорошо проработанных сценариях MEL комментарии встречаются очень часто, и мы подробно обсудим их позже.) Так MEL отображает ре зультат операции (в данном случае это отчет о создании запрошенного окна). Если при создании окна гиперграфа возникнет проблема, строка результата вместо сообщения об успехе будет содержать сообщение об ошибке. строкой результата
Использовать клавишу < Enter > на вспомогательной числовой клавиатуре (или комбина цию клавиш < Ctrl + Enter >) приходится потому, что клавиша < Enter > на основной клавиа туре зарезервирована для перехода на новую строку. Другими словами, нажав клавишу < Enter > на основной клавиатуре, можно перейти в окне редактора на новую строку. Что бы запустить на выполнение код, набранный в окне редактора, необходимо воспользовать ся одной из двух других возможностей либо выделить все команды в панели ввода, а затем нажать клавишу < Enter > на основной клавиатуре. Теперь выполните следующее: удалите куб со сцены, а затем трижды щелкните на введенной ранее строке в панели истории (polyCube -name myCube). Выделив всю строку, скопируйте ее в панель ввода или перетащите туда с помощью средней кнопки мыши (нажав клавишу — на Маc). Нажмите клавишу <Enter>. В результате должен появиться тот же самый куб (myCube), который был создан ранее в исходной точке сцены. Это означает, что в результате копирования команды из панели истории был создан мини-сценарий (называемым макрокомандой, или макросом (macro)). Этот небольшой пример демонстрирует мощь такого простого приема, как "копирование и вставка", он позволяет записать некую последовательность действий и, перетащив ее код из панели истории, превратить в макрокоманду MEL (или даже в полнофункциональ ный сценарий). Сохранив этот небольшой сценарий, к нему можно вернуться в любой момент, скопировав и вставив его код (или щелкнув на кнопке), а затем запустив его на выполнение. Номера строк
Тем, кто привык программировать на языке MEL, Майя 8.5 предоставляет новые, улучшенные возможности: панель ввода окна редактора сценариев те перь отображает номера строк с левой стороны. Хотя это все еще относительно слабая система для программирования крупномасштабных сценариев, введение номеров строк серьезно упрощает работу над короткими сценариями непосредственно в окне редактора сценариев. Кроме того, это существенно облегчает отладку. Для команд MEL можно также без проблем создавать кнопки на любой панели. Дос таточно выделить команды, кнопку для которых необходимо поместить на панель, а за тем перетащить их с помощью средней кнопки мыши из командной строки на панель (нажав клавишу — на Маc). На рис. 16.2 представлена панель с несколькими кнопками сценариев MEL на ней. Несколько макрокоманд панели будет создано далее, в разделе "Практика: постановка света с помощью MEL".
Рис. 16.2. Кнопки сценариев MEL на панели
630
Глава 16
Maya 8.5, MEL и Python
Нововведением Maya 8.5 является внутренняя поддержка для языка Python версии 2.4.3, включая способность выполнять команды MEL в коде Python, если окружение установлено правильно. Язык Python — это автономный язык сценариев (не зависящий от системы Майя), весьма популярный в области визуальных эффектов. Обычный разработчик может вполне безопасно игнорировать язык Python, поскольку обычно он используется в больших компаниях, рабочий процесс которых зависит от сценариев Python. Но это новое дополне ние означает, что теперь Майя может быть полностью интегрирована в рабочий процесс больших компаний. Фактически, поскольку все команды MEL (за исключением совпадаю щих с командами Python, подобно математическим функциям) доступны внутренним функ циям языка Python, программисты могут теперь использовать исключительно язык Python, вызывая команды MEL в сценариях Python. В панели ввода редактора сценариев есть теперь две вкладки: MEL и Python. Вкладка MEL (выбранная по умолчанию) позволяет вводить текст, рассматриваемый редактором сцена риев как код MEL и интерпретировать его согласно синтаксису MEL. Вкладка Python позво ляет ввести текст, интерпретируемый редактором сценариев как код Python. Командная строка также имеет переключатель (слева), позволяющий ввести одну строку кода MEL или сценария Python, в зависимости от сделанного выбора. Поскольку синтаксис языка Python совершенно отличается от синтаксиса MEL, вызовы придется переписывать с учетом соответствующего синтаксиса. Например, команда MEL sphere r a d i u s 5 -name b a l l для языка Python должна быть переписана следующим образом: Maya.cmds.sphere ( r a d i u s = 4, name = ' b a l l ' ) Префикс Maya. cmds уведомляет Python о том, что ему передается команда MEL. Затем флаги r a d i u s и name передаются команде s p h e r e как аргументы, а не как флаги, согласно стандартному синтаксису Python. Для запуска языка Python в редакторе сценариев необходимо сначала ввести следующую строку во вкладке Python панели ввода: import Maya.cmds Эта команда загружает модуль команды MEL в Python, позволяя использовать код MEL в любом сценарии Python. Чтобы меньше нажимать клавиши при вводе команд MEL в языке Python, мож но прибегнуть к импорту в альтернативное пространство имен. Например, команда import Maya. cmds as mc позволяет ввести следующий код, не прибегая к нажатию клавиш: m c . s p h e r e ( r a d i u s = 4, name = ' b a l l ' ) Для автоматического импорта команд MEL в Python после запуска Майя можно сначала соз дать в стандартной папке сценариев (путь ~home/Autodesk/Maya/8 . 5 / s c r i p t s ) текстовый файл u s e r S e t u p . p y , содержащий команду import Maya.cmds. После запуска Maya "увидит" этот файл и автоматически импортирует команды MEL в систему сценариев Python. Описание языка сценариев Python выходит за рамки рассмотрения этой главы. Более под робная информация об использовании языка Python в Майя приведена в документации ин терактивной справочной системы. О языке Python написано множество книги, включая Beginning Python Питера К. Нортона (Peter С. Norton).
Что такое атрибут Как уже, вероятно, стало понятно из предыдущих глав, под атрибутом (Attribute) подразумевается любой элемент узла Майя (в языке MEL для обозначения атрибутов используется термин A t t r ) . (Узел Maya (Maya node) — это то, что можно просмотреть
631
Встроенный язык Maya (MEL)
в гиперграфе или на вкладках вверху редактора атрибутов.) Это звучит немного непо нятно, но на самом деле все довольно просто: за исключением заголовков каждый эле мент в панели каналов (например, rotateX, transformY или scaleZ) является атри бутом объекта, который называется узлом (node). Имя узла и указано в заголовке пане ли каналов. 1
Узлами базовой сферы NURBS являются NURBSSpherel, NURBSSphereShapel и makeNURBSSpherel. Атрибутами являются все остальные доступные поля (как с числовыми, так и с логическими полями справа). Фактически узел имеет много больше атрибутов, чем ото бражено в панели каналов по умолчанию. Чтобы увидеть их все, выберите объект и от кройте окно Channel Control (Управление каналами) (пункт меню Window => General Editors => Channel Control (Окно => Общие редакторы => Управление каналами)). При создании, изменении или анимации объекта создается или изменяется один либо несколько атрибутов одного или нескольких узлов, которые составляют объект. Безус ловно, все эти изменения — не более чем команды MEL, поэтому вполне можно заста вить Майя сделать эту работу автоматически. В данном разделе коротко рассматривается работа языка MEL с атрибутами, а создание сложных сценариев, использующих атрибу ты, будет описано несколько позже. Корректируя в предыдущем разделе некоторые из атрибутов объекта myCube, можно было заметить, что редактор сценариев заполнен операторами, начинающимися со слова setAttr. Оператор setAttr инструктирует MEL о необходимости присвоить указан ному атрибуту некоторое значение. Аналогично, оператор getAttr возвращает (читает) значение атрибута указанного объекта, позволяя использовать его в другом операторе MEL. Оператор addAttr добавляет атрибут к некоторому элементу, а оператор listAttr позволяет получить список атрибутов узла. По существу, использование опе ратора setAttr аналогично открытию окна редактора атрибутов для выделенного объ екта и изменению значения в одном из его полей. (Попробуйте изменить значение в ре дакторе атрибутов, и убедитесь, что в панели истории редактора сценариев появился со ответствующий оператор setAttr.) Оператор setAttr имеет следующий синтаксис: setAttr [флаги] имяОбъекта.имяАтрибута значение; Флаги, как уже упоминалось, являются набором специальных запросов, выполняе мых языком MEL; имяОбъекта.имяАтрибута — это имя атрибута элемента, которому предстоит присвоить значение (например, myCube.translateX); значение— это значение, присваиваемое атрибуту. Операторы getAttr и addAttr имеют подобный синтаксис. Например, куб b o x можно переместить по оси X на 10 единиц, введя в редак торе сценариев следующий код: s e t A t t r box. t r a n s l a t e X
10;
Выполнение этой команды приведет к перемещению куба из его текущего положения к десятой единице по оси X. (Безусловно, если на сцене нет узла объекта по имени box, последует сообщение об ошибке.) Таким образом, язык MEL (и Майя) обращаются к атрибутам, подобно языку С++ и другим объектно-ориентированным языкам, т.е. сначала указывают узел, затем следует точка и имя атрибута: Объект. Атрибут. Если не указать узел, об атрибуте которого идет речь, то последует сообщение об ошибке. Например, ввод команды s e t A t t r
Называемом в книге также параметром. — Примеч. ред.
632
Глава 16
translateX 10; приведет к сообщению об ошибке, поскольку Майя не знает, что сле дует перемещать. Установка значения атрибута translateX очень похожа на команду перемещения: move 10 0 0. Однако в отличие от команды move установка значения атрибута translateX не повлияет на два других атрибута (translateY и translateZ). Кроме того, оператор setAttr гораздо гибче, чем команда move, которая может только пере мещать объект. Улучшение рабочего пространства с п о м о щ ь ю панелей
Хотя панели коротко обсуждались в главе 1, "Интерфейс Майя", они могли показаться ма лополезными. Что делает панели действительно полезными, так это не только то, что на них уже присутствует, а то, что на них можно добавить. Например, любой пункт меню можно сделать кнопкой панели или поместить на нее сценарий MEL, что позволит выпол нять довольно сложные задачи одним щелчком мыши. Кроме того, возможность создавать и использовать несколько панелей позволяет создать отдельную панель для каждой задачи. Например, одну панель можно посвятить сценариям MEL, а другую — общим задачам для определенного проекта. Чтобы создать новую панель, выберите пункт меню Window => Settings/Preferences => Shelves (Окно => Параметры/Предпочтения => Панели), перейдите на вкладку Shelves (Панели) и щелкните на кнопке New Shelf (Новая панель). Чтобы переключиться на новую панели (например, surfaces (Поверхности)), достаточно вы брать ее из раскрывающегося меню панелей (серая кнопка с изображением папки слева от панели). (Параметры панели можно также настроить с помощью раскрывающегося меню, которое представлено в виде черного треугольника чуть ниже вкладки меню панели.) Майя предоставляет большое количество заранее созданных панелей, что повышает их ценность. Чтобы создать новую кнопку панели из пункта меню, выберите его, нажав клавиши и < Shift> в строке меню (но не в окне оперативного доступа). Новая кнопка появится на активизированной панели. Щелчок на этой кнопке будет аналогичен выбору соответст вующего пункта меню. На панели можно создать столько кнопок, сколько необходимо (но если их будет слишком много, панель придется прокручивать), или удалить любую из них. Таким образом, панели Майя можно полностью настроить по своему усмотрению. Например, на панель General (Общие) имеет смысл поместить кнопки для вызова таких элементов, как гиперграф и ги першейдер. В качестве простого примера применения оператора setAttr вручную создадим куб и присвоим значения некоторым из его атрибутов. Введите в панели ввода редактора сценариев следующий код: polyCube setAttr setAttr setAttr setAttr setAttr setAttr
-n box; polyCubel.aw 3; polyCubel.w 5; box.rotateY 45; box.translateX -2.5; box.translateY .25; box.scaleY 0.5;
Можно ли уже предположить, что делает каждая отдельная команда? Пробуйте выделять каждую строку и, нажимая клавишу <Enter> на числовой клавиатуре, выполнять ее. Выделение и выполнение строк кода по одной — это прекрасный способ выявления ошибок в сценарии.
633
Встроенный язык Maya (MEL)
Чтобы изменить способ создания куба, необходимо обратиться к узлу формы (polyCubel), а не к узлу положения, который после создания был переименован в box. Первая строка кода создает куб. Остальные строки изменяют некоторых из его атри бутов, в том числе узла формы куба (узел p o l y C u b e l ) или узла положения (узел box). После команды polyCube следуют два оператора setAttr, которые изменяют размер куба по ширине, а затем собственно ширину куба (теперь параллелепипеда). Четыре по следние строки изменяют поворот, позицию и масштаб узла трансформации куба (box). Конечный результат должен выглядеть так, как на рис. 16.3.
Рис. 16.3. Сплюснутый куб Если по каким-либо причинам понадобится создавать много сплюснутых кубов на различных сценах, то эти команды достаточно будет перетащить с помощью средней кнопки мыши (нажав клавишу на Мае) на панель и создавать объекты, щелкая на полученной кнопке, сэкономив таким образом много времени.
Справочная система MEL Прежде чем переходить к дальнейшему изучению языка MEL, рассмотрим мощней шую справочную систему Maya, доступную для языка MEL. В первую очередь имеет смысл рассмотреть внутреннюю функцию Maya Help. По скольку язык MEL имеет так много команд и функций (приблизительно 700), функция Help представляет собой самый быстрый и удобный способ доступа к информации о них. (Можно даже ввести команду help help, чтобы получить информацию о работе команды Help.) Рассмотрим пример доступа к информации с помощью команды Help. Откройте редактор сценариев и введите в панели ввода (либо в командной строке ниже главного окна) команду help, сопровождаемую именем команды, справку о которой не обходимо получить, например имя команды setActr: help setAttr; Выполните команду (нажав клавишу <Enter> на числовой клавиатуре или комбина цию клавиш — на обычной). В панели истории редактора сценариев поя вится следующий результат: Synopsis: setAttr [flags] Name[...] Flags: -e -edit -q -query -av -alteredValue -c -clamp -ca -caching on off -cb -channelBox on off -k -keyable on off -1 -lock on-off -s -Size Unsignedlnt -typ -type String
Глава 16
634 Полученный
результат
позволяет
быстро
узнать
все
необходимое
о
команде
s e t A t t r : краткое описание (синопсис) ее синтаксиса (т.е. как ею пользоваться) и список флагов, которые можно использовать с этой командой. Для опытного программиста этой информации вполне достаточно, чтобы применить команду. Однако начинающему разработчику, вероятно, понадобится более подробное описание. В этом случае попробуйте ввести в панели ввода следующее:
help -doc setAttr; П р и выполнении этой команды Maya автоматически откроет броузер и, найдя соот ветствующую страницу H T M L в документации (содержащейся на локальном жестком диске), отобразит подробную информацию об искомой команде. В случае оператора s e t A t t r отобразится следующая страница (это только отрывок, настоящая страница со держит более подробную информацию):
Synopsis SetAttr ReturnValue None.
[flags]
object.Attribute
value
[value..]
Description Sets t h e v a l u e of a dependency node Attribute. No v a l u e f o r the A t t r i b u t e i s n e e d e d w h e n t h e - l / - k / - s f l a g s a r e u s e d . The - t y p e f l a g i s o n l y r e q u i r e d when s e t t i n g a n o n - n u m e r i c A t t r i b u t e . The f o l l o w i n g c h a r t o u t l i n e s t h e s y n t a x o f s e t A t t r f o r non-numeric data types: {TYPE} b e l o w means a n y n u m b e r o f v a l u e s o f t y p e TYPE, s e p a r a t e d b y a space [TYPE] means t h a t t h e v a l u e o f t y p e TYPE i s o p t i o n a l A / B means t h a t e i t h e r o f A o r В may a p p e a r
Examples sphere
-n
sphere;
// Set a s i m p l e numeric v a l u e setAttr sphere.translateX 5; / / Lock a n A t t r i b u t e t o p r e v e n t f u r t h e r m o d i f i c a t i o n setAttr -lock on sphere.translateX; / / Make a n Attribute s e t A t t r -keyable off
unkeyable sphere.translateZ;
/ / S e t a n e n t i r e l i s t o f m u l t i - A t t r i b u t e v a l u e s i n o n e command s e t A t t r -Size 7 "sphereShape.weights [ 0 : 6 ] " 1 1 2 1 1 1 2 // Set an Attribute w i t h a compound n u m e r i c t y p e s e t A t t r " s p h e r e . r o t a t e " -type "double3" 0 4 5 90; / / Clamp t h e v a l u e o f t h e Attribute to the min/max / / U s e f u l f l o a t i n g p o i n t math leaves the v a l u e j u s t // a l i t t l e out of range - here the min is .01 s e t A t t r -clamp "anisoTROpicl.roughness" 0.0099978; / / S e t a m u l t i - A t t r i b u t e w i t h a compound n u m e r i c t y p e s e t A t t r "sphereShape.ControlPoints [ 0 : 2 ] " ~CA-type "double3" 0 0 0 1 1 1 2 2 2 ;
Встроенный язык Maya (MEL)
635
Как можно заметить, пара примеров вполне способна объяснить, как пользоваться командой. Для более глубокого изучения самого языка сценариев и его структуры можно обра титься и к оперативной документации MEL. Чтобы открыть справочник по языку MEL в Web-браузере), выберите в меню Майя пункт Help => MEL Command r e f e r e n c e (Справка => Справочник команд MEL), как показано на рис. 16.4. Эта Web-страница содержит ин формацию о всех командах языка MEL, отображаемую в алфавитном порядке или по ка тегориям. Внутренние файлы справочной системы и оперативная справочная докумен тация на жестком диске позволят быстро обратиться к информации о любой команде.
Puc. 16.4. Справочная документация о командах MEL, открытая в Web-браузере Еще один хороший способ изучения языка MEL — это исследование сценариев, написанных другими разработчиками. При желании можно даже копировать и вставлять части их сценариев в собственные сценарии. (Перед этим, правда, следует по лучить разрешение автора.) Для изучения сценариев MEL можно исследовать примеры, находящиеся на прилагаемом CD в разделе "Maya Gems" оперативной справочной сис темы и на Web-сайте h i g h e n d 3 d . c o m , который содержит многочисленные сценарии MEL, разработанные разными пользователями.
Практика: постановка света с помощью MEL Теперь применим полученные знания о языке MEL для создания небольшого, но очень полезного сценария, который будет осуществлять стандартную постановку света, применяемую для любой сцены, простым щелчком мыши. Описанная здесь методика "скопировать и вставить" не требует никаких навыков программирования. В этом при мере будет создана стандартная постановка света из трех источников (основного, запол няющего и контрового), однако читатель может использовать этот метод для создания
Глава 16
636
собственной постановки света по своему усмотрению или создать несколько постановок и разместить их кнопки на панели! 1. Откройте новую сцену в Maya и очистите панель истории редактора сценариев (выберите Edit => Clear History (Правка => Очистить историю)). Чтобы лучше видеть результат постановки света и наблюдаемые при этом эффекты от источников, имеет смысл создать наземную плоскость и объекты на ней. Если это сделано, историю сле дует очистить снова. 2.
Создайте прожектор (направленный источник света) с углом конуса ( C o n e Angle) 4 0, интенсивностью (Intensity) 1, полутенью ( P e n u m b r a ) ю и с установленным па раметром Cast Shadows (Отбрасывание теней). Поместите его в позицию основного источника света, выше справа от сцены, с точи зрения перспективной камеры. Этому источнику света можно присвоить какое-нибудь осмысленное имя, например keyLight. Установив прожектор, скопируйте на панель ввода все строки кода, соз данные в панели истории. Полученный в результате код будет выглядеть приблизи тельно так: d e f a u l t S p o t L i g h t ( 1 , 1,1,1, 0, 4 0 , rename "spotLightl" "keyLight"; m o v e -r 0 0 9 . 0 2 8 9 9 4 ; m o v e -r 1 1 . 0 7 5 3 8 2 0 0; m o v e -r 0 3 . 9 4 5 1 6 5 0;
0,
10,
1,
0,0,0,
Код б у д е т выглядеть изящнее, если о б ъ е д и н и т ь все о п е р а т о р ы m o v e
1,
-r
0);
в один. Для этого
д о с т а т о ч н о п р о с у м м и р о в а т ь з н а ч е н и я в к а ж д о м с т о л б ц е и и с п о л ь з о в а т ь п о л у ч е н н ы е ре зультаты в о д н о й к о м а н д е .
3.
Теперь создайте второй прожектор, отключите приведение тени, установите интенсив ность 0.5, переименуйте его в fillLight и переместите в левую нижнюю часть сцены (если смотреть со стороны камеры). Этому источнику света можно придать небольшой синеватый оттенок. По завершении скопируйте полученный код в панель ввода.
4.
Наконец, создайте еще один источник света, называемый контровым ( b a c k L i g h t ) , без теней, с углом конуса 60° и с интенсивностью 1. Поместите этот источник света с обрат ный стороны сцены, немного слева от камеры и в направлении вниз на объекты сцены.
По завершении (и после удаления излишних команд m o v e и r o t a t e ) код в панели ввода должен выглядеть так (при расположении источников света на сцене подобно рис. 16.5). d e f a u l t S p o t L i g h t (1, 1 , 1 , 1 , 0 , 4 0 , rename "spotLightl" "keyLight"; move -r 19.764 22.101 20.838; r o t a t e -r -os -42.6 39.2 0;
0,
d e f a u l t S p o t L i g h t ( 0 . 5 , 1,1,1, 0, 40, rename "spotLightl" "fillLight"; move -r -18.034 2.571 8.113; r o t a t e -r -os -3 - 6 6 . 2 0;
10,
0,
1,
10,
0,0,0,
0,
1,
0,0,0,
0)
1,
0);
setAttr "fillLightShape.color" -type double3 0.58425 0.63904 d e f a u l t S p o t L i g h t ( 1 , 1,1,1, 0, 60, 0, 10, 0, 0,0,0, 1, 0 ) ; rename "spotLightl" "backLight"; m o v e -r -7.937 8.956 - 1 1 . 6 7 5 ; r o t a t e -r -os -29.4 - 1 4 4 . 8 0;
0.779;
Встроенный язык Maya (MEL)
637
Рис. 16.5. Типичная постановка источников света при тройном освещении 5.
С помощью средней кнопки мыши (клавиша на Маc) перетащите код из панели ввода на панель с кнопками. Теперь после щелчка на полученной кнопке на любой сцене будут созданы три источника света в соответствующих позициях!
6. Как можно заметить, кнопка с надписью MEL на панели — не самая понятная пикто грамма в мире. Чтобы указать, какой именно сценарий MEL имеется в виду, для кнопки можно добавить надпись или даже пиктограмму. Чтобы добавить для кнопки текст, щелкните на черном треугольнике слева от панели и в раскрывающемся меню выберите пункт Shelf Contents (Содержимое панели). Во вкладке Shelf Contents (Содержимое па нели) перейдите в нижнюю часть списка, где должна находиться новая кнопка. Измените содержимое поля Labels & Tooltips (Метки и всплывающие подсказки) на 3 light setup. Затем в поле Icon Name (Имя пиктограммы) введите значение 3Lts. Имя пикто граммы появится в панели под пиктограммой MEL, а текст отобразится при наведении курсора мыши на пиктограмму. Законченная кнопка представлена на рис. 16.6.
Рис. 16.6. Специальная кнопка трой ного освещения на панели Попробуйте создавать и помещать на панель другие постановки освещения или про стые сценарии по своему усмотрению, если они могут пригодиться в будущем.
Переменные, циклы и переходы После знакомства с основами применения MEL рассмотрим немного подробнее, ка кие средства предоставляет язык для создания более сложных сценариев. Те, кто знаком с основами программирования, знают, что основой программ является гибкость и спо собность выполнять повторяющиеся задачи. Гибкость достигается за счет применения переменных и средств перехода, а повторение обеспечивают циклы.
Переменные Переменную (variable) проще продемонстрировать, чем долго описывать ее назначе ние и суть. Введите в редакторе сценариев следующее:
638 string $myVariable print
Глава 16 $myVariable; = "hi $myVariable;
there";
ВЫПОЛНИВ ЭТИ команды, можно заметить, что фраза "hi there" отображается в по следней строке панели истории. Это означает, что команда отобразить содержимое пере менной $myVariable привела к отображению фразы "hi there". Первая строка кода этого сценария называется объявлением (declaration) переменной: string — это тип пе ременной (т.е. строка, текст которой заключен в кавычки), a $myVariable — это имя пе ременной. Вторая строка сценария присваивает переменной $myVariable строку "hi there", третья строка содержит команду print, выводящую содержимое переменной $myVariable на экран. Т и п ы п е р е м е н н ы х MEL
Язык MEL поддерживает несколько типов переменных. int (целое число). Используется для хранения целых чисел, таких как 3 или -45. float (десятичное число). Используется для вещественных чисел, таких как -35 .4725. string (символьная строка в кавычках). Используется для хранения текста, например "hello world".
vector (вектор). Три десятичных числа, которые составляют векторное число, используе мое для описания точки в трехмерном пространстве, например (26, 31.67, 6 .724). Вектор ное число применяется для хранения трехкомпонентной информации, такой как позиция (в координатах X, Y, Z), или цвета (красный, зеленый, синий). array (массив). Список чисел, используемый для хранения набора целых чисел, десятич ных чисел, строк или векторов. Массивы применяются для хранения данных многих подоб ных элементов, например цветов каждой частицы в группе частиц. matrix (матрица). Двухмерный массив десятичных чисел или массив массивов десятичных чисел. Если это звучит непонятно, матрицу можно представить себе как таблицу из рядов и столбцов, содержащую десятичные числа. Более подробно каждый из типов переменных будет описан далее, по мере их применения в этой главе. Имя каждой переменной MEL должно начинаться с символа доллара ($), это уведомляет MEL о том, что данное имя принадлежит именно переменной. (Об этом зачастую забывают, что приводит к возникновению странных ошибок, поэтому не забывайте о символе $!) В предыдущем примере после оператора print можно было бы ввести следующий код: $myVariable = "goodbye"; print $myVariable;
Это заменило бы данные в переменной $myVariable на строку "goodbye" и приве ло бы к ее отображению на экране после фразы "hi there". Как можно заметить, пере менные оказываются весьма полезными, поскольку они позволяют хранить различные данные в различные периоды времени выполнения программы. Язык MEL обладает довольно удобной возможностью для переменных: их можно объявлять и присваивать им значение в той же строке. Другими словами, предыдущий сценарий можно переписать следующим образом: string $myVariable = print $myVariable;
"hi there";
Встроенный язык Maya (MEL)
639
Между этими двумя методами объявления и инициализации переменных нет ника ких реальных различий, если не учитывать меньшее количество введенного кода и луч шую удобочитаемость. Пользователь может использовать любой способ, однако опытные программисты предпочитают экономить нажатия клавиш. Однако экономить на нажати ях клавиш при объявлении и присвоении значений переменным можно и другими спо собами. Ниже приведено несколько примеров разных способов объявления переменных. • Целое число int $months = 11; //. с т а н д а р т н о е объявление и п р и с в о е н и е int $days = 11, $year = 1977; // 2 п р и с в о е н и я , р а з д е л е н и е запятой int $dollars = $pounds = $pesos = -14; // н е с к о л ь к о п р и с в о е н и й / / одинакового значения
• Десятичное число float $distance = -7.1; // стандарт float $height, $weight = 87.8; // 2 о б ъ я в л е н и е , п р и с в о е н и е 2 - й $length = 3 . 4 ; / / н е я в н о е объявление д е с я т и ч н о г о ч и с л а
• Строка string $greeting = "Hello World!"; // с т а н д а р т string $empty = "", // объявления р а з д е л е н ы $hello = " H I ! " ; // з а п я т о й , окончание в с т р о к е 2
• Массив int $bits[5] = {О, 1, 0, 1, 0 } ; // с т а н д а р т float $lengths[10]; / / п у с т о й м а с с и в н а 1 0 э л е м е н т о в т и п а float $lengths[0] • 4.6; / / п р и с в о е н и е з н а ч е н и я первому э л е м е н т у string $class[5] = {"Jim", "Davy", "Dave", "Deborah", "Wil"}; / / присвоение значений строкового массива
Когда переменные имеют осмысленные имена, читать код существенно легче. Подоб но корректно написанным комментариям, осмысленные имена переменных существенно упрощают жизнь, когда приходится иметь дело с достаточно сложным сценарием или возвращаться впоследствии к давно написанному коду. Например, переменная $whisker_length намного понятнее, чем $wl. Неявное объявление
Переменные в Maya можно объявлять неявно (implicitly), достаточно присвоить им зна чение, например $ v a r = " h e l l o " . Это присвоение неявно объявляет переменную $ v a r как строковую, поскольку кавычки сообщают интерпретатору о том, что значение " h e l l o " имеет строковый тип. Однако, поскольку читать неявные объявления сложнее, они зачастую служат причиной ошибок. Поэтому рекомендуется использовать именно явные объявления.
Циклы Теперь исследуем циклы (looping). Предположим, что, используя команды MEL, на сцене необходимо создать пять кубов. Команду polyCube -n box можно, конечно, вве сти пять раз вручную, но можно создать цикл for, который выполнит эту задачу автома тически. Чтобы создать пять кубов, можно использовать следующий код:
640
Глава 16
int $i; f o r ( $ i = 1; $i <= 5; $ i + + ) { polyCube -n b o x 1 ;
} Вот все пять кубов от b o x l до Ьох5. (Чтобы рассмотреть кубы как отдельные объек ты, их следует растащить по сторонам. Вскоре это действие будет автоматизировано.) Обратите внимание на то, что после оператора f o r нет точки с запятой: MEL ожидает, что после него расположена одна или несколько команд (в фигурных скобках {}), по этому точка с запятой здесь не нужна. Кроме того, закрывающая фигурная скобка (}) выступает в роли точки с запятой, поэтому в последней строке точка с запятой тоже не нужна. Цикл f o r имеет следующий синтаксис: f o r (начальное_значение; проверяемое_значение; приращение) Начальное_значение— это то значение, которое имеет переменная-счетчик в начале. Проверяемое_значение — это логический оператор (возвращающий значение да или нет, 1 или 0, Вкл. или Выкл., t r u e или f a l s e , и с т и н а или ложь), который определяет, следует ли продолжать итерации цикла. (См. документацию Maya по логическим (Boolean) операто рам.) Приращение (или инкремент) — это величина, на которую изменяется значение счет чика ($i++ — сокращение выражения "увеличить при каждом цикле значение переменной $i на 1"). Цикл f o r в предыдущем примере можно прочитать следующим образом: присвоить сначала переменной i значение 1, пока ее значение меньше или равно 5, увеличивать его на 1 после каждого цикла выполнения операторов в фигурных скобках. Чтобы сделать этот цикл немного больше полезным, заставим его смешать кубы вдоль оси Y по мере их создания, чтобы они не накладывались друг на друга: f o r ( $ i = 1; $ i < = 5; $ i + + ) { polyCube -n box; move -r 0 (2 => $ i ) 0;
} Теперь, по мере создания кубов, каждый из них будет переме щен от места создания на расстояние, вдвое большее значения пе ременной $ i . Как видно на рис. 16.7, кубы больше не накладыва ются друг на друга. В языке MEL существует несколько других типов циклов. Син таксис и пример каждого из них приведен в следующих разделах. ЦИКЛ for - in Синтаксис f o r {элемент массива){ опера торы;
} Пример string $student; s t r i n g $ c l a s s [3] = ( " B r i a n " , " N a t h a n " , " J o s h " } ; for ($student in $class){ p r i n t ($student + " \ n " ) ; // \n = новая строка }
Результат Brian Nathan Josh
Рис. 16.7. Кубы, созданные и перемещаемые сценарием MEL
Встроенный язык Maya (MEL)
641
Цикл while Синтаксис while [условие опера торы;
проверки) {
} Пример int $i = 0; while ($i < 5){ print $i; $i++; // инкремент i на 1
} Результат 01234 ЦИКЛ
do - while
Синтаксис do { }
опера торы; while (условие
проверки) ,-
Пример int $i = 5; do { print $i; $i—; // декремент i на 1 } while($i > 0) ;
Результат 54321
Переходы Переходы (branching), или условные операторы, позволяют задать вопрос и в за висимости от полученного ответа принять решение, какие действия следует пред принять. (Фактически оператор for содержит условный оператор в его части проверяемое_значение.) Модифицируем предыдущий сценарий и поместим в цикл for условный оператор if, содержащий выражения: for ($i = 1; $i <= 5; $i++){ polyCube -n box; if ($i<=3){ move -r 0 (2 => $i) 0;
} else{ move -r (2 => $i) 0 0;
} } Что произойдет при выполнении этих команд? Первые три куба будут расположены один над другим по оси Y (пока значение переменной $i меньше или равно 3), а послед-
642
Глава 16
ние два распределены по оси X (когда переменная $i имеет значения 4 и 5, которые больше, чем 3). Результат выполнения этого сценария представлен на рис. 16.8.
Рис. 16.8. Создание и перемещение ку бов с использованием команд for и if В абстрактном виде оператор if имеет следующий синтаксис: if (проверка) { команды; }
e l s e if (проверка) { команды;
} else{ команды;
} Для работы оператора i f операторы e l s e i f и e l s e необязательны. Оператор e l s e if позволяет осуществить столько проверок, сколько необходимо (т.е. условный опера тор if может иметь множество операторов e l s e i f ) . Это позволяет организовать про верку нескольких возможных вариантов в одном большом условном операторе. В таких случаях последним элементом всегда должен быть оператор e l s e , это "стандартный" от вет, если никакие другие условия не удовлетворяются. Все команды, расположенные в разделах i f , e l s e if и e l s e , следует заключать в фигурные скобки ( { } ) . При желании код создания перемещения кубов можно усовершенствовать с помощью оператора e l s e if следующим образом: f o r ( $ i = 1; $ i <= 10; $ i + + ) { polyCube -n box; i f ( $ i <= 3){ move -r 0 (2 => $ i ) 0;
} e l s e if ( $ i > 3 && $i <= 6){ move -r 0 0 (2 => $ i ) ;
} else{ move -r (2 => $ i ) 0 0;
} } Здесь кубы выстраиваются по оси Y, если значение переменной $i меньше или равно 3, по оси Z, если оно находится между 4 и б, и по оси X, если оно больше 6.
Встроенный язык Maya (MEL)
643
Если после оператора if располагается только одна команда, нужды в фигурных скобках нет. Будьте внимательны при расстановке отступа в соответствии с фигурными скобками, пропуск скобки и неверное выравнивание в многоступенчатом операторе if e l s e способ ны привести к длительной отладке. Еще один способ организации перехода заключается в применении оператора s w i t c h . Оператор s w i t c h создает разветвление потока выполнения кода на основании значения управляющей переменной. Управляющая переменная может иметь тип i n t , f l o a t , s t r i n g или v e c t o r . Если значение управляющей переменной равно одному из значений, указанных в разделах c a s e (они должны иметь тот же тип, что и управляющая переменная), то выполняются операторы, начиная с этого раздела c a s e . Ниже приведен базовый синтаксис оператора s w i t c h , s w i t c h (управление) { c a s e значение1: оператор1; break; c a s e значение2: оператор2; break; c a s e значение3: операторЗ; break; default: оператор4; break;
} Оператор b r e a k используется для выхода из оператора s w i t c h и предотвращения выполнения операторов последующих разделов c a s e . Оператор d e f a u l t выполняется в случае, если значение ни одного из предыдущих разделов c a s e не соответствует значе нию управляющей переменной. Оператор d e f a u l t необязателен. Оператор b r e a k так же можно пропустить, если необходимо организовать выполнение операторов от данного раздела c a s e и следующих разделов c a s e , расположенных ниже. (Это довольно не обычно, но иногда применяется, поэтому всегда используйте оператор b r e a k , если не уверены абсолютно точно, что в данном случае он не нужен.) Рассмотрим применение оператора s w i t c h в примере с кубами: f o r ( $ i = 0; $i < 3; $ i + + ) { polyCube -n box; switch($i){ c a s e 0: move -r {2 => $ i ) 0 0; break; case 1: move -r 0 (2 => $ i ) 0; break; c a s e 2: move -r 0 0 (2 => $ i ) ; break; default:
644
Глава 16 break;
} } Здесь создаются три куба, каждый из которых перемещается по другой оси. Когда зна чение переменной $i равно 0, происходит перемещение по оси X, когда 1 — по оси Y, а когда 2 — по оси Z. Значение 3 переменной $i соответствует условию раздела default, в котором нет операторов перемещения нового куба (поэтому куб и не перемещается).
Отладка сценариев MEL ЕСЛИ удача сопутствовала читателю до сих пор и код сценариев удавалось вводить аб солютно точно, то сообщения об ошибках MEL, возможно, еще и не появлялись. Однако начав создавать собственные сценарии MEL, безусловно, сталкиваешься с сообщениями об ошибках, наиболее распространенными из которых являются синтаксические ошиб ки. Каждая команда имеет определенную структуру или формат, который следует со блюдать для ее успешного выполнения. В противном случае интерпретатор сценариев не будет знать, что делать с такой командой, и сообщит о наличии синтаксической ошибки (syntax error). Хотя отладка (debugging) сценариев — это своего рода искусство, существует не сколько способов облегчения этой задачи. Выполнив сценарий, в первую очередь про верьте панель истории: если последней строкой в панели истории команд является по следняя строка кода сценария, значит, выполнение прошло без ошибок. В противном случае отобразится строка комментария приблизительного такого содержания: setAttr b o x 5; //Error:
line 1: No Attribute was specified.
//
Это сообщение ( / / Ошибка: строка 1: Атрибут не определен. / / ) указывает на то, что в ходе анализа была обнаружена как минимум одна ошибка. Анализ (parsing) — это термин, описывающий процесс проверки интерпретатором коррект ности команд сценария.
Строка ответа (feedback line), расположенная в правой нижней части экрана (рис. 16.9), становится красно-оранжевой, когда интерпретатор MEL, обнаружив ошибку в коде, отображает сообщение о ней. Один из способов быстро выяснить местоположение ошибки — это выбрать в меню редактора сценариев пункт Script => Line Numbers In Errors (Сценарий => Номера строк при ошибках), в результате Maya будет отображать номера строк. Как правило, эту возможность имеет смысл задействовать всегда. Это не замедля ет работу Maya, но предоставляет дополнительную информацию, полезную при поиске ошибок. Теперь, когда Maya отображает номера строк в панели ввода, найти строку с ошибкой довольно просто.
Рис. 16.9. Сообщение об ошибке в строке ответа Наиболее распространенной ошибкой новичков является забытая точка с запятой в конце строки. Выявить такую ошибку довольно трудно, особенно если не догадываешься
Встроенный язык Maya (MEL)
645
о ее причине. Получив в сценарии бессмысленное сообщение об ошибке, попробуйте проверить строки выше того места, где произошла ошибка, и убедитесь, что все они за канчиваются точкой с запятой. И наконец, поскольку MEL является интерпретирующим языком сценариев, его код можно выполнять строка за строкой (или блоками строк), а не весь сценарий сразу. Это тоже весьма удобный способ выявления строки, которая содержит ошибку. Это демонст рирует приведенное ниже упражнение. 1.
Введите следующий код, но пока не выполняйте его:
print "hello, worldJ"; print hello, world; 2. Выделите первую строку кода и выполните ее (нажав клавишу <Enter> на числовой клавиатуре или комбинацию клавиш — на обычной). Текст hello, w o r l d ! должен отобразиться в панели истории. 3.
Выделите и выполните вторую строку кода. Результат должен напоминать следующий: // Error: print hello, world; // // Error: Line 1 . 1 2 : Syntax error //
Первая строка выполнена правильно, но во второй есть ошибка, поскольку команде print необходимо строковое значение, заключенное в кавычки. В сценарии из двух строк выявить ошибку довольно просто, однако в более длинном сценарии такой подход по строчного выполнения кода может оказаться весьма эффективным при поиске ошибок.
Комментарии Комментарии (comment) — это способ документирования кода, предоставляемый разработчику. Комментарии весьма полезны, когда приходится возвращаться к коду, на писанному ранее, когда создается сложный, малопонятный код, когда код предназначен для чтения другими разработчиками. Комментарии начинаются двумя символами косой черты ( / / ) . При выполнении сце нария интерпретатор игнорирует все, что следует за двумя символами косой черты в этой строке. Рассмотрим несколько примеров комментариев: // Автор с ц е н а р и я : Джон До polyCube -n myCube; // создать куб по и м е н и myCube
Как можно заметить, комментарий способен располагаться как в отдельной строке, так и в конце строки кода. Для комментариев из нескольких строк, применяемых обычно в начале сценария, мож но также использовать символы / => , указывающие начало многострочного комментария. Все, что находится после этих символов, будет игнорироваться анализатором MEL до тех пор, пока он не встретит символы => /, означающие конец многострочного комментария. В начало сценария всегда следует включать комментарий о том, для чего предназна чен данный сценарий, каковы его аргументы (входящие данные), если они нужны (это описано далее, в разделе посвященном процедурам), кто его писал, кто модифицировал и когда. Кроме того, неплохая идея поместить в код сценария комментарий "use at your own risk" (используйте на свой страх и риск), указывающий, что в случае непредви денных проблем автор сценария не несет никакой ответственности за любые возможные последствия (увы, нынешнее общество так любит судиться).
Глава 16
646
Может возникнуть впечатление, что подобные комментарии предназначены для дру гих, а не для самого разработчика, и если не планируется распространять код сценария, то и писать их не нужно. Однако не забывайте, что вернувшись к сценарию, созданному пару месяцев назад, при необходимости модифицировать его, очень трудно вспомнить, что, почему и как он делает. В результате можно потратить впустую очень много време ни, разбирая по коду его работу. Комментарии позволят избежать этих проблем. Всегда тщательно комментируйте сценарии (даже самые простые). Это хорошая при вычка, постарайтесь выработать ее! Хорошее комментирование вовсе не означает обяза тельное комментирование всего. В этой главе комментирование сценариев немного избы точное, в учебных целях, но в большинстве случаев количество комментариев не должно превышать количества кода. Хороший код самоописателен, а комментарии являются лишь дополнительным пояснением происходящего (в основном для других читателей). Пример одновременно избыточного и недостаточного комментария приведен ниже. // Z р а в н о х плюс у $Z = $х + $ у ;
Создание GUI Ввод команд в командной строке или панели ввода редактора сценариев вполне под ходит для простых задач, но чтобы предоставить пользователям доступ ко всем командам сценария и обеспечить ему удобный способ ввода данных и взаимодействия с помощью мыши, сценарий можно снабдить окном графического интерфейса пользователя (Graphical User Interface — GUI). Хотя создание подобных окон может быть несколько сложным, практически все высококачественные сценарии используют их. Поэтому сле дует изучить по крайней мере основы создания GUI с помощью MEL. Окна в Майя могут быть достаточно сложными (взять хотя бы для примера окно ре дактора атрибутов), однако сам способ создания окон довольно простой. Для этого необ ходимо как минимум три команды: window
способ
-title
"title"
-wh X Y myWindow;
КОМПОНОВКИ;
showWindow;
Выполнение команды w i n d o w создает окно с именем " t i t l e " в его заголовке (флаг -title), необязательными параметрами являются ширина и высота окна (флаг -widthHeight или -wh), а также его имя (последний элемент команды window). Заго ловок окна и его имя — это не одно и то же: Майя обращается к окну по имени myWindow, а пользователь видит в заголовке окна надпись title. Команда showWindow отображает окно на экране. (Если забыть эту строку, окно так и не появится на экране.) Эта команда обязательно должна присутствовать в серии ко манд создания окна. Команды компоновки задают расположение окон. Наиболее распространенными из них являются
columnLayout,
scrollLayout,
rowColumnLayout
и
formLayout.
Компоновка columnLayout создает столбец, компоновка scrollLayout — прокручи ваемое окно, компоновка rowColumnLayout соответствует таблице из рядов и столбцов, а компоновка formLayout создает пространство, которое можно использовать разными способами по своему усмотрению. Эти компоновки могут также содержать другие ком поновки, вложенные в них. Так можно без особых проблем создавать довольно сложные
647
Встроенный язык Maya (MEL)
окна. (Компоновка formLayout зачастую является родительской формой, в которой располагают другие компоновки.) Создадим простое окно, которое содержит одну кноп ку и один ползунок. Введите в редакторе сценариев следующий код: window -t "The Big W i n d o w / " -wh 400 200 myWindow; columnLayout -cw 200; b u t t o n -1 text "
"Click this b u t t o n " m y B u t t o n ;
attrFieldSliderGrp -1 "Slide this around" -min 0 -max 10 theSliderGroup;
snowWindow
myWindow;
Эти команды создадут окно (которое будет известно Майя под именем myWindow, но, как можно заметить на рис. 16.10, в заголовке отображается The Big w i n d o w ! ) шири ной 400 и высотой 200 пикселей. Компоновка columnLayout применена с шириной 200 пикселей. Далее создается кнопка (с надписью Click This Button и именем myButton), а затем группа поля ввода и ползунка (с надписью Slide This Around и именем theSliderGroup) с минимальным значением 0 и максимальным — 10. Команда text здесь помещает пробел между кнопкой и группой ползунка. И наконец, команда showWindow отображает окно. Как можно заметить, создать окно с кнопками, ползунка ми и другими объектами не слишком трудно.
Рис. 16.10. Окно The Big Window! Если при вводе сценария MEL будут допущены некоторые ошибки, то при повторной попытке создать с его помощью окно можно получить следующее сообщение об ошибке: Error:
Object's name is not u n i q u e : myWindow. Если получено такое сообще
ние, значит, окно myWindow следует удалить. Дело в том, что, несмотря на его отсутствие на экране, язык MEL создал объект пользовательского интерфейса myWindow, однако, поскольку команда ShowWindow располагается в самом конце, оно просто не отобража ется. Таким образом, на сцене уже присутствует невидимое окно myWindow, и второе од ноименное окно создано быть не может. Поэтому перед следующей попыткой создания его следует удалить. Для этого введите в командной строке или редакторе сценариев ко манду d e l e t e u i myWindown выполните ее. Эта команда весьма полезна при разработ ке элементов GUI, поэтому обратите на нее внимание. Теперь заставим кнопки осуществлять некие действия. Удалите все объекты со сцены и создайте сферу ball. Измените сценарий, добавив в него флаги -command и -Attribute следующим образом: window -t "The Big Window!" -wh 400 200 myWindow; columnLayout -cw 200; button -1 "Click this button" -c "setAttr b a l l . t y 5" myButton; text " " ; attrFieldSliderGrp -1 "Slide this around" -min 0 -max 10
648
Глава 16
-at ("ball.tx") theSliderGroup; showWindow myWindow;
Флаг -с объекта button (кнопка) вынуждает Maya выполнить после щелчка на кнопке инструкцию, находящуюся далее в кавычках. В данном случае после щелчка на кнопке Майя выполнит команду setAttr b a l l . ty 5, устанавливающую шарик в по зицию 5 единиц по оси Y. Флаг -at группы ползунка вынуждает Майя присоединить ползунок и текстовое поле к взятому в кавычки атрибуту (в данном случае b a l l . tx, т.е. положение шарика по оси X). Если теперь переместить ползунок (или ввести число в текстовое поле), то шарик будет перемещаться между точкой 0 и 10 единиц по оси X. Команда attrFieldSliderGrp позволяет задать для ползунка (slider) и текстового поля ввода (text field) диапазон, определяемый минимальным и максимальным значе ниями. Флаги - fmn и - fmx указывают соответственно минимально и максимально до пустимые значения для поля ввода, а флаги -smn и -smx — для ползунка. Возможность установки для ползунка и текстового поля ввода разных минимальных и максимальных значений позволяет пользователю вручную вводить числа, выходящие за пределы диа пазона ползунка. Это может быть полезно, если нужно предоставить пользователю воз можность иногда вводить значения вне стандартного диапазона., Можно также создавать переключатели (radio button) и флажки (check box), которые срабатывают при выборе или установке. Более подробная информация по этой теме при ведена в документации языка MEL. В качестве упражнения попробуйте создать команду, которая после щелчка на кнопке пе ремещает шарик каждый раз на 5 единиц вверх. Подсказка: это относительное движение, а не абсолютное. Теперь, убедившись в том, как быстро можно создать простое окно интерфейса для сценария, напишем сценарий, который автоматически создает графический интерфейс для управления источниками света на сцене. Создайте новую сцену и разместите на ней несколько источников света, направленных на объект, также расположенный на сцене (для этого можно использовать сценарий постановки освещения, описанный ранее в этой главе). Введите в окне редактора сценариев следующий код: s t r i n g $sel[] = I s -lights; string = > c u r r e n t ; string $winName = "lightWindow"; if ('window -exists $winName') { deleteUI $winName; } window -title "Lights" -wh 600 300 $winName; scrollLayout; rowColumnLayout -nc 2 -cw 1 160 -cw 2 400; for ($current in $sel) { text -1 => c u r r e n t ; attrFieldSliderGrp -min (-1) -max 10 -at ($current + ".intensity");
} showWindow $winName; При выполнении этого сценария Maya автоматически создает "пульт управления" ос вещением, позволяющий управлять интенсивностью всех источников света на сцене из одного плавающего окна.
Встроенный язык Maya (MEL)
649
Наиболее интересной частью этого сценария является первая строка кода: string $sel []
= "Is -lights";
Эта строка присваивает переменной $sel [] (тип массив строк) имена всех источни ков света на сцене. Команда Is вынуждает Maya перечислить элементы, указанные после него (в данном случае это - lights, источники света). Таким образом, эту команду мож но прочитать так: "создать список всех источников света на сцене". Обратные апострофы () указывают Maya на необходимость выполнить эту команду (которая возвращает имя каждого источника света) и сохранить результаты в массиве $sel [] (квадратные скобки [] означают массив строк). Другие переменные объявлены для хранения "текущего элемента" ($current) и имени окна ($winName). Сценарий выясняет, существует ли уже такое окно, и если да, то удаляет его (используя команду deleteUI), чтобы можно было создать новое окно. Этот небольшой фрагмент кода имеет смысл включить в любой сценарий GUI, посколь ку он позволяет предотвратить случайную попытку создания окон с одинаковыми име нами, а следовательно, избежать сообщения об ошибке. Затем создается окно с полосой прокрутки (чтобы его можно было прокручивать, окажись оно слишком маленьким) и компоновкой в виде таблицы. Затем сценарий выполняет цикл for, называемый циклом for - in. Цикл for - in перебирает массив (в данном случае $sel [] ) по одному элементу и помещает его значение элемента $sel [номер] в переменную $current. Следовательно, тип переменной $current должен соответствовать типу элемента мас сива $sel [] (в данном случае это тип string). Как видно на рис. 16.11, последующий цикл отображает имена источников света (в столбце 1) и создает группы ползунка и поля ввода, связанные с атрибутом интенсив ности данного источника света (в столбце 2).
Рис. 16.11. Окно, отображающее элементы управ ления светом ЕСЛИ В
окне необходимо отображать не все источники света, а только ранее в ы д е л е н н ы е на
сцене, в команду Is (первая строка кода) следует добавить флаг - selected.
Этот небольшой сценарий демонстрирует, каким мощным средством усовершенство вания рабочего процесса может быть язык MEL: всего несколько строк кода сценария позволили создать и установить управление множеством источников света на сложной сцене, причем очень простым и интуитивно понятным способом. Если на сцене необхо димо создать круговое освещения из 20 источников света с индивидуальной настройкой интенсивности при навигации, аналогично циферблату часов, то разработка сценария для этого случая может занять около 10 минут.
Глава 16
650
В качестве упражнения создайте ползунки, которые позволят корректировать цвета источника света и его интенсивность. (Подсказка: тремя атрибутами цве тов являются: colorr, colorG и colorB, они управляют соответственно интенсивно стью красного, зеленого и синего цветов.) При желании можно попробовать располо жить группу элементов управления каждого источника света в его собственном разделе (так, чтобы внутри находились ползунки атрибутов intensity, colorr, colorG и colorB). Для этого придется изучить команду setParent, а также фреймовую компо новку с флагом -cll (collapsible — разворачивающийся), которому присвоено значение true (в результате раздел можно будет развернуть, щелкнув на треугольнике). Можно также добавить флажки, чтобы отключить видимость каждого источника света — это по зволит просмотреть воздействие от каждого источника света по отдельности. Справку по этим командам можно найти в оперативной документации Майя, а в качестве примера воспользоваться сценарием MEL lightBoard.mel, содержащемся на CD.
Применение процедур и сценариев В предыдущих разделах уже рассматривалось несколько основных элементов языка MEL. Однако большинство созданных до сих пор фрагментов не будут корректно рабо тать в других условиях, если попробовать сохранить их в папке сценариев. Поэтому и не предпринималось никаких попыток сохранить созданные команды в формате, который Maya сможет прочитать и выполнить. Теперь пришло время исправить недостатки соз данного кода и превратить его во вполне полнофункциональные (автономные) сценарии, которые можно переносить с одного места на другое и даже торговать ими. В следующих разделах рассматриваются процедуры и сценарии. Процедура (procedure) — это элементарный блок создания сценария MEL. На фундаментальном уровне это строка объявления, сообщающая Maya о том, что все ее содержимое является единой именованной функцией. Сценарий — это всего лишь коллекция (collection) из одной или нескольких процедур.
Процедуры В абстрактном виде процедура выглядит следующим образом: proc
myProcedure ()
{
команды
} Maya будет выполнять все заключенные в фигурные скобки команды каждый раз, когда встретит имя myProcedure в командной строке или на панели ввода редактора сценариев. Здесь myProcedure — это имя процедуры, а круглые скобки могут содержать любое коли чество объявлений переменных, значения которых могут быть введены либо пользовате лем, либо другой процедурой в процессе выполнения. В качестве простого примера напи шем процедуру, которая будет создавать указанное пользователем количество сфер: global proc makeBall (int $num){ int $num; for ($i = 1 ; $i <= $num; $i++){ sphere -r 1 -name ("ball" + $ i ) ;
} }
Встроенный язык Maya (MEL)
651
Учимся у мастеров
К сожалению, объем этой главы не позволяет описать все возможности языка MEL. Одним из наилучших способов продолжения изучения языка MEL является чтение (и копирование фрагментов) сценариев, написанных другими. Прочитав каждую строку кода сценария и выяснив, что она делает, можно научиться очень многому. Еще лучший подход заключается в копировании фрагментов чужого кода и его модификации, чтобы приспособить резуль тат к решению собственных повседневных задач. Это позволит действительно начинать создание весьма полезных сценариев, но перед этим следует заручиться согласием авторов на использование и/или модификацию их кода. Введите код приведенной выше процедуры в редакторе сценариев и запустите его на выполнение. Обратите внимание на то, что в Maya ничего не произошло. Дело в том, что код сценария разместил процедуру в памяти Maya, а команды вызова процедуры в нем не было. Поскольку сценарий уже располагается в памяти, теперь при каждом вводе имени makeBall в командной строке или на панели ввода, сопровождаемого целым числом, на сцене будет создано соответствующее количество сфер (с именами balll, Ьаl12 и т.д.). Введите, например, команду makeBall 5. В результате на сцене будет создано пять сфер — от balll до balls. Эту процедуру можно сделать "глобальной" (т.е. позволить Maya обращаться к ней), если сохранить ее как текстовый файл в следующей папке (подробности вскоре): • Для Windows \local disk (С:)\Documents and Settings\<user name> \My Documents\Maya\8.5\scripts
• Для Macintosh -home/Library/Preferences/Alias/Maya/8.5/scripts
Поскольку процедура — это лишь именованный набор команд MEL, содержащийся в фигурных скобках, в нее вполне можно поместить серию команд для постановки осве щения: ////////////////////////////////////// global proc lightBoard (){ string $sel() = "Is -lights"; string $current; string $winName = "lightwindow"; if ("window -exists $winName"){ deleteUI $winName;
} window -title "Lights" -wh 400 300 $winName; scrollLayout; rowColumnLayout -nc 2 -cw 1 160 -cw 2 4 0 0 ; for ($current in $sel){ text -1 $current; attrFieldSliderGrp -min (-1) -max 10 -at " .intensity"); } showWindow $winName;
} //////////////////////////////////////
($current +
Глава 16
652
Теперь после загрузки (ввода) исходного кода этой процедуры каждый раз при встрече имени lightBoard в командной строке или коде данная процедура будет выполнена, и поль зователь получит облегченный способ управления всеми источниками света. Хорошая идея — комментировать начало и конец каждой процедуры (так проще найти их начало и конец). Начало комментария определяют два символа косой черты (//).
Сценарии В чем разница между процедурой и сценарием? Сценарий (script) — это коллекция из одной или нескольких процедур. Таким образом, только что созданная процедура lightBoard фактически тоже является сценарием. Настоящий сценарий следует сохра нить как внешний текстовый файл, имеющий расширение .mel. Имя файла сценария должно совпадать с именем последней (глобальной) процедуры сценария (плюс расши рение .mel). Сценарий рассматриваемого примера панели освещения (lightboard) со храните в файле lightBoard. mel папки сценариев (полный путь указан в разделе вы ше). При выборе в редакторе сценариев пункта меню Save Selected (Сохранить выде ленное) эта папка является заданной по умолчанию, поэтому файл можно просто сохранить. Теперь напишем простой сценарий, который содержит две процедуры: // // // // // // //
Загрузите исходный код этого сценария, а затем введите "makeBall <число>" в командной строке или р е д а к т о р е сценариев. Процедура создаст указанное количество из сфер, именами которых будут "balll", "Ьа112" и т.д. Автор: John Kundert-Gibbs Последняя модификация: April 16, 2005 Используйте на свой страх и риск.
////////////////////////////////////// /I Процедура makelt создает сферы и присваивает им имена. / / Е й необходимо передать количество шаров, которые определяет // основная процедура. proc makelt (int $theNum) { // $theNum должна быть п е р е о б ъ я в л е н а в процедуре int $theNum; for ($i = 1; $i <= $theNum; $i++) { sphere -r 1 -name ("ball" + $ i ) ;
} } // конец makelt ////////////////////////////////////// ////////////////////////////////////// II makeBall - основная вызываемая процедура. // Вызывает процедуру makelt и передает ей количество сфер, // подлежащих созданию. global proc makeBall (int $num) { int $num; makelt ($num); } // конец makeBall //////////////////////////////////////
Встроенный язык Maya (MEL)
653
Этот сценарий создает и использует процедуру, которая фактически создает сферы. Главная (main), или глобальная (global), процедура просто вызывает вложенную проце дуру. (Как это часто бывает со сложными сценариями, только заглянув в его конец, мож но обнаружить маленькую процедуру, которая и вызывает все остальные процедуры сце нария.) Последней является как раз та процедура, которая вызывается при вводе в ко мандной строке команды makeBall 5. Она является (и должна являться) единственной глобальной процедурой сценария, а процедура make It является локальной (а следова тельно, она не видима Maya вне сценария). Обратите внимание, основная процедура рас положена последней, поскольку в ходе интерпретации кода MEL, когда до нее дойдет очередь, все используемые в ней процедуры должны быть уже загружены, а значит, рас полагаться обязаны выше нее. С о о б щ е н и е P r o c e d u r e Not
Found
Иногда по некоторым причинам Maya не видит локальную процедуру даже тогда, когда она правильно расположена в сценарии. Получив сообщение об ошибке " P r o c e d u r e N o t Found" (Процедура не найдена), попробуйте переопределить локальные процедуры как глобальные, иногда это устраняет ошибку. Кроме того, если сценарий сохранен в заданной по умолчанию папке сценариев Maya 8.5, он, как правило, способен находить другие про цедуры. При поиске вне папки сценариев заданной по умолчанию выберите в окне редак тора сценариев пункт меню File => Source Script (Файл => Загрузить сценарий) и убедитесь, что этот путь указан в списке. Прежде чем приступить к самостоятельному изучению языка MEL, изучите примеры сценариев, расположенные на прилагаемом CD. Это позволит привык нуть читать комментарии в коде сценариев, а не в отдельном текстовом файле.
Резюме В этой главе описаны основы языка MEL, некоторые дополнительные аспекты языка сценариев Maya, а также представлены практические примеры создания инструменталь ных средств автоматизации разработки в Maya. Здесь продемонстрирована работа с пе ременными, циклы и условные выражения, а также создание средств графического интер фейса, предоставляющего пользователю интуитивно понятный способ работы. Прежде чем переходить к созданию достаточно сложных собственных сценариев, имеет смысл изучить примеры сценариев на прилагаемом CD. Они располагаются от простого к сложному и представляют собой прекрасный ресурс для самостоятельного изучения кода. В следующей главе обсуждаются инструменты системы Maya Paint Effects, а также ее использование для создания интересных визуальных эффектов.
Система Paint Effects Одной из самых трудных задач программного обеспечения трехмерного моделирова ния и компьютерных разработчиков является воссоздание таких природных явлений, как деревья, растения, дождь и выбрасываемая лава. Это требует применения весьма сложных, кажущихся хаотичными схем и органических форм с реалистичными движе ниями, а не "бездушной" трехмерной графики вроде той, которую можно увидеть, на пример, в фильме "Трон" (Тrоn). > Как уже упоминалось, природные явления можно создавать с помощью динамическо го моделирования (дождь, снег, вода), процедурного моделирования, с использованием кластеров различных моделей (вроде отдельных травинок или цветов), которые затем компонуются и накладываются, создавая эффект большого количества объектов. Встро енный редактор изображений Paint Effects, входящий в комплект версии Maya Complete, решительно меняет этот подход, предоставляя уникальную возможность интуитивно на носить кистью двух- и трехмерные природные явления непосредственно в области про смотра. Больше не нужно тратить много времени на создание кластеров из отдельных тра винок и моделирование одного или десятка деревьев с самого начала. Это, наверное, про звучит необычно, так как известно, что трехмерная сцена обычно начинается с процесса моделирования; однако в системе Paint Effects традиционные процессы разработки замене ны естественными и интуитивно понятными средствами для отображения природных яв лений в трехмерном пространстве. Кроме того, здесь можно использовать обширную биб лиотеку кистей точно так же, как и в любом редакторе двухмерных изображений. •
Концепция Paint Effects
•
Рисование в системе Paint Effects
•
Рисование на плоском холсте
•
Объемные графические эффекты
•
Система Paint Effects и анимация
•
Концепция туб: учебник розового куста
Концепция Paint Effects Система Paint Effects обеспечивает естественный способ рисования как с помощью мыши, так и чувствительного к нажатию планшета (pressure-sensitive tablet). Набор доступных в Paint Effects кистей, имитирующих разнообразные природные явления и многое другое, позволяет раскрашивать трехмерные объекты. При перенесении эффекта на сцену создается штрих (sTROke) кисти, напоминающий традиционный мазок кисти ху-
656
Глава 17
дожника, использующего аэрограф (air brash), мелок (crayon) или пастель (pastel). Кис ти Paint Effects могут быть также использованы как эмиттеры (источники) эффекта, на пример дождя или деревьев, причем у каждого объекта будет индивидуальный внешний вид и поведение. Кроме того, для имитации естественного движения объекты Paint Effects можно анимировать двумя способами: используя специальные атрибуты и встроенные ди намические возможности Paint Effects. Оба способа предоставляют методы для моделиро вания льющейся воды, трепещущих на ветру растений, снежных бурь, анимации роста по бегов, и это лишь краткий перечень некоторых из возможностей. На сцене объекты Paint Effects представлены кривыми, которые отвечают за положение эффекта в трехмерном пространстве, а при визуализации графический эффект интегрируется в сцену. Объекты Paint Effects — это не настоящие геометрические формы, а эффекты по ствизуализации, встроенные в программное обеспечение Майя (после визуализации они просто добавляются на сцену). Система Paint Effects великолепно интегрирована в Майя, благодаря чему на сцене поддерживается глубина, прозрачность и игра цветов. Зачастую просто трудно поверить, что вся сцена является всего лишь эффектом пост процесса. В этом огромное преимущество системы Paint Effects перед схожим анало гичным программным продуктом. Например, для создания элементов природных яв лений можно использовать другую программу, но тогда для их интеграции в трехмер ную сцену потребуется выполнить одно или два дополнительных действия. Первое заключается в использовании пакета композиции, и при этом необходимо, чтобы глу бину, прозрачность и освещение настроил квалифицированный специалист, чтобы в перспективном представлении они соответствовали аналогичным параметрам рабочей версии сцены. Второе действие — это импорт природных объектов в Майя, которые, кстати сказать, могут превратиться в слишком сложные и громоздкие полигональные поверхности. Система Paint Effects, напротив, полностью интегрирована в Майя, по этому с ней такие сложности не возникнут. Ниже приведен пример использования средств Paint Effects в Maya на трех уровнях представления (display level). На рис. 17.1 показана одна и та же кисть Paint Effects в разных режимах представления (display mode): кривых, сетки и визуализации. Пред ставление визуализации доступно только в панели Paint Effects, которая благодаря тех нологии OpenGL обеспечивает мгновенную визуализацию и качественный просмотр объектов Paint Effects.
Рис. 17.1. Система Paint Effects предоставляет три режима отображения (слева направо): кривые и сетка доступны во всех представлениях, а визуализация с помощью OpenGL доступна только в панели Paint Effects Поскольку объекты Paint Effects не являются настоящими геометрическими форма ми и допускают различные режимы отображения, это позволяет сократить затраты па-
Система Paint Effects
657
мяти на сцены, перегруженные полигональными поверхностями или объектами Paint Effects. Использование представления кривых решает проблему взаимодействия слож ных объектов Paint Effects в перегруженной ими сцене. Кроме того, ограниченная дина мика Paint Effects не полагается на решатели динамики Maya, что устраняет некоторые из неудобств использования динамики и позволяет наблюдать за моделированием дина мического стиля при прокрутке временной шкалы. По сравнению с обычной динамикой это большой шаг вперед, который стал возможен потому, что динамикой Paint Effects управляют выражения. Они определяют естественное поведение и обрабатываются без необходимости кэширования модели. Хотя изменить объект Paint Effects, перемещая вершины, нельзя, его можно преобра зовать в трехмерный объект, который уже можно модифицировать на уровне вершин. После преобразования в трехмерный объект анимация объекта Paint Effects сохраняется и подстраивается под любые изменения узлов или штрихов кисти. Так как эффекты Paint Effects поддерживаются только на уровне программной визуализации, после пре образования в трехмерные объекты их можно визуализировать с помощью любой другой системы визуализации, например mental ray. Система Paint Effects может взаимодейст вовать с новыми системами Toon Shading и Maya Hair. Кроме того, кисти Paint Effects, используемые совместно с Maya Hair, можно визуализировать в системе mental ray. Подробно об использовании Paint Effects вместе с Toon Shading см. в главе 13, "Основы визуализации".
Штрихи
И КИСТИ
Большинство естественных эффектов создается с помощью разнообразных дополни тельных технологий, что приводит в компьютерной графике к определенным проблемам. Эти технологии включают в себя имитацию дождя и огня, а также таких природных объ ектов, как деревья и цветы. Последние обычно называют также L-системами (L-system), которые описывают произвольный рост или ветвление. Например, ствол дерева произвольно переходит в ветки и листья. Система Paint Effects вполне может повто рить эту динамику и моделирование L-системы, используя тубы, исходящие от штрихов, а также разнообразные визуальные эффекты вроде сияния (glow), молний (lightning) и неоновых огней (neon light); все эти эффекты и многие другие опреде лены как кисти и их атрибуты. В основе системы Paint Effects лежит обычный инструмент раскрашивания (кисть). Так же как и в редакторе двухмерных изображений, здесь можно выбрать кисть, а затем рисовать штрихи в области просмотра. Кроме того, в системе Paint Effects все штрихи и кисти названы в соответствии с их видом и свойствами. На рис. 17.2 показаны примеры применения разнообразных кистей, находящиеся в панели Paint Effects. Каждый элемент Paint Effects формируют три первичных элемента: кривая, штрих и кисть. На рис. 17.3 показаны отношения между этими элементами. Элементы c u r v e 4 и sTROkel являются узлами положения, привязанными к узлам формы Maya. Штрих имеет две входящие связи: одна — от узла кривой, передающего штриху "форму", а дру гая — от узла кисти, передающего штриху визуальные свойства. Обратите внимание на то, что узел кисти соединен с узлом t i m e 1 , что позволяет анимировать атрибуты кисти во времени.
Глава 1 7
658
Рис. 17.2. Несколькими штрихами кисти Paint Effects можно создать и крошеч ный город, и нависшие над ним тучи, и льющийся из них дождь
Рис. 7 7.3. Отношения между узлами положения, кисти и штриха элемента Paint Effects, ото браженные в окне гиперграфа
Штрихи Штрихи (sTROke) представляют собой нарисованные линии, подобные художественному штриху, который может быть определен цветом (например, линия от мелка) или как основа для эффектов, вроде дождя или травы. Эти эффекты называются тубами (tube), которые в основном являются кривыми, несколько выступающими за границы штриха, и обладают собственными атрибутами кисти, определяющим их вид при визуализации. Объекты Paint Effects создаются на основании туб, которые "отображают" форму Paint Effects на сцене. Эти тубы определяют положение и размер графических эффектов по первоначальной тубе-штриху. Тубы можно рассматривать как заменители графиче ских эффектов, что позволяет осматривать их вокруг в перспективном представлении.
Система Paint Effects
659
Ведь хотя объекты Paint Effects и являются эффектами постпроцесса, они реагируют на ракурсы и реально присутствуют на сцене. Таким образом, использование негеометриче ских объектов (туб) для представления эффектов Paint Effects обеспечивает существен ное увеличение производительности. Эффекты Paint Effects — это не изображения, накладываемые на заменители с прозрачно стью и текстурой, а скорее самостоятельные полноценные объекты, видимые под любым ракурсом камеры. Штрих неразрывно связан с кривой, которая на трехмерной сцене играет роль перво начальной штриховой "тубы". Следовательно, форму и длину штриха определяет траек тория кривой на сцене. В общем случае штрих можно считать кривой (штрих кисти) с индивидуальными характеристиками толщины, качества представления, видимости и др.
Кисти Кисть (brush), как и следует из ее названия, определяет физические свойства штриха, или, можно сказать, его "внешний вид". Всего в Maya предварительно установлено более чем 400 эффектов кистей. В наборе меню rendering (Визуализация) (клавиша < F 6 > ) вы берите пункт меню Paint Effects => Get Brush (Графические эффекты => Выбрать кисть), что бы открыть окно Visor (Просмотр) с вкладкой Paint Effects (рис. 17.4). В ней находятся папки графических эффектов и их корневой каталог. При выборе любой из папок отображаются уменьшенные изображения доступных кистей. Чтобы лучше рассмотреть кисть, можно уве личить размер окна и прокрутить его аналогично любому плоскому изображению.
Рис. 17.4. Окно Visor позволяет просмотреть и выбрать любую из 400 кистей, установленных в Maya
660
Глава 17
Кисти здесь упомянуты как предварительно установленные специально для того, чтобы подчеркнуть возможность смешивать их, как краски на палитре, чтобы создавать новые, бесконечно разные кисти, которые к тому же можно сохранять. Различие в ис пользовании обычной кисти вроде мелка и кисти эффекта, например трава (grass), за ключается в способе отображения и визуализации штриха. Обычная кисть окрашивает штрих вдоль его траектории (определяемой кривой), тогда как кисть эффекта распро страняет вдоль штриха тубы, сам же штрих цвета не имеет. Кроме того, у каждой кисти есть обширный набор вкладок и атрибутов, предоставляющих огромное количество раз личных эффектов и анимаций. Компания Autodesk предоставляет обширные ресурсы для пополнения коллекции кистей, которые можно найти на Web-сайте компании (www. a u t o d e s k . com). Множест во кистей можно также найти в разделе Maya Paint Effects по адресу www.Highend3D.com. Все новые кисти можно добавить в корневой каталог графиче ских эффектов в окне Visor (Просмотр). Помимо параметров динамической и потоковой анимации, анимированы могут быть прак тически все атрибуты кистей и штрихов. Кроме возможности выбрать любую из множества кистей, каждую из них можно ото бразить в окне Brush Settings (Параметры кисти), показанном на рис. 17.5, как один из шести типов кисти. Типами кисти являются Paint (Кисть), Blur (Размытие), Smear (Смазывание), Erase (Стереть), ThinLine (Тонкая линия) и Mesh (Сетка). Все типы кистей рассматриваются в этой главе. По умолчанию для кистей установлен тип Paint (Кисть), при котором элементы Paint Effects накладываются на тубы. Как правило, этот тип использует ся для создания облаков, дыма, огня, сияния и других подобных эффектов.
Puc. 17.5. Шесть типов кистей, доступных в системе Paint Effects Типы кистей Smear (Смазывание), Blur (Размытие) и Erase (Стереть) позволяют (сюрприз!) размазывать, размывать и стирать объекты в сцене. Например, если нанести штрих перед персонажем на сцене, а затем поменять тип кисти на Smear (Смазывание), то при визуализации на месте штриха персонаж размажется согласно параметрам кисти. Проведите такой эксперимент: нанесите на окружающие объекты несколько штрихов разными кистями (такими, например, как airbrush (аэрограф), plants (растения), water (вода)), а затем установите для кистей разные типы (Smear (Смазывание), Blur (Размытие) и Erase (Стереть)) и обратите внимание на эффекты, полученные при ви зуализации. Продолжайте экспериментировать и после того, как закончите чтение этой главы. Paint Effects — это мощный инструмент, особенно при использовании в анимации. Премии Американской киноакадемии (Academy Award) был удостоен короткометраж-
Система Paint Effects
661
ный фильм "Райан" ( r y a n ) ( w w w . n f b . c a / r y a n / ) , который неплохо было бы посмот реть всем художникам трехмерной графики: интенсивное использование этих типов кис тей позволяет получить то, что Крис Ландрет (Chris Landreth) назвал эффектом "психореализма". Типы кистей ThinLine (Тонкая линия) и Mesh (Сетка) будут подробно описаны далее в этой главе. А пока лишь заметим, что кисть типа ThinLine (Тонкая линия) непосредст венно визуализирует тубы без наложения на них изображений, кисть типа Mesh (Сетка) визуализирует геометрические формы, так же, без наложений. Кисть типа ThinLine (Тонкая линия) обычно используют для изображения волос, в то время как кисть типа Mesh (Сетка) использует множество таких геометрических эффектов, как деревья и рас тения. Кисть типа ThinLine (Тонкая линия) в Майя 8.5 очень часто используется систе мами Maya Hair и Toon Shading. Поскольку для мультипликационных контуров поддер живаются различные типы кистей, заданный по умолчанию тип кисти Paint (Кисть) вполне подходит. Использование кисти типа ThinLine (Тонкая линия) целесообразно для эффектов, которые предназначены для создания тонких штрихов расцветки, таких как карандашные штрихи или волосы. Однако для штрихов, имитирующих облака или пастель, лучше использовать установленный по умолчанию тип кисти Paint (Кисть).
Рисование в системе Paint Effects Систему Paint Effects можно использовать для рисования на плоском холсте или не посредственно на сцене. При рисовании на сцене можно выбрать, что именно предстоит разрисовывать: сетку сцены (это определено по умолчанию), текстуру модели или, воз можно, предстоит нанести на поверхность модели трехмерные элементы Paint Effects, которые затем приспособятся под ее изгибы. Система Paint Effects — это исключительно хорошее средство, позволяющее кистям наследовать преобразования и деформацию объ екта. Например, штрихи Paint Effects, использующиеся в качестве волос (созданных не в системе Maya Hair), привязаны к движению головы. Рисовать в системе Paint Effects можно непосредственно на сцене или с помощью специальной панели Paint Effects, которая предоставляет две рабочие среды — плоский холст и трехмерную сцену. При работе в трехмерной среде отображается текущее пер спективное представление. Хотя здесь вполне можно менять ракурсы камеры, как и в перспективном представлении, рисование в данной системе отличается от традиционно го тем, что позволяет просматривать объекты Paint Effects в визуализированном виде, используя технологию OpenGL. Благодаря этому процесс рисования происходит еще непринужденнее, поскольку позволяет сразу визуализировать конечный результат. Дру гое существенное различие между двумя рабочими средами заключается в том, что па нель системы Paint Effects предназначена исключительно для рисования, т.е. при загруз ке панели системы Paint Effects используется только один инструмент — кисть, и по умолчанию нельзя выполнять другие обычные задачи (например, выделять объекты). Когда активизирована панель системы Paint Effects, инструмент Paint Effects по умолчанию за гружается в панель инструментов и становится доступным для использования. При переклю чении в перспективное представление инструмент Paint Effects остается активизированным. Вначале рисование с помощью панели Paint Effects может показаться несколько за труднительным, поэтому давайте попробуем в нем разобраться. Создайте примитив куба, чтобы определить ориентацию сцены, а затем откройте плавающую панель системы
Глава 17
662
Paint Effects, выбрав пункт меню W i n d o w => Paint Effects (Окно => Графические эффекты). Удостоверьтесь, что в меню Paint (Кисть) панели Paint Effects установлен режим Paint Scene (Рисовать на сцене), как показано на рис. 17.6. Обратите внимание на то, что при изменении ракурсов камеры в перспективном представлении панель системы Paint Effects автоматически обновляет изображение.
Рис. 17.6. Панель инструментов Paint Effects
Чтобы нанести штрих кистью, заданной по умолчанию, нажмите кнопку мыши и пе реместите ее указатель по панели Paint Effects. Для моментального переключения из ре жима рисования в обычное перспективное представление (для выделения объектов) на жмите клавишу . Теперь можно выделить куб. Как правило, удобнее работать без плавающей панели, просто заменяя перспективное представление панелью системы Paint Effects. Для этого в любом представлении выберите пункт меню Panels => Panel => Paint Effects (Панели => Панель => Графические эффекты). В конечном счете процесс раз работки проходит быстрее, если для переключения между панелями использовать кла вишу <8>. Панель системы Paint Effects предоставляет несколько способов управления пара метрами; один из них — с помощью глобальных параметров. В наборе меню rendering (Визуализация), доступном также при нажатии клавиши , выберите пункт меню Paint Effects => Paint Effects Globals (Графические эффекты => Глобальные параметры
графических эффектов), чтобы открыть окно Paint Effects Globals (Глобальные пара метры графических эффектов), в котором можно настроить глобальные параметры обеих рабочих сред (холста и сцены). Предназначение большинства этих параметров очевидно. Все эти настройки можно найти на панели инструментов Paint Effects или в атрибутах кисти. Некоторые из этих параметров будут рассмотрены далее в этой главе.
Панель инструментов и основы рисования Чтобы открыть панель системы Paint Effects, нажмите клавишу <8>. На рис. 17.6 по казана панель инструментов Paint Effects, находящаяся в верхней части окна. Панель инструментов состоит из строки меню и панели, предоставляющих доступ к наиболее популярным инструментам. При наведении курсора на пиктограмму, появляется всплы вающая подсказка. При работе с системой Paint Effects пиктограммы изменяются в зави симости от рабочей среды (сцены или холста) и активной кисти. Следовательно, для не которых кистей появляются дополнительные пиктограммы. Меню Paint (Кисть) панели позволяет переключаться между рабочими средами Scene (Сцена) и Canvas (Холст). Холст используется для рисования текстур, а сцена — для рисования непосредственно на сцене. Чтобы увидеть разницу, попробуйте переключаться между ними. Приведенная ниже последовательность действий позволит продемонстрировать способы рисования эффектов с помощью панели системы Paint Effects. 1. При установленной рабочей среде Scene (Сцена) выберите пункт меню Brush => Get Brush (Кисть => Выбрать кисть), чтобы открыть окно Visor (Просмотр) и выбрать в папке a i r b r u s h кисть a i r T r a n s p r e d . m e l .
Система Paint Effects 2.
663
Нарисуйте в панели штрих Paint Effects. Чтобы быстро изменить толщину штриха, переместите указатель мыши в области просмотра, нажав кнопку мыши и клавишу < В > . При этом размер кисти изменяется, как и у инструмента Artisan (Специальный). Обратите внимание на каркасное сферическое представление кисти, изменяющееся в масштабе. Чтобы откорректировать масштаб кисти другим спосо бом, откройте в панели инструментов окно Template Brush (Шаблон кисти) или вы берите пункт меню Brush => Edit Template Brush (Кисть => Редактировать шаблон кис ти). Затем измените значение параметра Global Scale (Глобальный масштаб), как показано на рис. 17.7.
Puc. 17.7. Раздел STROke Settings, позволяющий задать параметры кисти Окно Template Brush Settings (Параметры шаблона кисти) предоставляет все необходимые элементы управления для настройки параметров кисти. В частности, в нем можно задать па раметры предварительной прорисовки и постпрорисовки существующих кистей (трехмерных штрихов). 3. После увеличения толщины штриха нарисуйте еще один штрих, а затем измените его представление, выбрав в панели инструментов Paint Effects пункт STROke r e f r e s h => rendered (Обновление штриха => Визуализированный). В области просмотра должна появиться прозрачная красная линия. Изогните ее в панели системы Paint Effects и обратите внимание, как быстро область просмотра переключается в интерактивный режим, обеспечивая отображение сцены. 4. В панели системы Paint Effects выберите пункт меню STROke r e f r e s h => Wireframe (Обновление штриха => Каркас), включив таким образом каркасный режим. Каркас ный режим также считается интерактивным режимом отображения, который систе ма Paint Effects использует для представления в других областях просмотра, вне па нели системы Paint Effects. Если же режим отображения панели Paint Effects не из менился на каркасный, то это значит, что область просмотра OpenGL требует небольшого изменения, например смены ракурса. Кроме того, для управления тони рованием геометрических форм сцены панель Paint Effects предоставляет отдельное меню Object Shading (Тонирование объекта); таким образом, можно отображать трехмерные модели в виде каркасов, любуясь визуализированными штрихами.
664
Глава 17
Управление штрихами В перспективном представлении штрих наносится на сцене по перспективной сетке, согласно позиции кисти. При перемещении кисти вверх штрих будет нарисован на сцене вглубь (обычно по оси Z). Проверить это можно с помощью инструмента Paint Effects, который масштабирует размер кисти относительно ее позиции на сцене (сверху вниз). Чтобы увидеть расположение штриха на сетке сцены, осмотрите его в перспективном представлении под разными углами. Атрибуты инструмента Paint Effects доступны во вкладке STROke Settings (Параметры штриха), представленной на рис. 17.7, достаточно выбрать пункт меню Brush => Tool Settings (Кисть => Параметры инструмента). Когда па раметр Paint At Depth (Рисовать по глубине) заблокирован (состояние по умолчанию), результат нанесения штриха на сетке будет таким, как было описано до сих пор. Таким образом, при нанесении штриха сверху вниз он фактически располагается из глубины к экрану. Когда параметр Paint At Depth (Рисовать по глубине) разблокирован, это можно сразу заметить, поскольку маркер кисти из сферического превращается в круг, который также можно масштабировать в зависимости от его положения в представлении. В этом режиме первый щелчок внутри вида инициализирует глубину штриха, т.е. глубина опре деляет "сектор", выбранный для закрашивания. Указатель выбирает расположение по глубине так, чтобы обеспечить возможность закрашивания по глубине необходимого "сектора" на воображаемой сетке. Например, если сцена ориентирована так, что ось Z указывает вперед, а ось Y — вверх, то указатель выберет сектор глубины по оси Z и будет закрашивать в плоскости XY, а не по сетке, где нанесен штрих. При использовании чувствительного к нажиму планшета связанные с нажимом атрибуты предоставляют еще один способ управления штрихом. Они позволяют настроить планшет так, чтобы нажим влиял на необходимые параметры кисти, а также задать минимум и мак симум диапазона воздействия. Параметр Draw As Mesh (Рисунок как сетка) контролирует интерактивное представ ление штриха, позволяя выбрать, будет ли штрих отображаться как кривая или как сетка. Представление в виде сетки обеспечивает лучший вид в перспективном представлении того, что нарисовано инструментом Paint Effects. Создайте новую сцену и выберите кисть d a h l i a r e d . m e l (под кистью цветов). Включите параметр Draw As Mesh (Рисунок как сетка) и отключите параметр Paint At Depth (Рисовать по глубине), а затем нанесите штрих на панели Paint Effects. Чтобы увидеть различие, сбросьте флажок Draw As Mesh (Рисунок как сетка) и нанесите другой штрих. Чтобы установить для панели Paint Effects интерактивный режим отображения, задайте для параметра STROke r e f r e s h (Обновление штриха) значение Wireframe (Каркас). Для переключения на перспектив ное представление нажмите клавишу <8>. Оба штриха окажутся в том же интерактив ном представлении, причем каждый из них будет поддерживать собственные параметры отображения, т.е. один будет показан как сетка, а другой — как кривая (рис. 17.8). Е С Л И растения выглядят темными, отключите параметр real Lights (Реалистичные источники све та). Для этого выберите пункт меню Paint Effects => Paint Effects Globals => Scene (Графические эффекты => Глобальные параметры графических эффектов => Сцена).
Выберите в перспективном представлении сеточный штрих (mesh sTROke) и отобра зите в редакторе атрибутов вкладку sTROkeShape (рис. 17.9). Эта вкладка, в отличие от вкладки STROke Settings (Параметры штриха), позволяет контролировать существующие
Система Paint Effects
665
штрихи, используя те же атрибуты. Таким образом, эту вкладку можно использовать для настройки уже нанесенного штриха.
Рис. 17.8. Режимы отображения как кривой и как сет ки в перспективном представлении. Сетка обеспечи вает лучший внешний вид графических эффектов, но замедляет интерактивное представление сцены Параметр Display Quality (Качество представления) вполне очевиден, чтобы увидеть ре зультат изменения, переместите его ползунок. Переключатель Draw As Mesh (Рисунок как сетка) обеспечивает контроль над представлением каждого штриха. Этот атрибут применим к любой кисти, будь то традиционная кисть' или кисть Paint Effects. Не менее полезными являются параметры Min Clip (Минимум ограничения) и Max Clip (Максимум ограничения), доступные на вкладке End Bounds (Конечные пределы). Это позволяет ограничить объем туб, испускаемых штрихом. 'Из нанесенного штриха должно вырастать несколько цветов. Чтобы увидеть, как вырастают цветы из штриха, а также со кратить представление кривой, уменьшите значение параметра Max Clip (Максимум ог раничения). Ограничение минимума и максимума полезно при работе с большим количеством туб, ис пускаемых штрихом (например, нескольких деревьев). Необходимые значения можно на строить при отображении одного дерева, а когда будет получен удовлетворительный внешний вид, отобразить остальные деревья. На настоящий момент читатель получил хорошее представление о том, как создавать трехмерные штрихи Paint Effects в перспективном представлении и на панели Paint Effects. При рисовании на трехмерной сцене каждый штрих имеет в редакторе атрибутов четыре узла ( t r a n s f o r m (преобразование), sTROke (штрих), b r u s h (кисть) и t i m e (время)), ко торые рассматривались ранее в разделе "Штрихи и кисти". Окно Template Brush Settings
666
Глава 17
(Параметры шаблона кисти) предоставляют те же параметры текущего штриха, что и узел b r u s h (как в случае с цветами). Параметры кисти цветов в окне редактора атрибутов обо значены как d a h l i a r e d l , здесь можно просмотреть все атрибуты кисти.
Рис. 17.9. Параметры атрибутов созданного и выделенного штриха можно использовать для включения и отключения представления в виде сетки, а также для установки некоторых дру гих параметров внешнего вида штриха А теперь исследуем основные возможности кисти, рисуя на плоском холсте в панели Paint Effects.
Рисование на плоском холсте Подобно всем редакторам плоских изображений, у Paint Effects в Maya есть свои дос тоинства и недостатки. К достоинствам относится способность применять текстуры, од новременно просматривая результат в трехмерном представлении, создавать плиточные текстуры и использовать множество разнообразных кистей расцветки, которые обеспе чивают эффект объема на плоском изображении. Однако нельзя отрицать то, что стан дартные редакторы изображений все же обеспечивают больше возможностей: иерархиче ское представление (слои), смешение режимов, применение масок, коррекция цвета, фильтры и многое другое. С художественной точки зрения работа в Paint Effects очень похожа на рисование на настоящем холсте: можно размазывать, размывать и стирать штрихи кисти, а также смешивать цвета и менять типы кистей. С данной точки зрения
Система Paint Effects
667
это мощный, интуитивно понятный инструмент, прекрасно интегрированный в Maya. Другим большим преимуществом является способность наносить текстуры на объекты сцены в режиме реального времени, что существенно облегчает традиционный строго полигональный подход, присущий большинству редакторов трехмерных изображений от стороннего производителя. После выбора в окне Paint Effects пункта меню Paint => Paint Canvas (Кисть => Рисовать на холсте) на панели инструментов появится несколько элементов, которые обычно ис пользуются при рисовании на холсте. Меню панели инструментов Canvas (Холст) пре доставляет стандартные элементы управления, включая установку размера и цвета изо бражения, а также управление эффектами оболочки, которые используются для созда ния "бесшовных" текстур. Чтобы отменить последнее действие, выберите пункт меню Canvas => Canvas Undo (Холст => Отменить); кстати, это единственный способ отменить действие в среде плоского холста. Изменение масштаба изображения и перемещение по нему на холсте осуществляются так же, как и в других ортогональных представлениях. Для того чтобы создать новую текстуру, выберите пункт меню Canvas => New Image (Холст => Новое изображение); в открывшемся окне New Texture Paint Effects (Новая текстура Paint Effects) выберите разрешение и цвет фона, а затем установите необходи мые параметры. => Выбор кисти осуществляется щелчком на пиктограмме Get Brush (Выбрать кисть). Чтобы очистить холст, щелкните на первой слева от панели инструментов пиктограмме Clear Canvas (Очистить холст). Для того чтобы сохранить холст как файл изображения, выберите пункт меню Canvas => Save As (Холст => Сохранить как); кстати, вместе с изо бражением можно экспортировать канал прозрачности. Канал глубины также можно со хранить как файл изображения (каналы RGB без глубины по оси Z), выбрав пункт меню Paint => Save Depth As Grayscale (Кисть => Сохранить глубину как полутона). Обычно эти изображения Paint Effects сохраняются в папке изображений проекта.
Использование кистей в двухмерном пространстве В редакторе атрибутов можно корректировать все значения параметров настройки кисти как для шаблона, так для существующей кисти. При рисовании в двухмерном про странстве параметры настройки нужно обязательно применить к кисти шаблона, так как штрихи на холсте не создают узлов кисти, которые можно было бы позже откорректиро вать. Давайте с помощью рисования на холсте исследуем часть возможностей кисти; об ратите внимание, что в трехмерном пространстве кисти рисуют точно так же. Откройте окно параметров кисти графических эффектов, выбрав пункт меню Paint Effects' => Template Brush Settings (Графические эффекты => Параметры шаблона кисти) или нажав комбинацию клавиш , и оставьте его открытым. На рис. 17.10 показаны пара метры настройки кисти в редакторе атрибутов.
Типы кистей Откройте окно Visor (Просмотр), выберите кисть, подберите ее размер (нажав кла вишу < В > ) и нанесите на холст несколько штрихов. Аналогичные действия можно вы полнить и с помощью чувствительного к нажиму планшета. После нанесения штрихов выберите традиционную кисть (мелок, аэрограф, пастель) и измените тип кисти в окне Template Brush Settings (Параметры шаблона кисти) на Smear (Смазывание). Рисова ние по предыдущим штрихам продемонстрирует смазывание расцветки. Типы кистей
668
Глава 17
ThinLine (Тонкая линия) и Mesh (Сетка) предназначены только для трехмерного про странства и будут рассмотрены далее в этой главе.
Рис. 17.10. Применение вкладки Brush Settings для изменения характеристик кисти перед при менением штриха
Раздел Channels Чтобы определить, какие каналы будут использоваться для рисования на холсте, а какие визуализироваться при рисовании на сцене, используйте параметры вкладки Channels (Каналы) кисти. Отключите параметр Modify Alpha (Изменить прозрачность) и нанесите еще один штрих на холст. Затем отобразите канал прозрачности, щелкнув на панели инструментов Paint Effects на пиктограмме Display Alpha Channel (Отображение канала прозрачности). Теперь станет заметно, что последний штрих непрозрачен, в отли чие от предыдущих штрихов, у которых есть каналы прозрачности.
669
Система Paint Effects
Рисуя на холсте, каждая кисть одновременно рисует штрих и в канал глубины, с по мощью которого достигается лучшая интеграция кисти. Обычно из двух штрихов нари сованный последним находится над первым. Когда параметр Depth (Глубина) установ лен (по умолчанию), штрих рисуется вместе с каналом глубины. Параметр Modify Depth (Изменить глубину) позволяет взаимодействовать значениям глубин разных штрихов. На рис. 17.11 показаны разноцветные макаронины, нарисованные двумя штрихами, с исполь зованием параметров Depth (Глубина) и Modify Depth (Изменить глубину). Обратите вни мание, как взаимодействуют разные макаронины в зависимости от значений их глубины. На рис. 17.12 показаны каналы глубины того изображения, которые экспортировались с помощью меню Paint (Кисть). Таким образом глубина изображается на плоском холсте.
Рис. 17.11. Штрихи, нарисованные на холсте с установленным параметром Depth. Обратите внимание на взаимодействие штрихов в зовисимости от их значений
глубины
Рис. 17.12. Канал глубины, который был создан на рис. 17.11. На этом изображении разница между макаронинами, находящимися ближе к камере (белыми), и теми, которые находятся дальше (пос тепенно темнеющими), вполне очевидна
Раздел Brush Profile В разделе Brush Profile (Профиль кисти) можно установить размер и общие режимы кисти. Очистите холст и выберите в окне Visor (Просмотр) пункт меню Brush => Get Brush => Grasses (Кисть => Выбрать кисть => Трава). Выберите кисть a s T R O t u r f . m e l и нанесите ей штрих на холсте, затем увеличьте значение Brush W i d t h (Толщина кисти) и нанесите еще один штрих. Этот прием масштабирует область воздействия каждой кис ти, в отличие от параметра Global Scale (Глобальный масштаб), который задает масштаб воздействия кисти. Иначе говоря, для нарисованной травы параметр Global Scale (Глобальный масштаб) увеличит размер каждой травинки, а параметр Brush W i d t h (Толщина кисти) обеспечит большую площадь покрытия на сцене при том же масштабе. Теперь очистите холст и выберите заданную по умолчанию кисть расцветки из папки
670
Глава 17
a i r b r u s h . Нарисуйте линию на холсте и измените значение параметра Softness (Мягкость), который сглаживает границы эффекта кисти. Теоретически сглаживание можно применять к любым кистям. Сбросьте параметры настройки кисти, выбрав пункт меню Brush => r e s e t Template Brush (Кисть => Восстановить шаблон кисти). Как упоминалось выше, тип кисти Paint (Кисть) накладывает (штампует) изображе ния на штрих, в отличие от других типов кисти. Выберите кисть c u m u l u s . m e l из папки c l o u d s и нарисуйте штрих. Теперь измените значение параметра Stamp Density (Плотность штамповки) на 0.1 и нарисуйте еще один штрих (как видите, появилось только одно изображение). Измените значение параметра Stamp Density (Плотность штамповки) на 1 и нарисуйте еще один штрих. Обратите внимание, что изображения "проштампованы" на основании этого значения, т.е. чем оно выше, тем плотнее штамповка. Для тех типов кисти, в которых не используют штамповку изображений (например, ThinLine (Тонкая линия)), параметр Stamp Density (Плотность штамповки) заблокирован.
Тубы Штрихи Paint Effects можно классифицировать по принципу, является ли штрих эмит тером туб (tube) или не является. Чтобы сделать штрих источником туб, щелкните на пик тограмме Make Tubes (Создавать тубы) панели инструментов или выберите пункт меню Paint Effects => >Template Brush Settings => Tubes (Графические эффекты => Параметры шаб
лона кисти => Тубы) и установите флажок Tubes (Тубы) (рис. 17.13). Эти действия по зволяют сделать эмиттером туб как двухмерный, так и трехмерный штрих. Еще один важный параметр находится ниже параметра Tubes (Тубы) — это Tube Completion (Завершение туб). Параметр T u b e Completion (Завершение туб) определяет, будут ли достраиваться незавершенные тубы после прекращения рисования штриха. Ниже при ведено небольшое упражнение для исследования параметра T u b e Completion (Завершение туб). Следующие вкладки, например Creation (Создание), предоставля ют контроль над некоторыми характеристиками тубы, такими как способ прорисовки тубы на холсте или сцене.
Puc. 17.13. Раздел Tubes— основа сис темы Paint Effects, позволяющая созда вать штрихи и являющаяся эмиттера ми эффектов Выберите любой обычный аэрограф в окне Visor (Просмотр) и разрешите создание туб. Обратите внимание на то, что в панели инструментов Paint Effects сразу же появи лись дополнительные пиктограммы. Эти пиктограммы, включая T u b e s Per Step (Туб на шаг), или TS (Tubes Per Step), также находятся во вкладке Paint Effects => Template Brush Settings => Tubes => Creation (Графические эффекты => Параметры шаблона кисти => Тубы =>
Система Paint Effects
671
Создание). Параметр Tubes Per Step (Туб на шаг) определяет количество испускаемых штрихом туб. Параметр Tubes Per Step (Туб на шаг) — это не общее количество туб, ко торые создаются вдоль штриха, скорее это множитель, определяющий количество туб для некоторого расстояния, которое просчитывается по точкам штриха скрытно от поль зователя. Само собой разумеется, что увеличение TS существенно увеличивает количе ство туб, создаваемых штрихом. Нарисуйте штрих при разрешенной установке туб. В данном случае штрих является не столько штрихом кисти расцветки, сколько эмиттером расцветки кисти (т.е. туб, "растущих" из штриха в произвольных направлениях). Чтобы увеличить количество туб, испускаемых штрихом, передвиньте в панели инструментов ползунок TS вправо и нари суйте новый штрих. Чтобы лучше понять назначение параметра Tube Completion (Завершение туб), вы полните следующие действия. Выберите в панели пункт меню Paint => Paint Scene (Кисть => Рисовать на сцене) (при запросе не сохраняйте) и выберите в окне Visor (Просмотр) пункт меню Brush Trees => treeBareBrown.mel. Наносите штрих до тех пор, пока не станет расти третье дерево, а затем отпустите кнопку мыши (или отпустите перо чувствительного к нажиму планшета). Обратите внимание, что дерево дорисовывается автоматически. Теперь понятно, что при рисовании с использованием возможности Tube Completion (Завершение туб) (значение по умолчанию) система Paint Effects автомати чески завершает создание каждого эффекта. Отключите параметр Tube Completion (Завершение туб) в окне Template Brush Settings (Параметры шаблона кисти), а затем нанесите еще один штрих, аналогичный предыдущему. Теперь, после прекращения рисования, система Paint Effects тоже пере стает создавать тубы. В основном все эффекты, для которых штрих служит эмиттером, создаются с небольшим запаздыванием, особенно при рисовании в трехмерном про странстве. Когда параметр Tube Completion (Завершение туб) заблокирован, эффекты Paint Effects у конца штриха сужаются, завершая таким образом свой "рост". Переклю читесь в перспективное представление, нажав клавишу <8>, и выделите штрих. В редак торе атрибутов кисти раскройте вкладку Tubes (Тубы) и проведите эксперименты при включенном и отключенном параметре Tube Completion (Завершение туб).
Дополнительные параметры настройки плоских кистей К настоящему времени читатели получили достаточно теоретических знаний и прак тических навыков для создания плоских и объемных графических эффектов. В следую щих разделах рассматриваются дополнительные параметры управления поведением кисти, включая контроль цвета и смешение кистей. Кроме того, будет описано создание плиточных текстур для трехмерных поверхностей и нанесение их на поверхности. Способность рисовать непосредственно на поверхностях — чрезвычайно мощное сред ство, особенно для создания текстур, предоставляющих маски процедурных тонеров. Другими словами, используя графические эффекты, можно непосредственно закра сить белый цвет поверхности черными масками и экспортировать их как изображения, которые используются для наложения маски в сети тонирования, например при управлении прозрачностью поверхности. Это одно их многих преимуществ, предос тавляемых в комбинации со способностью наносить текстуры непосредственно на по верхности, отличающих Майя от большинства редакторов трехмерных изображений стороннего производителя.
Глава 17
672
Цвет, прозрачность и накал Создайте новую сцену и перейдите в рабочую среду холста. Здесь в окне Template Brush Settings (Параметры шаблона кисти) вкладки Shading (Тонирование) или на па нели инструментов Paint Effects для каждого штриха можно установить значения цвета, прозрачности и накала. В трехмерном пространстве (на сцене) для существующего штриха эти значения можно установить во вкладке Shading (Тонирование). Для опреде ления цвета и прозрачности используйте ползунки С и Т на панели инструментов. При использовании туб ползунки С и Т определяют ее базовые значения, а ползунки С2 и Т2 задают цвет и прозрачность. Эти дополнительные параметры доступны только при уста новленном пункте меню Tubes (Тубы). Чтобы найти эти параметры, выберите пункт ме ню Shading => >Tube Shading (Тонирование => Тонирование туб). Некоторые из этих пара метров позволяют случайным образом задавать значения оттенка, насыщенности и нака ла для туб. Опробуйте параметры кисти noodles в действии на примере новой сцены.
Смешение кистей Смешение кистей очень похоже на смешивание красок, к которому добавлена воз можность смешивания отдельных кистей Paint Effects. 1. Выберите в папке plants кисть vineLeafyThick.mel и нарисуйте штрих. 2.
Щелчком правой кнопкой мыши выберите в папке flowersMesh кисть tigerBud.mel и убедитесь, что появились па раметры смешения (рис, 17.14).
3.
Выберите пятидесятипроцентную кисть Blend Brush (Кисть смешения) и нарисуйте штрих (рис. 17.15). Только что на побегах виноградной лозы распустились тигровые лилии. Выглядит эффектно! Точно так же можно использовать кисти в трехмерном пространстве.
Рис. 17.14. Смешение кисКисть смешения (Blend Brush) смешивает и тонер, и форму. тей подобно палитре реЧтобы смешивать только тонеры, выберите кисть Blend альных красок, предоставShading (Смешение тонеров). Для трансформации формы вы- ляет практически неограберите кисть Blend Shape (Плавная модификация), при этом ниченные творческие возисходное тонирование не изменяется. Например, выделите можности кисть daffodil.mel и выберите стопроцентное смешение то неров для кисти rosered.mel. В результате появятся красные нарциссы. Работа в до полнительном окне параметров сделает процесс смешения кистей более понятной. Что бы открыть окно Preset Blending (Предустановленное смешение), выберите пункт меню Paint Effects => Preset Blending (Графические эффекты => Предустановленное смешение). В этом окне любая выбранная кисть смешивается согласно текущим параметрам. Опро буйте эти параметры настройки, смешайте больше двух кистей и научитесь использовать эту столь мощную возможность системы Paint Effects. Установив для обоих параметров, Shading (Тонирование) и Shape (Форма) значение 100%, в окне Preset Blending (Предустановленное смешение) можно также выбрать новую кисть. Сохранить созданную кисть совсем не сложно. Для этого выберите пункт меню Paint Effects => Save Brush Preset (Графические эффекты => Сохранить предустановленные на стройки кисти). В результате откроется окно Save Brush Preset (Сохранить предуста-
Система Paint Effects
673
новленные настройки кисти) (рис. 17.16), содержащее все параметры текущей кисти. Введите название кисти и подпись (текст, отображаемый под пиктограммой на панели), а также задайте пиктограмму. Для этого в открытой панели Paint Effects щелкните на кнопке Grab Icon (Захват пиктограммы) и выделите ту часть штриха, которая будет ис пользоваться в качестве пиктограммы для кисти. Укажите, где сохранить новую кисть: в одной из папок окна Visor (Просмотр) системы Paint Effects или на панели (в результате пиктограмма кисти будет добавлена на панель Paint Effects).
Рис. 17.15. Виноградная лоза цветет тигровыми лилиями — плод фантазии, с легкостью претворенный в жизнь смешением кистей
Puc. 17.16. При сохранении новой кисти для нее можно выбрать пиктограмму и расположить непосредствен но на панели Paint Effects
674
Глава 17
Создание плиточных текстур При рисовании в двухмерном пространстве холст можно повернуть горизонтально или вертикально (по направлению U или V), облегчив таким образом создание плиточ ной текстуры (tileable texture). Чтобы проверить это, щелкните на панели инструментов на пиктограмме с двумя стрелками, W r a p U (Повернуть по U) и W r a p V (Повернуть по V), или выберите пункт меню Canvas => W r a p (Холст => Повернуть) и укажите одно из двух направлений. На рис. 17.17 показано изображение, нарисованное с использованием воз можностей поворота и многократного дублирования в редакторе изображений. Чтобы сдвинуть изображение так, чтобы увидеть границы плитки, выберите пункт меню Canvas => r o l l => 5 0 % HoriZontal (Холст => Ряд => Сдвиг на 50% по горизонтали). При этом изображение сдвигается по горизонтали ровно настолько, чтобы стал виден шов.
Рис. 17.17. Плиточные текстуры создаются с использованием поворотов. Обратите внимание на то, что здесь просто многократно повторяется левая верхняя плитка
Создание и нанесение текстур на объекты Существуют два способа нанесения текстуры на объекты и ее редактирования: созда ние текстуры на холсте и непосредственное рисование на объекте. Установив компонов ку панелей из перспективного представления и расположенной рядом панели Paint Effects (в режиме холста), выполните следующее. 1.
Создайте сферу NURBS и в наборе меню render (Визуализация) (клавиша ) выберите пункт Texturing => 3D Paint Tool • (Текстурирование => Трехмерный инст румент расцветки • ) . Во вкладке File Textures (Файловые текстуры) выберите ат рибут Color (Цвет), расположенный под Attribute То Paint (Атрибуты расцветки).
Система Paint Effects
675
Чтобы открыть окно, в котором можно установить разрешение файловой текстуры, ее формат и другие параметры, щелкните на Assign/Edit Textures (Применить/ Редактировать текстуру). Щелкните еще раз на Assign/Edit Textures (Применить/ Редактировать текстуру). Теперь каналу цвета сферы присвоен новый файл тек стуры. Если текстура уже была применена, нужно только указать канал, в кото ром она будет использоваться. При выборе канала к нему применяются штрихи расцветки, определяющие цвет, добавляющийся в файл текстуры этого канала. В используемом тонере доступны различные цветовые каналы, включая каналы цвета, прозрачности, цвета блика, цвета отражения и другие, к которым можно применить файл текстуры. 2. Разрешив во вкладке B r u s h (Кисть) применение кистей Paint Effects, нарисуйте текстуру в перспективном представлении, используя кисть Paint Effects. Затем щелкните на расположенной слева пиктограмме Last B r u s h (Последняя кисть) или на самой правой пиктограмме Get B r u s h (Выбрать кисть). Две пиктограммы, расположенные справа, позволяют редактировать параметры кисти Paint Effects точно так же, как при выборе кисти из окна V i s o r (Просмотр), т.е. используя те же инструменты, что и в панели Paint Effects. Щелкните на пиктограмме Get Brush (Выбрать кисть), выберите кисть p l a n t и раскрасьте ей сферу. Чтобы со хранить файл текстуры в папке 3 D P a i n t T e x t u r e s проекта, выберите во вклад ке File T e x t u r e s (Файловые текстуры) пункт меню Save T e x t u r e s (Сохранить текстуру). (Сцену сохраните заранее.) 3. Для редактирования созданной текстуры задействуем наконец холст. В панели Paint Effects (в режиме холста) выберите пункт меню Canvas => Open Image (Холст => Открыть изображение), перейдите в папку 3DPaintTextures и загрузите только что сохраненное изображение. (Загрузить можно любое изображение, независимо от использованного трехмерного инструмента текстурирования.) Примените какойнибудь цвет к изображению на холсте. 4.
Чтобы отобразить изменения, выберите в меню панели пункт Canvas => Auto Save (Холст => Автосохранение), в результате изображение будет сохраняться после каж дого штриха.
Трехмерные графические эффекты Узнав многое о рисовании в трехмерном пространстве, читатели наверняка уже по няли, что разница между рисованием на холсте и трехмерной сцене заключается в нали чии большего количества параметров Paint Effects во втором случае. В следующих раз делах рассмотрим параметры кисти, доступные в редакторе атрибутов и главном меню Paint Effects (рис. 17.18). Работать в панели Paint Effects имеет смысл только тогда, когда результат визуализации необходимо просматривать сразу; в противном случае для лучшей производительности вполне можно использовать перспективное представление. Для переключения между представлениями нажмите клавишу < 8 >. Не забывайте, что во вкладке STROke Settings (Параметры штриха) можно задать представление объектов Paint Effects как в виде сетки, так и в виде кривых.
676
Глава 17
Рис. 17.18. Главное меню сис темы Paint Effects, доступ ное в наборе меню rendering
Рисование на геометрических объектах Система Paint Effects позволяет наносить трехмерные эффекты непосредственно на поверхность геометрических объектов. На новой сцене создайте сферу NURBS и немно го увеличьте ее. Чтобы разрешить рисование непосредственно на поверхности сферы, в наборе меню rendering (Визуализация) (клавиша < F 6 > ) выберите пункт Paint Effects => Make Paintable (Графические эффекты => Разрешить рисование). Откройте окно Visor (Просмотр) и выберите из папки Feathers кисть downred.mel; нарисуйте ею несколь ко штрихов на поверхности сферы. Теперь штрихи повторяют все изгибы поверхности сферы. Так можно быстро и очень просто нарисовать траву и прочую растительность, за полнив ландшафт естественными элементами. Однако при деформации или движении объектов штрихи, нарисованные на их по верхностях, остаются неподвижными. Деформируем сферу, применив к ней деформатор Lattice (Решетка), доступный в меню Create Deformers (Создать деформаторы) набора меню Animation (Анимация). Обратите внимание на то, что деформация затронула и штрихи. Если отобразить параметры инструмента Paint Effects и установить параметр Paint At Depth (Рисовать в глубине), то первая выбранная на поверхности точка опреде лит сектор глубины для рисования. Теперь кисть будет рисовать в заданном секторе. Система Paint Effects прекрасно подходит для моделирования волос, например бакенбард, повторяющих контуры лица. К тому же система Paint Effects, в отличие от модуля Hair, по ставляется в составе версии Maya Complete.
Кисть типа ThinLine Кисть ThinLine (Тонкая линия) — это альтернативный тип кисти для визуализации эффектов, требующих большого количества туб, как правило, без существенного объема (например, для волос). Суть этого типа кисти заключается в том, что визуализируются непосредственно тубы без наложения на них изображений. Для кисти типа ThinLine
Система Paint Effects
677
(Тонкая линия) можно использовать дополнительные параметры мультилинейности (рис. 17.19), с помощью которых можно значительно увеличить количество "волос", ок ружающих одиночную тубу, и которые визуализируется почти в 100 раз быстрее кисти типа Paint (Кисть). Имейте в виду, что кисти типа ThinLine (Тонкая линия) превосходят другие типы кистей при визуализации высококачественных линий, но не годятся для объемных объектов, таких как деревья. Кисти ThinLine (Тонкая линия) незаменимы для визуализации штрихов Paint Effects в системах Maya Hair и Toon Shading. Кстати, при использовании кистей типа ThinLine (Тонкая линия) для мультипликационных конту ров можно добиться действительно потрясающих эффектов.
Puc. 17.19. Параметры кисти типа ThinLine в редакторе атрибутов для выбранного штри ха. Эти параметры используются для управ, пения ростом вспомогательных труб вдоль каж дой исходной тубы. Такая кисть прекрасно под ходит для создания волос в системах Paint Effects, Maya Hair и Toon Shading Давайте разберемся, как создать штрих волос. В следующем разделе будет рассмат риваться использование этой кисти совместно с другими штрихами уже для наращива ния волос на голову. 1.
Откройте файл HairOl.mb с прилагаемого CD. Выделите модель головы, а затем выберите пункт меню Paint Effects => Make Paintable (Графические эффекты => Разрешить рисование). Перейдите к панели Paint Effects и в окне Visor (Просмотр) выберите кисть волос из папки hair. Нарисуйте штрих на поверхности головы.
Forward Twist (Кручение прямо) Раздел Twist (Кручение) в окне Paint Effects Brush Settings (Параметры кисти графических эффектов) обеспечивает дополнительные возможности для управления представлением Paint Effects, которые могут оптимизировать производительность сцены. Чтобы обеспечить работу этих параметров, выберите пункт меню Profile => Flatness 1 and 2 (Профиль кисти => Плоскостность 1 и 2), при этом сглаживаются вершины и основания туб. Откройте файл t w i s t . m b с прилагаемого CD и выделите дерево. Установите для параметров Profile => Flatness 1 and 2 (Профиль кисти => Плоскостность 1 и 2) значением 2. Обратите внимание, дерево потеряло объем, преобразовавшись в плоскую фигуру. С точки зрения производи тельности меньшее количество многоугольников вычисляется легче, а значит, налицо явное преимущество. Однако, если посмотреть на дерево под другим ракурсом, оно будет пло-
Глава 17
678
ским, как нарисованное на листе бумаги (вроде плана геометрической поверхности). Это обычный прием: в трехмерную сцену прямо перед камерой вставляются плоские карты изображений (например, деревья или людей). При этом их плоские стороны всегда неви димы при визуализации. Эту технику можно применить при использовании системы Paint Effects вместе с параметром Forward Twist (Кручение прямо), который ориентирует дерево на камеру. Выберите пункт меню Twist => Forward Twist (Кручение => Кручение прямо), — те перь грани многоугольников всегда ориентированы прямо независимо от позиции камеры. Следует заметить, что параметры Forward Twist (Кручение прямо) и Flatness (Плоскостность) нежелательно использовать с объектами Paint Effects, преобразованными в трехмерные объек ты, хотя плоскостность, например, вполне можно использовать в художественных целях. 2.
ThinLine (Тонкая линия) позволяет легко увеличить плотность заполнения штриха. Нажмите клавишу , чтобы отключить графический режим, выберите штрих, а затем откройте вкладку Brush (Кисть) в редакторе атрибутов. Во вкладке Brush Туре (Тип кисти) выберите линию ThinLine (Тонкая линия), чтобы подключить ат рибуты из вкладки ThinLine Multi Streaks.
3.
Увеличьте значение параметра Multi Streak (Мультилинейность) до 5. В результате в панели Paint Effects вокруг штриха увеличилось количество туб.
Управление смещением мультилинейности относительно середины штриха осуществ ляется с помощью параметров Multi Streak Spread 1 (Рассеивание мультилинейности 1) и Multi Streak Spread 2 (Рассеивание мультилинейности 2). Параметр Multi Streak Spread 1
(Рассеивание мультилинейности 1) определяет смещение туб у основания штриха, а пара метр Multi Streak Spread 2 (Рассеивание мультилинейности 2) — смещение у вершины. Та ким образом, вполне можно заставить волосы распушиться (рис. 17.20). Параметры Diffuse (Диффузия) и Specular r a n d o m (Случайный блик) обеспечивают случайные диффузию и яркость блика для большей натуральности, а параметр Light All Streaks (Осветить все ли нии) применяет освещение к каждой тубе при визуализации.
Совместное использование и распространение кистей Как можно было заметить, при каждом нанесении штриха к нему присоединяется но вая кисть. Но если необходимо нанести несколько штрихов, совместно использующих ту же кисть, следует использовать параметр Share One Brush (Совместно использовать од ну кисть), который будет описан ниже. 1.
Откройте сцену Hair02 . mb с прилагаемого CD. Эта сцена содержит голову, на которой штрих создает прядь волос. Волосы получены за счет примене ния атрибутов Path Follow Brush (Путь следует за кистью) и Path Attract
(Путь притяжения). 2.
Используя несколько кистей, нарисуйте над поверхностью головы несколько штрихов, чтобы полностью покрыть область волос. Даже при использовании одинаковых параметров кисти их придется устанавливать перед нанесением каждого штриха.
3.
Выделите в иерархической структуре все созданные штрихи. Последним должен быть первичный штрих, в данном случае штрих s T R O k e S h a p e H a i r B l o n d S t r a i g h t l . Это его кисть предстоит применить к остальным штрихам. Выберите пункт меню Paint Effects => Share One Brush (Графи ческие эффекты => Совместно использовать одну кисть). В результате пара-
Система Paint Effects
679
метры кисти будут применены ко всем выделенным штрихам, как показано на рис. 17.21. Все изменения, внесенные в параметры этой кисти, отразятся на всех штрихах. Если по каким либо причинам понадобится отсоединить кисть, выберите пункт меню r e m o v e Brush Sharing (Отменить совместное использование кисти). Теперь параметры кисти каждого штриха можно корректировать индивидуально. Пример содержит сцена Hair03 . mb на прилагаемом CD.
Рис. 17.20. Пример использования мультили- Рис. 1721. При совместном использовании для не нейности для штриха ThinLine. В результа скольких штрихов все кисти будут соответство те значительно увеличилось количество штри вать кисти, выбранной последней. Это сущест хов (туб), видимых вдоль изначального штриха венно упрощает управление кистями
Использование кривых управления Кривые управления (Control curve) — это обычные кривые, которые можно создать с помощью инструментов CV и использовать в качестве пути аттрактора для туб (например, для стилизованных волос). Рассмотрим это на примере сцены. 1. Откройте сцену ControlCurve .mb с прилагаемого CD. Здесь содержится сфера, из которой исходят три кривые, а также штрихи волос, которые был нанесены на поверхность сферы. 2.
Выделите штрих и кривую Curve1, а затем выберите пункт меню Paint Effects => Curve Utilities => Set STROke Control Curves (Графические эффекты =>
Утилиты кривой => Установить кривые управления штриха). Вокруг кривой немедленно появится оболочка в виде волос. 3.
Выделите штрих, кривые 2 и 3, а затем снова выберите пункт меню Set STROke Control Curves (Установить кривые управления штриха), чтобы при менить воздействие к остальным кривым. Обратите внимание, что на верх нюю кривую воздействие больше не оказывается. При добавлении новых кривых предыдущие кривые блокируются. Во избежание этого выберите штрих и все три кривые, а затем снова преобразуйте их в кривые управления.
Глава 17
680 4.
Чтобы отобразить текущие кривые, которые воздействуют на штрих, выберите в ре дакторе атрибутов штриха (STROke Attribute Editor) пункт меню Input Curves => >Control Curve (Входные кривые => Кривая управления). Для управления результатом воздей ствия этих кривых перейдите к атрибутам кисти (hairThatGirl1) и выберите пункт меню Tubes => Behavior => Forces (Тубы => Режим => Силы). Параметры Curve Follow (Путь кривой), Curve Attract (Притяжение кривой) и Curve
Max
Dist
(Максимальная дистанция кривой) контролируют способ реакции туб на управ ляющие кривые. Сфера и кривые управления представлены на рис. 17.22.
Рис. 17.22. Кривые управления позволяют стилизовать тубы так, чтобы они притягивались к кри вым. В данном случае три спиральные кривые воздействуют на различные штрихи 5.
Задайте для параметров Curve Follow (Путь кривой), Curve Attract (Притяжение кривой) значение 0. Параметр Curve Follow (Путь кривой) заставит тубы следовать по тому же пути, что и кривая. Чтобы увидеть данный эффект, попробуйте постепен но увеличивать это значение. Параметр Curve Attract (Притяжение кривой) задает степень притяжения туб к пути кривой. Постепенно увеличивая это значение, пона блюдайте, как он работает в сочетании с параметром Curve Follow (Путь кривой), волосы обволакивают кривые. Параметр Curve Max Dist (Максимальная дистанция кривой) задает дистанцию в единицах глобальных координат, на которую распро страняется воздействие кривой. Когда этому атрибуту присвоено нулевое значение, дистанция предела не имеет.
/
681
Система Paint Effects
Кисти типа Mesh и карты смещения Кисти типа Mesh (Сетка) используются для визуализации графических эффектов на ос новании триангуляции кистей, а не заданного по умолчанию метода штамповки. Этот метод лучше подходит для отображения геометрических форм таких графических эффектов, как растения, деревья и здания, а также некоторых других специализированных кистей. В окне Visor (Просмотр) можно просмотреть несколько предустановленных кистей типа Mesh (Сетка), что, впрочем, не запрещает преобразовывать их в сеточные кисти любого другого ти па (для этого используется атрибут Brush Type (Тип кисти)). Сеточная кисть позволяет луч ше отображать плоские поверхности с резкими краями, а также дополнить способность сис темы Paint Effects визуализировать создание карты смещения и отражения при более точном наложении текстур на основании фактической трехмерной сетки. Сеточная кисть предостав ляет атрибуты, расположенные во вкладке Mesh (Сетка) (рис. 17.23). Эти атрибуты контро лируют некоторые из возможностей, недоступных кистям других типов.
Рис. 17.23. Раздел Mesh параметров кисти в редакторе атрибутов для выбранного штриха позволяет задать качество сетки. Для на стройки карты смещения в первую очередь следует использовать ползунок Sub Segments Откройте сцену M e s h B r u s h O l . m b с прилагаемого CD. Эта сцена содержит сеточную кисть, которая была преобразована в трехмерную. (Подробнее об этом — ниже, в разделе "Преобразование объектов Paint Effects в объемные геометрические формы".) Причина этого преобразования не имеет никакого отношения к возможностям сеточной кисти, просто некоторые из ее характеристик проще рассмотреть на фактиче ской геометрической форме. Все описанные здесь атрибуты работают точно так же, как и атрибуты соответствующего штриха Paint Effects. Это демонстрирует также тот факт, что даже после преобразования кисти в трехмерную она поддерживает непосредствен ную связь с атрибутами исходной кисти. Триангуляция распределяет сеточную кисть на три первичных элемента: длина и ширина разделения, а также уровень разделения. Разделение вдоль длины тубы задает атрибут Segments (Сегменты), который присущ кистям всех типов. Он определяет, насколько гибкий окажется туба при деформации, или, другими словами, насколько гладкой будет изогнутая туба при деформации. Параметр Segments (Сегменты) выделенного штриха доступен в раз деле Tubes => Creation (Тубы => Создание) редактора атрибутов. Выберите кисть в перспектив ном представлении и увеличьте значение атрибута Segments (Сегменты) до 20 (кисть r o s e r e d l ) , чтобы увеличилось количество разделов вдоль длины тубы.
682
Глава 1 7
Разверните раздел Mesh (Сетка) в редакторе атрибутов кисти (рис. 17.23). Параметр Tube Sections (Разделы тубы) контролирует разделение по ширине сетки. Увеличьте это значение до 13 и обратите внимание на то, что четырехугольная туба превратилась в круглую. Параметр Sub Segments (Субсегменты) задает последующее разделение каж дого многоугольника, что экспоненциально увеличивает общее разбиение. Но при ис пользовании с сеточными кистями (не преобразованными в геометрические формы) этот атрибут влияет только на вычисление смещения. Таким образом, если никакого смеще ния нет, то его значение несущественно. Увеличьте это значение до 3, чтобы сделать сет ку более плотной. Именно это и является причиной преоб разования штриха в трехмерную полигональную сетку. Этот атрибут недоступен у преобразованных кистей Paint Effects, поэтому здесь для демонстрации эффекта используем пре образованный штрих.
Рис. 17.24. Карту смещения сетки контролируют разделы Mesh и Texturing. Чтобы обес
Субсегменты используются для улучшения качества карты смещения, которая поддерживается только для кисти типа Mesh (Сетка). Кроме того, сеточная кисть поддержива ет карты смещения только при задействованном атрибуте смещения в параметрах кисти выбранного штриха. Он нахо дится во вкладке Brush Texturing (Текстурирование кисти) раздела Map Displacement (Карта смещения), доступного при использовании сеточной кисти. Само собой разумеется, что преобразованный штрих можно использовать с любым типом карты смещения, поскольку это геометрическая фор ма на сцене, а не кисть Paint Effects. Воспользуйтесь пара метром Map Displacement (Карта смещения) на вкладке текстурирования. Как можно заметить, поверхность накла дывается на основную текстуру (карта наложения); однако качество оказывается недостаточным. Увеличьте значение параметра Tube Sections (Разделы тубы) до 60, значение параметра Sub Segments (Субсегменты) — до 6 и значение параметра Segments (Сегменты) — до 30. Теперь объект должен выглядеть так, как показано на рис. 17.24. Обратите внимание, как эти атрибуты управляют разбиением тубы. Если использовать непреобразованную версию тубы, тот же эффект можно было бы наблюдать только в панели Paint Effects, находящейся в режиме визуализации.
печить просмотр карты сме щения в перспективном пред ставлении, кисть Paint Effects следует преобразовать в по лигональную сетку. В против ном случае этот эффект ото В разделе Map Displacement (Карта смещения) выбран бразит только панель Paint ного штриха есть дополнительные атрибуты, контролирую Effects в режиме визуализа щие смещение поверхности. Параметр Displacement Scale ции штриха (Масштаб смещения) отвечает за величину смещения, а па раметр Displacement Offset (Перемещение смещения) зада ет перемещение независимо от ширины тубы. Чтобы увидеть воздействие этих атрибу тов, попробуйте изменить эти значения. Параметры Bump Intensity (Интенсивность ше роховатости) и Bump Blur (Размытие шероховатости) связаны с коэффициентом шеро ховатости, как и у обычных тонеров Maya, от карты смещения они не зависят. Параметр Bump Intensity (Интенсивность шероховатости) срабатывает, если выбран параметр Per Pixel Lighting (Освещение по пикселям) в разделе Mesh (Сетка).
Система Paint Effects
683
Чтобы просмотреть другие параметры кисти типа Mesh (Сетка), перейдите к разделу Mesh Environment reflections Mesh (Сетка отражения окружения) раздела Mesh (Сетка). Данный параметр позволяет имитировать окружающее отражение. Это налагает отражения, которые можно настроить с помощью различных атрибутов, доступных на соответствующей вкладке; но это не будет отражение фактических геометрических форм на сцене. Если кисти Paint Effects должны отражать реальные геометрические формы на сцене, то единственным выходом будет преобразование их в трехмерный объект и применение к нему стандартного отражающего тонера. Для доступа к последнему связанному с сеткой параметру воспользуй тесь параметром Thorns On Mesh (Шипы на сетке). Он обеспечивает увеличение шипов из геометрических граней и может быть настроен довольно простыми параметрами, описанными ниже. Шипы на сетке не преобразуются в трехмерный объект, а следовательно, применимы только к сеточным кистям штрихов Paint Effects. Чтобы отобразить набор связанных с сеткой атрибутов, обычно расположенных в различных вкладках кисти, выберите пункт меню Paint Effects => Mesh Quality Attributes (Графические эффекты => Атрибуты качества сетки). Эти атрибуты позволяют легко и просто настроить параметры ка чества сетки как для обычных штрихов, так и для штрихов, преобразованных в трехмерные.
Освещение и текстурирование кисти Система Paint Effects осуществляет освещение и текстурирование с помощью внут реннего процессора тонирования (shading engine), доступ к некоторым из параметров ко торого предоставляет редактор атрибутов кисти (Brush Attribute Editor). К ним относятся некоторые из параметров системы Paint Effects, влияющие на источники света сцены, имитируемые тени, светящиеся тубы, а также на использование собственных файловых текстур при создании карт.
Текстурирование Выше, в разделе "Использование кистей в двухмерном пространстве", были описаны основные атрибуты цветов системы Paint Effects, включая управление цветом штриха и применение параметров тонирования туб по длине. Система Paint Effects позволяет ис пользовать текстуры вместо значений цветов. Существует несколько способов текстури рования, причем каждый из них обладает собственными возможностями. Управление текстурированием осуществляется в разделе Texturing (Текстурирование) (рис. 17.25), а при необходимости и совместно со значениями атрибутов тонирования. Используя пункты раскрывающегося списка Texture Туре (Тип текстуры) раздела Texturing (Текстурирование), можно указать, нужна ли карта цвета, непрозрачности и смещения (смещение только для сеточных кистей). Здесь можно выбрать файл наклады ваемого изображения, карту проверки, градиент по направлению U или V, а также карту фрактала. Все это предоставляет контроль над текстурированием кисти. Кроме того, ка ждый тип может использовать разные алгоритмы наложения карты, предоставляемые параметром Map Method (Метод карты). Если выбрано применение файла изображения, можно загрузить внешний файл, просмотрев изображение и указав имя файла в поле Image Name (Имя изображения), расположенном в нижней части раздела. Более под робную информацию о текстурировании в Maya, позволяющую лучше понять материал этого раздела, см. в главе 12, "Тонирование и текстурирование при анимации".
684
Глава 17
Puc. 1725. Параметры, доступные в разделе Texturing, являются основой системы тонирования Paint Effects и очень похожи на параметры поверхностного тонера в гипершейдере. Данный раздел позволяет контролиро вать цвет, непрозрачность, карту смещения, а также осуществлять загрузку внешних файлов изображений
Система Paint Effects
685
Качество создания карты смещений зависит прежде всего от геометрической формы смещения поверхности (подробную информацию по этой теме см. в разделе "Кисти типа Mesh и карты смещения"). Когда создание карт непрозрачности разрешено, параметры Тех Alpha 1 (Прозрачность текстуры 1) и Тех Alpha 2 (Прозрачность текстуры 2) опре деляют прозрачность для цвета текстуры 1 и 2. Рассмотрим пример. 1. Откройте находящийся на прилагаемом CD файл сцены t e x t u r i n g . m b и выберите штрих. Перейдите к панели Paint Effects, установите режим Paint Scene (Рисовать на сцене) и выберите пункт меню STROke r e f r e s h => rendered (Обновление штриха => Визуализируемый). На полотне Paint Effects должна появиться текстурированая туба. Отобразите в редакторе атрибутов для выбранной кисти ( r o s e r e d 1 ) раздел Texturing (Текстурирование). 2.
В раскрывающемся списке Texture Туре (Тип текстуры) выберите пункт Checker (Шашки); обратите внимание, как модифицируется текстура на вы бранной тубе, визуализируемая OpenGL в панели предварительного про смотра Paint Effects. Измените значения параметров r e p e a t U (Повторение по направлению U) и r e p e a t V (Повторение по направлению V) на 15 и 5.
3.
Установите флажок Map Opacity (Карта непрозрачности), и вы увидите, что текстурированая туба становится частично прозрачной. Чтобы сделать белые шашки прозрачными, установите для параметров Тех Alpha 1 и Тех Alpha 2 значения 0 и 1.
4.
Отключите прозрачность, сбросив флажок Map Opacity (Карта непрозрачно сти), и установите флажок Map Displacement (Карта смещения). Обратите внимание на выпуклость туб (небольшую) в области шашек. Увеличьте зна чения параметра Displacement Scale (Масштаб смещения) до 2; поверхность изменится несущественно.
5.
Выберите пункт меню Paint Effects => M e s h Quality Attributes (Графические
эффекты => Атрибуты качества сетки) и увеличьте значение параметра T u b e Sections (Разделы тубы) до 20, значение параметра Sub Segments (Субсегменты) — до 6 и Segments (Сегменты) — до 40. Уменьшите масштаб смещения; результат должен быть похож на приведенный в упражнении раз дела "Кисти типа Mesh и карты смещения". Там разъясняется, как контроли ровать качество сетки смещения для обоих типов штрихов Paint Effects и преобразовывать их в геометрические формы. 1
Чтобы лучше уяснить назначение этих параметров, создайте несколько штрихов и ис следуйте параметры их текстур.
Освещение и свечение Освещение (illumination) и свечение (glow) контролируются в их собственных разделах (рис. 17.26). Для освещения штрихов система Paint Effects может использовать как имита цию освещения, так и источники света сцены. Если флажок Illuminated (Освещено) сбро шен, система Paint Effects не будет ни визуализировать такие связанные со светом эффек ты, как отраженный свет, ни реагировать на интенсивность света; использоваться будут только атрибуты тонеров, что очень похоже на использование рассеянного света. Если флажок Illuminated (Освещено) установлен, то кисть Paint Effects реагирует и на источники
686
Глава 17
света сцены, и на световые параметры системы Paint Effects. Проще говоря, если установ лен флажок r e a l Lights (Реальный свет), параметры освещения будут взяты у источников света сцены; в противном случае можно непосредственно установить источник света, а па раметры отражения установить в разделе Illumination (Освещение).
Рис. 17.26. Разделы Illumination, Shadow Effects и Glow узла кисти в редакторе атрибутов Параметры свечения Paint Effects можно задать в разделе Glow (Свечение), устано вив значения параметров Glow (Свечение) (величина), Color (Цвет) и Spread (Рассеивание). Кроме того, можно указать, следует ли использовать свечение Paint Effects или свечение тонера Maya. Увеличение значения параметра Shader Glow (Свечение тонера) выше нулевого позволяет использовать материал S h a d e r G l o w l в ок не гипершейдера, что обеспечивает больший контроль над эффектом свечения.
Тени Тенями в системе Paint Effects можно управлять с помощью карт глубины теней, соз даваемых на основании источников света сцены, или имитировать тени на основании па-
Система Paint Effects
687
раметров раздела Shadow Effects (Эффекты тени), представленного на рис. 17.26. Для применения реальных теней установите флажок Cast Shadows (Отбрасывание теней), расположенный в нижней части раздела; этот параметр поддерживает использование только карт глубин теней. Для моделирования теней система Paint Effects предоставляет несколько довольно эффективных способов, к которым, в частности, относится имитация теней внутри более плотных областей штриха. Например, при использовании некоторых видов сложных кистей Paint Effects области, расположенные ближе к нижней части или центру штриха, должны выглядеть более темными, чем области, расположенные ближе кверху, как на листьях травы. Параметр Shadow Offset (Смещение тени) у имитируемых теней работает подобно эффекту отбрасывания тени в Photoshop. Например, этот параметр может быть очень хорош для тех изображений Paint Effects, которые расположены возле стены, как у рас тения на рис. 17.27. Когда используется эффект подобного типа, параметр S h a d o w Offset (Смещение тени) определяет дистанцию смещения тени грозди на воображаемой стене. Следующие атрибуты относятся к плоским и объемным теням. Параметр Shadow Transp (Прозрачность тени) позволяет контролировать прозрачность тени, параметр Shadow Diffusion (Диффузия тени) задает размытость тени, имитируя таким образом эффект мягкой тени, который обычно создается в результате сложных вычислений. Параметры наложения объемных теней в раскрывающемся списке Fake Shadow (Имитируемая тень) предоставляют более полный контроль над такими тенями и зачас тую весьма полезны. В основе этого метода лежит наложение тени на воображаемую плоскость ниже штриха Paint Effects. Расположенный ниже параметр Shadow Transp (Прозрачность тени) позволяет настроить имитируемые теневые эффекты на настоящих тубах Paint Effects, которые определяют, как тубы будут затемнены и как затемнение распространяется по длине тубы. Эти параметры работают как с имитированными, так и с реальными тенями, поскольку они воздействуют только на тубы. Параметр Back Shadow (Задние тени) используется для затемнения туб, стоящих далеко из источника света. Параметр Center Shadow (Средние тени) предназначен для затемнения туб, рас положенных ближе к центру штриха (рис. 17.28), и моделирует некоторый вид препятст вия для света, которым могут быть соседние тубы, как стебельки в пучке травы; но по длине тубы затемнение происходит однородно. Раскрывающийся список Depth Shadow Туре (Тип тени глубин) предоставляет не сколько возможных моделей для препятствий свету, обычно из плотных кластеров туб; для средних теней его не следует использовать. Параметр Depth Shadow (Глубина тени) придает параметру Center S h a d o w (Средние тени) способность настраивать эффект тени по длине тубы. Если в раскрывающемся списке Depth Shadow Туре (Тип тени глубин) выбрать пункт PathDist, то тубы, находящиеся ближе к средней линии штриха, будут больше подвержены затемнению; таким образом, внутренние тубы получат меньше све та, чем внешние. Выбор surfaceDepth влияет на области, расположенные в нижней части всех туб (корни), независимо от дистанции до штриха; таким образом, области ближе к поверхности туб выглядят более темными. Оба эти параметра оказывают влияние, толь ко если значение параметра Depth Shadow большее нуля. Параметры Depth Shadow (Глубина тени) и Depth S h a d o w Depth (Глубина глубокой тени) контролируют величи ну и протяженность эффекта тени по каждой тубе.
Глава 17
688
Рис. 17.27. Результат применения плоского смещения моделируемой тени подобен применению эффекта отбрасывания тени в графическом прило жении. Тень располагается позади штриха со смещением
Рис. 17.28. Параметр Center Shadow используется для затемнения тубы вдоль пути "кривой" штриха, имитируя затемнение, вызванное тубами на внешней части штриха
Система Paint Effects
689
На рис. 17.29 сравнивается воздействие параметров Path Distance (Дистанция пу ти) и surface Depth (Глубина поверхности). Принцип наложения тени на поверхности остается таким же, независимо от метода, хотя качество тонирования туб изменилось. Откройте сцену s h a d o w . mb и поэкспериментируйте с этими атрибутами, чтобы нау читься манипулировать параметрами имитации тени. Если необходимо достичь фото реализма, раздел S h a d o w s (Тени), вероятно, один из наиболее важных. Сначала осу ществите визуализацию только с объемным наложением, а затем добавьте глубину по верхности и откорректируйте ее параметры. Как только затемнение нижней части травы станет вполне заметным, переключитесь на параметры Path Distance (Дистанция пути) и сравните результаты.
Рис. 1729. Имитация преграды свету непосредственно по тубам при наложении объемных теней на по верхность с использованием параметра Path Distance (слева) и параметра surface Depth (справа)
Нажим штриха Раздел STROke (Штрих) в редакторе атрибутов имеет вкладку Pressure Mappings (Сопоставление нажиму), в которой доступны параметры для опре деления воздействия нажима на штрих и другие атрибуты кисти. Если есть планшет, то можно применить нажим к параметрам инструмента. Но если нажиму необходимо сопоставить значения, то сделать это можно на данной вкладке. Чтобы опробовать ее, откройте сцену g l o w O l . m b на прилагаемом CD. На вкладке Pressure Mappings (Сопоставление нажиму) для штриха можно заметить предустановленные сопостав ления 1, 2 и 3. Обратите внимание на то, что случаи 1 и 2 соответствуют масштабиро ванию и прозрачности. Здесь можно скорректировать значение диапазона, чтобы оп ределить минимальное и максимальное значения для атрибутов. Измените некоторые из них и посмотрите, как изменилась работа со штрихом панели представления Paint Effects. В разделе Pressure Scale (Масштаб нажима) вкладки Pressure Mappings (Сопоставление нажиму), графически представлена кривая зависимости значения ат рибута от нажима по всему диапазону от начала до конца. Кривая сопоставления огра ничена значениями минимума и максимума. Этот метод прекрасно подходит для рисо вания штрихов, которые должны выглядеть более естественно.
690
Глава 17
Промежутки Используя параметры раздела Gaps (Промежутки) кисти в редакторе атрибутов, по пути штриха можно создать интервалы, очень похожие на пунктирную линию (рис. 17.30). Откройте сцену g l o w O l . m b , используемую в предыдущем разделе, и ото бразите в редакторе атрибутов раздел Gaps (Промежутки). Просмотрите сцену в режиме визуализации панели Paint Effects; это позволит в реальном масштабе времени наблю дать влияние изменения значений при перемещении ползунков. Откорректируйте пара метр Gap Size (Размер промежутка) и посмотрите, как изменение значения влияет на размер промежутков между видимыми частями штриха, пропорционально значению па раметра Gap Spacing (Интервал промежутка). При значении 1 штрих исчезает. Пара метр Gap Spacing (Интервал промежутка) определяет соотношение между размером промежутка и размером тубы. Параметр Gap r a n d (Случайный промежуток) вносит не которую беспорядочность в приращения этих значений.
Рис. 17.30. Сопоставление давления и промежутки придают штрихам более реалистичный вид
Система Paint Effects и анимация Система Paint Effects предоставляет несколько способов анимации. В данном разделе будут рассмотрены способы подражания естественным движениям с помощью парамет ров раздела Behavior (Режим), применяемого на практике в конце этой главы. Анимацию можно также создавать в разделе Flow Animation (Потоковая анимация), который пре доставляет средства анимации роста штрихов кистей на протяжении некоторого времени (например, цветок, растущий из земли, или молнии, сверкающие из туч). Система Paint Effects предоставляет и другие способы анимации, включая пружины, кривые, соотне сенные с нажимом, и кривые мягкого тела, позволяющие управлять штрихами. С пото ковой анимацией и пружинами также проведем эксперименты. Хорошая методика ин тегрирования системы Paint Effects с динамическим процессором Майя заключается в нанесении штрихов на сетку мягкого тела, которая затем деформирует кривые на осно вании движений мягкого тела. Наследование движения мягкого тела возможно благода ря тому факту, что кривые на поверхностях наследуют поверхностные деформации.
Система Paint Effects
691
Потоковая анимация Раздел Flow Animation (Потоковая анимация) содержит параметры для создания индивидуальной анимации в системе Paint Effects. Сюда относится анимация текстур по тубам (включая создание карт смещения), а также анимация роста и умень шения туб на протяжении времени. Все эти атрибуты измеряются в секундах. Сцена FlowAnimation.mb на прилагаемом CD содержит три штриха, каждый на отдельном слое, демонстрирующие различные аспекты потоковой анимации. Здесь также находятся четыре видеоклипа, которые демонстрируют визуализированные результаты, получен ные с использованием различных методов потоковой анимации. Два из этих клипов де монстрируют ту же кисть, визуализированную с параметром STROke Time (Время штри ха) и без него. Параметр Flow Speed (Скорость потока) определяет скорость потока (т.е. насколько быстро, например, промежутки и текстуры перемещаются по тубам), а также его направ ление. Положительные значения соответствуют прямому направлению (от начала к кон цу), а отрицательные — в обратном направлении. Параметр Texture Flow (Поток тексту ры) определяет, будут ли текстура или промежутки двигаться по тубам. Параметр Time Clip (Время клипа) разрешает использование остальных параметров (STROke Time (Время штриха), Start Time (Время начала) и End Time (Время конца)) при такой анимации, например, как рост. Обычно с потоком текстуры они не используются. Параметр Start Time (Время начала) определяет, когда появляются тубы, а параметр End Time (Время конца) — когда они исчезают. Таким образом, различие между двумя зна чениями определяет продолжительность существования видимых частей штриха. Когда параметр STROke Time (Время штриха) не используется, тубы растут из штриха в направлении наружу, таким образом, сначала они появляются вдоль по штриху с ин тервалами, а затем постепенно вырастают. Когда используется параметр STROke Time (Время штриха), тубы вырастают из начальной точки штриха к концу (на основании значения параметра Flow Speed (Скорость потока)). И наконец, используя атрибут Momentum (Момент) (пункт меню Tubes => Behavior => Forces (Тубы => >Режим => Силы)), можно замедлить рост. Лучше всего изучить их работу на практике, использовав сцену FlowAnimation. mb или собственную.
Пружинная анимация Пружинная анимация (spring animation) — это еще одна замечательная возможность Paint Effects. Она позволяет имитировать движения, как у пружин, например, волос, реа гирующих на движения. Давайте рассмотрим их на небольшом примере. 1. Откройте сцену springoi .mb с прилагаемого CD. Эта сцена содержит сфе ру с несколькими штрихами в виде перьев, нанесенными на ее поверхность. Сфера имеет некоторую анимацию. Чтобы подтвердить, что штрихи присое динены к сфере, опробуйте временную шкалу. Для правильной работы пру жин необходима анимация по ключевым кадрам. 2.
Выделите все четыре штриха и выберите пункт меню Paint EffectS => Brush Animation => Make Brush Spring • (Графические эффекты => Анимация кисти => Сделать кисть пружинной • ) . Обратите внимание на параметры управления поведением пружин. Параметр Spring Stiffness (Жесткость пружины) кон тролирует жесткость. Чем выше его значение, тем сильнее эффект пружины, 1
Глава
692
17
а значение 0 отключает пружинные движения. Оставьте значение по умолчанию и, щелкнув на кнопке Apply (Применить), протащите временную шкалу. Должно быть заметно, что перья реагируют на движение более естественно. Пружины добавляются как выражения. Таким образом, единственный удобный способ коррекции этих параметров предоставляет группа флажков Make Brush Spring (Сделать кисть пружинной). Параметр Spring Damp (Отставание пружины) указывает, насколько быстро пружина реагирует на движение; чем ниже значение, тем быстрее реакция.
Изучение туб: практический пример розового куста На данный момент описано большинство разделов и параметров кисти в редакторе атрибутов, осталось подробно рассмотреть то, что связано с тубами. Говоря коротко, как только штрих нанесен, можно применить тубы. Если решено, что испустить тубы не нужно, достаточно задать те параметры кисти, которые относятся только к эффектам штриха, не определяя эффекты испускания. Исследуем некоторые из основных характе ристик туб и проведем несколько экспериментов. Следующие разделы содержат описание практического примера по применению визуальных возможностей туб. Окончательная сцена упражнения доступна на прилагаемом CD (файл roseTree.mb). Здесь цветущее дерево будет создано за счет смешения кистей дубового дерева и розовых цветов. Все будет осуществляться в пер спективном представлении. Для быстрого просмотра визуализированных штрихов мож но переключаться на панель Paint Effects. Для штриха кисти должен быть установлен пе реключатель Draw As Mesh (Рисунок как сетка). Если компьютеру не хватает мощности, можно уменьшить качество представления (Display Quality) штриха или использовать представление кривых в течение более длительного времени. В ходе этого упражнения не стесняйтесь использовать параметры по собственному усмот рению. Это творческий процесс, а не сугубо технический.
Создание исходного розового куста Чтобы создать исходное дерево, выполните следующее. 1.
Откройте окно просмотра Visor, найдите в папке TreesMesh файл oakWhiteMedium.mel, щелкните правой кнопкой мыши на пиктограмме oakWhiteMedium и в появившемся контекстном меню выберите пункт Apply Brush То Selected STROke (Применить кисть к выделенному штриху). Это применит 100% воздействия штриха кисти к белому предварительно установленному дубу. Затем перейдите к папке flowersMesh и найдите файл rosered.mel. Щелкнув правой кнопкой мыши вы берите в появившемся контекстном меню пункт Blend Brush 2 0 % (Смешение кис ти 20%). В результате 80% воздействия на штрих окажет oakWhiteMedium.mel и 20% — rosered.mel. Нарисуйте штрих в перспективном представлении (рис. 17.31).
2.
Пока кривая выделена, сбросьте флажок r e a l Lights (Реальные источники света) в разде ле Illumination (Освещение) редактора атрибутов для кисти. Получилось дерево с шипами и маленькими бледными розами. Отключите шипы с помощью параметра Thorns On Mesh (Шипы на сетке) в разделе Mesh (Сетка). Впоследствии их можно будет вернуть в любой момент. Типом кисти в данный момент является Mesh (Сетка).
Система Paint Effects
693
Рис. 77.31 Смешение кистей дуба и розы приво дят к созданию дерева с бледными розами и большим количеством шипов. Чтобы выглядеть лучше, эта сцена нуждается в дополнительной настройке
Все о тубах В разделе Tubes (Тубы) редактора атрибутов кисти (см. рис. 17.13) содержатся три основных раздела: Creation (Создание), Growth (Рост) и Behavior (Режим), параметры которых отвечают за различные характеристики туб. Используемые совместно, они обеспечивают уникальные возможности по существенному "видоизменению" внешнего вида объектов Paint Effects. Параметры раздела Creation (Создание) задают начальный размер туб, их ориентацию, ширину и т.д. Параметры раздела Growth (Рост) определяют рост туб, а параметры раздела Behavior (Режим) контролируют деформацию и имита цию воздействия сил, например порывов ветра или турбулентности. 3. Чтобы отключить листья, перейдите в раздел Growth (Рост), расположенный в раз деле Tubes (Тубы), и сбросьте флажок Leaves (Листья). Теперь розы выглядят бледными и уродливыми; это связано с тем, что они составляют лишь 20% в смеси, т.е. сохраняется в основном внешний вид дерева. (Улучшение внешнего вида розы рассматривается в разделе "Раздел Growth: управление ветвлением туб" далее в этой главе.) Отключив цветы (Flowers) и ветки ( T w i g s ) , оставьте порядка четырех дре весных стволов. Если стволы не видны, удостоверьтесь, что во вкладке sTROkeShape установлен флажок Draw As Mesh (Рисунок как сетка). 4.
В разделе Texturing (Текстурирование) увеличьте коэффициенты Тех Alpha 1 (Прозрачность текстуры 1) и Тех Alpha 2 (Прозрачность текстуры 2) до значения 1. Как можно заметить, дерево унаследовало некоторую прозрачность от цветов.
Раздел Creation: все о появлении Раздел Creation (Создание) содержит набор параметров, управляющих начальной эмиссией туб (некоторые из них уже упоминались). Параметр Tubes Per Step (Туб на шаг) определяет распределение тубы между элементами штриха. Параметр Tube r a n d (Тубы случайно) обеспечивает случайность распределения туб по штриху.
694 5.
Глава 17
Присвойте параметру Tube r a n d (Тубы случайно) нулевое значение и увеличьте значение параметра Tubes Per Step (Туб на шаг) до 0 . 1 8 . Теперь распределение ве ток по штриху должно быть достаточным. Параметр Start Tubes (Начало туб) задает количество туб, которые будут созданы на первой точке штриха, независимо от зна чения параметра Tubes Per Step (Туб на шаг). Как показывает эксперимент, увели чение этого значения создает кластер туб вокруг первой точки. Установите для па раметра Start Tubes (Начало туб) значение 0, а для параметра Tubes Per Step (Туб на шаг) — значение 0.1. Должны быть видимы три или четыре древесных ствола.
Как уже было продемонстрировано, параметр Segments (Сегменты) определяет сек ционирование по длине тубы. Количество сегментов определяет способность тубы к де формации. Поскольку используется кисть типа Mesh (Сетка), установите соответст вующее значение секционирования туб. Более подробную информацию по этой теме см. в разделе "Кисти типа Mesh и карты смещения". Как только в разделе Behavior (Режим) будет задана деформация, изменение в сегментации может значительно изменить внешний вид дерева. Увеличение этого значения может раз рушить внешний вид. Лучше заранее задать достаточное количество сегментов. Сегменты используются также для вычисления шагов по тубе при анимации. Дис танция между каждыми двумя сегментами считаются шагом (step), независимо от фак тической дистанции. Таким образом, смещение сегментов является средством управле ния ходом анимации, например роста. Для смещения интервалов можно использовать параметры Segment Length (Длина сегмента) и Width Bias (Ширина смещения). Пара метры Length Min (Минимальная длина) и Length Мах (Максимальная длина) контро лируют увеличение высоты туб. Применение параметра Length Мах позволяет также не которым образом влиять на высоту случайных туб. Опробуйте эти значения. 6.
Параметры Tube Width 1 (Ширина тубы 1) и Tube Width 2 (Ширина тубы 2) задают нижнюю и верхнюю ширину. Параметры Width r a n d (Ширина случайно) и Width Bias (Ширина смещения) совместно обеспечивают случайный характер ширины. Парамет ру Width r a n d (Ширина случайно) присвойте значение 0.3,а затем, изменяя значение параметра Width Bias (Ширина смещения), понаблюдайте за результатом.
Другие параметры, включая Width Scale (Масштаб ширины), обеспечивают градиент изменения ширины тубы по ее длине. Каждая точка по градиенту имеет значение, кото рое при выборе точки может быть установлено точно в цифровой форме, как значение параметра Selected Value (Выбранное значение), или грубо — на градиенте. Для вычис ления изменения по ширине между точками используется интерполяция. Проведите эксперименты с градиентом, чтобы научиться добавлять точки и изменять внешний вид туб. Параметр Tube Direction (Направление туб) определяет, испускаются ли тубы в на правлении наружу из штриха или вдоль пути штриха; переключите это значение, чтобы увидеть изменение. Параметры Elevation Min (Минимум превышения) и Elevation Мах (Максимум пре вышения) контролируют "наклон Пизанской башни" в интервале заданного диапазона. Это прижимает тубы к штриху и вынуждает их деформироваться. Параметры AZimuth Min (Минимум азимута) и AZimuth Мах (Максимум азимута) определяют плоскость по ворота при превышении. Таким образом, когда туба наклоняется, можно заставить ее на целиться в другом направлении, регулируя азимут. Проведите эксперименты с парамет-
Система Paint Effects
695
рами превышения и азимута, чтобы изучить их взаимосвязь. Продолжим работу, исполь зуя одно дерево. Установите для параметра Start Tubes (Начало туб) значение 2, а для параметра Tubes Per Step (Туб на шаг) — значение 0. Когда все будет закончено, можно будет заново создать больше деревьев. На рис. 17.32 представлены параметры, исполь зуемые в разделе Creation (Создание).
Раздел Growth: управление ветвлением туб В разделе Growth (Рост) (рис. 17.33) моделируется рост туб, включая ветвление (флажок Branches (Ветви)). Флажки Twigs (Побеги), Leaves (Листья), Flowers (Цветы) и Buds (Почки) позволяют настроить соответствующую характеристику. К счастью, большинство из них (но не все) подобны. Таким образом, изучив один, можно фактиче ски научиться работать со всеми.
Рис. 17.32. Параметры раздела Creation, используемые в данном упражнении, отображаемые в па нели каналов
Рис. 17.33. Раздел Growth обеспечи вает дополнительный контроль над ростом элементов из исходного штриха
Обычно ветвление подразумевает разделение корневой тубы (ствола дерева) на не сколько туб (ветвей). Каждое разветвление может быть далее разделено на побеги и, без условно, листья, цветы и почки. У кисти дуба, используемой в данный момент, из ствола сначала вырастают побеги, затем они разветвляются, переплетаются и разветвляются да лее. Это может показаться неестественным, но такова мощнейшая возможность, которую предоставляет раздел Twigs (Побеги). Хотя ветвление сейчас разрешено, никаких веток пока не видно. Чтобы заполнить дерево побегами и ветвями, перейдите в раздел Twigs (Побеги). Сбросьте флажок Branches (Ветви). Теперь должны быть видны только ветви по стволу дерева. В данном случае раздел Twigs (Побеги) контролирует разветвление по стволу дерева. Обычно им управляют в разделе Branches (Ветви). Побеги
Разделение побегов в радиальном кластере вокруг конкретной точки на тубе форми рует внешний вид, похожий на пальму, когда оно применяется к стволу дерева без вет вей. Можно задать количество кластеров, вырастающих по тубе, а также несколько дру гих параметров, позволяющих придать побегам случайность и индивидуальность. Это может в некоторой степени объяснять, почему их называют побегами. Различие между побегами (twig) и ветвями (branch) заключается в том, что ветви могут далее разделяться на большее количество ветвей, а ответвление побегов происходит только раз по тубе. Та ким образом, побеги можно рассматривать как палочки, распределенные по ветке.
Глава
696
17
7.
Перейдите в раздел Twigs (Побеги) раздела Growth (Рост), чтобы получить доступ к параметру Branch After Twigs (Ветви после побегов), позволяющему указать, что будет следовать первым. Если он задействован, побеги предшествуют ветвям. Перей дите в раздел Branches (Ветви), отключите параметр Middle Branch (Средние ветви) и обратите внимание на значительное изменение внешнего вида дерева. Перейдите в раздел Twigs (Побеги) и осмотрите ветви, отходящие от ствола дерева. Верните ис ходные значения, чтобы ветви снова стали видимыми, и задействуйте параметр Branch After Twigs (Ветви после побегов).
8.
Параметры Twigs In Cluster (Побегов в кластере) и Num Twig Clusters (Количество кластеров побегов) определяют, сколько побегов будет в каждом кластере, а также сколько кластеров будет создано по длине тубы. Параметру Twigs In Cluster (Побегов в кластере) присвойте значение 2, а параметру Num Twig Clusters (Количество кластеров побегов) — значение 1. Должен быть создан один кластер с двумя побегами. Увеличьте значение параметра Num Twig Clusters до 2, и читатели увидят, что появился другой кластер с двумя побегами. Постепенно увеличивая зна чение параметра Twigs In Cluster (Побегов в кластере), обратите внимание на то, как увеличивается количество побегов в каждом кластере. Прежде чем перейти к иссле дованию других атрибутов, оставьте для этих значения 6 и 2.
Ниже приведен список параметров побега с объяснением этапов их корректировки; опробуйте их экспериментально и выберите значения по своему усмотрению. Большин ство из них помогают придать побегам "случайность", чтобы их внешний вид был более естественным. Большинство этих параметров встречается и в других подразделах разде ла Growth (Рост), где они действуют точно так же. Атрибуты вкладки Twigs
Назначение
Twig Dropout (Убывание побега)
Средство случайного уменьшения побегов, снижения их количества и обеспечения более естественного (хаотичного) впечатления. Чтобы увидеть, как побеги убывают в кластерах, создавая более естественный внешний вид, увеличьте это значение
Twig Base Width (Ширина основания побега) и Twig Tip Width (Ширина вершины побега)
Эти параметры используются для контроля нижней и верхней радиальной ширины побегов. Их назначение очевидно и легко изучается на практике
Twig Start (Начало побега)
Точка на тубе, откуда начинаются побеги. Значение в процентах от общей длины тубы. Чтобы увидеть воздей ствие, устанавливайте значения в диапазоне от О до 1
Twig Angle 1 (Угол побега 1) и Twig Angle 2 (Угол побега 2)
Эти атрибуты определяют угол между вырастающими побегами и основной тубой, например угол между вет вями и стволом дерева. Первый угол относится к побе гам, растущим из поверхности вверх, а второй угол — к побегам в верхней части дерева. Сначала уменьшите первый угол, а затем проведите эксперименты со вто рым углом
Система Paint Effects
697 Окончание
таблицы
Атрибуты вкладки Twigs
Назначение
Twig Twist (Кручение побега)
Этот атрибут используется для смещения положения кластеров побегов вокруг тубы. Он не деформирует побе ги так, чтобы они выглядели скрученными, а поворачивает кластер вокруг оси тубы, смещая ее положение, причем всегда выше первого кластера побега. Увеличьте значение параметра Num Twig Clusters (Количество кластеров побе гов) и опробуйте данный параметр на практике
Twig Stiffness (Жесткость побега) Этот параметр предоставляет дополнительную настрой ку чувствительности побега к деформациям, задаваемым в разделе Behavior (Режим). Данное значение определяет эластичность побега при деформациях. При значении 1 силы на побег не влияют никак Twig Length (Длина побега) и Twig Length Scale (Масштаб по бега по длине)
Параметр Twig Length (Длина побега) определяет длину каждой тубы, а параметр Twig Length Scale (Масштаб по бега по длине) позволяет масштабировать длину на ос новании позиции кластера по тубе. Эти коэффициенты масштабирования действуют однородно на все побеги в соответствующей позиции. Таким образом, для двух побегов в той же позиции по "высоте" и длине тубы ис пользуются те же масштабы. Чтобы увидеть их воздей ствие, поэкспериментируйте с ними
Поскольку побеги по тубе необходимо расположить случайно, используем несколько кластеров, причем каждый с одним побегом. На рис. 17.34 показаны значения парамет ров раздела Twigs (Побеги), используемые в этом разделе. Ветви
Теперь давайте поработаем с ветками. 9. Перейдите в раздел Branches (Ветви). Поскольку предстоит использовать ветви на побегах, эти параметры определят характеристики перехода для каждого побега. Данные параметры обеспечивают те же характеристики для ветвей на корневой тубе. Главной особенностью ветвей является их способность к ветвлению несколько раз. Если туба разветвлена, то каждую ветку можно разветвить еще раз, еще и т.д. Рас смотрим это на несложном примере. Окончательные значения этого раздела приве дены на рис. 17.35. 10. Присвойте параметрам Start Branches (Начало ветвей), Split Мах Depth (Макси мальная глубина разделения) и Split r a n d (Случайность разделения) значение 0 (сейчас видны только побеги). Параметр N u m Branches (Количество ветвей) опре деляет количество ветвей, которые должны быть созданы при каждом разделении; установите для него значение 2. Параметр Split Max Depth (Максимальная глубина разделения) определяет степень ветвления. Если постепенно увеличивать это значе ние, то можно заметить появление ветвей по длине побега. Количество разветвлений кратно значению параметра N u m Branches (Количество ветвей). Параметр Start Branches (Начало ветвей) определяет количество ветвей, формируемых в точке ветвления, в данном случае при первом ветвлении на каждом побеге. Постепенно
Глава 17
698
увеличивая это значение, понаблюдайте за результатом. Пока оставим для него ну левое значение. 1 1 . Для управления длиной ветвей перейдите в раздел Twig Length (Длина побега). Оп робуйте параметры этого раздела. Остальные параметры подобны параметрам побега. Параметр Branch Dropout (Убывание ветви) ограничивает ветви. Параметр Split Angle (Угол разделения) задает угол между ветвями. Параметр Split Size Decay (Снижение размера разделения) позволяет сузить ширину ветвей по длине на основании масштаб побега, из которого они вырастают. При значении 1 масштабы равны. Значения ниже делают их более тонкими к концу, а значения больше 1 делают их более толстым к концу (интересный эффект). Примените значения по собственному усмотрению или те, которые указаны на рис. 17.35.
Puc. 17.34. Параметры разде ла Twigs в панели каналов
Рис. 17.35. Параметры разде ла Branches в панели каналов
Листья и цветы
На настоящий момент с параметрами разделов Leaves (Листья) и Flowers (Цветы) проблем быть не должно. Каждый из них предоставляет множество параметров для управления их поведением. Давайте кратко рассмотрим соответствующие этапы данного упражнения. 12. Перейдите в раздел Leaves (Листья) раздела Growth (Рост), параметры воздействия которого на кисть розы позволят нанести листья на дерево, включая его ствол. Пе рейдите в раздел Leaf Location (Расположение листьев) и установите для параметра On Secondary Branches Only (Только на вторичных ветвях) значение On. Это раз решит появление листьев на стволе дерева. Для сокращения листьев можно исполь зовать параметр Leaf Dropout (Убывание листьев), а для уменьшения их масштаба — Leaf Length (Длина листьев). Важным для листьев является параметр Leaf Forward Twist (Поворачивать лист передом). Когда он применяется, лист всегда направлен к камере плоской стороной, а не краем. Напомним, что розовый куст создается при добавлении в смесь всего 20% розы, чего вполне достаточно для получения исходных цветов. Безусловно, чтобы полностью пере дать цвет и форму цветов, было бы лучше иметь в смеси 100% розы, потому что сейчас они выглядят блекло. Устраним этот недостаток. 13. Создайте еще один штрих, используя кисть, содержащую только розу, а затем скопи руйте значения параметров и цвета розовых цветов для дерева. Внешний вид цветов уже изменился, но цвет остается тусклым, и это придется исправить. Так можно по лучить стопроцентные розы на древесных ветвях. Используемые значения парамет ров приведены на рис. 17.36.
Система Paint Effects
699
Рис. 17.36. Перенос параметров кисти розы на кисть дерева в ре дакторе атрибутов Теперь все готово для начала деформирования дерева. Чтобы оно выглядело привле кательнее, добавим некоторые естественные силы, например дуновение ветра. На на стоящий момент дерево должно выглядеть так, как показано на рис. 17.37. При визуализации дерево может показаться чересчур жестким. Поскольку здесь применялась кисть типа Mesh (Сетка) к дереву, вероятно, используется карта смещения. Поэтому можно либо уменьшить значение параметра Sub Segments (Субсегменты) до 1, что обеспечит некоторое смещение, либо значительно увеличить это значение. Раздел Behavior: моделирование Деформации и естественных д в и ж е н и й
Раздел Behavior ( Р е ж и м ) редактора атрибутов предоставляет дополнительные возможности для деформации и анимации Paint Effects. Как обычно, наилучший способ изучить параметры — это опробовать их на практике. Сейчас сбросьте в раз деле Growth ( Р о с т ) все флажки, кроме Twigs (Побеги). Теперь видимы только ис ходная туба и побеги.
Глава 17
700
Рис. 17.37. Дерево с красными розами на верхушках Раздел Displacement Раздел Displacement (Смещение) предоставляет несколько способов деформирова ния туб, а также возможность управления объемом деформации по длине туб, включая параметры Noise (Шум), Wiggle (Шевеление) и Curl (Завивка), которые воздействуют на тубы различными способами. Значения частот (frequency) деформаторов контроли руют величину деформации по тубе; таким образом, более высокие значения частот обеспечивают больше "загибов" или "шума" по тубе. Значения смещения (offset) обеспе чивают смещение соответствующего эффекта при анимации. Чтобы лучше понять на значение каждого из этих деформаторов при анимации, перемещайте ползунки и по смотрите результат. И наконец, параметр Displacement Delay (Задержка смещения), расположенный пер вым в разделе Displacement (Смещение), позволяет уменьшить воздействие всех осталь ных сил в этом разделе. "Задержка" распространяется по длине тубы, как результат от удара ногой. Таким образом, при уменьшении деформации с основания тубы (например,
Система Paint Effects
701
при использовании загибов) величина загибов к вершине будет снижаться. Опробуйте эти значения на практике. Попробуйте также создать спиральную тубу, которая сужается к основанию или вершине, и, удостоверившись, что никакие другие силы к ней не при меняются, проведите эксперименты. На рис. 17.38 приведены параметры, используемые в разделах Displacement (Смещение) и Forces (Силы).
Значения параметров раз делов Displacement и Forces розового куста в редакторе атрибутов
Puc. 77.38
Раздел Forces В этом разделе содержатся некоторые интересные параметры для создания разных явлений. На рис. 17.39 представлено то же дерево, но с разными значениями параметров. Параметр Path Follow (Следовать по пути) позволяет указать, должны ли тубы следовать по пути штриха или в направлении по нормали к нему, подобно параметру Tube Direction (Направление туб) в разделе Creation (Создание). Параметр Path Attract (Путь притяжения) заставляет вершину дерева стремиться к пути штриха. Поэксперименти руйте с положительными и отрицательными значениями этих параметров. Подробную информацию о параметрах следования, притяжения и максимальной дистанции см. в разделе "Использование кривых управления". Все три параметра применяются только тогда, когда для воздействия на штрих используются кривые управления.
Глава 1 7
702
Рис. 17.39. Параметры разделов тересные эффекты
Displacement
и
Forces
с разными значениями могут создавать ин
Параметр r a n d o m (Случайно), вероятно, — один из наиболее полезных атрибутов в этом разделе, он позволяет применить силы в случайных направлениях и с произвольной интен сивностью. Это похоже на применение турбулентности к мягкому телу. Чем выше значение, тем сильнее воздействие силы, деформирующей дерево. Флажок Deflection (Отклонение) предоставляет доступ к параметрам Deflection Min (Минимум отклонения) и Deflection Мах (Максимум отклонения), позволяющим ограничить воздействия сил на некоторой высоте от земли. Параметр Increase Gravity (Увеличение гравитации) позволит пригнуть побеги дерева ниже к земле. Установив флажок Deflection (Отклонение), увеличьте минимальный уровень отклонения. По мере увеличения минимального уровня отклонения обратите внимание на то, как побеги в более низкой части как бы распластываются по воображаемой плоскости, к кото рой их прижимают. Воспользуемся этими параметрами, чтобы сделать дерево шире. Пара метр Momentum (Момент) используется для управления анимацией во времени. Более под робная информация о потоковой анимации и параметре Momentum (Момент) приведена вы ше в этой главе. Не забывайте, что параметр Momentum (Момент) должен иметь значение 1, поскольку значения ниже 1 приводят к деформации тубы. И наконец, параметр Length Flex (Эластичность по длине) позволяет ограничить гибкость тубы под воздействием сил. Он ог раничивает величину растяжения по длине тубы, причиной которого могут стать приложен ные силы. При значении 0 никакого растяжения не будет. Разделы Spiral и Bend Эти разделы содержат простые и понятные параметры деформации кистей, которые весьма полезны при анимации. Параметры раздела Spiral (Спираль) могут заставить де рево наклоняться из стороны в сторону, а параметры раздела Bend (Изгиб) способны за ставить ветви сжаться и разжаться подобно кулаку.
Система Paint Effects
703
Раздел Turbulence В этом разделе применим к объектам Paint Effects магию, создав такие эффекты, как сильный ветер или легкий бриз. 1.
Параметр Turbulence Туре (Тип турбулентности) предоставляет несколько типов воздействий турбулентности на тубы. Каждый из них подробно описан в документа ции Maya. Выберите тип Tree W i n d (Древесный ветер), который применяет турбу лентность таким способом, при котором воздействие на внешние ветви сильнее, чем на внутренние; именно это и характерно для дерева. Чтобы увидеть, как дерево реа гирует на турбулентность, прокрутите временную шкалу. Это прекрасное решение для многих сложных задач, позволяющее интуитивно понятно корректировать пара метры, не прибегая к относительно сложным выражениям в сценариях.
2.
Параметр Interpolation (Интерполяция) контролирует плавность движения. Воспро изведите несколько кадров, чтобы посмотреть, как выглядят движения при способе Linear (Линейно),
а затем переключитесь на Smooth
Over
Time
And
Space
(Сглаживать по времени и пространству) и воспроизведите последовательность сно ва. Как можно заметить, движение ветвей теперь ускоряется и замедляется, а не из меняет направление движения внезапно, как при линейной интерполяции. Остальные параметры контролируют поведение ветра, точнее характеристики турбу лентности. Параметр Turbulence (Турбулентность) определяет интенсивность ветра. Увеличение этого значения сделает ветер сильнее. Параметр Turbulence Speed (Скорость турбулентности) определяет частоту изменения турбулентности во времени. Чем выше это значение, тем чаще меняется ветер. Проведите эксперименты с этими значениями при прокрутке временной шкалы. Убедитесь, насколько интуитивно понятен этот процесс, позволяющий немедленно увидеть изменения в движении. Это одно из самых лучших средств системы Paint Effects говорит само за себя. Прежде чем закончить работу над сценой, попробуйте создать модель трехмерной тени, добавить траву или другие растения на земле возле дерева, а возможно, даже и облака в небе. Если обновление происходит медленно, можно сбросить флажок Draw As Mesh (Рисунок как сетка) в параметрах управления штрихом и корректировать анимацию, используя пред ставление кривой.
Преобразование объектов Paint Effects в объемные геометрические формы Теперь, применив к дереву анимацию, ее можно визуализировать, используя различ ные системы визуализации, например mental ray (см. главу 14, "Улучшенная визуализа ция с помощью mental ray"). Еще одним преимуществом системы Paint Effects является ее способность преобразовать штрихи кистей в объекты NURBS или полигональные объекты. Это весьма существенная особенность системы Paint Effects. История и система Paint Effects
Даже после преобразования объектов Paint Effects в геометрические фигуры, параметры кисти все еще остаются применены к ним, если поддерживается история. Поддерживается не только анимация, вполне можно применять изменения для большинства параметров кис-
Глава 17
704
ти и сделать так, чтобы они воздействовали на преобразованную геометрическую форму. Это действительно потрясающая возможность; она позволяет также объединить динамику жесткого тела, например взаимодействия с объектами Paint Effects, поскольку они больше не просто эффект постпроцесса. (Подробную информацию о связанных с сеткой средствах разбиения см. в разделе "Кисти типа Mesh и карты смещения".) ДЛЯ настройки разрешения сетки выберите пункт меню Paint Effects => Mesh Quality Attributes (Графические эффекты => Атрибуты качества сетки). 1.
Откройте последнюю сцену с анимацией дерева и выделите дерево в перспективном представлении. В меню Maya выберите пункт Modify => Convert => Polygons То Subdiv • (Изменить => Преобразовать => Полигональную поверхность в SDS-поверхность • ) . Важнейшим является параметр Poly Limit (Предел многоугольников), определяющий количество многоугольников, которые могут существовать в преобразованной сетке. Щелчок на кнопке Apply (Применить) преобразует объект в трехмерный. Для созда ваемого дерева следует, вероятно, установить наиболее высокий предел. Не бойтесь ввести значение 1, ООО, ООО, которое при преобразовании "развяжет руки" системе Paint Effects. Это вовсе не означает, что такое количество многоугольников будет ис пользовано обязательно; просто при разбиении не придется снижать качество, задан ное в окне Paint Effects Mesh Quality (Качество сетки графических эффектов).
2.
Выделив дерево (штрих, а не полигональный объект, в который он был только что преобразован), откройте редактор атрибутов. В разделе Mesh Output (Вывод сетки) можно изменить некоторые из параметров преобразования. Таким образом, даже по сле преобразования в трехмерный объект все еще остается выбор, следует ли выво дить четырехугольники вместо треугольников, а также изменять значение параметра Poly Limit (Предел многоугольников). Все вносимые изменения немедленно отобра жаются на преобразованном штрихе. Параметр Color Per Vertex (Цветов на верши ну) предоставляет разработчикам игр некоторые дополнительные возможности по текстурированию преобразованных объектов.
Можно преобразовать модель во фрагменты NURBS, которые работают эффективнее и придают модели более гладкий вид. Если читателя это заинтересовало, проведите экс перименты с объектами, которые не имеют большого количества листьев или цветов. Однако в большинстве случаев наилучшим выбором для объектов Paint Effects является использование многоугольников. Продолжайте э к с п е р и м е н т и р о в а т ь
Главным в изучении огромного количества параметров и возможностей системы Paint Effects являются практические навыки работы с ними. Ищите новые, творческие способы применения эффектов. Попробуйте, например, расположить в некоторых местах сцены частицы, а затем на каждую из них нанести деревья Paint Effects, используя инструмент Particle Instancer (Источник частиц). Еще одним преимуществом системы Paint Effects явля ется возможность визуализации различных древесных анимационных эффектов и их по следующего наложения на плоские карточки, расположенные на сцене. Визуализированную последовательность движений можно также использовать как маску для источника осве щения. Это значит, что, визуализировав простое дерево, обдуваемое бризом, полученную последовательность изображений можно впоследствии использовать для затенения источ ника света. По сути, этот метод существенно расширяет возможности визуализации за счет реалистичных движений теней, позволяя создать соответствующее настроение.
Система Paint Effects
705
Поскольку система Paint Effects является разработкой компании Autodesk и гордостью ее инженеров-программистов, каждый параметр системы подробно описан в справочных файлах Maya. Они будут очень кстати, поскольку настройка и овладение системой Paint Effects потребует времени. Начните с добавления на сцену простых природных элементов, таких как трава или другие растения, моделирующих естественные движения. Постепенно переходите к другим, более интересным способам применения системы Paint Effects для своих творений.
Резюме После ознакомления с материалом этой главы система Paint Effects и ее параметры должны стать существенно понятнее. Система Paint Effects особенно удобна для тех раз работчиков трехмерных моделей, которые хотят избежать использования динамики для моделирования естественных явлений или природных элементов, поскольку она позво ляет наносить эффекты кистью на сцене естественным способом, используя только этот мощнейший инструмент и собственное воображение. В начале этой главы рассматривалась интеграция объектов Paint Effects в трехмер ную сцену. Затем исследовались кисти и штрихи, а также их применение для текстури рования на плоскости в реальном масштабе времени. Затем рассматривалось рисование в трехмерном пространстве кистями типа ThinLine (Тонкая линия) и Mesh (Сетка), а так же перемещение, совместное использование, текстурирование и анимация объемных графических эффектов. Это сопровождалось упражнением по созданию розового куста, в котором с использованием разных кистей было создано дерево. Впоследствии дерево было анимировано и наконец преобразовано в полигональный объект, готовый к визуа лизации в любой системе визуализации.
Анимация твердого тела В нескольких последующих главах рассматриваются различные способы анимации в Maya: использование физического моделирования вместо анимации с помощью ключе вых кадров. В этой главе представлены концепции моделирования с использованием ди намики твердых тел — системы анимации для крупных, "твердых" объектов (таких, как бейсбольная бита или цветочный горшок), которые находятся под воздействием физиче ских сил (например, ветра или гравитации). Зачастую использование моделирования твердых тел позволяет создавать более эффективную и реалистичную физическую ани мацию, чем традиционная анимация по ключевым кадрам. •
Описание динамики твердых тел
•
Создание простого твердого тела
•
Работа с полями и импульсами
•
Анимация в активном и пассивном режимах
•
Добавление связей к твердому телу
•
Использование решателя твердого тела
•
Преобразование анимаций твердого тела в ключевые кадры
Основы динамики твердых тел Динамика твердых тел является частью системы моделирования физических процес сов Maya, имитирующей движение реальных твердых объектов, которые движутся под воздействием физических сил (таких, как гравитация или ветер) и взаимодействующих друг с другом. Уравнения, описывающие движение твердых тел, были разработаны в конце XIX-начале XX вв. и являются одним из величайших достижений классической физики (наряду с описанием движения жидкостей). Динамика твердых тел отличается от традиционной анимации в Maya тем, что не требует установки ключевых кадров для организации перемещения объектов. Вместо этого движением объектов управляет про цессор динамики. Те, кто с помощью ключевых кадров когда-либо пытался моделировать простое движение мяча, подпрыгивающего на земле, вероятно, знают, как трудно сделать мяч похожим на настоящий. Если же попробовать сделать нечто более сложное, напри мер куб, отскакивающий от стены, то можно быстро разочароваться, пытаясь сделать взаимодействия похожими на настоящие. Динамика твердых тел позволяет избавиться от утомительной анимации сложного физического движения и автоматизировать многие процессы. В применении твердых тел
Глава 18
708
нет ничего сложного. Сначала одна или несколько существующих геометрических форм преобразуются в твердые тела. Затем создаются все поля, с которыми они должны взаи модействовать, и задаются необходимые начальные параметры движения твердых тел, определяющие их позицию, скорость и импульс. И наконец, воспроизводится анимация для начала моделирования. На основании установленных начальных параметров процес сор динамики Maya вычисляет положение движущегося тела или тел так, чтобы их пове дение выглядело реалистично. Для эффективного моделирования анимации твердых тел не нужно иметь ученую степень по физике, достаточно немного попрактиковаться с па раметрами. Maya использует также процессор динамики для создания многих других эффектов, вклю чая моделирование частиц, жидкостей, волос и одежды, каждый из которых будет рас сматриваться в следующих главах. Существуют два типа твердых тел: пассивные и активные. Пассивные твердые тела не влиянию полей и не могут перемещаться при столкновениях, хотя могут принимать участие в них. Для организации перемещения или поворота пассивных твер дых тел вполне можно также использовать ключевые кадры. С другой стороны, на ак тивные твердые тела поля воздействуют, и они могут перемещаться в результате столк новений. Однако для них нельзя устанавливать ключевые кадры. Поскольку атрибутами движения и поворота активных твердых тел управляет процессор динамики, их нельзя перемещать по собственному желанию. Как правило, пассивное твердое тело является неподвижной поверхностью взаимо действия, такой как пол, стена или другой объект, фиксированный относительно окру жающего мира. Активное твердое тело является любым типом падающего, движущегося или сталкивающегося объекта (например, баскетбольный мяч или монета). Хотя невоз можность применения ключевых кадров для анимации активных твердых тел кажется большим недостатком, твердые тела можно преобразовать из пассивных в активные в любой момент процесса анимации. Это позволяет твердому телу на некоторое время ста новиться пассивным, а затем вновь активным. Таким образом, часть анимации объекта можно сделать по ключевым кадрам (чтобы переместить его в определенную позицию или оставить с другим объектом на некоторое время), а затем вызвать процессор твердо го тела для реалистичного моделирования физических процессов. Примером замены твердых тел на пассивные и активные является персонаж, бросающий мяч. Пока персо наж готовится к броску, его руки и мяч переводятся в определенную позицию с исполь зованием ключевых кадров. Но как только рука отпускает мяч, для управления его поле том используется динамика твердых тел. подвержены
В следующем разделе описан простой пример работы твердых тел.
Создание простого твердого тела Падение шарика на пол является одним из самых простых (или, по крайней мере, наиболее интуитивно понятным) физических движений, с которым знакомы все. По скольку это такое хорошо знакомое действие, и его настолько просто повторить дома (теннисный шарик и пол кухни отлично подойдут!), падение шарика на пол будет хоро шим примером для объяснения основ концепции моделирования твердого тела. Для под готовки к моделированию необходимо выполнить настройку следующим образом.
Анимация твердого тела 1.
709
Создайте в Майя новую сцену. Создайте NURBS-поверхность или полигональную поверхность, а затем увеличьте ее масштаб до размера сетки Майя: Затем создайте сферу NURBS или полигональную сферу с радиусом, равным единице, и поместите ее над поверхностью. Теперь сцена должна выглядеть так же, как на рис. 18.1.
Рис. 18.1. Сфера над плоскостью 2.
Выделите плоскость и выберите в наборе меню Dynamics (Динамика) пункт Soft/ r i g i d Bodies => Create Passive r i g i d Body (Мягкие/Твердые тела => Создать пассивное
твердое тело). Теперь плоскость является пассивным твердым телом и будет слу жить полом. 3.
Выделите сферу и выберите в наборе меню Dynamics (Динамика) пункт S o f t / r i g i d Bodies => Create Active r i g i d Body (Мягкие/Твердые тела => Создать активное твердое тело). Теперь сфера является активным твердым телом.
4. Чтобы модель динамики воспроизводилось правильно, скорость воспроизведения следует установить в режим Play Every Frame (Воспроизводить каждый кадр), бла годаря чему процессор физических процессов сможет выполнять необходимые вы числения до перехода к следующему кадру. Чтобы перейти в окно Animation Preferences (Предпочтения анимации), выберите в меню W i n d o w (Окно) пункты Settings/Preferences => Preferences (Параметры/Предпочтения => Предпочтения), а затем выберите пункт Settings/Timeline (Параметры/Временная шкала) или щелк ните на кнопке Animation Preferences (Предпочтения анимации) в нижнем правом углу экрана. Дискретизация Дискретизация
(oversampling) позволяет задать количество этапов динамичес кого моделирования на кадр. Чтобы изменить это значение, выберите пункт меню Solvers => Edit Oversampling Or Cache Settings (Решатели => Редактировать параметры дискретизации или кэша). По умолчанию для дискретизации установлено значение 1, озна чающее, что динамика будет рассчитываться для каждого кадра. Если увеличить это зна чение до 10, например, то Майя будет рассчитывать динамическую модель по 10 раз для каждого кадра. Увеличение значения дискретизации может помочь устранить неестествен-
Глава 18
710
ность динамического поведения и сделать моделирование более точным, но может и за медлить воспроизведение. Нововведением Maya 8 является возможность задать частоту дискретизации для воспроизведения динамики без изменения частоты кадров. 5.
В разделе Playback (Воспроизведение) выберите в раскрывающемся списке Playback Speed (Скорость воспроизведения) пункт Play Every Frame (Воспроизводить каж дый кадр).
6.
Закройте окно Animation Preferences (Предпочтения анимации), перейдите в начало анимации и запустите ее снова.
Твердые тела могут быть созданы на основе NURBS-поверхностей или полигональных по верхностей, но не SDS-поверхностей. Если для создания твердого тела была использована модель из SDS-поверхностей, ее придется преобразовать в полигональную. Однако физи ческое поведение для модели SDS можно "имитировать". Можно сдублировать объект, преобразовать его в многоугольники и применить ограничители родительской версии из SDS-поверхностей к полигональной версии. Затем выполнить моделирование на полиго нальной версии и отключить ее видимость. Очевидно, что-то было упущено, так как вообще ничего не произошло! Несмотря на то что на сцене уже присутствуют два твердых тела, все еще не хватает одного важного компонента: должны быть заданы поля сил или некоторое начальное движение. Хотя можно было перейти к панели каналов твердого тела и задать для мяча значение началь ной скорости, вместо этого добавим гравитацию, для большей реалистичности сценария. 1. 2.
Выберите в меню Dynamics (Динамика) пункты Fields => Gravity (Поля => Гравитация). Выберите в меню Window (Окно) пункты relationship Editors => Dynamic relationships
(Редакторы взаимосвязей => Динамические взаимосвязи), чтобы открыть окно Dynamic relationships (Динамические взаимосвязи), которое показано на рис. 18.2.
Рис. 18.2. Окно Dynamic relationships 3.
В левой части окна выберите элемент NURBSphere1 и убедитесь, что справа в окне выделения выбран элемент gravityField1. Если это не так, щелкните на элементе gravityField1, чтобы выделить его.
Более быстрый способ создания твердого тела и соединения его с полем заключается в простом выделении геометрического объекта (до его преобразования в твердое тело) и последующем создании поля. В результате Maya автоматически преобразует выделенный объект в активное твердое тело, которое будет соединено с новым созданным полем. Можно даже выделить несколько объектов и в ходе создания поля преобразовать их все в твердые тела.
711
Анимация твердого тела
ЕСЛИ выделить сферу, а затем создать гравитационное поле, то они будут автоматиче ски соединены вместе. (Если существуют другие активные твердые тела, которые не бы ли выделены, данное поле на них не будет влиять.) Если до создания поля выделить объ екты, на которые оно должно воздействовать, в процессе моделирования твердых тел можно сэкономить время. Чтобы увидеть, как мяч падает на плоскость и, отскочив от нее несколько раз, оста навливается, перейдите в начало анимации и запустите ее. Если воспроизведение пре рвется посередине, переместите ползунок диапазона анимации до уровня 200 кадров. Важно не забывать переходить в начало анимации. Также необходимо, чтобы при моделиро вании в предпочтениях анимации был установлен режим Play Every Frame (Воспроизводить каждый кадр). Поскольку каждый кадр зависит от предыдущего, для вычисления положения каждого объекта в каждом кадре воспроизведение должно пройти через все кадры. Если при работе с анимацией твердого тела будет обнаружено странное поведение, убедитесь, что в предпочтениях установлен режим Play Every Frame (Воспроизводить каждый кадр), и пере ведите анимацию в начало временной шкалы перед ее воспроизведением. Теперь посмотрим, как изменение настроек сцены ПОВЛИЯЛО на анимацию. В панели Channel Box (Панель каналов) можно увидеть элемент rigidBodyn (номер может быть другим), который находится в списке под узлом формы для выделенного объекта. Выде лите плоскость и щелкните на надписи rigidBodyl, чтобы в панели Channel Box (Панель каналов) появились атрибуты твердого тела. В панели Channel Box (Панель каналов) показано множество каналов твердого тела, что обеспечивает полный контроль над ним. В первую очередь займемся атрибутами Mass (Масса),
Bounciness (Прыгучесть),
Damping
(Сопротивление), Static
Friction
(Трение покоя) и Dynamic Friction (Трение движения). Установите значение параметра Bounciness (Прыгучесть) равным 0.9 и запустите воспроизведение анимации сначала. (Не забывайте переходить в начало!) При первом прыжке мяч должен подпрыгнуть поч ти до той высоты, с которой он был брошен. Пройдет немало времени, прежде чем он ос тановится полностью. Теперь попробуйте установить значение параметра Bounciness (Прыгучесть) равным 2. Что происходит? Каждый раз мяч подпрыгивает все выше и вскоре исчезает из поля зрения — настоящий супермяч! В виртуальном мире можно не только моделировать реальность, но и при желании нарушать ее законы. Параметры Mass (Масса), Bounciness (Прыгучесть), Damping (Сопротивление), Static Friction (Трение покоя) и Dynamic Friction (Трение движения) влияют на поведение мяча при его столкновении с плоскостью. Чтобы посмотреть, как изменяется подпрыгивание, поэкспериментируйте с некоторыми из этих параметров (например, Static Friction (Трение покоя), Dynamic Friction (Трение движения) и Damping (Сопротивление)) мяча и плоско сти. Однако имейте в виду, что свойство Mass (Масса) является относительным — оно связано с другими объектами, участвующими в моделировании. Так как пассивное твер дое тело по существу имеет бесконечную массу, установка параметра Mass (Масса) для плоскости не имеет смысла ни для нее, ни для мяча, сталкивающегося с плоскостью. Из менение массы мяча также не вызовет значительных изменений, поскольку гравитация является универсальной силой и одинаково воздействует на все активные объекты. Параметр Mass (Масса) полезен только в том случае, если сталкиваются два или бо лее активных твердых тел. Различие их массы определяют, какой импульс передается от одного объекта другому и как изменяются траектории движения этих объектов. Ниже будет описано, когда при моделировании масса может быть использована эффективно.
712
Глава 18
Эксперименты со значениями различных атрибутов помогут лучше понять, как работают твердые тела. Создайте сцену и, разместив объекты, попробуйте изменить различные свойства для каждого из каналов всех твердых тел. Замечая влияние изменения параметров на поведение тел, можно со временем научиться создавать необходимые эффекты. Можно также опробовать начальные значения атрибутов скорости и импульса активно го твердого тела (мяча). Начальная скорость заставляет мяч двигаться в том или ином на правлении, а импульс подобен небольшому (или огромному) ракетному двигателю, кото рый заставляет мяч ускоряться тем больше, чем дольше на него воздействует импульс.
Использование решателя твердого тела Если динамическое моделирование работает неправильно или воспроизведение не удовлетворительное, в Майя можно настроить процесс вычислений моделирования твердого тела. Настройка параметров наиболее полезна для сцен, в которых необходима точная проверка столкновений и взаимодействий. Окно атрибутов решателя твердого тела, r i g i d Body Solver, можно открыть, выбрав в наборе меню Dynamics (Динамика) пункты Solvers => r i g i d Body Solver (Решатели => Решатель твердого тела) или выделив твердое тело, открыть редактор атрибутов (комбинация клавиш ) и перейти на вкладку rigidSolver. Элементы управления этого окна позволяют настроить процесс вы числений моделирования для достижения лучшей скорости или точности. Рассмотрим, как работает решатель на практике. Создайте пустую сцену, добавьте плоскость и сферу (расположите ее чуть выше над плоскостью), а затем сделайте плос кость пассивным твердым телом. Прежде чем преобразовать сферу в твердое тело, немного усложним ее форму. Сна чала увеличьте количество секций или промежутков между изопараметрическими ли ниями до 16 или более (на узле makeNURBSpherel). Затем сформируйте из сферы не много причудливую, угловатую форму (чем больше углов, тем лучше), наподобие изо браженной на рис. 18.3. Эту форму можно создать очень легко с помощью утилиты Artisan (выберите пункт меню Edit NURBS => Sculpt Geometry Tool • (Редактировать NURBS-noBepxHOCTH => Инструмент рельефа • ) ) . Но можно и непосредственно вытянуть из сферы отдельные контрольные вершины (CV). Выделив сферу, выберите пункт меню Fields => Gravity (Поля => Гравитация) для автомати ческого создания активного твердого тела из сферы и соединения его с полем гравитации. Если запустить анимацию сейчас, то Майя, возможно, будет работать немного мед леннее — ведь теперь необходимо отслеживать много больше поверхностей! Если вос производить по одному кадру (и смотреть вдоль плоскости), то можно заметить, как не которые из поверхностей сферы проходят сквозь плоскость (рис. 18.4). При воспроизведении на полной скорости эти ошибки можно не заметить, но иногда необходимо их исправить, или, возможно, ускорить воспроизведение для особенно сложных случаев. Однако в данном случае можно использовать меню r i g i d Body Solver (Решатель твердого тела) для настройки процесса вычислений моделирования твердого тела. По существу, решатель твердого тела позволяет управлять способом, которым про цессор динамики Майя обрабатывает математику движения и взаимодействия твердых тел. Как было продемонстрировано выше, сложные формы взаимодействуют сложными способами, и настройка параметров вычислений с помощью решателя полезно, когда ре зультат с настройками по умолчанию не точный или слишком быстрый для реалистич ного отображения.
713
Анимация твердого тела
Рис. 183. Видоизмененная сфера над поверхностью плоскости
Рис. 18.4. Видоизмененная сфера проходит сквозь поверхность плоскости
Открыв окно r i g i d Body Solver (Решатель твердого тела) любым из способов (рис. 18.5), можно выполнить все необходимые настройки решателя.
Puc. 18.5. Окно rigid Body Solver Обратите внимание на разделы окна r i g i d Solver States (Состояния твердого тела) и r i g i d Solver Display Options (Параметры представления твердого тела). В них можно включить или отключить большинство основных функций. Для примера попробуйте выполнить следующее.
714
Глава 18
•
Установите флажок Display Velocity (Отображение скорости) и запустите воспроиз ведение анимации. На экране появится стрелка, которая указывает направление ско рости сферы. Ее длина символизирует скорость сферы.
•
Сбросьте флажок State (Состояние). Теперь анимация не выполняется, поскольку при сбрасывании этого флажка выключается решатель. (Это хороший способ быстро от ключить динамику, чтобы уделить основное внимание другим элементам анимации.)
•
Сбросьте флажок Contact Motion (Контактное движение). Теперь сфера ударяется о плоскость, но больше не отскакивает от нее, поскольку динамическое движение не рассчитывается после контакта.
Попробуйте сбрасывать каждый из флажков по очереди в разделе r i g i d Solver States (Состояния твердого тела) и посмотрите, какой эффект это будет иметь при воспроизве дении. После завершения верните флажки в их исходное состояние, чтобы в будущем моделирование выполнялось так, как ожидается. В разделе r i g i d Solver Methods (Методы твердого тела) предлагаются три варианта выбора, хотя обычно используется метод по умолчанию — r u n g e Kutta Adaptive (Адаптивный метод Рунге-Кутта). Однако бывают случаи, когда выполняется сложное моделирование и при этом необходимо быстрее просмотреть его результат при интерак тивном воспроизведении, либо когда точностью моделирования при окончательной ви зуализации можно пренебречь. В таких случаях можно (временно) установить метод r u n g e Kutta (Рунге-Кутта) или Midpoint (Средняя точка). Метод Midpoint (Средняя точ ка) является наименее точным, но самым быстрым. Метод r u n g e Kutta (Рунге-Кутта) яв ляется компромиссом между скоростью и точностью. В случае трансформированного шара в примере, вероятно, большой разницы между тремя методами видно не будет. Методы runge Kutta (Рунге-Кутта) и runge Kutta Adaptive (Адаптивный метод Рунге-Кутта) названы в честь решения Рунге-Кутта (runge Kutta), математического метода решения свя занной системы дифференциальных уравнений с использованием производных первого порядка. В Maya время разбито на дискретные части (определяемые в поле Step Size (Величина шага) раздела rigid Solver Attributes (Атрибуты твердого тела)), и интеграл урав нений аппроксимируется при каждом шаге. Хотя методика математически сложная, она достаточно быстрая и точная для большинства случаев применения. Верхний и наиболее полезный раздел окна r i g i d Body Solver (Решатель твердого те ла) называется r i g i d Solver Attributes (Атрибуты твердого тела). С помощью полей Start Time (Время начала), Scale Velocity (Масштаб скорости), Step Size (Величина шага) и Collision Tolerance (Точность взаимодействия) можно изменять скорость и / и л и точ ность моделирования твердого тела. Рассмотрим каждое из его текстовых полей. Start Time (Время начала). Находящееся здесь значение определяет, когда начнет ра ботать решатель твердого тела. Например, если установить значение параметра Start Time (Время начала) равным 50, решатель твердого тела не начнет работать до 50 кадра. Current Time (Текущее время). Это поле предназначено только для справки (его нельзя изменять) и указывает текущий кадр анимации. Scale Velocity (Масштаб скорости). Находящееся здесь значение используется, только если установлен флажок Display Velocity (Отображение скорости) в разделе r i g i d Solver Display Options (Параметры представления твердого тела). Параметр Scale Velocity (Масштаб скорости) позволяет масштабировать стрелку, торчащую из твердого тела, подгоняя ее размер для лучшего обзора сцены. Этот параметр не влияет
Анимация твердого тела
715
на способ моделирования анимации, он лишь предоставляет художнику больше ин формации о сцене. Step Size (Величина шага). Находящееся здесь значение определяет отрезки времени (измеряемые в долях секунды), на которые решатель разбивает временную шкалу. При меньшем значении этого параметра производится больше вычислений в секунду, но это может означать и более точное моделирование. Если возникают ошибки взаимопроник новения (т.е. два тела проникают друг в друга, как в данном примере), можно сначала попробовать уменьшить значение параметра Step Size (Величина шага). Collision Tolerance (Точность взаимодействия). Находящееся здесь значение указы вает Maya, как тщательно необходимо рассчитывать кадры, в которых происходят столк новения. Большое значение ускорит воспроизведение, но взаимодействия могут стать менее точными. Попробуйте установить значение параметра Collision Tolerance (Точность взаимо действия) равным 0.8 и запустите воспроизведение анимации. Станет заметно, что сфе ра неправильно отскакивает от плоскости. Теперь установите значение этого параметра равным 0.001 (наименьшая возможная величина). Если раньше сфера проваливалась сквозь плоскость, то теперь этого больше не должно происходить (в худшем случае сфе ра будет проваливаться лишь немного). Опробуйте разные значения параметров Step Size (Величина шага) и Collision Tolerance (Точность взаимодействия) и понаблюдайте за изменениями полученной в ре зультате анимации. Нахождение компромисса между скоростью и точностью при слож ном моделировании зачастую является ключевым для эффективного использования ди намики твердого тела.
Ускорение вычислений с помощью дополнительных решателей Каждый дополнительный объект, который должен отслеживаться решателем твердо го тела, может существенно увеличить время вычислений. Чтобы возместить затраты времени, можно ускорить вычисления, разделив анимацию и назначив дополнительные решатели для каждой из частей. Чтобы увидеть, как это работает, необходимо несколько изменить сцену с деформи рованной сферой, созданную в предыдущем примере. (Если та сцена не сохранилась, создайте шар и плоскость, преобразуйте шар в активное твердое тело, а плоскость — в пассивное твердое тело. Затем создайте гравитационное поле и запустите воспроизве дение анимации, чтобы убедиться в том, что шар отскакивает от плоскости.) Теперь создайте второй решатель твердого тела и свяжите его с шаром. 1.
Выберите пункт меню Solvers => Create r i g i d Body Solver (Решатели => Создать реша тель твердого тела), чтобы создать новый решатель, который будет называться r i g i d S o l v e r l (номер может быть другим, в зависимости от количества других ре шателей).
2. Чтобы сделать новый решатель используемым по умолчанию (все новые объекты, преобразуемые в твердые тела, будут связаны с этим решателем), выберите в меню Solvers (Решатели) пункты Current r i g i d Solver => rigidSolverХ (Текущий решатель
твердого тела => решатель твердого тела номер X), где r i g i d S o l v e r Х — решатель, кото рый необходимо сделать используемым по умолчанию.
Глава 18
716
Поскольку оба твердых тела уже созданы с использованием одинакового решателя, одно из двух тел (шар) необходимо связать с новым решателем — rigidSolverl. К со жалению, для этого не существует какой-либо кнопки, но можно быстро создать сцена рий встроенного языка MEL. 3.
Выделите сферу в окне сцены, а затем в командной строке введите следующее: rigidBody -edit
-solver rigidSolverl;
Эта команда заставит Maya изменить решатель твердого тела для любых объектов, выбранных в сцене. Теперь снова запустите воспроизведение анимации. На этот раз шар должен пролететь прямо сквозь плоскость. Хотя и на плоскость, и на шар все еще воздействует гравитация, они больше не взаимодействуют между собой, потому что "живут" у разных решателей. Если необходимо изменить параметры нового решателя твердого тела, сначала следу ет убедиться, что он выбран (с помощью команды меню Solvers => Current r i g i d Solver (Решатели => Текущий решатель твердого тела)), а затем выбрать в меню Solvers (Решатели) пункт r i g i d Body Solver Attributes (Атрибуты решателя твердого тела). По сле этого откроется окно редактора атрибутов с выделенным решателем rigidSolverl. Наконец, при выделенном решателе rigidSolverl создайте новую плоскость (или другой объект), преобразуйте ее в пассивное твердое тело и запустите воспроизведение анимации. Поскольку шар и новая плоскость связаны с одним и тем же решателем, их взаимодействия будут правильными.
Ускорение вычислений с помощью управления взаимодействиями Связывание отдельных объектов твердых тел с разными решателями может увели чить эффективность рабочего процесса. Особенно полезно использовать различные ре шатели для обеспечения достаточной скорости воспроизведения на сценах с множеством динамических твердых тел, поведение которых должно быть различным. Кроме того, можно также управлять взаимодействиями твердых тел на основе отдель ных объектов, при этом уровень управления будет даже выше. Устанавливая и сбрасывая флажок Collision (Взаимодействие) (находящийся в нижней части панели Channel Box (Панель каналов) для узла rigidBody объекта), можно управлять тем, будет ли объект взаимодействовать со всеми остальными объектами твердых тел на сцене. Этот атрибут оп ределяет все взаимодействия данного объекта, а не с каждым объектом в отдельности. Для более точного управления можно задавать взаимодействия лишь между двумя или большим числом объектов, в противоположность включению и отключению взаи модействий между всеми объектами. Для настройки управления взаимодействиями выполните следующие действия. 1. Создайте на новой сцене шар и плоскость, преобразуйте шар в активное твердое те ло, а плоскость — в пассивное. Затем создайте гравитационное поле и соедините его с шаром, чтобы он падал и отскакивал от плоскости. (Теперь уже можно стать экспер том в создании такой сцены!) Запустите воспроизведение сцены, чтобы убедиться в том, что шар правильно отскакивает от плоскости. 2.
Добавьте на сцену конус NURBS и поместите его над поверхностью плоскости, на одну или две единицы ниже шара.
717
Анимация твердого тела 3.
Чтобы сделать этот конус активным твердым телом и соединить его с существующим гравитационным полем, выберите в меню W i n d o w (Окно) пункт r e l a t i o n s h i p Editors => Dynamic r e l a t i o n s h i p s (Редакторы взаимосвязей => Динамические взаимо связи) и, открыв окно Dynamic r e l a t i o n s h i p s (Динамические взаимосвязи), соедини те конус с существующим гравитационным полем. Майя автоматически преобразует конус в активное твердое тело и соединит его с полем гравитации. Сцена должна вы глядеть так, как показано на рис. 18.6.
Рис. 18.6. Сцена с активными тверды ми телами (конусом и шаром) Запустив воспроизведение анимации, можно увидеть, как шар и конус падают на плоскость. Шар ударится о конус, отскочит от его верхушки и толкнет его в направлении своего движения (если он "провалится" сквозь конус, попробуйте настроить параметры решателя r i g i d S o l v e r ) . Теперь попробуем избавиться от столкновений между шаром и конусом. Если, используя флажок Collisions (Взаимодействия), отключить взаимодей ствия для конуса, он не будет сталкиваться с шаром, но и не будет сталкиваться с плоско стью, а это уже проблема. После попытки отключить взаимодействия конуса с помощью флажка Collisions (Взаимодействия) их необходимо снова включить. Выделите конус и шар, а затем выберите пункт меню Solvers => Set r i g i d Body Interpenetration (Решатели => Установить взаимопроникновение твердого тела). Запустив воспроизведение модели, можно увидеть, что шар и конус отскакивают от плоскости, но не друг от друга. Чтобы снова установить взаимодействия между шаром и конусом, вы делите их и выберите пункт меню Solvers => Set r i g i d Body Collision (Решатели => Установить взаимодействие твердого тела). Кроме элементов управления взаимодействиями меню Solver (Решатель), каждый объект твердого тела имеет параметр, называемый Collision Layer (Слой взаимодейст вий). Этот параметр разделяет взаимодействия объектов на сцене таким образом, чтобы не все объекты сцены участвовали в столкновениях. Для ускорения вычислений, упро щения анимации, получения определенных эффектов и т.д. объектам можно назначить разные слои взаимодействий (collision layer). Создадим пример, демонстрирующий работу слоев взаимодействия. Здесь ряд кубов будет сталкиваться друг с другом, сначала без использования слоев взаимодействий, а потом с ними. 1. Создайте новую сцену, затем создайте NURBS-поверхность и сделайте ее размер достаточно большим, чтобы объекты могли отскакивать от нее. 2. Создайте полигональный куб (с ними легче работать, чем с кубами NURBS, по скольку последние состоят из множества фрагментов). Поместите куб над плоско-
Анимация твердого тела
Рис. 18.8. Кубы сталкиваются (все на одном уровне взаимодействия)
719
Рис. 18.9. Кубы сталкиваются (на отдельных слоях)
При анимации сцены с большим количеством динамических объектов, таких как раз бивающееся стекло, управление взаимодействиями с помощью слоев бесполезно.
Работа с полями и импульсами Движением активного твердого тела можно управлять несколькими способами. Как будет продемонстрировано далее в этой главе, можно непосредственно установить зна чения импульса, начальной скорости и свойств вращения твердого тела. Движением можно также управлять косвенно, по пути взаимодействия с другими активными или пассивными телами. Кроме того, на перемещение активных жестких тел воздействуют поля, прилагая к ним определенную силу. Например, если выстрел вызывает рассеивание частиц пыли по сцене, можно использовать воздушные силы для создания динамической модели. Поля полезны тем, что они по характеру очень похожи на силы, которые воздействуют на пе ремещение объектов в реальной жизни. Выше уже было показано, насколько полезным является гравитационное поле. Всеми полями управляют одинаковые первичные атрибуты: Magnitude (Величина), Attenuation (Затухание), Use Max Distance (Использовать максимальное расстояние), Max Distance (Максимальное расстояние) и Volume Shape (Форма объема). Атрибут Magnitude (Величина) определяет силу, с которой поле влияет на объект (или объекты), а атрибут Attenuation (Затухание) является коэффициентом, который определяет, насколько уменьшается сила поля по мере увеличения расстояния между полем и объектом. Атрибуты Magnitude (Величина) и Attenuation (Затухание) определяют, насколько сильно поле непосредственно влияет на динамические объекты. Свойства Use Мах Distance (Использовать максимальное расстояние), Max Distance (Максимальное рас стояние) и Volume Shape (Форма объема) определяют максимальную область влияния поля. Эти три атрибута позволяют осуществлять динамические изменения в определен ных зонах трехмерного пространства. Если используется атрибут Use Max Distance (Использовать максимальное расстоя ние), то параметр Max Distance (Максимальное расстояние) указывает, насколько близ ко к полю должен быть расположен объект, чтобы поле начало оказывать на него влия ние. Поле не воздействует на объекты, которые находятся на большем расстоянии от расположения поля, чем указано атрибутом Max Distance (Максимальное расстояние). Параметр V o l u m e S h a p e (Форма объема) упрощает управление областью влияния поля, он задает для поля определенный объем. Сила поля воздействует на те динами ческие объекты, которые находятся в пределах этого объема. Параметр V o l u m e S h a p e (Форма объема) позволяет визуально отобразить область влияния и допускает преоб разование. Чтобы определить размеры влияния поля, гораздо проще представить его объем визуально, а не с помощью значения параметра Max Distance (Максимальное расстояние).
Глава 1 8
720 Давайте посмотрим, как работают поля.
1. На новой сцене создайте пассивную твердую плоскость поля по всей сетке, а затем создайте восемь сфер. 2.
Разместите сферы в два ряда по четыре друг напротив друга, как показано на рис. 18.10. Один ряд должен быть ближе к краю, чем другой.
Рис. 18.10. Восемь сфер, выстроенных в ряды друг напротив друга 3.
Выделите сферы и создайте гравитационное поле.
4.
Выделите сферы снова и создайте радиальное поле. Установите его атрибут m a g n i t u d e равным -1, а для атрибута v o l u m e s h a p e установите значение Sphere (Сфера). На первом кадре установите ключевой кадр и задайте масштаб 1,1,1.
5.
Перейдите к кадру 80 и увеличьте объем поля примерно до размера плоскости осно вания.
При воспроизведении анимации можно заметить, что радиальное поле воздействует на сферы, находящиеся в середине ряда, ближайшего к краю плоскости. По мере увели чения объема поля оно начинает также воздействовать и на другие сферы. Попробуйте изменить значение атрибута v o l u m e s h a p e на цилиндр или куб и перезапустите про цесс моделирования. Также можно попробовать изменить свойство Magnitude (Величина) радиального поля так, чтобы некоторые сферы отскакивали от объема поля, как только они попадали в него. Теперь рассмотрим, как использовать твердые тела для реалистичного моделирова ния пули, выстреливаемой из действительно большой пушки. В качестве пули будет ис пользован небольшой цилиндр, а в качестве планеты — большая сфера. Но читатель мо жет заменить эти объекты практически любыми собственными. 1.
Создайте сферу радиусом 500 единиц, переместите ее вниз на 500 единиц по оси Y и назовите ее planet (планета). Измените масштаб так, чтобы увидеть верхнюю часть планеты.
Из-за большого размера этой сферы камера отсекает ее часть, поэтому сферу не видно полно стью. Для решения этой проблемы выделите камеру обзора, выбрав в меню View (Просмотр) пункт Select Camera (Выбор камеры). Нажмите комбинацию клавиш < Ctrl + А >, чтобы открыть окно Attribute Editor (Редактор атрибутов), и в разделе Camera Attributes (Атрибуты камеры) уве личьте значение параметра Far Clip Plane (Дальний план) примерно до 10000. 2.
Создайте цилиндр (с названием b u l l e t (пуля)) и измените его масштаб так, чтобы он выглядел, как на рис. 18.11. Для большей четкости окраску пули можно сделать
Анимация твердого тела
721
отличающейся от окраски планеты. (Попробуйте смоделировать пушку, которая вы стреливает пулю). В действительности размер пули не имеет значения, главное, чтобы она хорошо смотрелась. (Авторы повернули ее боком и немного растянули.) Убедитесь в том, что пуля размещена немного выше поверхности планеты, иначе может произой ти ошибка взаимопроникновения твердых тел, что затруднит процесс моделирования.
Рис. 18.11. Создание изогнутой поверхности планеты и пули 3.
Сделайте сферу пассивным твердым телом (пункт меню S o f t / r i g i d Bodies => Create Passive r i g i d Body (Мягкие/Твердые тела => Создать пассивное твердое тело)), а ци линдр преобразуйте в активное твердое тело (пункт меню S o f t / r i g i d Bodies => Create Active r i g i d Body (Мягкие/Твердые тела => Создать активное твердое тело)).
Для этих объектов можно создать простое гравитационное поле, но гравитация при тягивает все в одном направлении. Однако в данном случае необходимо поле, центр ко торого будет располагаться в центре планеты. Поэтому используем поле Newton (Ньютон), названное в честь сэра Исаака Ньютона (Sir Isaac Newton)). Поле Ньютона имеет источник гравитации в центре планеты, который притягивает к себе все активные твердые тела. Сила этого источника зависит от расстояния между планетой и объектом. Этот чуть более сложный вариант гравитации создаст баллистическую дугу для пули, которая движется вдоль поверхности планеты. 4.
Выберите в меню Fields (Поля) пункт Newton (Ньютон), а затем, удерживая нажатой клавишу <Shift>, выделите сферу и выберите в меню Fields (Поля) пункт Use Selected As Source Of Field (Использовать выделенное как источник поля). Теперь в окнах Outliner (Иерархическая структура) и Hypergraph (Гиперграф) появилось по ле Newton (Ньютон), связанное с планетой.
5.
Выделите цилиндр, затем выберите в меню W i n d o w (Окно) пункт r e l a t i o n s h i p Editors => Dynamic relationships (Редакторы взаимосвязей => Динамические взаимо связи), чтобы открыть окно Dynamic r e l a t i o n s h i p s (Динамические взаимосвязи).
6. Чтобы выбрать поле Newton (Ньютон), щелкните на нем. В результате рядом с ним появится конус. 7.
Установите значение длины кадра равным 1000 или больше и воспроизведите ани мацию.
Если выделить поле, а затем, нажав клавишу < Shift>, выделить объект и выбрать в меню Fields (Поля) пункт Use Selected As Source Of Field (Использовать выделенное как источник поля), то объект будет использован в качестве источника силы поля. Поле будет переме щаться вместе со своим источником и может быть использовано для создания возмущений или турбулентности при пересечении им твердого тела или частиц. Пуля должна упасть на поверхность планеты, немного подпрыгнуть и остаться на месте или немного покрутиться на поверхности сферы. Если этого не произойдет, можно
722
Глава 18
попробовать установить значение свойства Magnitude (Величина) поля Newton (Ньютон) равным шести или семи и проверить, поможет ли это. А сейчас смоделируем гравитацию планеты (чуть не упустили из виду импульс, кото рый используется пушкой для выброса пули из ствола). При выделенной пуле обрати тесь к разделу rigidBody2 панели Channel Box (Панель каналов) и установите для пара метра пули i m p u l s e X значение, равное примерно пяти. (В зависимости от направления, в котором повернута пуля, это может быть параметр i m p u l s e Z . ) Теперь пуля будет вы летать из пушки с большим ускорением, однако вполне очевидно, что это не слишком реалистично. Для более точного соответствия выстрелу необходимо смоделировать ко роткий импульс от взрыва пороха в пороховой камере. Для имитации импульса можно использовать один или два ключевых кадра, расположенных на первых кадрах начала мультфильма. 1. Выберите импульс X (или Z), переместите ползунок времени на первый кадр, уста новите для параметра Impulse (Импульс) значение 20, а затем, щелкнув правой кнопкой мыши, выберите в появившемся контекстном меню пункт Key Selected (Установить ключевой кадр для выбранного). 2. Перейдите к третьему кадру и установите значение атрибута i m p u l s e X равным ну лю. (Импульс уменьшится с 20 до 0 на протяжении двух промежуточных кадров.) Атрибут
Impulse
или
Initial
Velocity?
Чтобы придать пуле ускорение и избежать применения ключевых кадров для канала Impulse, можно воспользоваться атрибутом Initial Velocity. Начальные атрибуты (Initial Velocity по координатам X, Y и Z, а также Initial Spin по координатам X, Y
и Z) придают твердому телу только начальное ускорение, но не обеспечивают постоянного ускорения в отличие от атрибута impulse. Следовательно, атрибут Initial Velocity лучше подходит для тех твердых тел, которые должны иметь ускорение только в начале анимации, а атрибут Impulse можно использовать для задания ускорения в любой момент времени на протяжении анимации. После запуска анимации пуля вылетит, пролетит по дуге над планетой, а затем упадет и пройдет сквозь ее поверхность! Не совсем тот результат, который ожидался. Проблема заключается в следующем: разбиение (способ, которым процессор моделирования Майя разделяет сферу на фрагменты) слишком мало для размера сферы. Эту проблему можно решить четырьмя способами. Первый заключается в использовании атрибутов решателя твердого тела. В данном случае наиболее полезны первые два элемента управления: Step Size (Величина шага), который задает периодичность вычисления уравнений решателем (в долях секунды), и Collision Tolerance (Точность взаимодействия), определяющий, как точно рассчитываются взаимодействия. Чем меньше значения обоих параметров, тем точнее результаты, но соответственно тем больше времени занимает моделирование. Та ким образом, желательно устанавливать как можно большие значения, но которые будут соответствовать требованиям заданного сценария. Второй способ заключается в усилении разбиения сферы за счет увеличении количе ства промежутков между изопараметрическими линиями в направлениях U и V. Однако это потребует создания новой сферы для твердого тела. Третий способ заключается в увеличении коэффициента разбиения самого твердого тела. Выделите сферу, откройте редактор атрибутов, перейдите на вкладку rigidBodyl и
Анимация твердого тела
723
прокрутите вниз панель Performance Attributes (Атрибуты производительности). По умолчанию коэффициент разбиения имеет значение 200, но его можно увеличивать и до более высокого значения, пока пуля не перестанет проваливаться сквозь поверхность планеты. Однако необходимо отметить, что чем выше значение коэффициента разбие ния, тем дольше будет длиться процесс обработки анимации. Четвертый способ заключается в использовании вместо планеты упрощенного объекта (proxy object). Под панелью Performance Attributes (Атрибуты производительности) рас положено меню Stand In (Замена), в котором можно выбрать объект Cube (Куб) или Sphere (Сфера). Поскольку планета является сферическим объектом, необходимо выбрать упрощенный объект Sphere (Сфера). (Форма замещающих объектов вычисляется матема тически, а не по сетке, поэтому они лучше подходят для проверки взаимодействий.) Хотя этот метод применим лишь для объектов, форма которых близка к сферической или куби ческой, он быстро просчитывается, и именно этот метод будет использоваться в примере. После того как были получены хорошие результаты основного моделирования, мож но изменить настройки для получения различных эффектов. Установка большего значе ния начального импульса, конечно же, позволит пуле лететь быстрее и дальше. При дос таточно большом значении импульса пуля перестанет падать вниз и выйдет на орбиту планеты (в данном примере это происходит при значении 45). Если слишком сильно увеличить значение импульса, то пуля вылетит в космос. Для замедления полета пули можно также добавить к ней поле сопротивления, моделирующее сопротивление воздуха (убедитесь, что значение Attenuation (Затухание) установлено в нуль, и поэксперимен тируйте с параметром Magnitude (Величина)). Оказывается, необходимо значительно увеличить значение импульса, чтобы пуля пролетела то же расстояние, что и прежде. Попробуйте устанавливать разные значения этих параметров, пока не почувствуете, что действительно понимаете, как все это работает вместе. Данный процесс является оп ределяющим этапом в изучении того, как работает процессор моделирования Maya, и это стоит затраченного времени. После создания интересной модели сохраните полученный файл для дальнейшего использования в этой главе.
Анимация в активном и пассивном режимах В этом разделе для изучения анимации твердых тел, которые переходят из активной формы в пассивную, создается простая модель бильярдного стола. В процессе разработ ки динамика обычно используется как вспомогательный механизм, дополняющий тра диционные подходы. Динамика позволяет создать реалистичное движение, что оживляет сцену, но зачастую одной динамики бывает недостаточно. Поэтому важно понять, как при постановке переключаться между движениями, созданными с помощью ключевых кадров и с помощью процессора динамики. Далее будут созданы простой бильярдный стол из кубов, набор из десяти бильярдных шаров и разбивающий шар. Затем будут установлены ключевые кадры разбивающего шара для разбиения других шаров, а процессор динамики позаботится об остальной час ти моделирования.
Создание объектов Для моделирования реалистичный бильярдный стол не понадобится — вполне по дойдет несколько правильно расположенных блоков. В действительности, даже если
Глава 1 8
724
сцена содержит сложную геометрическую форму, для ускорения вычислений обычно лучше использовать простые формы. Итак, создадим объекты бильярдного стола и шаров. 1.
Создайте полигональный куб и измените его ширину (толщина должна быть доста точно малой). Готовый бильярдный стол показан на рис. 18.12.
Рис. 18.12. Простой бильярдный стол 2.
Создайте несколько полигональных кубов и расположите их вокруг стола в качестве бортов, от которых будут отскакивать шары. Не забудьте оставить свободные места там, где должны быть лузы, и, самое главное, обратите внимание на то, чтобы борта не касались стола и друг друга.
Очень важно не допускать, чтобы твердые тела пересекались, когда в этом нет необходи мости. Взаимопроникновение некоторых твердых тел может привести ко множеству про блем при моделировании, а также замедлить его. При взаимопроникновении объектов в редакторе сценариев отображается сообщение об ошибке. 3.
Создайте разбивающий шар на основе сферы NURBS и поместите его на одном кон це стола, чуть выше поверхности.
4.
Создайте несколько шаров (или дубликатов разбивающего шара) и разместите их в треугольнике на другом конце стола (см. рис. 18.12). Убедитесь, что они не касают ся друг друга и поверхности стола.
5.
Выделите все шары, затем выберите в меню Modify (Изменить) пункт FreeZe Transformations (Фиксировать преобразования), чтобы установить нулевые значе ния для всех параметров бильярдных шаров.
Обнуление сбрасывает значения всех параметров объекта, включая параметры Move (Пере мещение), rotate (Поворот) и Scale (Масштаб), не перемещая сам объект. В результате объ ект будет выглядеть, как изначально созданный в текущей позиции. Многие функции Майя, особенно учитывающие историю, работают намного лучше, если предварительно обнулить параметры используемого объекта. Блокировка изменений обычно используется при работе с динамикой, так как объек ты становятся "чище" для последующей обработки в Майя. Кроме того, удаление исто-
Анимация твердого тела
725
рии любых структур, присоединенных к динамическому объекту, поможет избежать зна чительных замедлений или странных результатов. Если нет необходимости оставлять историю для объекта, лучше ее удалить перед преобразованием объекта в твердое тело.
Настройка моделирования Для первоначальной настройки динамики сцены выполните следующие действия. 1.
Выделите элементы, которые составляют бильярдный стол, а затем выберите в набо ре меню Dynamics (Динамика) пункты S o f t / r i g i d Bodies => Create Passive r i g i d Body
(Мягкие/Твердые тела => Создать пассивное твердое тело). Если нужно, откройте ок но параметров и убедитесь, что все параметры сброшены в значения по умолчанию (выберите в окне настроек пункты Edit => r e s e t Settings (Правка => Восстановить па раметры по умолчанию)). 2.
Выделите на сцене все бильярдные шары и преобразуйте их в активные твердые тела с параметрами по умолчанию, выбрав пункт меню S o f t / r i g i d Bodies => Create Active r i g i d Body (Мягкие/Твердые тела => Создать активное твердое тело). На самом деле не имеет значения, будет ли разбивающий шар активным или пассивным телом, по скольку сначала он будет участвовать в анимации как пассивное тело, чтобы можно было для него установить ключевые кадры.
3. Теперь нужно создать и присоединить гравитационное поле, чтобы объекты притя гивались к столу. Выделите шары и выберите пункт меню Fields => Gravity (Поля => Гравитация). И снова перед применением гравитации удостоверьтесь, что параметры имеют значения по умолчанию. Теперь постановка динамики на сцене закончена, и нужно переходить к анимации. Если за пустить анимацию сейчас, можно увидеть, как шары немного покачиваются на поверхности стола. Благодаря гравитации они падают вниз, поскольку были расположены на небольшом расстоянии от поверхности, а также слегка отталкиваются друг от друга. Чтобы избавиться от такого явления, можно изменить параметры трения и прыгучести, но в данном случае легче сделать все шары пассивными, прежде чем они упадут. 4.
Выделите в сцене все шары, перейдите к панели Channel Box (Панель каналов) и ус тановите параметры канала активности твердого тела в состояние Off (Отключено). Теперь при запуске анимации не должно быть видно вообще никакого движения.
Анимация сцены Сначала с помощью ключевых кадров на сцене выполняется анимация разбивающего шара, который покатится к остальным шарам. Затем значение канала A c t i v e устанав ливается в состояние On (Включено), и процессор динамики вычисляет, куда направятся все шары. 1. Выделите разбивающий шар и установите для него ключевой кадр пассивного твер дого тела, выбрав пункт меню S o f t / r i g i d Bodies => Set Passive Key (Мягкие/Твердые тела => Установить ключевой кадр пассивного твердого тела) в первом кадре анима ции. При этом для шара будут установлены ключевые кадры по каналам перемеще ния и поворота, а также будет выключено состояние Active (Активно) твердого тела. 2.
Перейдите к пятому кадру, переместите разбивающий шар к вершине треугольника и установите второй ключевой кадр пассивного твердого тела (рис. 18.13).
Глава 18
726
Рис. 18.13- Установка ключевых кадров разбиваю щего шара для удара по остальным шарам 3.
Перейдите к шестому кадру и сделайте разбивающий шар активным твердым телом, вы брав пункт меню Soft/rigid Bodies => Set Active Key (Мягкие/Твердые тела => Установить ключевой кадр активного твердого тела). Шар станет активным твердым телом, и с этого кадра программа моделирования динамики начнет расчет движения. У шара останется импульс, который был установлен во время анимации с помощью ключевых кадров.
4.
В пятом кадре установите ключевой кадр пассивного твердого тела для всех осталь ных шаров, а на шестом кадре установите для них ключевой кадр активного твердого тела. Начиная с шестого кадра анимация будет выполняться автоматически по мере моделирования взаимодействия шаров со столом.
Д в и ж е н и я без у с т а н о в к и ключевых кадров
Для автоматического перемещения и поворота можно вручную изменять значения свойства Active (Активно) без установки ключевых кадров. Выделите твердое тело, и в панели Channel Box (Панель каналов), в нижней части каналов rigidBody, появится канал Active. Для преобразования пассивного твердого тела в активное введите значение on или число 1 и установите ключевые кадры для этого тела. Для преобразования тела обратно в пассивное введите в поле канала Active значение off или число 0 и установите ключевые кадры. Хотя этот метод работает в большинстве случаев, компания Autodesk рекомендует пользователям использовать вместо него команды Set Active Key (Установить ключевой кадр активного твер дого тела) и Set Passive Key (Установить ключевой кадр пассивного твердого тела). Теперь разбивающий шар станет активным твердым телом непосредственно перед тем, как шары должны столкнуться. Это действие позволяет использовать преимущество "наследования" скорости и поворота сферы после движения с помощью ключевых кад ров, так что она ударит по шарам со значительной силой. Чтобы изменить траекторию движения разбивающего шара, перейдите к первому или пятому кадру и сбросьте уста новленный для шара ключевой кадр пассивного твердого тела. При воспроизведении анимации можно заметить, что шары быстро переходят в состояние покоя после столкновения и (в зависимости от силы столкновения) один из шаров полностью отлетает от стола. Для решения этих проблем измените вели чину гравитации с принятого по умолчанию значения 9.8 до большего значения, напри мер 5 0. Также уменьшите значения трения покоя и трения движения для стола и шаров со значения 0.2 до меньшей величины, например 0 . 01, и увеличьте значение прыгуче-
Анимация твердого тела
727
сти шаров, например до 0. 9, поскольку шары являются высоко эластичными при столк новениях, и, таким образом, большая часть импульса шаров сохранится при столкнове нии. Уменьшение трения позволит шарам легче скользить и катиться, в то время как вы сокое значение параметра Bounciness (Прыгучесть) позволит импульсу разбивающего шара эффективно перейти к другим шарам. Поэкспериментируйте с различными на стройками, пока модель не получится удовлетворительной. На рис. 18.14 показан ре зультат эффективного моделирования. На компакт-диске содержится файл законченно го примера p o o l T a b l e . m b , в котором имеются правильно установленные параметры.
Рис. 18.14. Хорошее моделирование разбиения шаров Как видно из этого примера, динамика твердого тела является процессом уравнове шивания значений различных параметров. Иногда этот процесс может стать замысловатым действием, но он становится проще, если запастись терпением и записывать изменяемые значения. Многократное изменение параметров является хорошим способом ознакомиться с работой динамики. И тогда за отдельными деревьями можно будет увидеть лес.
Добавление ограничителей к твердому телу В качестве более сложного примера использования твердых тел с ограничителями рассмотрим игрушку, называемую кинетические шары. Это популярная настольная иг рушка, представляющая собой набор из пяти хромированных шаров подвешенных на ни тях. При ударе одного крайнего шара по другому импульс проходит по всем шарам и от брасывает крайний шар на другом конце, который затем снова ударяется о соседний шар, и все повторяется сначала. В этом примере будет рассмотрено, как добавлять ограничи тели и настраивать решатель твердого тела ( r i g i d Body Solver) для ускорения некоторых сложных вычислений. Сначала создадим и настроим кинетические шары. 1.
Создайте новую сцену. Затем создайте сферу NURBS и расположите ее над поверх ностью плоскости (установив значение канала translateY равным единице) в ка честве центрального шара. Создайте четыре аналогичные сферы, а затем выстройте шары в ряд с небольшим промежутком между ними.
Глава 18
728 2.
Создайте ниже шаров основания игрушки и рамки сбоку, как показано на рис. 18.15. Можно создать любую причудливую конструкцию, но в этом случае вполне подой дут цилиндры и плоскости. Эти рамки будут использованы только для привязки, но при желании шары можно заставить взаимодействовать и с ними.
Рис. 18.15. Хромированные шары, размещенные внутри рамок Убедитесь, что каждый шар немного отделен от остальных (т.е. они не должны ка саться друг друга). Иначе при создании твердых тел возникнет ошибка взаимопро никновения, и процесс моделирования нарушится. После создания, размещения и поворота первого дубликата шара можно использовать возможность Smart Transform (Интеллектуальное преобразование), доступную в окне свойств Duplicate (Дублировать), для создания остальных шаров. Каждый аналогичный шар будет ав томатически перемещен в необходимое положение. 3.
Выделите все шары и преобразуйте их в активные твердые тела. Сохранив выделе ние, создайте гравитационное поле и установите значение его параметра Magnitude (Величина) равным 50.
В качестве альтернативы, если гравитационное поле было создано в момент, когда сферы не выделены, их можно подключить в окне Dynamic relationships (Динамические взаимо связи). Выделив неподключенную сферу, выберите в меню Window (Окно) пункты relationship Editors => Dynamic relationships (Редакторы взаимосвязей => Динамические взаи мосвязи), а для соединения со сферой выберите элемент g r a v i t y F i e l d 1 . Выделите дру гие неподключенные сферы и свяжите их по очереди с гравитационным полем в окне Dynamic relationships (Динамические взаимосвязи). В настоящей игрушке каждый шар соединен нитью с боковыми перекладинами рам ки. Шары раскачиваются вперед-назад на удерживающих их нитях. Для отклонения ша ров от горизонтального уровня используются динамические ограничители (dynamic constraint). Подобно анимационным ограничителям, динамические ограничители созда ют взаимосвязи, которые ограничивают их движения относительно друг друга. 4.
Выберите первый шар в группе. Выберите пункт меню S o f t / r i g i d Bodies => Create Nail Constraint (Мягкие/Твердые тела => Создать ограничитель Nail), и в центре сферы появится уже выделенный ограничитель Nail.
5.
Переместите узел ограничителя, расположенный непосредственно над шаром, на пе рекладину рамки. Выделите шар снова и создайте еще один ограничитель Nail, раз-
729
Анимация твердого тела
местив его узел на другой перекладине. Создайте по два ограничителя Nail для каж дого шара и разместите их на перекладинах, как показано на рис. 18.16.
Рис. 18.16. Размещение ограничителей Nail на каждой перекладине рамки 6.
Переместите две внешние пары ограничителей немного поближе к центру, чтобы за ставить шары сближаться при запуске полученной в результате анимации, как пока зано на рис. 18.17.
Рис. 18.17. Настройка ограничителей Nail 7.
При запуске полученной в результате анимации (воспроизведении сцены) можно заметить, что шары не падают прямо вниз под действием гравитации, а прижимают ся друг к другу, поскольку их удерживают ограничители Nail. Эти ограничители за ставляют шары действовать так, будто они подвешены на веревках, прикрепленных к потолку. Поскольку ограничители внешних двух шаров были перемещены, вся группа шаров должна немного покачнуться при запуске анимации.
8. Чтобы заставить шары выполнять постукивающие движения, которыми известна эта иг рушка, необходимо настроить начальное движение для одного из крайних шаров. Выде лите крайний шар слева и установите значение его атрибута Initial Velocity Z рав ным -30. В результате шар должен будет отклониться вверх и в сторону от остальных шаров. Под воздействием гравитации он вернется обратно и ударит группу шаров. 9. Увеличьте диапазон кадров, например до 5000, и вернитесь обратно к первому кадру. Запустите воспроизведение сцены. Теперь можно заметить, как крайний шар откло няется вверх и назад для удара по остальным. Они все резко дергаются вправо и не много подпрыгивают, это совсем неестественное поведение. Чтобы заставить игруш ку работать правильно, необходимо подобрать подходящие атрибуты твердого тела.
Глава 18
730
10. Выделите все сферы и в панели Channel Box (Панель каналов) установите значение параметра Bounciness (Прыгучесть) равным 0.9. Значение параметра Static Friction (Трение покоя) установите равным нулю и убедитесь, что значение параметра Damping (Сопротивление) также равно нулю. (Если шары получились слишком "прыгучими", можно уменьшить значение параметра Damping (Сопротивление), на пример до 0. 05, чтобы они останавливались быстрее.) После перезапуска воспроизведения можно заметить, что игрушка работает значи тельно лучше. На рис. 18.18 показано, как крайние шары отскакивают вперед и назад.
Рис. 18.18. Игрушка в действии 1 1 . Теперь немного перенастроим сцену. Сделаем так, чтобы первый шар не отклонялся вверх. Было бы красивее, если бы вместо этого первый шар падал вниз из верхней точки своей траектории. Запустите воспроизведение сцены и, когда шар достигнет верхней точки своей траектории, остановите ее, но не переходите в начало анимации. Выберите в меню Solvers (Решатели) пункты Initial State => Set For All Dynamic (Начальное состояние => Установить для всех динамических объектов). Тем самым текущее состояние всех динамических объектов в Майя будет установлено в качестве начального состояния, т.е. все они будут запускаться из этого положения. 12. Теперь выберите первый шар и верните значение его начальной скорости по оси Z обратно в нуль, в результате он не сможет подниматься выше. Теперь при запуске анимации сначала крайний шар будет падать вниз, а другие шары уже будут внизу. На рис. 18.19 показано начальное состояние кинетических шаров. Чтобы посмотреть, как изменится результат, можно попробовать ввести другие зна чения для гравитации и динамических параметров. Как только будет изменен один па раметр, окажется, что его нужно уравновесить регулировкой одного или двух других па раметров, чтобы анимация выполнялась правильно. В качестве упражнения попробуйте добиться, чтобы кинетические шары сохраняли движение как можно дольше, или попро буйте в первом кадре поднять вверх два шара.
Преобразование анимации твердого тела в анимацию по ключевым кадрам (фиксация) На заключительном этапе работы с анимацией твердого тела может понадобиться корректировка результата работы процессора моделирования. Хотя моделирование
Анимация твердого тела
731
твердого тела не может выполняться с установкой ключевых кадров (за исключением значений свойств), ее результат можно фиксировать с помощью ключевых кадров.
Рис. 18:19. После установки начального состояния шары будут стартовать из правильного положения Фиксация (baking) — это процесс, используемый в Maya для создания набора ключе вых кадров, которые имитируют движение, полученное при моделировании твердого те ла. Эти ключевые кадры имитируют движение объектов твердых тел, однако при этом остается возможность перейти в редактор анимационных кривых или в другой редактор и откорректировать отдельные кадры (даже изменить движения глобально). В простых случаях это вполне удается, однако откорректировать по ключевым кадрам достаточно сложные движения, сохранив при этом впечатление достоверности исходной модели, может оказаться весьма трудно. Поэтому лучше добиться правдоподобности на этапе мо делирования твердого тела, до перехода к фиксации анимации. Чтобы впоследствии можно было вернуться к моделированию твердого тела, сохраняйте отдельные копии проекта перед фиксацией. Дело в том, что после фиксации вернуться к модели твердого тела уже невозможно! Фиксация модели твердого тела необходима также при визуализации с использованием нескольких машин. Кроме того, визуализация результата моделирования твердого тела осуществляться только на одной (и только одной) машине, а анимацию по ключевым кад рам можно разделить на части и визуализировать на нескольких машинах. Выделите кубы в предыдущем примере (или откройте любую сцену с анимацией твер дых тел) и выберите пункт меню Edit => Keys => Bake Simulation • (Правка => Ключевые кад ры => Фиксировать модель). Убедитесь, что в окне свойств параметр Hierarchy (Иерар хия) установлен в состояние Selected (Выбран), а параметру Channels (Каналы) при своено значение From Channel Box (Из панели каналов). Затем выделите в панели кана лов каналы поворота и перемещения, а затем щелкните на кнопке Bake (Фиксировать). Теперь можно смотреть получающийся результат, пока Maya будет моделировать дви жение, добавляя ключевые кадры по мере необходимости. Когда анимация завершится, выделите любой из кубов и откройте редактор анимаци онных кривых (Graph Editor). На экране должно появиться изображение, похожее на
732
Глава 18
приведенное на рис. 18.20. Обратите внимание, как первое столкновение изменяет на правление движения куба (на графике оно выглядит как острый пик в направлении X).
Рис. 18.20. Фиксация модели по ключевым кадрам При внимательном рассмотрении можно заметить, что в процессе моделирования создается очень много ключевых кадров — фактически по одному на каждый кадр! Суще ствует несколько способов уменьшения количества ключевых кадров. Самый простой заключается в удалении тех кадров, которые предназначены для каналов поворота кубов (так как у них нет никакого начального поворота). Можно также выбрать в окне редак тора анимационных кривых пункт меню Curves => Simplify Curve (Кривые => Упростить кривые) (для получения различных эффектов настройки можно изменить). Безусловно, анимационные кривые можно перемещать во времени и пространстве, позволяя кубу отскакивать, когда он еще находится над плоскостью, или "погружаться" в нее, все еще "взаимодействуя" с другими объектами. Попробуйте поиграть с одной или несколькими кривыми, чтобы увидеть, как это влияет на движения в окне сцены.
Резюме В этой главе продемонстрировано, как без особого труда (относительно) заставить Майя выполнить работу по моделированию таких реальных событий, как падения и столкнове ния объектов. Кроме того, обсуждалось преобразование твердых тел из пассивных (для ко торых можно устанавливать ключевые кадры и которые не подвержены влиянию полей) в активные (для которых нельзя устанавливать ключевые кадры, но которые подвержены влиянию полей), а также было указано, что при переводе пассивного твердого тела в активное оно наследует движение, которое имело место до этого. Эти возможности позволяют твердым телам участвовать в анимации и работать с персонажами, движения которых ос нованы на ключевых кадрах. И в заключение были созданы более сложные взаимодействия и настроен решатель твердых тел для реалистичного, но более быстрого моделирования, а также приведен пример фиксации созданной динамической модели для применения в анимации по ключевым кадрам и более точной настройки. В следующей главе будет описан другой тип моделирования: моделирование частиц. Твердые тела имеют определенный объем в пространстве и взаимодействуют между собой сложными способами, а частицы являются очень малыми точками, которые друг с другом не взаимодействуют, но силы к ним приложены. В отличие от твердых тел, на сцене могут присутствовать десятки тысяч частиц, поэтому они отлично подходят для моделирования различных природных и статистических явлений, таких как фейерверки, дым и вспышки.
Использование частиц Одна из главных причин популярности Maya среди профессионалов и компаний по разработке компьютерных эффектов — ее мощный инструмент моделирования динами ческих частиц. Система частиц в Maya быстрая и гибкая. С помощью полей, выражений и сценариев языка MEL можно создавать все, что угодно, начиная с огненных взрывов и искрящихся фейерверков и заканчивая роем атакующих пчел. Как известно, лучше обучаться на практике, поэтому данная глава отличается от дру гих большим количеством практических примеров, знакомящих с мощными возможно стями частиц. В этой главе рассматриваются следующие темы. •
Что такое частицы
•
Использование частиц для создания эффектов
•
Управление частицами с помощью полей и целей
•
Расширенные выражения частиц
Что такое частицы Частица по существу является точкой в трехмерном пространстве. Анимация этой точки осуществляется косвенно с помощью полей, сил, выражений, а иногда сценариев языка MEL. Обычно частицы появляются из различных типов эмиттеров или испускаются (эмитируются) с поверхностей или даже текстур. Появившись однажды, они существуют не которое время на сцене Maya, где на них воздействуют поля, поверхности взаимодействий, цели, выражения, а иногда сценарии языка MEL. А затем они умирают (если не указано, что они "бессмертны"), покидая сцену и, возможно, освобождая часть памяти для других частиц. Использование частиц полностью отличается от повседневного стиля анимации с помощью ключевых кадров, так что для этого потребуется приложить некоторые усилия. Думайте о частице как о снежинке, это действительно имеет смысл. Анимация самой снежинки не выполняется, управление частицей-снежинкой осуществляется с помощью анимации атрибутов сил (ветра, гравитации и поверхностей, таких как стена дома или земля), которые воздействуют на нее. Частицы могут быть визуализированы как точки, множественные точки, потоки (streaks), множественные потоки, каплевидные формы, облака, столбы, экземпляры частиц и спрайты. Некоторые из них визуализируются ин струментом визуализации Maya Software (Программная визуализация), а некоторые мо гут быть визуализированы только с использованием инструмента визуализации Maya Hardware (Аппаратная визуализация). Во многих случаях анимации частиц должны быть частью композиции сцены.
Глава 19
734
Объект частиц (particle object) в Maya является узлом формы, содержащим пример но от одного до нескольких миллионов частиц. Отдельные частицы непосредственно не имеют узлов трансформации, так что для управления ими нельзя использовать ключе вые кадры. Однако сама форма частиц содержит узел трансформации, а также каналы перемещения, доступные для использования при установке ключевых кадров. Анимация с помощью частиц в Maya является обширной темой. Некоторые профессионалы спе циализируются исключительно в анимации частиц. Лучший способ понять процесс ани мации частиц заключается в разборе и выполнении нескольких практических заданий. По мере дальнейшего рассмотрения материала будут описаны новые фундаментальные концепции. Цель этой главы заключается в настолько хорошем знакомстве с анимацией частиц, чтобы потом можно было перейти к рассмотрению более сложных методов и да же созданию нескольких собственных. Компания Autodesk осуществляет замену всей среды выполнения моделирования Maya но вой технологией ядерного решателя. В версии Maya 8.5 лишь новый пакет моделирования nCloth использует при моделировании ткани ядерный решатель, однако компания Autodesk заявила, что через некоторое время планирует выпустить ядерные решатели для частиц и других объектов. Более подробная информация о новых ядерных решателях и системе nCloth приведена в главе 23, "Моделирование ткани с использованием системы nCloth".
Использование частиц для создания эффектов В качестве первого практического задания предлагается создать простой эффект ла зерного меча. Частицы будут использоваться для создания луча вибрирующего света, ко торый исходит из лезвия меча. В этом упражнении продемонстрирован типичный про цесс применения частиц и эмиттеров для создания визуального эффекта. 1. Откройте с компакт-диска файл laserSwordl.mb. 2.
Запустите воспроизведение анимации. На экране появится кривая NURBS, исходящая из рукояти меча. Затем меч взмоет в воздух и нанесет пару ударов. На сцену необходимо добавить частицы и соединить их с лезвием меча. Су ществуют два самых общепринятых способа добавления частиц. Первый способ заключается в рисовании частиц на сцене с помощью инструмента Particle (Частица), второй — в использовании эмиттера, который выстрели вает их на сцену. В данном случае имеет смысл использовать эмиттер, по скольку лезвие должно испускать частицы, что необходимо для достижения эффекта вибрирующего лазера. Если рисовать частицы с помощью инстру мента Particle (Частица), то получится статическое облако частиц. В задании требуется, чтобы частицы испускались из лезвия меча, поэтому кривую NURBS необходимо преобразовать в эмиттер частиц.
3.
Перейдите в начало анимации. В окне Outliner (Иерархическая структура) раскройте группу sword и родительскую группу laserSwordHandle. Вы делите кривую, обозначенную как sword.
4.
При выделенной кривой выберите из набора меню Dynamics (Динамика) пункты Particles => Emit From Object • (Частицы => Испускать из объекта • ) .
5.
Присвойте эмиттеру название laserBlade.
Использование частиц 6.
В меню Emitter Туре (Тип эмиттера) выберите пункт Curve (Кривая).
7.
Установите значение скорости (rate) равным 1000.
8.
Щелкните на кнопке Apply (Применить) и запустите воспроизведение анимации.
735
На экране появится облако точек, которое растет из меча и хаотично распространяет ся по всей сцене. Кроме того, если остановить воспроизведение и передвинуть ползунок временной шкалы вперед и назад, результат будет довольно странным. При создании ани мации частиц фактически осуществляется моделирование, зависимое от времени. Даль нейшие действия частиц основываются на предыдущих. Следовательно, запускать модели рование частиц необходимо всегда с начала, иначе их поведение будет неправильным. Но это пока не создан дисковый кэш (disk cache) частиц, но он описывается немного ниже. Для правильной работы анимации следует также настроить параметры воспроизве дения и воспроизводить каждый кадр (Play Every Frame), а не использовать моделиро вание в реальном масштабе времени. Для этого откройте окно предпочтений ( W i n d o w => Settings/Preferences => Preferences (Окно => Параметры/Предпочтения => Предпочтения)), щелкните на элементе временной шкалы слева и установите скорость воспроизведения (Playback S p e e d ) как Play Every Frame (Воспроизводить каждый кадр).
Продолжительность существования частиц Теперь давайте "приручим" частицы лазерного меча. Вот где начинается настоящее веселье. 1.
Перейдите в начало анимации и запустите ее еще несколько раз.
Главная проблема в настоящий момент заключается в том, что частицы вылетают из лезвия и летают вокруг постоянно. Чтобы исправить это, необходимо сократить продол жительность существования (lifespan) частиц. Это звучит жестоко, но все же необходи мо сократить количество времени, которое каждая частица существует на сцене, прежде чем исчезнет. С продолжительностью существования частиц связаны многие атрибуты. 2. В окне Outliner (Иерархическая структура) выделите объект p a r t i c l e l и откройте окно Attribute Editor (Редактор атрибутов). Перейдите на вкладку p a r t i c l e S h a p e l . На этой вкладке можно откорректировать атрибуты узла формы частицы и связанного с кривой эмиттера. Это типичный рабочий процесс, который начинается с создания стандартной модели частиц, которая впоследствии видоизменяется. 3. Прокрутите вниз ползунок в окне Attribute Editor (Редактор атрибутов), открытом для узла формы p a r t i c l e l , пока не появится раздел Lifespan Attributes (Атрибуты продолжительности существования) (рис. 19.1). 4. Обратите внимание на то, что для параметра Lifespan Mode (Режим продолжитель ности существования) установлено значение Live Forever (Жить бесконечно). В рас крывающемся списке выберите значение Constant (Постоянная) и установите значе ние продолжительности существования равным 1.0. Снова запустите воспроизведе ние анимации с начала и убедитесь, что анимация выполняется циклически. 5. Теперь частицы существуют не так долго, и их испускание менее беспорядочно. А сей час можно откорректировать значение атрибута Lifespan Mode (Режим продолжитель ности существования). Пока анимация воспроизводится, установите значение этого ат рибута равным 0.5. Процесс моделирования немедленно обновится, и продолжитель-
Глава 19
736
ность существования частиц станет короче. Значение атрибута Lifespan Mode (Режим продолжительности существования) измеряется в секундах. Частицы теперь сущест вуют в течение 12 кадров (половина от 24 кадров в секунду). Установите значение это го атрибута равным 0.1, чтобы частицы располагались ближе к кривой.
Рис. 19.1. Раздел Lifespan Attributes ис пользуется для определения времени су ществования частиц на сцене 6. Давайте рассмотрим и другие пункты раскрывающегося списка Lifespan Mode (Режим продолжительности существования). В нем есть пункты r a n d o m r a n g e (Случайный диапазон) и lifespanPP Only (Только lifespanPP). Выберите пункт r a n d o m r a n g e (Случайный диапазон). 7.
Остановите анимацию. Теперь стал доступен параметр Lifespan r a n d o m (Случайная продолжительность существования). Это значение параметра Lifespan (Продолжи тельность существования) позволяет случайным образом изменять продолжитель ность существования, прибавляя или вычитая из него свое значение. Снова устано вите значение параметра Lifespan Mode (Режим продолжительности существова ния) равным 0.5, г. значение параметра Lifespan r a n d o m (Случайная продолжи тельность существования) — равным 0.25. После этого продолжительность существо вания частиц колеблется в диапазоне от половины до полутора раз от значения при своенного параметру Lifespan (Продолжительность существования).
8.
Параметр lifespanPP Only (Только lifespanPP) позволяет устанавливать диапазон продолжительности существования на основе отдельных частиц для более точного управления. Остальные параметры воздействуют на частицы скорее на уровне груп пы. Иногда это и все, что необходимо. Однако установка продолжительности суще ствования на основе отдельных частиц позволяет привязать остальные атрибуты от дельных частиц к продолжительности существования каждой частицы.
737
Использование частиц
Установите для параметра Lifespan Mode (Режим продолжительности существова ния) значение lifespanPP Only (Только lifespanPP) и перейдите вниз окна Attribute Editor (Редактор
атрибутов)
до
раздела
Per
Particle
(Array) Attributes
(Атрибуты массива частиц), как показано на рис. 19.2. Теперь некоторые вещи могут стать немного более сложными, но если следовать указаниям, все станет понятно.
Puc. 19.2. Редактор атрибутов содержит раздел Per Particle (Array) Attributes, в котором можно вводить выражения и создавать градиенты для управления поведением отдельных частиц на сцене
Атрибуты массива частиц Анимация частиц может привести к легкому проявлению комплекса бога, но это нор мально. Частицы — это только пиксели, поэтому они не могут нанести слишком большо го вреда. Пока атрибуты частиц рассматривались на уровне группы или муравейника. Добавление атрибутов отдельным частицам напоминает переход к управлению сущест вованием отдельных муравьев. Если говорить без метафор, существуют два уровня управления: уровень узла формы частиц (или группы) и уровень отдельных частиц. Временами разница едва уловима, а иногда она существенно зависит от того, что именно пытаются достичь. В панели атрибутов отдельных частиц щелкните правой кнопкой мыши на пустом поле lifespanPP и в появившемся контекстном меню выберите пункт Creation Expression (Создать выражение). В результате откроется окно Expression Editor (Редактор выраже ний), представленное на рис. 19.3. Введем в этом окне первое выражение для частиц. По мере работы с частицами это окно станет достаточно привычным.
Выражения частиц для времени создания и времени выполнения Существуют два типа выражений частиц — времени создания (creation) и времени вы полнения (runtime) (далее типы времени выполнения разделяются на типы времени вы-
738
Глава 19
полнения перед динамическими вычислениями и времени выполнения после динамиче ских вычислений). Выражения времени создания влияют на набор атрибутов в момент рождения каждой частицы. Их можно представить как молекулы ДНК. Выражения вре мени выполнения отвечают за атрибуты или изменения атрибутов, которые происходят после рождения частицы и могут воздействовать на нее вплоть до момента кончины, та кова история существования частицы. Два типа выражений способны взаимодействовать и влиять друг на друга.
Рис. 79.3. Окно редактора выражений позволяет вводить выражения для атрибутов отдельных частиц массива При рождении человека его рост генетически закодирован. Даже притом, что рост че ловека при рождении не составит шести футов, выражение "рост = 6 футов" можно рас сматривать как выражение времени создания для атрибута "рост". Рано или поздно рост человека достигнет шести футов. Теперь, если в какой-то период жизни ноги человека за менят бионические суперпротезы и его рост достигнет 10 футов, то это можно рассматри вать как выражение времени выполнения. "Рост = 10 футов" является чем-то, что случи лось после рождения человека, в течение его жизни. Это выражение может переписать ис ходное выражение "рост = 6 футов". Помните об этой аналогии при попытках выяснить, должно ли создаваемое выражение быть выражением времени создания или выполнения. В настоящее время необходимо рассмотреть только выражение времени создания для атрибута lifespanPP. Чтобы открыть окно Expression Editor (Редактор выражений) с вы деленным атрибутом частицы, щелкните правой кнопкой мыши на атрибуте lifespanPP ив появившемся контекстном меню выберите пункт Expression (Выражение). В от крывшемся окне можно увидеть, что в панели Selection (Выделение) выбран элемент particleShapel, а в панели Attributes (Атрибуты) выделен элемент lifespanPP. В поле Selected Object A n d Attribute (Выделенный объект и атрибут) уже находится пер вая часть выражения.
Использование частиц
739
1. Убедитесь, что в атрибутах частицы, расположенных над панелью редактирования выра жений, выбран переключатель Creation (Создание). Выделите текст в поле Selected Object And Attribute (Выделенный объект и атрибут) ( p a r t i c l e S h a p e l . l i f e s p a n P P ) . Перетащите этот текст с помощью правой кнопки мыши вниз, в большую область редак тирования выражения. (На компьютерах типа Маc, вероятно, придется скопировать текст из поля и вставить его в панель редактирования.) Е С Л И при вводе выражения щелкнуть на названии другого атрибута или объекта, то весь текст в панели редактирования выражения исчезнет. Поэтому при необходимости провер ки лучше составлять выражения в текстовом редакторе, например в Блокноте, а затем вставлять выражение обратно в редактор выражений.
2.
В панели редактирования выражения замените текст следующим: particleShapel. lifespanPP=0.5;. Щелкните на кнопке Create (Создать) в нижней части окна и за пустите воспроизведение анимации. Анимация должна выглядеть точно так же, как и при постоянном значении режима продолжительности существования 0 . 5 .
3.
Щелкните правой кнопкой мыши на поле lifespanPP в разделе отдельных частиц ок на Attribute Editor (Редактор атрибутов) и в появившемся контекстном меню выбе рите пункт Creation Expression (Создать выражение). Снова откроется окно Expression Editor (Редактор выражений) с введенным ранее выражением в основном поле. Не выключая воспроизведение анимации, измените выражение следующим образом: particleShapel.lifeapanPP=rand(0.1,0.3);
4.
Щелкните на кнопке Edit (Правка) в нижней части окна. Анимация должна обно виться в процессе работы.
Теперь необходимо установить продолжительность существования каждой частицы в случайном диапазоне от 0,1 до 0,3 секунды. Это похоже на настройку случайного диапа зона параметра Lifespan Mode (Режим продолжительности существования) для формы частиц. Однако теперь у каждой частицы имеется уникальный атрибут продолжительно сти существования, к которому можно обращаться через другие атрибуты. Это самое главное свойство атрибутов массива частиц. Выражения являются мощным способом для управления моделированием частиц, так же как и многие другие аспекты Maya. Как научиться создавать выражения? Как узнать, когда их использовать? Обычно эти знания приходят с практикой, опытом и от заимствованных идей других аниматоров. Поэтому имеет смысл принять участие в сообществе пользователей Maya на таких Webсайтах Autodesk, как t h e - a r e a . c o m , c g s o c i e t y . c o m и highend3d.com, а также на сете вых форумах, в журналах и группах новостей пользователей. После знакомства с работой других аниматоров и освоения нескольких выражений создавать собственные выражения будет все проще и проще.
Параметр Conserve Давайте вернемся немного назад и рассмотрим лазерный меч. Он выглядит слишком скромно. Меч необходимо усложнить и добавить немного красок тоже не помешает. Сна чала усилим меч, увеличив скорость испускания частиц. Прежде чем продолжать, сохра ните проделанную работу, если это еще не сделано.
Глава 19
740
1. Остановите анимацию и в окне Outliner (Иерархическая структура) найдите кривую меча. Раскрыв элемент sword в окне иерархической структуры, можно увидеть эмиттер laserBladel, который является родительским для кривой меча. В окне перспективного представления можно увидеть маленькую окружность на кривой ме ча — это значок эмиттера. 2.
Выделите эмиттер и откройте для него редактор атрибутов. Установите значение атри бута rate (Particle/Sec) равным 8000 и запустите воспроизведение анимации.
Меч уже выглядит немного лучше, но он все еще оставляет слишком большой шлейф частиц (рис. 19.4). Это можно исправить, уменьшив значение параметра Conserve (Сохранить) для формы частиц.
Рис. 19.4. Окружность в центре кривой меча представляет собой эмиттер Слово Conserve (Сохранить) является сокращением от "сохранение энергии". Его значение по умолчанию равно единице. При таком значении частица не теряет энергию, когда она была выброшена в мир. Уменьшение этой величины приводит к эффекту за медления частицы, после того как она покинула источник. Она теряет свою энергию при движении. Установка нулевого значения параметра Conserve (Сохранить) "заморозит" частицу в пространстве. Как правило, нет необходимости слишком сильно уменьшать это значение, чтобы увидеть его влияние. 3.
Присвойте атрибуту Conserve элемента particleShapel значение 0.5.
4.
Прокрутите ползунок вниз до атрибутов визуализации элемента particleShapel. Выберите в меню Particle render Туре (Тип визуализации частицы) пункт Multipoint (Многоточечный). Щелкните на кнопке Current render Туре (Текущий тип визуа лизации). Появится новый список атрибутов, показанный на рис. 19.5.
741
Использование частиц
Рис. 19.5. После щелчка на кнопке Current render Тур будут добавлены новые ат рибуты В Maya частицы можно визуализировать десятью основными способами. Некоторые необ ходимо визуализировать с помощью аппаратной визуализации, а другие — с помощью про граммной визуализации. Те методы, для которых требуется программная обработка, отме чены символами (s/w), расположенными рядом с их именами в списке. Некоторые из этих методов рассматриваются в этой главе. Каждый тип частиц имеет дополнительные атрибу ты, характерные именно для него. Эти атрибуты активизируются после щелчка на кнопке Current render Туре (Текущий тип визуализации). 5.
В обновленном списке атрибутов для типа Multipoint (Многоточечный) установите для параметра Multi Count (Количество точек) значение 10, для параметра Multi r a d i u s (Радиус) — значение 0.15, а для параметра Point Size (Размер точки) — зна чение 1. Частица типа MultiPoint (Многоточечный) заменяет каждую одиночную час тицу маленьким облаком частиц. Размер облака и количество частиц в каждом обла ке контролируется с помощью новых добавленных атрибутов.
6. Теперь получилось нечто больше похожее на лазерный меч. Поскольку меч выглядит черно-белым, добавим немного цвета. Прокрутите ползунок вниз до списка Per Particle Attributes (Атрибуты массива частиц) и щелкните на кнопке Opacity (Непрозрачность), которая появилась ниже списка. В появившемся окне свойств выберите команду Add Per Particle Attribute (Добавить атрибут массива частиц). В расположенный выше список атрибутов массива частиц добавится новый атрибут Opacity (Непрозрачность). Если пункт opacityPP не добавился в список, попробуйте закрыть редактор атрибутов и от крыть его снова или щелкните на кнопке Load Attributes (Загрузить атрибуты), расположен ной внизу окна редактора атрибутов, чтобы принудительно обновить список. Список не всегда обновляется правильно. 7. Щелкните правой кнопкой мыши в поле атрибута opacityPP и в появившемся кон текстном меню выберите пункт Create r a m p (Создать градиент).
742 8.
Глава 19 Щелкните правой кнопкой мыши на атрибуте opacityPP и в появившемся контекст ном меню выберите пункт arrayMapperl.outValuePP => Edit r a m p (Редактировать градиент). В окне Attribute Editor (Редактор атрибутов) появится градиентная тек стура (ramp texture).
Градиент устанавливает значение прозрачности отдельных частиц на протяжении существования каждой частицы. Значение внизу градиента равно единице, ему соответствует белый цвет. Нижняя часть градиента соответствует моменту рождения частицы. Значение верхней части рав но нулю, ему соответствует черный цвет. Верхняя часть градиента представляет момент кончины частицы. Таким образом, в течение существования частицы прозрачность изме няется от белого (значение 1,0) до черного (0). Этот градиент позволяет лучше контро лировать исчезновение частиц (рис. 19.6).
Рис. 19.6. Градиентная текстура управляет прозрачностью каждой частицы в течение сро ка ее существования. Нижняя часть градиента соответствует рождению частицы, а верх няя — ее кончине. В течение существования частицы происходит изменение значения про зрачности от единицы до нуля в соответствии с установленными цветами градиента 9.
Удалите серый цвет в середине, щелкнув на панели справа от серой области градиен та, и переместите черный ползунок вниз, чтобы значение его позиции было равно 0,360. Создайте цвет с новым значением, щелкнув на белом значении. Переместите его вверх по градиенту так, чтобы серая область между белым и черным уменьши лась. В результате этих действий улучшится форма лезвия при его движении (рис. 19.6).
10. Чтобы сделать лезвие цветным, используем аналогичный процесс. Щелкните на кнопке Color (Цвет), расположенной рядом с кнопкой Opacity (Непрозрачность) в разделе Add Dynamic Attributes (Добавить атрибуты динамики). Снова выберите ко манду Add Per Particle Attribute (Добавить атрибут массива частиц). 1 1 . Добавьте градиент к новому атрибуту RGBPP в списке таким же образом, как добав ляли градиент к атрибуту opacityPP на шагах 7 - 8 . 12. Щелкните правой кнопкой мыши на поле RGBPP и в появившемся контекстном меню вы берите пункт arrayMapper2.outColorPP => Edit r a m p ( a r r a y M a p p e r 2 .outColorPP =>
Редактировать градиент).
743
Использование частиц
13. Используйте элементы управления градиентом для создания плавного перехода гра диента от светло-голубого внизу к темно-синему вверху. Светло-голубой цвет дол жен быть не слишком светлым. Этот градиент работает точно так же, как и градиент прозрачности. Каждая частица при рождении окрашена в ярко-голубой цвет, а затем постепенно темнеет, пока не потухнет. Поскольку продолжительность существования отдельных частиц имеет случайный диапазон, меч выглядит как бы вибрирующим, так как каждая частица имеет свои значения прозрачности и цвета в каждом кадре. 14. Запустите воспроизведение анимации. Теперь получился отличный голубой лазер ный меч. Хотя и выглядит он как-то уныло. 15. Откройте редактор атрибутов для элемента p a r t i c l e S h a p e l . Установите флажок Color A c c u m (Накопление цвета). Запустите воспроизведение анимации. Цвета частиц теперь будут накладываться. В областях более плотного скопления частиц цвет будет светиться ярко-белым. В разреженных областях цвет будет больше зависеть от окраски отдельных частиц — в этом случае он будет синим. Если весь меч слишком белый, попробуйте настроить цвета в градиенте и сделать синий цвет немного темнее.
Аппаратный буфер визуализации Поскольку меч выглядит отлично, настало время визуализировать короткий эпизод. Для визуализации частиц типа Multipoint (Многоточечный) необходим инструмент ви зуализации Maya Hardware (Аппаратная визуализация) или Hardware
render
Buffer
(Аппаратный буфер визуализации). Использование инструмента аппаратной визуализа ции зачастую приводит к лучшим результатам, чем Hardware render Buffer (Аппарат ный буфер визуализации), но давайте все же рассмотрим применение инструмента Hardware render Buffer (Аппаратный буфер визуализации). 1.
Перейдите к началу анимации и откройте инструмент Hardware render Buffer (Аппаратный буфер визуализации), выбрав в меню W i n d o w (Окно) пункты rendering Editors => Hardware render Buffer (Редакторы визуализации => Аппаратный
буфер визуализации). 2.
Убедитесь, что камера в окне Hardware render Buffer (Аппаратный буфер визуали зации) установлена в перспективное представление. В окне буфера можно двигаться так же, как и в перспективном представлении, т.е. перемещать и вращать камеру, а также осуществлять наезд.
3.
Откройте атрибуты буфера, выбрав в меню его панели пункт render => Attributes ( Визуализировать => Атрибуты).
4. В окне Attribute Editor (Редактор атрибутов) введите имя файла laserSword. Уста новите для начального кадра значение 1, а для последнего — 145. 5. В меню r e s o l u t i o n (Разрешение) выберите разрешение 640x480. 6. В разделе Multi-Pass render Options (Параметры многопроходной визуализации) установите флажок Multi Pass rendering (Многопроходная визуализация), а для па раметра render Passes (Количество проходов визуализации) установите значе ние 3. Для создания более гладкого внешнего вида окончательного изображения можно использовать значение многопроходной визуализации выше 3 для каждого визуализируемого кадра (выделяя по небольшому количеству кадров), а затем объе динить полученные фрагменты.
744
Глава 19
7.
Оставьте остальные параметры в состоянии по умолчанию и убедитесь, что цвет фо на в разделе Display Options (Параметры представления) черный или темно-серый.
8.
Запустите воспроизведение анимации до кадра 50. Щелкая на пиктограммах внизу окна, можно просмотреть анимацию. Визуализация картинки выполнится за три прохода. Позиция частиц при каждом проходе сдвигается, а затем эти позиции сме шиваются для создания более гладкого, смазанного представления.
9.
Перейдите в начало анимации и выберите в меню панели пункт render => render Sequence (Визуализировать => Визуализировать эпизод).
Инструмент Hardware render Buffer (Аппаратный буфер визуализации) выполнит визуализацию каждого кадра три раза, сделает снимок экрана, а затем сохранит изобра жение на диске. При визуализации с использованием буфера следует выключить храни тель экрана и не допустить, чтобы какие-либо окна перекрывали буфер. Если увеличить количество проходов в разделе Multi-Pass render Options (Параметры многопроходной визуализации), изображение получится более гладким, но это займет больше времени, поскольку каждый кадр будет визуализироваться большее количество раз. При визуали зации можно также применить эффект motion blur (размытость) (рис. 19.7). На компьютерах Macintosh, как правило, не нужно держать окно аппаратного буфера ви зуализации открытым. Поэтому пользователи Macintosh могут заняться чем-нибудь другим, пока идет визуализация. Когда визуализация анимации завершится, можно просмотреть эпизод, выбрав его в меню Flipbooks (Транспонирование). Примите поздравления. Только что была удачно создана первая анимация час тиц (см. рис. 19.7). На компакт-диске в файле l a s e r S w o r d 2 . mb содержится полная версия анимации. Теперь рассмотрим несколько способов управления движением частиц.
Рис. 19.7. Лазерный меч, визуализированный в Hardware render Buffer. Привлекательный вид лазерного луча получен с помощью частиц
Использование частиц
745
Управление частицами с помощью полей и целей Существуют два наиболее распространенных метода перемещения частиц — поля и цели. Поля (field) похожи на силы (гравитация, воздух и турбулентность), которые влияют на неподвижные частицы или на частицы, находящиеся в движении. Если необ ходимо переместить частицу, поля обычно являются самыми первыми средствами. Более того, к частицам можно добавить несколько полей. В документации Майя содержится подробное описание работы каждого поля. Целью (goal) может быть любой объект на сцене, даже другие частицы. Цели подобны магнитам, которые притягивают частицы. На поведение частиц может влиять больше одной цели. Откройте на компакт-диске файл goalsAndFields.ma. Будут созданы несколько слоев представления, каждый с одинаковой сеткой частиц. Частицы на строены для визуализации в качестве сфер. Сетку можно легко создать с помощью на строек в панели параметров инструмента Particle (Частица). Создание сетки частиц с помощью инструмента Particle (Частица) является примером создания частиц без ис пользования эмиттера. С каждым слоем представления связаны различные поля, а для верхнего слоя ис пользуется цель. Запустите воспроизведение анимации и сравните поведение частиц. В дальнейшем будет рассмотрен проект, в котором создаются и корректируются поля.
Использование множества полей с частицами Откройте с компакт-диска файл snowGnomel.mb. На экране появится маленький трогательный гном, чья жизнь скоро несколько ухудшится. Гном является единым полигональным объектом. 1.
Создайте объемный эмиттер, выбрав из набора меню Dynamics (Динамика) пункты Particles => Create Emitter • (Частицы => Создать эмиттер • ) .
2. Назовите эмиттер s n o w s t o r m и установите для него тип Volume (Объем). Устано вите значение скорости равным 100 и щелкните на кнопке Create (Создать). 3. На экране появится куб или сфера. Это объемный эмиттер (volume emitter), пред ставленный на рис. 19.8. Переместите эмиттер на 7 единиц по оси X и на 11 единиц по оси Y. Придайте ему размер 3x3x7. Убедитесь, что для параметра Volume Shape (Форма объема) в разделе Volume Emitter Attributes (Атрибуты объемного эмиттера) установлено значение Cube (Куб). Объемный эмиттер может принимать форму куба, сферы, цилиндра, конуса или тора. Тип формы эмиттера можно установить в разделе Volume Emitter Attributes (Атрибуты объемно го эмиттера) редактора атрибутов. Естественно, эти настройки применимы только для объ емного эмиттера. 4.
Выделите форму частиц, которая была создана с эмиттером, и откройте редактор ат рибутов. В разделе render Attributes (Атрибуты визуализации) переключитесь в Blobby surface (s/w) (Каплевидная форма) и щелкните на кнопке Current render Туре (Текущий тип визуализации).
5. Запустите воспроизведение нескольких кадров анимации, чтобы на экране поя вилось несколько частиц. Частицы каплевидной формы появятся как серые кру-
Глава 1 9
746
ги. Вероятно, они в этот момент огромны. Установите значение их радиусов рав ным 0.2.
Рис. 19.8. Объемный эмиттер, расположенный над гномом 6.
Перейдите в начало анимации и запустите ее. Частицы создаются случайно в про странстве, ограниченном кубическим эмиттером. Оттуда они распространяются во всех направлениях.
7.
Выделите элемент p a r t i c l e S h a p e l и выберите пункт меню Fields => Gravity (Поля => Гравитация). Выделите в панели каналов поле Gravity Field (Гравитационное поле) и установите для его параметра Magnitude (Величина) значение 5, для параметра Attenuation (Затухание) — значение 0, а также убедитесь, что для параметра Use Мах Distance (Использовать максимальное расстояние) установлено значение Off (Отключено).
Параметр Magnitude (Величина) определяет полную силу поля. Параметр Attenuation (Затухание) определяет величину, на которую уменьшается сила при увеличении расстояния между частицей и полем. 8.
При запуске анимации частицы начнут падать. Скорость их падения можно изме нить с помощью параметра Magnitude (Величина) поля Gravity (Гравитация). Кор ректировка параметров динамики или сохранения формы частиц также повлияет на скорость их падения, но поскольку это атрибуты формы частиц, они влияют на взаи модействие частиц с любыми другими полями, добавляемыми на сцену. Иногда это бывает полезно.
Можно добавить сколько угодно полей для управления поведением частиц. В сле дующем разделе добавляется поле воздуха, которое сдувает снег с фигуры гнома. 1. Не выделяя ничего, создайте поле воздуха, выбрав пункт меню Fields => Air (Поля => Воздух). Если запустить анимацию, можно заметить, что ничего не изменилось. Что бы присоединить поле к частицам, нужно выделить поле, затем выделить элемент
Использование частиц
747
p a r t i c l e S h a p e и выбрать пункты меню Fields => Affect Selected Object(s) (Поля =>
Воздействие выделенного объекта(ов)). Это другой способ соединить поле с части цами, альтернативный созданию поля при выделенных частицах. 2. Чтобы открыть окно Dynamic r e l a t i o n s h i p s (Динамические взаимосвязи), выберите в меню W i n d o w (Окно) пункты r e l a t i o n s h i p Editors' => Dynamic r e l a t i o n s h i p s (Редак
торы взаимосвязей => Динамические взаимосвязи). Это полезный инструмент для просмотра разнообразных динамических связей на сцене, а также для создания и разрыва этих связей. Левая часть окна похожа на иерархическую структуру. Выбери те в левой части элемент particlel. С помощью кнопки Selection Modes (Режимы выделения) выберите поля (Fields). Появятся поля Gravity (Гравитация) и Air (Воздух). Если выделить одно из полей, то его подсветка исчезнет, что означает, что связь разорвана. Теперь убедитесь, что оба поля, Gravity (Гравитация) и Air (Воздух), связаны с элементом particleShapel. 3.
В окне иерархической структуры (Outliner) выделите элемент airFieldl и пере местите его на 12 единиц по оси X, а также на 8 единиц по оси Y.
4.
В панели каналов установите для поля Air значение параметра Magnitude (Величина) равным пяти. Установите значение параметра Attenuation (Затухание) равным нулю, сбросьте флажок отключите параметр Use Max Distance (Использовать максималь ное расстояние), введя значение 0 в поле Use Max Distance (Использовать макси мальное расстояние). Перейдите вниз и установите следующие атрибуты направле ния: для оси X 1, для оси Y и Z — 0.
5.
Запустите воспроизведение анимации. Частицы должны лететь навстречу гному. Они будут лететь прямо сквозь бедного парня.
6. Корректируя атрибут Magnitude (Величина) поля Air (Воздух), можно управлять воздействием этого поля на частицы. Для управления направлением поля необходи мо включить параметр Use Max Distance (Использовать максимальное расстояние) и изменить положение поля. 7. При выделенном поле Air (Воздух) щелкните в панели инструментов на кнопке Show Manipulators Tool (Показать инструменты манипуляторов). Теперь имеются интерактивные элементы управления для параметров Magnitude (Величина), Мах Distance (Максимальное расстояние) и Attenuation (Затухание). 8.
Пока инструмент Show Manipulators (Показать манипуляторы) активизирован для поля Air (Воздух), щелкните на синем переключателе под пиктограммой Field (Поле). Откроются дополнительные интерактивные элементы управления для на правления, скорости и площади поля Air (Воздух). Попробуйте изменять значения этих элементов управления и проследите, как это влияет на частицы. Затем устано вите значение параметра Magnitude (Величина) поля снова равным 5 и отключите параметр Use Max Distance (Использовать максимальное расстояние). (Максимальное расстояние -1 является аналогом отключения параметра Use Мах Distance (Использовать максимальное расстояние).)
9. Теперь немного развлечемся с гномом. В иерархической структуре выделите элемент particleShapel и, удерживая нажатой клавишу , выделите объект Gnomey. В меню Particles (Частицы) выберите пункт Make Collide (Создать взаимодействие). Запустите воспроизведение анимации.
748
Глава 19
10. Как можно заметить, воспроизведение немного замедлилось, поскольку Maya долж на вычислять все взаимодействия. Однако теперь частицы отскакивают от гнома — как будто гном отбрасывает шарики пинг-понга. Давайте сделаем их немного липки ми. Выделите элемент particleShapel и откройте редактор атрибутов. Перейдите на вкладку geoConnector1, в которой доступны четыре параметра: Tessellation Factor (Коэффициент разбиения), r e s i l i e n c e (Ударная вязкость), Friction (Трение) и Offset (Смещение). Параметр Tessellation Factor (Коэффициент разбиения) подобен инструменту раз решения взаимодействий. Чем выше его значение, тем больше точность взаимодействия с геометрическими фигурами. Увеличение значения параметра Tessellation Factor (Коэффициент разбиения) также замедлит воспроизведение анимации. Пока оставьте его значение равным 200. Параметр r e s i l i e n c e (Ударная вязкость) задает эластичность при столкновении, т.е. чем выше его значение, тем выше отскок от поверхности. Пара метр Friction (Трение) задает степень скольжения частицы по наклонной поверхности, и чем выше его значение, тем сильнее частицы прилипают к поверхности. И наконец, па раметр Offset (Смещение) указывает, как далеко от поверхности частица сталкивается с ней. Этот параметр важен для тех частиц, которые имеют заметный объем (например, капли). Дело в том, что расчет взаимодействия всех частиц осуществляется так, как буд то частица — это простая точка в пространстве. Регулируя значение смещения (или даже устанавливая ключевые кадры), можно добиться большего реализма, как минимум за претив им проникать в поверхность. 1. Установите значение параметра r e s i l i e n c e (Ударная вязкость) равным 0 и запустите анимацию. Теперь частицы отскакивают не так сильно, а некоторые даже прилипают к гному и соскальзывают с него. 2. Установите для параметра Friction (Трение) значение 1. Теперь частицы прилипают к гному. Уменьшите значение параметра Friction (Трение) до 0.5, и частицы начнут прилипать и медленно сползать вниз по телу гнома. Следующая проблема заключается в том, что частицы, которые не попали в гнома, продолжают улетать в бесконечность. Необходимо создать поверхность земли, на кото рую будет падать снег. 1. Создайте плоскость NURBS и увеличьте ее так, чтобы она охватила область вокруг гнома и место падения частиц. Установите количество промежутков между изопараметрическими линиями 16x16. 2.
Выделите элемент particleShapel и плоскость NURBS, а затем выберите пункт меню Particles => Make Collide (Частицы => Создать взаимодействие). Найдите в ре дакторе атрибутов узел g e o C o n n e c t o r 2 и установите значение параметра r e s i l i e n c e (Ударная вязкость) равным 0, параметра Friction (Трение) — равным 1 и параметра Offset (Смещение) — около 0.1. Теперь при воспроизведении анимации частицы прилипают к земле так же, как и к гному.
3. У частиц каплевидной формы имеются интересные особенности. Первая из них за ключается в возможности раскрашивания частиц с помощью тонирования. Выделите частицу и откройте гипершейдер. Найдите тонер radioactiveGoo, щелкните пра вой кнопкой мыши на его экземпляре и в появившемся контекстном меню выберите
Использование частиц
749
пункт Assign material То Selection (Применить материал к выделенному). Запустите воспроизведение анимации и, когда в поле зрения не останется никаких частиц, вы полните визуализацию кадра с помощью программной визуализации Майя. 4.
Фигура атакована ярко-зелеными шарами. Чтобы сделать его более сентименталь ным, увеличьте в редакторе атрибутов значения атрибутов визуализации r a d i u s (Радиус) и Threshold (Порог) элемента p a r t i c l e S h a p e l . Параметр Threshold (Порог) определяет, как сильно поверхности каплевидных форм будут притягивать ся друг к другу и преобразовывать ее в шарики. Чтобы увидеть, как это выглядит, осуществите визуализацию сцены. Эти особенности не показаны в виде со стороны камеры. Попробуйте установить значение радиуса равным 0.6 и значение порога — равным 0.5.
Теперь можно окончательно визуализировать бедного гнома и в ужасе наблюдать, как он покрывается радиоактивным липким слоем (рис. 19.9). Но прежде чем осуществить визуализацию, необходимо создать кэш для модели частиц.
Рис. 19.9. Гном, покрывающийся радиоактивным липким слоем
Кэш частиц Кэш частиц (particle cache) является последовательностью записанных на диск фай лов, которые содержат все данные о положении частиц при моделировании. Как можно догадаться, эта последовательность занимает на диске немало места, если на сцене при-
Глава 19
750
сутствует большое количество частиц. Дважды проверьте доступное место на диске, прежде чем создавать дисковый кэш частиц. Кэш частиц позволяет перемещать сцену Maya во времени, так что больше нет необходимости воспроизводить ее каждый раз сна чала. Кэш также гарантирует, что при визуализации сцены частицы каждый раз будут двигаться одинаково. Это становится особенно важно при использовании случайных чи сел в выражениях, особенно если визуализацию предполагается осуществлять на не скольких машинах. В противном случае поведение частиц при окончательной визуали зации может оказаться непредсказуемым. Явное задание начального значения для случайной продолжительности существования час тиц, например s e e d ( p a r t i c l e l D ) ,-, обеспечивает воспроизводимость результата визуа лизации. Поэтому, если действительно нужен случайный, но воспроизводимый результат, воспользуйтесь этим методом. Чтобы создать дисковый кэш для сцены с гномом, выполните следующие действия. 1.
Выберите в наборе меню Dynamics (Динамика) пункты Solvers => Create Particle Disk Cache • (Решатели => Создать дисковый кэш частиц • ) .
2.
В окне параметров можно указать путь к папке, в которой будет создан кэш. По умолчанию задан путь к каталогу текущей папки.
3.
По умолчанию кэш будет создан на основании кадров, установленных на временной шкале. В параметрах визуализации можно задать начальный и конечный кадры. Уста новите диапазон временной шкалы от 0 до 100, а этот флажок оставьте сброшенным.
4.
Выделите форму p a r t i c l e l в окне иерархической структуры и щелкните на кнопке Apply (Применить) для дискового кэша частиц. Индикатор текущего кадра будет пе ремещаться по временной шкале, однако в виде камеры ничего не изменится до окончания процесса. Это нормально. Maya просто записывает файлы на диск.
5.
Как только этот процесс завершится, можно будет перемещаться вперед и назад по временной шкале и наблюдать анимацию. При необходимости изменить модель дис ковый кэш частиц придется удалить. Иначе ничего не изменится. Для удаления вы берите в меню Solvers (Решатели) пункты Memory Caching => Delete (Кэширование памяти => Удалить). Обратите внимание, таким образом можно как включать, так и отключать кэширование.
6. Читатель может повторить весь этот процесс с использованием программной визуа лизации, а по завершении сравнить результат. Программная визуализация в Maya описана в главе 13, "Основы визуализации".
Цели Цели (goal) являются одним из самых полезных инструментов для управ ления моделированием частиц. Цели притягивают частицы на основе за данных параметров. Целью может быть любой объект, включая другую форму частиц. Цели легко анимировать и даже включать в выражения. Давайте проведем несколько экспериментов с целями. 1.
Откройте с компакт-диска сцену g o a l s i . m b . На ней есть эмиттер в начале и локатор на краю сетки. Эмиттер задан для всех направлений (omnidirectional)
Использование частиц
751
со скоростью 200 частиц в секунду. Запустите воспроизведение анимации и пона блюдайте за поведением частиц. 2. Частицы легко распространяются по сцене во всех направлениях от центра эмиттера. Выделите элемент p a r t i c l e l , а затем выделите локатор. В меню Particles (Частицы) выберите пункт Goal • (Цель • ) . Установите значение параметра Goal Weight (Весовой коэффициент цели) равным 0.5. Запустите воспроизведение анимации. 3. Частицы летят навстречу локатору. При значении коэффициента локатора 0 . 5 они обстреливают локатор. Откройте редактор атрибутов для элемента p a r t i c l e l и найдите раздел Goal Weights A n d Objects (Объекты и весовые коэффициенты цели). Запустите анимацию и попробуйте двигать ползунок locator1 вверх и вниз при ее воспроизведении. При этом будет корректироваться коэффициент цели, или сила притяжения. При значении коэффициента равном единице частицы немедленно по мещаются в позицию локатора, а при нулевом значении цель не оказывает никакого воздействия. Д Л Я системы частиц можно создать любое количество целей. Каждая цель привлекает час тицы в соответствии с ее весовым коэффициентом цели, заставляя их "балансировать" ме жду разными целями. 4.
Корректировка параметра Goal Smoothness (Плавность цели) также влияет на пе ремещение частиц навстречу цели. Попробуйте также откорректировать этот пара метр при воспроизведении анимации.
5.
Установите значение параметра Goal Weight (Весовой коэффициент цели) равным 0 . 5 , значение параметра Goal Smoothness (Плавность цели) — равным 3, а затем уменьшите для частиц значение атрибута Conserve (Сохранить) до 0 . 7 . Частицы будут замедляться по мере приближения к цели, ведь они будут терять энергию при движении. Эффект обстрела при этом исчезнет.
Для управления движением частиц цели и поля можно объединить. В этом разделе поле Drag (Трение) применяется к частице, на которую уже воздействует цель. 1. Верните параметру Conserve (Сохранить) значение 1.0 и примените к частице поле Drag (Трение), выделив элемент p a r t i c l e l и выбрав пункт меню Fields => Drag (Поля => Трение). Переместите пиктограмму поля Drag (Трение) так, чтобы оно ме шало частицам достичь формы локатора, а затем откорректируйте значение его па раметра Magnitude (Величина) до 100. Частицы будут замедляться при перемеще нии сквозь поле Drag (Трение). Поля и цели могут работать вместе при моделирова нии частиц. 2. Удалите поле Drag (Трение) и создайте другой локатор. Переместите этот локатор на 12 единиц по оси X. 3. Выделите элемент p a r t i c l e l , затем элемент l o c a t o r 2 и выберите пункт меню Particles => Goal (Частицы => Цель). Убедитесь, что значение параметра Goal Weight (Весовой коэффициент цели) равно 0 . 5, как и для элемента locator1. Запустите воспроизведение анимации. 4. Если посмотреть на вид сверху, то можно увидеть, что частицы выстроились в ли нию, равноудаленную от двух целей. Каждая цель прикладывает одинаковую силу притяжения к частицам, поэтому они удерживаются между целями.
Глава 19
752 5.
Откройте в редакторе атрибутов раздел Goal Weights A n d Objects (Объекты и весо вые коэффициенты цели). В нем можно увидеть, что набор атрибутов и параметров идентичен примененным для цели locator1. При воспроизведении анимации попро буйте откорректировать ползунок для целей locator1 и l o c a t o r 2 . Частицы переме щаются ближе к той цели, которая имеет большее значение. К форме частиц можно до бавить сколько угодно целей и использовать их для управления моделированием.
6. Установите флажок Goal Active (Активная цель) для цели l o c a t o r 2 . Эта цель пере станет быть активной, чтобы можно было работать с целью locator1. 7.
В редакторе атрибутов перейдите к разделу Lifespan Attributes (Атрибуты продол жительности существования) и выберите значение lifespanPP Only (Только lifespanPP). Как и в предыдущем упражнении, будет добавлен атрибут Lifespan Per Particle (Продолжительность существования отдельных частиц).
8.
В редакторе атрибутов перейдите вниз к разделу Per Particle (Array) Attributes (Атрибуты массива частиц), щелкните правой кнопкой мыши на поле lifespanPP и в появившемся контекстном меню выберите пункт Creation Expression (Создать вы ражение).
9.
В главном поле редактора выражений введите следующую строку: particleShapel.lifespanPP=rand(2, 3) ; При этом для каждой частицы будет установлена продолжительность существования в случайном диапазоне от двух до трех секунд.
10. В разделе Per Particle (Array) Attributes (Атрибуты массива частиц) редактора атри бутов щелкните правой кнопкой мыши на атрибуте goalPP, находящемся над атри бутом lifespanPP, и в появившемся контекстном меню выберите пункт Create r a m p (Создать градиент). Когда появится надпись <-arrayMapperl.outValuePP, снова щелкните правой кнопкой мыши и в появившемся контекстном меню выбери те пункт Edit r a m p (Редактировать градиент). 1 1 . Откорректируйте градиент так, чтобы он был черным от низа до середины, убедитесь, что верх градиента белый, и установите для параметра Interpolation (Интерполяция) значение Smooth (Сгладить). Запустите воспроизведение анимации. 12. Градиент корректирует коэффициент цели для частиц на протяжении существова ния каждой частицы. При рождении частица имеет коэффициент цели, равный нулю. Со временем значение перемещается вверх по градиенту. Вверху оно становится равным единице, и частица начинает резко перемещаться к цели. Можно неплохо по веселиться, корректируя значения в градиенте и соответственно контролируя пове дение частиц при приближении к цели. 13. Остановите воспроизведение анимации и вернитесь к окну Attribute Editor (Редактор атрибутов) частицы. Снова щелкните правой кнопкой мыши на значении goalPP и в появившемся контекстном меню выберите пункт Edit Array Mapper (Редактировать массив текстуры). Установите для параметра Min Value (Минимальная величина) значение 0.01, а для параметра Max Value (Максимальная величина) — значение 0 . 5 . При этом изменятся диапазоны градиента, так что теперь черный равен 0. 01 и белый — 0 . 5 . Это еще один весьма удобный способ точной регулировки процесса моделирования.
Использование частиц
753
14. Щелкните правой кнопкой мыши на атрибуте goalPP и в появившемся контекстном меню выберите пункт Break Connection (Разорвать связь), чтобы избавиться от гра диента, который управляет атрибутом goalPP. 15. Вернитесь к разделу G o a l W e i g h t s A n d Objects (Объекты и весовые коэффици енты цели) редактора атрибутов и щелкните на кнопке C r e a t e g o a l W e i g h t O P P (Создать g o a l W e i g h t O P P ) . При этом к атрибутам массива частиц добавится другой атрибут.
Атрибуты цели отдельных частиц Атрибуты цели отдельных частиц учитывают каждую цель, воздействующую на час тицу, обеспечивая дополнительный уровень управления моделированием. К каждой це ли можно применять градиенты, или работать с каждой целью в выражениях, или же де лать и то и другое. Создаваемый атрибут называется goalWeightOPP. В Майя атрибуты коэффициента цели отдельных частиц нумеруются в порядке, в котором цели добавляются к объекту, начиная с нуля. Это может немного сбивать с толку, но, по существу, коэффициент цели для элемен та locator1 упоминается в массиве частиц и в редакторе выражений как нулевой. Если добавить второй атрибут коэффициента цели отдельных частиц, он будет обозначен как goalWeightlPP.
Испытаем атрибут цели в следующем упражнении. 1.
В разделе Per Particle Array Attribute (Атрибуты массива частиц) щелкните правой кноп кой мыши на атрибуте goalWeightOPP и в появившемся контекстном меню выберите пункт Creation Expression (Создать выражение). Под выражением lifespanPP в поле Expression (Выражение) введите строку particleShapel.goalWeightOPP=. 5;. Щелкните на кнопке Edit (Правка). При этом значение коэффициента цели для эле мента locator1 станет равным 0 . 5, во многом аналогично предыдущему.
2.
В окне редактора выражений переключите режим на r u n t i m e Before Dynamics (Прогон перед динамикой) и введите следующую строку: particleShapel.goalWeightOPP=0.5+(0.5*sin(time));
В этом выражении вычисляется синус значения времени, указанного в секундах. Это значение суммируется с коэффициентом цели отдельных частиц для элемента locator1. Функция синуса от времени выдает значение, которое при воспроизведении анимации плавно изменяется от -1 до 1. Это синусоидальная волна. Однако коэффициент цели не должен быть отрицательным, поэтому значение в вы ражении делится пополам за счет умножения на 0 .5, а затем к получившейся величине прибавляется 0.5. Таким образом, синусоидальная волна была сжата по вертикали вдвое и поднята вверх так, чтобы значение выражения изменялось от нуля до единицы. При воспроизведении анимации притяжение частиц к целям будет меняться от сильного до слабого и наоборот. Если установить значение параметра Conserve (Сохранить) час тицы равным 0. 7, это станет немного более очевидным. Теперь рассмотрим, как две цели могут взаимодействовать друг с другом, изменяя поведение частицы.
754
Глава 19
1.
Сделайте вторую цель активной, щелкнув на флажке под значением элемента l o c a t o r 2 . Установите значение равным 0.5. На виде сверху видно, что теперь час тицы перемещаются между двумя целями вполне натурально.
2.
Вернитесь к выражению времени выполнения для атрибута g o a l W e i g h t О Р Р и отре дактируйте его. Замените s i n на n o i s e и запустите воспроизведение анимации. Те перь частицы между двумя целями перемещаются случайно.
Можно продолжить совершенствовать эту анимацию, добавляя атрибуты отдель ных частиц для цели l o c a t o r 2 . Попробуйте смешать градиенты и выражения меж ду двумя целями. Комбинируя все методы в рассмотренном примере, необходимо ознакомиться с рядом способов управления моделированием частиц. Конечно, эта тема еще не окончена...
Динамика мягких тел Каждому аниматору, рано или поздно, необходимо создать небольшой эффект тря ски. Динамика мягких тел является отличным способом получить в анимации некоторые эффекты тряски, и она довольно проста в применении. При преобразовании объекта в мягкое тело все его вершины или контрольные вершины (CV) становятся частицами. За тем на эти частицы могут воздействовать поля, цели и выражения. Динамика мягкого те ла может применяться для создания вторичного трясущего движения и простых эффек тов одежды и жидкостей. Рассмотрим эти возможности на паре упражнений. 1.
Откройте на компакт-диске файл j е l l y C u b e 1 . m b .
2.
В этом файле находится довольно плотный полигональный куб и ухабистая плоскость. Куб и плоскость деформированы с одинаковой решеткой. Анима ция куба заключается в скольжении по ухабистой плоскости. Если решетка видна на экране, скройте ее, сняв отметки Deformers (Деформаторы) в меню Show (Показать) панели представления. При этом анимацию куба будет легче рассмотреть.
3.
Выделите зеленый объект pCube1 и в меню S o f t / r i g i d Bodies (Мягкие/ Твердые тела) из набора меню Dynamics (Динамика) выберите пункт Create Soft Body • (Создать мягкое тело • ) .
Преобразовать объект в мягкое тело можно тремя способами. •
Make Soft (Сделать мягким). Преобразует все вершины в частицы.
•
Duplicate, Make Copy Soft (Дублировать, сделать копию мягкой). Позволяет создать второй экземпляр, в котором все вершины или контрольные вершины являются мягкими, но исходный экземпляр остается прежним. Это полезно, поскольку можно сделать вершины исходного объекта целями для частиц мягкого объекта.
•
Duplicate, Make Original Soft (Дублировать, сделать оригинал мягким). Напоминает метод Duplicate, Make Copy Soft (Дублировать, сделать копию мягкой), но объектом целей может быть сделан второй объект. Это хорошо работает при преобразовании решетки, которая деформирует объект, в мягкое тело.
Давайте посмотрим, как это работает, преобразовав анимированный куб в объект мягкого тела.
Использование частиц
755
1.
Перейдите в начало анимации, а затем выберите метод преобразования Duplicate, Маке Copy Soft (Дублировать, сделать копию мягкой).
2.
Убедитесь, что среди прочих параметров установлены Hide Non-Soft Object (Скрыть не мягкие объекты) и Make Non-Soft A Goal (Сделать не мягкие объекты целями). Сбросьте параметр Duplicate Input Graph (Дублировать входящую кривую).
3.
Установите значение коэффициента равным 0 . 5 и щелкните на кнопке Apply (Применить).
4.
Запустите воспроизведение анимации.
Вещи определенно выглядят вязкими. Новый куб имеет желеобразную поверхность. По существу, каждая вершина не мягкого, скрытого объекта является целью, которая влияет на каждую из частиц, составляющих мягкий, видимый объект. 1. В иерархической структуре теперь можно обнаружить новый объект под названием copyOf p C u b e l . Раскройте этот мягкий объект, чтобы увидеть частицы, состав ляющие его вершины. 2.
Убедитесь, что в разделе Display (Представление) иерархической структуры выбран пункт Shapes (Формы). Найдите узел формы для исходного объекта p C u b e l . Его название должно быть голубым, это означает, что объект скрыт. Выделите его и в меню Display (Представление) панели инструментов выберите пункт Show Selection (Показать выделение). Перейдите в начало анимации и запустите ее воспроизведение.
3. Теперь на экране можно увидеть как исходный объект, так и копию мягкого тела. Обратите внимание, как они взаимодействуют. Выделите узел формы p C u b e l и в меню Display (Представление) панели инструментов выберите пункты Hide => Hide Selection (Скрыть => Скрыть выделение). Поведение мягкого тела отличается от поведения частиц в упражнении с целями, рас смотренном в предыдущем разделе, так что известно, что управлять движением мягкого тела можно несколькими способами. Можно уменьшить сохранение формы частиц, можно откорректировать весовые коэффициенты цели или же добавить поля. Наверное, не стоит возиться с продолжительностью существования частиц, поскольку это может привести к несколько странным результатам. Мягкие тела также предоставляют альтер нативу для управления весовыми коэффициентами цели на основе отдельных частиц. Можно интерактивно наносить весовые коэффициенты цели на куб с помощью инстру мента Maya Artisan. Работу с мягкими телами лучше начать с этого инструмента. Ниже описано, как наносить весовые коэффициенты цели на объект мягкого тела. 1. Выделите ухабистую плоскость под кубом и сделайте ее невидимой. Перейдите в на чало анимации и увеличьте масштаб желеобразного куба. 2.
Сначала следует установить для всех частиц значения весовых коэффициентов цели равными 1.0. В иерархической структуре выделите форму частиц и убедитесь, что в панели каналов или редакторе атрибутов для коэффициента цели установлено зна чение 1. 0. Теперь все готово для начала редактирования. Если запустить воспроиз ведение анимации, то трясущееся движение должно продолжаться.
3. Выделите геометрическую форму куба мягкого тела и в меню S o f t / r i g i d Bodies (Мягкие/Твердые тела) выберите пункт Paint Soft Body Weights Tool • (Инстру мент нанесения весовых коэффициентов на мягкое тело • ) .
Глава 19
756 4.
Это мало чем отличается от окрашивания костей или нанесения деформационных весовых коэффициентов. Для нанесения всех весовых коэффициентов используется кисть. Куб должен стать белым, это указывает на то, что на него нанесены весовые коэффициенты цели. Установите удобный размер кисти, желательно достаточно большой. Не нужно стремиться к большой детализации.
5.
Установите для параметра Paint Operation (Окрашивание) значение r e p l a c e (Заменить), а для параметра Value (Значение) — значение 0 . 5 . Начните окрашива ние верхней части куба. Все коэффициенты в нижней части куба нужно оставить равными 1. о, чтобы куб по-прежнему правильно взаимодействовал с поверхностью (рис. 19.10).
Рис. 19.10. Использование инструмента Maya Artisan для нанесения весовых коэффициентов цели на мягкое тело 6.
Когда верхние три четверти куба будут окрашены в серый цвет, установите для па раметра Paint Operation (Окрашивание) значение Smooth (Сгладить) и щелкните несколько раз на кнопке Flood (Заполнить). При этом пятнистая окраска превратит ся в прекрасный градиент.
7.
Отложите инструмент Artisan и запустите воспроизведение анимации.
8.
Верхняя часть, в отличие от нижней, выглядит хорошо. Выделите куб и снова выбе рите инструмент Paint Soft Body Weights Tool • (Инструмент нанесения весовых коэффициентов на мягкое тело • ) . В разделе Paint Operation (Окрашивание) выбе рите пункт A d d (Добавить) и установите значение параметра Value (Значение) рав ным 0.25. Щелкните на кнопке Flood (Заполнить). Значение серого увеличится до 0.75. Снова запустите воспроизведение анимации.
Использование частиц
757
Можно продолжить редактировать весовые коэффициенты мягкого тела, пока ре зультат не станет удовлетворительным. Попробуйте наносить различные величины на разные части, сглаживать их и добавлять, пока не получится желаемый вид. Иногда не плохо выглядят три сглаженных уровня при значениях 1. О для верхней части, 0 . 7 5 — для средней и 0 . 5 — для нижней. Куб выглядит вязким, но не желеобразным. Желе обладает эффектом волны, которая проходит через объект, если тронуть его. Чтобы добиться этого эффекта, к мягкому телу необходимо добавить пружины. Пружины мягкого тела (soft-body spring) отличаются от упругих ограничителей твер дого тела (rigid-body spring constraint). Для обеспечения необходимого эффекта пружи ны мягкого тела могут быть добавлены между каждой вершиной частицы мягкого тела. 1. Выделите куб и выберите в меню S o f t / r i g i d Bodies (Мягкие/Твердые тела) пункт Create Springs • (Создать пружины • ) . 2.
В появившемся окне параметров установите для параметра Creation Method (Метод создания) значение Wireframe (Каркас), для параметра Wire W a l k Length (Длина шага сетки) — значение 2, а также отключите параметры Use Per-Spring Stiffness (Использовать жесткость отдельных пружин), Use Per-Spring Damping (Исполь зовать сопротивление отдельных пружин) и Use Per-Spring r e s t L e n g t h (Ис пользовать длину покоя отдельных пружин). Установите для параметра Stiffness (Жесткость) значение 100, а для параметра Damping (Сопротивление) — значение 0. Оставьте значение параметра r e s t Length (Длина покоя) равным 0, а значения пара метров End1 и End2 Weights (Первый/Второй весовые коэффициенты) — равными 1.
3.
Щелкните на кнопке Create (Создать), и Майя обновит представление через не сколько секунд.
4.
После создания пружин на экране будут видны линии между каждой частицей. Ото бражение пружин в виде камеры может замедлить воспроизведение. Для сокрытия пружин можно сбросить параметр Dynamics (Динамика) в меню Show (Показать) панели представления или скрыть объект пружины в окне иерархической структуры.
5.
Запустите воспроизведение анимации и посмотрите на результат.
При использовании пружин мягкого тела объект мягкого тела может вести себя совершен но необычно и даже взрываться. Не нужно паниковать. Это происходит, если значение па раметра жесткости пружин установлено большим. В этом случае необходимо откорректи ровать дискретизацию (oversampling) и скорость воспроизведения. Для этого перейдите к предпочтениям временной шкалы и установите для параметра Playback Speed (Скорость воспроизведения) значение Play Every Frame (Воспроизводить каждый кадр), а для пара метра Playback By Value (Воспроизведение по значению) — значение 0 . 5 . Затем в наборе меню Dynamics (Динамика) выберите пункты Solvers => Edit Oversampling Or Cache Settings (Решатели => Редактировать параметры дискретизации или кэша). В открывшемся диалого вом окне установите значение параметра Oversamples (Дискретизация) равным 2. Анимация будет воспроизводиться медленнее, но взрывы мягких тел должны прекратиться. Динамика мягких тел позволяет добавить к анимации персонажа интересные эффекты. Откройте с компакт-диска файл s o f t B o d y C h e e k s . m b . Запустите воспроизведение анимации и понаблюдайте за движением челюсти. Ее движение немно го преувеличено, но главное — увидеть, как это может быть полезно. Постановка этой анимации аналогична постановке анимации желеобразного куба. Чтобы посмотреть, как
Глава 19
758
были нанесены значения цели, можно выделить голову на сцене и воспользоваться инст рументом Paint Soft Body Weights (Нанесение весовых коэффициентов на мягкое тело) (рис. 19.11).
Рис. 19.11. Голова персонажа была пре образована в объект мягкого тела. Весо вые коэффициенты цели были нанесены на щеки с помощью инструмента Artisan
Спрайты и экземпляры В Майя существует несколько встроенных эффектов частиц, которые имеют собст венные выражения и сценарии. Эти эффекты доступны в меню Effects (Эффекты) набо ра меню Dynamics (Динамика). Одним из наиболее полезных эффектов является изогнутый поток (curve flow). С помощью этого эффекта можно создать поток частиц, который следует по определен ной траектории. Рассмотрим этот эффект. 1. Откройте с компакт-диска файл curveFlowl.mb. 2.
На экране появится простая спиралеобразная кривая. Выделите эту кривую и в наборе меню Dynamics (Динамика) выберите пункты Effects => Create Curve Flow • (Эффекты => Создать изогнутый поток • ) .
3.
Введите имя эффекта stream, убедитесь, что установлен параметр присое динения эмиттера к кривой, установите количество контрольных сегментов равным 8, а подчиненных сегментов — равным 4. Установите для параметра Emission r a t e (Скорость испускания) значение 100, для параметра r a n d o m Motion Speed (Случайная скорость движения) — значение 0.5, для парамет ра Particle Lifespan (Продолжительность существования частиц) — значение 5, а для параметра Goal Weight (Весовой коэффициент цели) — значение 1. Щелкните на кнопке Create (Создать).
Использование частиц
759
4.
Спустя несколько секунд вдоль кривой появится девять кругов и локаторов. Щелк ните на кнопке Play (Воспроизвести), и снизу появится поток частиц, постепенно поднимающийся вверх и проходящий через каждый круг на своем пути.
5.
Круги вдоль кривой являются Целями, которые направляют частицы вдоль нее. Если для формы частиц открыть раздел редактора атрибутов Per Particle (Array) Attributes (Атрибуты массива частиц), то в нем можно увидеть, что ряд выражений был создан автоматически. Ради любопытства можно попробовать отредактировать эти выраже ния. Безусловно, это хороший способ освоить выражения. Но если необходимо на строить только способ, с помощью которого частицы перемещаются вдоль кривой, можно выделить группу потока в окне иерархической структуры и найти в панели каналов ряд атрибутов, которые можно редактировать. Они включают в себя коэф фициент цели частиц, случайное движение и положение каждой цели вдоль кривой.
Теперь сделаем упражнение немного интереснее, добавив несколько спрайтов. Спрайт (sprite) — это тип визуализируемых частиц, состоящий из плоских квадратных плоскостей, которые всегда ориентированы перпендикулярно к камере. Наложив на плос кости файл изображения (или последовательность файлов изображений), частице можно придать более сложный вид, подобный дыму или огню. Спрайты имеют также размер, по этому при приближении камеры они не будут распадаться на точки или полосы. Спрайты должны визуализироваться аппаратно, что может быть недостатком в некоторых обстоя тельствах. Давайте испытаем работу спрайта при моделировании изогнутого потока. 1. Выделите частицу изогнутого потока в окне иерархической структуры или в перспективном представлении. 2.
Откройте для узла формы частицы редактор атрибутов. Выберите в разделе render Attributes (Атрибуты визуализации) параметр Sprites (Спрайты). Чтобы добавить атрибуты для этого типа визуализации, щелкните на кнопке Current render Туре (Текущий тип визуализации), расположенной после надписи Add Attributes For (Добавить атрибут для).
3.
Будет ошибкой полагать, что изображение на спрайты накладывается с по мощью атрибута цвета. Однако фактически изображение наложено с помо щью тонера. Выделите форму частиц и примените тонер Lambert. Метод Ламберта работает лучше всего, поскольку он не имеет коэффициента от ражения (specularity), который в любом случае игнорировался бы частицей.
4.
Убедитесь, что в перспективном представлении включен режим Hardware Texturing (Аппаратное текстурирование), а затем откройте атрибуты тонера Lambert, который применен для спрайтов.
5.
В канале цвета тонера Lambert щелкните на шахматной пиктограмме. На спрайт будет наложена текстура из файла, который находится на компактдиске. В панели Create render Node (Создать узел визуализации) выберите пункт File (Файл) и убедитесь, что выполняется нормальное наложение.
6.
В поле атрибута Image Name (Имя изображения), под атрибутами File Attributes (Атрибуты файла) узла F i l e 1 , откройте диалоговое окно и окно просмотра, чтобы найти файл s p r i t e l m a g e . t i f , который расположен на компакт-диске в каталоге исходных изображений для главы 19.
Глава 19
760
Когда изображение будет наложено на спрайт, появится черный узор в виде цветка. Изображение в предварительном просмотре панели Texture Sample (Образец тек стуры) редактора атрибутов узла F i l e 1 выглядит похожим на размытую белую точку. Дело в том, что каналы цвета са мого файла . t i f f содержат белую точку, а канал прозрачно сти (alpha channel) содержит форму цветка, как показано на рис. 19.12. Обратите также внимание на то, что примененная к спрайту текстура Lambert имеет файловую текстуру, авто матически наложенную как на каналы цветов, так и на канал прозрачности. Это происходит тогда, когда в импортируемой файловой текстуре уже имеется канал прозрачности. Рис. 19.12. Каналы изо8. Создание для спрайта исходного изображения белого цвета , брожения спрайта, отопредоставляет определенную гибкость при изменении его цвета. Выделите узел формы частиц и в окне редактора атри- каналов программы Phoбутов щелкните на кнопке Color And Opacity (Цвет и непро- toshop зрачность) в разделе Add Dynamic Attributes (Добавить атри буты динамики). Для обоих атрибутов выберите в контекстном меню пункт A d d Per Object (Добавить на объект). Файловую текстуру спрайта можно создать не только в Maya, но и в любом графическом пакете, например Photoshop. Однако размер изображения необходимо сохранять неболь шим, так как каждое изображение накладывается на частицу. Старайтесь использовать текстуры размером не больше 128x128, если размер оперативной памяти в компьютере не большой. Обычно вполне подходит размер 64x64. б
9.
р
а
ж
а
е
м
ы
е
в
п а л и т р е
Вернитесь к разделу render Attributes (Атрибуты визуализации), в котором теперь появились числовые поля ввода для красного, зеленого и синего цветов, а также для непрозрачности. Введите значение 1.0 для красного, 1.0 — для зеленого и 0 . 5 для синего цветов, чтобы спрайты получились приятного бледно-желтого цвета. Ус тановите значение параметра прозрачности равным 0.8.
10. Можно откорректировать размер спрайтов с помощью параметра Sprite Scale (Масштаб спрайта) по осям X и Y, а также изменить его угол, изменив значение па раметра Sprite Twist (Поворот спрайта). Если есть желание управлять значениями параметров отдельных частиц спрайтов с помощью выражений, то можно добавить и их. При использовании для спрайтов последовательности изображений доступен ат рибут Sprite Num (Количество спрайтов). 11. Атрибут Depth Sort (Сортировка по глубине) гарантирует, что самые близкие к ка мере спрайты находятся впереди. Убедитесь, что этот атрибут установлен. 12. Визуализировать эти частицы можно с помощью аппаратной визуализации Maya или аппаратного буфера визуализации (рис. 19.13). Параметры этой сцены содер жатся в файле c u r v e F l o w 2 . ma на CD. Инструмент Sprite WiZard (Мастер спрайтов) может немного облегчить задачу наложения изображений на спрайты. Для его использования выделите частицу перед применением типа визуализации частиц и выберите в меню Particles (Частицы) пункт Sprite WiZard (Мастер спрайтов). Мастер позволит пройти через ряд этапов настройки спрайтов, а также поможет, если необходимо назначить текстуре спрайта анимированную последователь ность изображений.
Использование частиц
761
Рис. 19.13. Спрайты частиц вдоль объекта изогнутого потока
Создание экземпляров частиц Концепция создания экземпляров частиц (particle instancing) похожа на концепцию создания спрайтов, за исключением того, что каждая частица заменяется трехмерным объектом, а не двухмерным изображением. Эти объекты могут быть анимированы. Дан ный метод отлично работает при создании роя жуков или других крошечных противных созданий, а также позволяет воспользоваться преимуществами программной визуализа ции, а не аппаратной, что облегчает создание композиции. 1.
Выделите объект формы частиц и переключите тип визуализации в (points).
2.
Создайте тор NURBS и уменьшите его размер до 0.25 по осям X, Y и Z.
3.
Выделите тор, затем частицу и выберите в меню Particles (Частицы) пункт Instancer ( r e p l a c e m e n t ) (Источник (Замещение)). Параметры, заданные по умолчанию, от лично подходят.
4.
При воспроизведении анимации виден очаровательный поток колец, спиралью уст ремляющийся ввысь, как показано на рис. 19.14. Частицы связаны с исходной гео метрической фигурой таким же образом, как и объекты экземпляров связаны с ис ходным прототипом. Если добавить тонирование или повернуть исходный объект, то экземпляры обновятся. Однако, поскольку это частицы, некоторые атрибуты можно также контролировать с помощью выражений.
5.
Для управления положением на уровне отдельных частиц необходимо создать спе циальный векторный атрибут отдельных частиц, а затем создать несколько выраже ний для присвоения значений этим атрибутам. Создание выражений и специальные атрибуты рассматриваются в следующем разделе. В окне редактора атрибутов, от крытом для частицы, находится раздел Instancer (Geometry r e p l a c e m e n t ) (Источник (Замещение геометрии)), в котором можно связывать такие вещи, как положение, размещение и периодичность, с другими атрибутами, включая специальные атрибу-
точечный
762
Глава 19 ты отдельных частиц. Параметры этой сцены содержатся в файле c u r v e F l o w 3 .mb на компакт-диске.
Рис. 19.14. Создание экземпляров частиц с применением тора
Усложненные выражения частиц Это заключительное упражнение будет немного трудным. Тот, кто дошел так далеко и чувствует себя уверенно в рабочем процессе анимации, ис пользованном в предыдущих упражнениях, должен быть готов принять вызов. Тот, кто уже знаком с анимацией частиц, может научиться в этом разделе нескольким новым приемам и применить их в будущих проектах. В данном упражнении поэтапно описан процесс создания эффекта частиц в виде мрачного призрачного облака с элементами замедленного просмотра. Необходимо, что бы турбулентное облако появилось в воздухе, выросло, а затем уменьшилось. Кроме то го, необходимы некоторые элементы управления, чтобы можно было настроить эффект после его установки. Эти элементы управления являются простыми локаторами, кото рые можно анимировать или подчинить конечностям похожего на призрак персонажа. В упражнении также будут подробно описаны атрибуты коэффициента цели отдельных частиц и глобального положения цели отдельных частиц и некоторые способы примене ния градиентов с выражениями. Прежде всего, необходим турбулентный поток частиц. Их размером и видимостью будем управлять с помощью создания взаимосвязи между положением отдельных час тиц и положением локатора. 1. Создайте эмиттер, преобразуйте его в объемный эмиттер, а в качестве типа выберите сферу. Назовите его cloudGen. Установите значение скорости равным 400. 2.
Эмиттер должен появиться в начале координат. При воспроизведении анимации из сферы будет извергаться полуплотное облако. Выделите форму частиц и в меню Fields (Поля) выберите пункт Uniform (Однородно).
Использование частиц
763
3.
Однородная сила является всего лишь силой, которая толкает частицы в определен ном направлении. Действительно, гравитационное поле является однородной силой, которая толкает частицы вниз по оси Y. Переместите пиктограмму силы на несколь ко отрицательных единиц по оси X, для того, чтобы ее было лучше видно.
4.
Сила должна начать толкать частицы в положительном направлении по оси X. Если ничего не происходит, дважды проверьте связь между частицей и полем в окне Dynamic r e l a t i o n s h i p Editor (Редактор динамических взаимосвязей).
5.
Давайте сделаем движение немного спокойнее. Установите значение параметра со хранения для формы частиц равным 0. 7.
6.
Теперь введем в движение элемент случайности. Выделите форму частиц и выберите в меню Fields (Поля) пункт Turbulence (Турбулентность). Установите для парамет ра Magnitude (Величина) значение 30, а для параметра Attenuation (Затухание) — значение 0. Убедитесь, что параметр Use Max Distance (Использовать максимальное расстояние) установлен в состояние Off (Отключено).
7.
Это выглядит отлично, но сам шаблон турбулентности немного статичен. Чтобы не много оживить сцену, создадим шаблон шумов турбулентности. Выделите поле тур булентности. В его панели Channel Box (Панель каналов) щелкните правой кнопкой мыши на атрибуте PhaseZ и в появившемся контекстном меню выберите пункт Expressions (Выражения).
8.
В редакторе выражений введите следующую строку в поле Expression (Выражение): turbulenceFieldl.phaseZ=sin (time); Это выражение перемещает фазу турбулентности вперед и назад в направлении Z по за кону синусоидальной волны. Запустите воспроизведение анимации. Выглядит неплохо. Можно также попробовать применить формулу n o i s e ( t i m e ) , которая задает случай ную величину в диапазоне от -1 до 1, которая также выглядит очень естественно.
9. Хорошей привычкой является немедленное назначение атрибута продолжительно сти существования отдельных частиц для их формы. Даже если речь идет о простом случае, значение атрибута продолжительности существования отдельных частиц равное, например, одной секунде, позволит использовать его в качестве исходной ве личины для последующих выражений или градиентов. Как и в предыдущих упраж нениях, установите для параметра Lifespan Mode (Режим продолжительности суще ствования) значение lifespanPP Only (Только l i f e s p a n P P ) . Перейдите вниз к раз делу Per Particle (Array) Attributes (Атрибуты массива частиц), щелкните правой кнопкой мыши в поле Expression (Выражение) и в появившемся контекстном меню выберите пункт Creation Expression (Создать выражение). 10. Для выражения времени создания введите следующую строку: particleShapel.lifeepanPP=rand(5,7); 1 1 . Это уже выглядит достаточно неплохо для демонстрационного вихря. Ну ладно, не совсем хорошо, но гораздо лучше. Измените значение параметра Particle render Туре (Тип визуализации частицы) на Cloud(s/w) (Облако). В данный момент не нужно щелкать на кнопке Current render Туре (Текущий тип визуализации). 12. Создайте локатор и переместите его примерно на 12 единиц по оси X. Это будет эле мент управления размером, который поможет создать некую разновидность времен ной задержки и эффект конденсации водяного пара.
764
Глава 19
Теперь необходимо установить взаимосвязь между расположением каждой частицы и его близостью к локатору. С этого момента радиус частицы будет контролироваться так, чтобы она появлялась и исчезала при прохождении через локатор. Для этого объекта це ли будет применен атрибут goalWorldPostionPP. Этот атрибут нельзя анимировать непосредственно. Он всего лишь сообщает глобальное положение цели, т.е. как она рас положена по отношению к каждой частице. Это полезная входная величина для управ ления выражениями. Чтобы получить эту величину, необходимо создать локатор цели и атрибут коэффициента цели отдельных частиц. 1. Выделите частицу, а затем, удерживая нажатой клавишу <Shift>, выделите локатор и выберите в меню Particles (Частицы) пункт Goal (Цель). 2.
Если запустить воспроизведение анимации, то можно заметить, что характер обстре ла локатора частицами зависит от коэффициента цели, установленного при активи зации команды цели. Устраним эту проблему во вторую очередь, используя атрибут Per-Particle Goal Weight (Весовой коэффициент цели отдельных частиц). Откройте для частицы окно редактора атрибутов. В разделе Goal Weights And Objects (Объекты и весовые коэффициенты цели) щелкните на кнопках Create goal WeightOPP (Создать g o a l W e i g h t O P P ) и Create goalWorldPositionOPP (Создать
goalWorldPositionOPP) (как показано на рис. 19.15).
Puc. 19.15. Кнопки в окне редактора атри бутов для каждого объекта цели позволяют добавлять новые атрибуты цели отдельных частиц, такие как коэффициент цели, рас положение, нормаль и т.д.
Использование частиц
765
3.
Применим выражение времени создания для атрибута goalWeightOPP. Для этого перейдите вниз к атрибутам массива, щелкните правой кнопкой мыши в поле goalWeightOPP и в появившемся контекстном меню выберите пункт Creation Expression (Создать выражение). В окне редактора выражений под выражением lifespanPP введите команду particleShapel .goalWeightOPP=0; и щелкните на кнопке Edit (Правка).
4.
Если запустить воспроизведение анимации, то можно увидеть, что она выглядит точно так же, как и перед добавлением цели. Однако теперь имеется атрибут goalWorldPosition, обеспечивающий доступ к расположению цели. Локатор цели позволяет получить в выражении дополнительную информацию о сцене.
5.
Вернитесь вверх к типу визуализации для объекта частицы и измените его значение с Cloud(s/w) (Облако) на числовое. Щелкните на кнопке Current render Type (Текущий тип визуализации). На экране каждая частица превратится в строку чисел. В области новых атрибутов появилось поле для атрибута — Name (Имя). Введите в этом поле имя goalWorldPositionOPP. Частицы должны выглядеть как 12.000,0.000,0.000. По понятному совпадению, эти числа являются координа тами по осям X, Y и Z объекта локатора цели. Если переместить локатор и запустить воспроизведение анимации, то эти числа соответственно изменятся (как показано на рис. 19.16).
Рис. 19.16. Когда тип визуализации частиц установлен в числовой форме, информация отдельных частиц отображается непосредственно в виде камеры Числовой тип визуализации является удобным инструментом диагностики. Факти чески визуализация не выполняется, но в поле имени атрибута можно ввести имя атри бута, который используется частицей в настоящее время, и увидеть соответствующие изменения частицы. Попробуйте ввести в это поле имя birthTime, и частицы сообщат время своего создания в секундах. 1.
Измените значение типа визуализации обратно на Cloud(s/w) (Облако). Давайте по пробуем поработать с радиусом частицы.
Глава 19
766
Щелкните на кнопке General (Общие) в области, находящейся непосредственно ни же раздела атрибутов массива. В появившемся меню щелкните на вкладке Particle (Частица) и выберите из списка пункт radiusPP. Новый атрибут radiusPP добавит ся к списку атрибутов массива частиц (рис. 19.17).
Рис. 19.17 окне Add Attribute можно создать новые атрибу ты отдельных частиц или вы брать существующие из списка Примените выражения времени создания так же, как и для атрибутов lifespanPP и goalWeightPP. Выражение должно выглядеть так: particleShapel. radiusPP=0 .1. Если запустить воспроизведение анимации, то частицы будут выглядеть, как круга меньших размеров (рис. 19.18).
Рис. 19.18. Турбулентное облако частиц, направляющееся к локатору
Использование частиц 4.
767
Теперь выражения времени создания настроены и определена начальная точка для частиц, из которой можно создать несколько выражений времени выполнения. При открытом окне Expression Editor (Редактор выражений) выберите в параметрах час тиц режим r u n t i m e Before Dynamics Mode (Режим прогона перед динамикой).
Сначала необходимо создать несколько переменных, которые будут хранить величи ны. Эти величины можно изменять, а затем устанавливать значения атрибутов равными этим новым, измененным величинам. Переменные обеспечивают гибкость и позволяют лучше управлять атрибутами. В каждом кадре существования для частицы будут вычисляться выражения времени вы полнения. Вот почему выражения могут быть немного медленнее по сравнению с другими средствами управления атрибутами, такими как установка управляемого ключевого кадра, редактор связей или вспомогательные узлы. Однако выражения предлагают более непо средственное, специализированное управление. Если выражения не помогут выполнить ра боту, можно использовать язык сценариев MEL (см. главу 16, "Встроенный язык Maya (MEL)"). Если же и это не поможет, можно прибегнуть к новой способности Maya 8.5 — ин теграции со сценариями Python, позволяющими создавать дополнения для Maya в стиле языка С + + . Эта новая возможность существенно облегчает создание мощных дополнений, связанных непосредственно с API Maya. В первой создаваемой переменной будет храниться текущее значение радиуса от дельных частиц. Это значение будет каждый раз вычисляться при обработке выражения времени выполнения. Так как в выражении времени создания значение радиуса было ус тановлено равным 0.1, текущее значение будет также равно 0.1. Если в конце последне го кадра радиус будет изменен, при запуске вычисления выражения времени выполне ния значение радиуса будет равно этой новой величине. Синтаксис выражения для соз дания переменной выглядит следующим образом: flоаt$siZe=particleShapel.
radiusPP;
В первой части выражения устанавливается тип числа, которое будет храниться в пе ременной. В данном случае это тип float (число с плавающей запятой), который может быть положительным или отрицательным десятичным числом, таким как .1, -3 .14 или 0.33333333.
Вторая часть выражения содержит имя переменной. В данном выражении выбрано имя $Size, поскольку оно короткое и наглядное. Имена переменных должны начинаться со знака доллара ($). Затем переменной присваивается значение необходимого атрибута. В данном случае этим атрибутом является атрибут radiusPP узла формы частиц (particleShapel). И наконец, все операторы в окне редактора выражений должны оканчиваться точкой с запятой. (Зачастую многие об этом забывают. Если забыть поставить точку с запятой, Maya сообщит об ошибке.) Теперь создадим переменную для хранения положения локатора. Можно было бы просто создать переменную, в которой хранились бы значения перемещений по осям X, У и Z, но вместо этого будет использоваться вновь созданный атрибут goalWorldPosition. Почему? Для этого существует хороший повод, о котором будет рассказано немного позже. Введите следующее выражение: vector
$goalPosO=particleShapel.goalWorldPoeitionOPP;
Глава 19
768
Тип vector (вектор) — это еще один тип переменной. Вектор является набором трех чисел, таких как значения перемещений по осям X, Y и Z, или величины красного, зеле ного и синего цветов. Векторы можно складывать, вычитать, умножать или делить непо средственно на другие векторы. Но между векторами и числами с плавающей запятой нельзя непосредственно выполнять математические операции. А сейчас создадим переменную, в которой будет храниться положение каждой части цы. Это также будет вектор. Введите следующее выражение: vector $pos=particleShapel.position; Секунду! Вплоть до этого момента, каждый раз, когда встречался атрибут отдельных частиц, в его имени присутствовало загадочное окончание pp. Но имя положения не за канчивается на PP. Это можно проверить, если взглянуть на список атрибутов в верхней части редактора выражений. Почему же нет окончания РР? Дело в том, что положение является атрибутом отдельных частиц. Вот и все — и нет окончания PP. Это всего лишь одна из тех вещей, которые нужно знать и помнить при работе в Майя. Таков хитрый прием программирования. Еще больше таких хитростей можно обнаружить при погружении в мир выражений. Осталось создать еще одну переменную. Необходима переменная для хранения поро гового значения расстояния между фигурой цели (также известной как locator1) и по ложением каждой частицы. Поскольку оба этих атрибута являются векторами, новая пе ременная также должна быть вектором. Введите следующее выражение: vector
$diat=«l, 1,1»;
Значения векторных величин отображаются так: «х, у, Z>>. Теперь можно создать выражение. Необходим простой условный оператор, который будет означать: "Если расстояние между положением частицы ($pos) и положением це ли ($goalPosO) меньше, чем задано дистанцией ($dist), установить значение радиуса частицы равным .3. В противном случае установить его значение равным 0". Вот син таксис этого выражения: if
(abs($pos-$goalPosO<$dist)){ $Size=0.3;
} else { $Size=0;
} Безусловно, пока значение атрибута radiusРР не станет равным новому значению переменной $Size, ничего не изменится. Поэтому последняя строка выглядит так: particleShapel.radiusPP=$Size;
Для вычисления абсолютного значения числа используется оператор abs. Как из вестно, в математике абсолютное значение равно самому числу без знака "минус". На пример, абсолютное значение числа -15.6 равно 15.6, а абсолютная величина числа 30 равна 3 0. Поскольку работа выполняется с системой координат, в которой используются как положительные, так и отрицательные значения, зачастую необходимо получать аб солютные значения положения для правильного измерения расстояния. Запустите воспроизведение анимации. Она должна выглядеть немного дико: частицы появляются в эмиттере, исчезают, снова появляются возле локатора, а затем снова исче зают. Поэтому следует кое-что исправить.
Использование частиц
769
1. В окне редактора выражений вернитесь в режим выражения времени создания и ус тановите для параметра p a r t i c l e S h a p e . r a d i u s P P значение 0. Это гарантирует, что размер частицы при ее появлении также будет равен нулю и вокруг эмиттера частиц видно не будет. 2.
Теперь сцена выглядит немного лучше. Давайте расширим диапазон видимых час тиц. Перейдите в режим r u n t i m e Before Dynamics (Прогон перед динамикой) и ус тановите для переменной $dist значение <<2, 2, 2».
3. Снова запустите воспроизведение анимации. Уже лучше. Но было бы хорошо, если бы частицы увеличивались в размере при при ближении к локатору, а затем уменьшались, когда проходили мимо него. Для расчета этих действий можно настроить в выражении сложный цикл. Конечно, если анимация становится более сложной, необходимо поступить именно так. Но в данном случае вос пользуемся градиентом. Градиентами легче управлять, и они предоставляют отличную визуальную помощь при настройке частиц. Это не самое лучшее решение, но в трудную минуту сгодится. 1. Чтобы использовать градиент, необходимо создать атрибут отдельных частиц для хра нения градиента. Затем атрибут radiusPP будет установлен равным градиенту на ос нове продолжительности существования частицы. Выделите узел particleShapel, а затем добавьте атрибут. Щелкните на кнопке General (Общие), расположенной ниже частицы, а затем перейдите на вкладку N e w (Новый). Здесь будет создан специаль ный атрибут отдельных частиц (рис. 19.19). 2. В поле Attribute Name (Имя атрибута) введите имя SizeScalerampPP. Выберите для переключателя Data Туре (Тип данных) значение Float (Число с плавающей за пятой), а для переключателя Attribute Туре (Тип атрибута) — значение Per Particle (Array) (Отдельные частицы (массив)). Все остальные значения оставьте но умолча нию. Щелкните на кнопке A d d (Добавить) внизу и закройте панель. К списку атри бутов массива должен быть добавлен атрибут SizeScalerampPP. 3. Щелкните правой кнопкой мыши на атрибуте SizeScalerampPP и в появившемся контекстном меню выберите пункт Create r a m p (Создать градиент). По умолчанию исходное значение градиента по V находится в зависимости от возраста частицы на основе значения ее параметра lifespanPP. Это то, что надо. 4. Отредактируйте градиент так, чтобы примерно три четверти от его верхней части за нимала белая полоса. Вверху белый цвет должен быстро переходить в черный, как показано на рис. 19.20. 5. Теперь нужно ввести градиент в выражение. Вернитесь к разделу r u n t i m e Before Dynamics (Прогон перед динамикой) редактора выражений и замените условие $Size= . 3 на $Size=particleShapel.SizeScalerampPP;.
6.
Запустите воспроизведение анимации. Размеры частиц должны изменяться в соот ветствии с изменением градиента при приближении частиц к локатору и прохожде нии мимо него. Эту часть эффекта можно настроить тремя способами.
•
Можно отредактировать максимальное значение карты массива и установить для не го значение, отличное от единицы. Попробуйте установить значение 0.3 или 0.5.
770
Глава 19 Это означает, что значение верхнего предела (белой части градиента) теперь равно 0.3 или 0.5, а не 1. Размер частиц не может превысить этой величины.
Puc. 19.19. Для создания соб ственного специального ат рибута можно использовать вкладку New в окне добавле ния атрибута
Puc. 19.20. Градиент управляет размером в зависимости от продолжительности существования
•
Можно откорректировать расположение цветов градиента, даже добавить несколько серых или белых полос, чтобы размер изменялся чаще во времени.
•
Поскольку градиент связан с возрастом частицы, можно в выражении времени соз дания откорректировать значения атрибута l i f e s p a n P P . Случайный диапазон про должительности существования добавит фактор случайности к размеру частиц, по скольку значения градиента связаны с возрастом каждой частицы.
Эффект выглядит неплохо, а кроме того, он обладает большой встроенной гибкостью, преимущества которой еще не используются. Поскольку для определения места появле ния частиц используется положение цели отдельных частиц, можно добавить еще одну цель и, следовательно, еще одну степень управления. Кроме того, ничто не мешает ани мировать положение этих целей. Сначала добавим цель. 1.
Сохраните проделанную работу, а затем создайте еще один локатор.
2.
Переместите этот новый локатор ( l o c a t o r 2 ) ближе к локатору locator1.
3.
Выделите форму частиц и элемент l o c a t o r 2 . Выберите в меню Particles (Частицы) пункт Goal (Цель).
771
Использование частиц 4.
Откройте редактор атрибутов и в разделе Goal Weights A n d Objects (Объекты и ве совые коэффициенты цели) щелкните на кнопке, расположенной под элементом l o c a t o r 2 , чтобы добавить атрибуты goalWeightlPP и goalWorldPositionlPP.
5.
Добавьте выражение времени создания в поле атрибута goalWeightlPP.
Не забывайте, что благодаря последовательности, в которой добавляются цели, атрибуты goalWeightO и goalPositionO соответствуют локатору locator1, а атрибуты goalWeightl
и goalPositionl — локатору l o c a t o r 2 . Немного непонятно? Вероятно, локаторам необ ходимо давать более понятные имена перед их добавлением. 6. В разделе Creation Expression (Создать выражение) редактора выражений добавьте новую строку: 7.
particleShapal.goalWeight1PP=0; Перейдите в режим r u n t i m e Before Dynamics (Прогон перед динамикой) и добавьте переменную для нового атрибута goalWorldPositionl. Строка должна выглядеть следующим образом: vector
$goalPosl=particleShapel.goalWorldPositionlPP;
Новая векторная переменная называется $goalPosl.
>
Теперь необходимо изменить выражение, добавив новую цель в условный опера тор. Вот как звучит новое условие: "Если абсолютная величина расстояния между по ложением отдельных частиц и положением цели g o a l 0 меньше значения переменной расстояния ИЛИ если абсолютная величина расстояния между положением отдельных частиц и положением цели g o a l l меньше значения переменной расстояния, то ис пользовать градиент для управления размером. В противном случае установить значе ние размера равным О". Синтаксис этого выражения следующий: If
(abs($pos-$goalPosO<$dist)||abs($pos-$goalPosl<$dist)) $Size=particleShapel.SizeScaleramp; else $Size=0;
Запустите воспроизведение анимации. Попробуйте переместить локатор l o c a t o r 2 ближе к эмиттеру, чтобы убедиться в том, что он работает. Помните, что частица являет ся потоком, движущимся в положительном направлении по оси X. Если переместить любой локатор слишком далеко от потока, то эффект будет утрачен. Теперь сцена выглядит лучше (рис. 19.21). Чтобы сделать сцену чуть-чуть веселей, посмотрим, нельзя ли добавить немного случайности в переменную расстояния, чтобы область вокруг каждого локатора увеличивалась и уменьшалась во времени. Для этого, возможно, потребуется создать переменную типа float, которая содержит функцию случайности или шума, а затем использовать эту новую переменную для одной или не скольких векторных величин переменной $dist. Для создания случайных векторных чисел, используемых для изменения значения переменной $dist, можно также исполь зовать функцию sphrand. Float $ n o i s y = ( a b s ( n o i s e ( t i m e ) ) + 2 ; Vector $dist= <<noisy,noisy,noisy>>;
И наконец, анимируем положение локаторов с помощью выражений. Выделите лока тор locator1, затем в панели каналов щелкните правой кнопкой мыши на его поле пе-
Глава 19
772
ремещения по оси Z и в появившемся контекстном меню выберите пункт Expressions (Выражения). Введите следующую строку: locator1. tranalateZ=sin(time);
Рис. 1921. Облако увеличивается при приближении к локаторам Выполните те же действия для локатора l o c a t o r 2 , но его величину перемещения по оси Z установите следующей: Locator2.tranalateZ=cos (time); Вот синтаксис для выражений времени создания и прогона перед динамикой. Выражения времени создания: particleShapel.lifespanPP=rand(5,6); particleShapel-goalWeightOPP=0; particleShapel.goalWeightlPP=0; particleShapel.radiusPP=0;
Выражения времени выполнения: float $Size=particleShapel.radiusPP; vector $goalPosO=particleShapel.goalWorldPositionOPP; vector $goalPosl=particleShapel.goalWorldPositionlPP; vector $pos=particleShapel.position; float $noisy=(abs(noise(time)) ) + 2 ; vector $dist=<<$noisy,$noisy,$noisy>>; if
(abs($pos-$goalPosO<$dist)||abs($pos-$goalPosl<$dist)) $Size=particleShapel.SizeScalerampPP;
else $Size=0; particleShapel.radiusPP=$Size;
При создании типа визуализации Cloud(s/w) (Облако) к нему автоматически применяется тонер. Он называется particleCloudl, а найти его можно в гипер шейдере. Проведите несколько экспериментов с настройками и попробуйте визуализи-
Использование частиц
773
ровать несколько кадров облака частиц на сцене. Затем создайте дисковый кэш частиц и визуализируйте анимацию. На компакт-диске содержится визуализированный вариант анимации. Завершенная версия этой сцены, файл cloudl.mb, находится на компакт-диске. Для похожего на призрак персонажа этот эффект подошел бы отлично. Управляющие локаторы могут быть подчинены непосредственно частям фигуры.
Резюме В этой главе были рассмотрены создание и работа с системой частиц, объяснены такие концепции, как продолжительность существования и атрибуты отдельных частиц, рас смотрено создание выражений для атрибутов и использование градиентов для управления ими, описана роль полей и целей в системе частиц, а также при взаимодействиях частиц. Кроме того, было представлено несколько возможностей частиц, включая наследование скорости для полей перемещения и атрибуты отдельных частиц goalWorldPosition и goalWeight. В заключение главы была продемонстрирована работа с объектами мягких тел, спрайтами частиц, эффектом изогнутого потока и создание экземпляров частиц. И наконец, в данной главе были затронуты глубины мира дополнительных эффектов частиц, использующих выражения. В следующей главе рассматриваются эффекты жидкостей Майя, которые во многих отношениях подобны частицам, но лучше подходят для создания эффектов, подобных лаве, огню и пирокластическому дыму.
Система Fluid Effects Процессор моделирования Fluid Effects (Жидкостные эффекты) является одним из самых сложных элементов Maya. Основанный на известных уравнениях Навъе-Стокса (Navier-Stokes), созданных в XIX веке, процессор Fluid Effects вычисляет поток вязких жидкостей во времени, учитывая взаимодействие частиц жидкости. (Это главное отли чие процессора Fluid Effects и системы частиц в Maya.) Хотя физический механизм, ле жащий в основе процессора, является крайне сложным, в Maya он заключен в изящный, легкий в использовании пакет с набором встроенных средств, с помощью которых можно быстро создавать великолепные эффекты. Несмотря на все усилия, которые приложила компания Autodesk для упрощения интерфейса процессора Fluid Effects, этот процессор настолько огромный и мощный, что существует более 400 корректируемых пользовате лем элементов для управления поведением и визуализацией жидкостей. Это становится очевидным, если открыть редактор атрибутов для жидкости. В этой главе рассмотрены наиболее важные элементы управления процессора Fluid Effects и их использование для создания желаемых эффектов. В данной книге не хватит места для исследования каждо го элемента управления, но после прочтения этой главы станет понятно, как по собст венному желанию создавать и изменять эффекты жидкостей для использования их во многих ситуациях. В этой главе рассматриваются следующие темы. •
Что такое жидкости
•
Перетаскивание жидкостей
•
Создание и редактирование жидкостей с самого начала
•
Атрибуты жидкости
•
Эффекты океана и водоема
Что такое жидкости в Maya Пакет инструментов Maya Fluid Effects состоит из двух отдельных, в корне отличаю щихся частей — реалистичной системы моделирования жидкостей и процессора дефор мации/визуализации, который называется Ocean Effects (Эффекты океана). Процессор двухмерного/трехмерного моделирования выполняет достаточно точное физическое мо делирование жидкостей, используя уравнения состояния Навье-Стокса, с помощью ко торых определяется местоположение частиц жидкости в любой конечный промежуток времени на основе поведения соседних частиц жидкости и суммы факторов, таких как температура, плотность и скорость жидкости. Подобно системе частиц Maya, каждый
776
Глава 20
расчет зависит от состояния системы в предыдущем кадре (или его фрагменте). Таким образом, для правильных результатов анимации она должна воспроизводиться кадр за кадром, а это может отнять много времени. В отличие от частиц Майя, жидкости модели руют связанные потоки, в которых каждая частица жидкости взаимосвязана с другими соседними частицами. У основных частиц Майя нет непосредственной возможности ус тановить такую взаимосвязь. С другой стороны, в эффектах океана и водоема пакета Fluid Effects динамика жидкостей не используется непосредственно. Вместо нее в этих эффектах применяется смещение поверхностей, хитроумное наложение текстур и неко торые эффекты частиц для создания убедительных жидких тел, которые можно просто перетащить на сцену для получения эффектов воды. В следующих разделах эффекты океана и водоема рассмотрены более подробно. Из-за высоких вычислительных затрат на моделирование жидкости процессы моделиро вания заключены в блоки, называемые контейнерами жидкости (fluid container), которые по казаны на рис. 20.1. Майя рассчитывает поток жидкости в рамках этих блоков, но не за их пре делами. Частицы Майя, напротив, рассчитываются на сцене повсюду. Контейнер жидкости делится на маленькие кубические области, называемые векселями (voxel), которые определя ют наименьшее пространство, в котором рассчитывается жидкость. Чем меньше воксели, на которые разделен контейнер жидкости, тем точнее результат, однако тем больше времени займет моделирование каждого кадра в Майя. Главное отличие плоского и объемного контей неров жидкости заключается в глубине. Плоской (двухмерный) контейнер имеет только ши рину и высоту, а объемный (трехмерный) имеет также глубину. Плоский контейнер намного эффективней при моделировании, чем объемный: если удвоить количество векселей по ши рине и по высоте в плоском контейнере, то время моделирования увеличится в четыре раза (2x2), если же удвоить количество вокселей в объемном контейнере, то время моделирования возрастет в восемь раз (2x2x2).
Рис. 20.1. Плоский двухмерный (слева) и трехмерный объ емный (справа) контейнеры жидкости При создании модели важно учесть ее разрешающую способность, поскольку необхо дим баланс между качеством получаемого результата и временем, затрачиваемым на его достижение. Меньшее количество вокселей означает более быстрый расчет, но меньшее разрешение модели. Большее количество вокселей приведет к более высокому разреше нию модели, но, возможно, вычисление займет намного больше времени. К счастью, ин струмент Fluid Effects (особенно для двухмерных жидкостей) довольно быстрый, что по зволяет моделировать достаточно сложные системы практически в реальном масштабе
Система Fluid Effects
777
времени. При моделировании с использованием процессора Fluid Effects, особенно эф фектов трехмерных жидкостей, зачастую лучше получить общее поведение системы с помощью небольшого количества вокселей (моделирование при низком разрешении) и, только получив удовлетворительный общий результат, увеличить плотность вокселей. Таким образом, уменьшив время вычислений, можно за то же время просмотреть больше возможных вариантов модели и получить в результате более совершенную анимацию. Кто-то может заявить, что двухмерная жидкость не может быть достаточно полезной при трехмерной визуализации, но для более-менее неподвижной камеры двухмерная жидкость окажется вполне убедительной, а ее моделирование и визуализация могут вы полняться быстрее, чем у трехмерной жидкости. Двухмерная жидкость может на самом деле иметь некоторую глубину, вполне позволяющую создавать тени и другие трехмер ные эффекты. Хотя иллюзия глубины исчезает при повороте камеры вокруг контейнера, для многих эффектов при неподвижной камере или только при наезде/отъезде камеры по прямой двухмерная жидкость отлично работает, причем намного быстрее трехмерной, особенно при взаимодействии и визуализации. Уравнения Навье-Стокса
Уравнения Навье-Стокса были разработаны в XIX веке (как можно догадаться) Навье (Navier) и Стоксом (Stokes). Эта система из трех связанных уравнений описывает движение жидкостей как группы маленьких частиц, импульс, масса и энергия которых сохраняются (т.е. для жидкости в целом эти величины не изменяются во времени). В этих уравнениях час тицы взаимодействуют друг с другом, передавая импульс и энергию (но не общую массу) дру гим частицам. В компьютерных моделях динамики жидкостей вычисляется состояние каждой частицы для каждого момента времени с шагом At, где At является малой величиной, и реше ние уравнений для этого момента времени используется как начальное условие для повторно го вычисления тех же уравнений для следующего шага, At+At. Уравнения являются сложными для понимания и должны рассчитываться для граничных (например, граница жидкости) и не прерывных условий, что увеличивает сложность их решения. Таким образом, решение урав нений создает большую вычислительную нагрузку и может происходить медленно даже на быстрых машинах. Для исчерпывающего знакомства с уравнениями Навье-Стокса можно по сетить, например, такой Web-сайт, как www.navier-stokes . n e t . Итак, что же могут моделировать плоские и объемные жидкости? Любые движения однокомпонентных жидкостей, например облака, взрывы, дым, огонь, туман, лава, а так же смешивание цветов окраски. При использовании встроенных возможностей Maya ха рактерный способ выполнения большинства из этих процессов моделирования заключа ется в простом перетаскивании, которое рассмотрено в следующем разделе. Инструмент Fluid Effects позволяет просматривать и визуализировать градиент плотности для набора частиц жидкости во времени, при их взаимодействии друг с другом, реакции на скорость, температуру, плотность и другие поля, а также при взаимодействиях с поверхностями и (или) самим контейнером. Результаты можно просматривать и визуализировать либо как подобные облаку объемы, на которые можно наложить текстуры для пробы, или как более реальные полигональные каркасы, которые визуализируются, как и все, на что можно наложить текстуры (например, вода или лава). Процессор Fluid Effects не может выполнять моделирование двух и более жидкостей. Такой пример, как вода, льющаяся в стакан, является моделью двух жидкостей, где взаимодействуют вода (жидкость 1) и воздух (жидкость 2). Поскольку инструмент Fluid Effects в настоящее время позволяет моделировать только одну жидкость, модель, по-
Глава 20
778
добная этой, невозможна. Если немного схитрить с градиентом плотности, можно подде лать эффект с помощью резкого перехода от одной плотности (вода) к другой (воздух), наподобие способа, которым создан эффект огня. Даже ограниченный одной жидкостью, инструмент Fluid Effects полезен для создания ряда эффектов и может сберечь немало времени аниматору эффектов при создании сложной натуралистической анимации. Жидкости отличаются от частиц Майя. Хотя они и используют некоторые одинако вые виды элементов моделирования (например, гравитация, турбулентность и взаимо действия), частицы рассчитываются как полностью обособленные элементы, они не взаимодействуют между собой, а кроме того, частицы не визуализируются как единый объект (за исключением каплевидных форм и облаков, когда при сближении частицы смешиваются). Несмотря на то что вычисление частиц происходит быстро, они плохо подходят для моделирования вязкой жидкости, поскольку между частицами отсутствует глобальная связь. Поведение каждой частицы независимо от других. С другой стороны, поведение жидкостей в процессоре Fluid Effects более однородно и масштабно, посколь ку они управляются градиентами скорости (и другими градиентами). Таким образом, инструмент Fluid Effects, несмотря на то, что он замедляет вычисления, гораздо лучше подходит для ситуаций, в которых элементы должны взаимодействовать между собой (например, огонь, вода, плотный дым или лава). Жидкости могут воздействовать на частицы в контейнере жидкости. Таким образом, час тицы могут стать частью модели процессора Fluid Effects. Н и ж е приведена краткая информация о некоторых из наиболее важных свойств жидкости. Density (Плотность) представляет свойство материала жидкости. Области с высокой плотностью видимы при моделировании, а области с низкой плотностью — прозрачны. Velocity (Скорость) влияет на поведение динамических жидкостей, изменяя значения свойств Density (Плотность), Temperature (Температура), Fuel (Топливо) и Color (Цвет). Свойство скорости необходимо для моделирования динамической жидкости. Это свойство имеет и величину, и направление. При моделировании динамики значение свойства Velocity (Скорость) основывается на примененных силах. Свойство скорости можно также использовать как постоянную или статическую силу для управления моде лированием. Temperature (Температура) влияет на поведение динамической жидкости через гра диент температур в контейнере. Свойство Fuel (Топливо), совместно со свойством Density (Плотность), обеспечивает возможность реакции. Свойство плотности представляет материал, а значение свойства Fuel (Топливо) определяет состояние реакции. Температура может "зажечь" топливо для запуска реакции (как при взрыве). При реакции значения свойств Density (Плотность) и Fuel (Топливо) расходуются до тех пор, пока реакция не прекратится. Color (Цвет) появляется только в таком контейнере, для которого существует свойст во Density (Плотность). Цвет можно применить двумя способами. •
С помощью ползунка встроенного градиента. Тонер, который является частью объ екта жидкости, делает окрашивание объекта относительно простым.
•
С помощью сетки. Она позволяет управлять цветом в каждом вокселе. Поведение цветов может быть динамическим, поэтому они могут смешиваться. Все эти свойства жидкостей рассматриваются в остальной части этой главы.
Система Fluid Effects
779
Перетаскивание жидкостей Самый простой способ создания эффекта жидкости заключается в отпускании его на сцену из окна Visor (Просмотр). В результате перетаскивания образца жидкости из окна Visor (Просмотр) создается предварительная модель, которая отлично работает и непло хо выглядит без дополнительной обработки в большинстве случаев. В данном разделе рассматривается создание эффекта жидкости и океана с помощью этого метода. Для создания эффекта пламени выполните следующие действия. 1.
Откройте в Maya новую сцену.
2.
В наборе меню Dynamics (Динамика) выберите пункты Fluid EffectS => Get Fluid Example (Эффекты жидкости => Получить образец жидкости).
3.
Щелкните на вкладке Fluid Examples (Образцы жидкости) в окне Visor (Просмотр) (если она еще не выбрана), а затем щелкните слева на пиктограмме раздела Fire (Огонь), как показано на рис. 20.2.
Puc. 20.2. В окне Visor изображены различные эффекты огня 4.
С помощью средней кнопки мыши перетащите пиктограм му Flame.mа в окно сцены и воспроизведите несколько кадров анимации. На экране должно появиться нечто по хожее на изображение, приведенное на рис. 20.3, слева.
5.
Чтобы увидеть настоящий внешний вид пламени, ви зуализируйте пробное изображение (см. рис. 20.3, спра ва). Просто добавьте факел и каменную стену, получит ся несколько великолепных эффектов подземелья!
Рис. 20.3. Модели огня, пред ставленные в окне сцены Maya Создать эффект океана и водоема методом перетаскива- (слева) и после окончательной ния также легко, как и эффект жидкости. Чтобы создать визуализации (справа) штормовой океан, выполните следующие действия. 1. Откройте в Maya новую сцену. 2.
В наборе меню Dynamics (Динамика) выберите пункты Fluid Effects => Get O c e a n / Pond Example (Эффекты жидкости => Получить образец океана/водоема).
780 3.
Глава 20 Чтобы просмотреть разные предустановленные значения океана и водоема, которые показаны на рис. 20.4, перейдите на вкладку Ocean Examples (Образцы океана) (если она еще не выбрана).
Puc. 20.4. В окне Visor изображены различные образцы тонера океана 4.
С помощью средней кнопки мыши перетащите пиктограмму файла HighSeas.ma на сцену и запустите воспроизведение анимации в окне сцены. На экране должно поя виться нечто наподобие изображения, представленного на рис. 20.5, слева, с волнами и туманной атмосферой.
Рис. 20.5. Сцена тонера океана High Seas, показанная в окне сцены Майя (слева) и после окончательной визуализации (справа) 5.
Визуализируйте пробное изображение, чтобы увидеть тело воды в окончательном, визуализированном состоянии (см. рис. 20.5, справа). Чтобы создать образец водоема, выполните следующее.
1. Откройте в Майя новую сцену. 2.
Откройте окно Visor (Просмотр) (в меню W i n d o w (Окно) выберите пункты General Editors => Visor (Общие редакторы => Просмотр)) либо выберите в наборе меню Dynamics (Динамика) пункты меню Fluid Effects => Get O c e a n / P o n d Example
(Эффекты жидкости => Получить образец океана/водоема).
Система Fluid Effects
781
3.
Чтобы отобразить различные предустановленные значения океана, перейдите в окне просмотра на вкладку Ocean Examples (Образцы океана).
4.
С помощью средней кнопки мыши перетащите файл W i n d i n g P o n d W a k e . m а на сце ну и запустите воспроизведение анимации в окне сцены. На экране должно появить ся нечто похожее на изображение, приведенное на рис. 20.6, слева, наполненное вол нами от невидимого "корабля".
Рис. 20.6. Сцена модели водоема, показанная в окне сцены Maya (слева) и после окон чательной визуализации (справа) Из-за сложного характера моделирования процесс визуализации эффектов океана и трех мерных жидкостей может занять много времени, поэтому следует быть готовым ждать окончания визуализации довольно долго, особенно если она осуществляется с высоким ка чеством или имеет большие размеры. 5.
Чтобы увидеть анимацию водоема, визуализируйте пробное изображение. Визуали зированное изображение должно выглядеть так, как на рис. 20.6, справа.
Как можно заметить исходя из этих трех примеров, создавать высоко реалистичные модели жидкости чрезвычайно легко. Попробуйте перетаскивать файлы других образцов Maya, чтобы увидеть результат их применения. Если выделить контейнер жидкости (для эффектов жидкости и водоемов) или поверхность океана (для эффектов океана) и от крыть редактор атрибутов, можно провести эксперименты с параметрами этих предуста новленных сцен. Кадры реалистичных эффектов можно создать из слегка измененных эффектов жидкости, полученных методом перетаскивания (рис. 20.7). После окончания исследования этих сцен переходите к следующим разделам, в кото рых создание эффектов продемонстрировано с самого начала. В следующих разделах описаны также некоторые из наиболее важных атрибутов, которые можно изменять для модификации собственных (или предустановленных) сцен.
Создание и редактирование жидкостей Создание двух- и трехмерных жидкостей с самого начала ненамного сложнее, чем перетаскивание готовых на сцену из окна Visor (Просмотр). При создании нового кон тейнера существуют два основных варианта: создание пустого контейнера и создание контейнера с эмиттером. Если необходим контейнер с эмиттером, очевидно, легче соз дать контейнер с уже находящимся в нем эмиттером, хотя добавить эмиттер нисколько не трудно.
Глава 20
782
Рис. 20.7. Взрывы (слегка измененные), получен ные методом перетаскивания, используются в сценах битв из научной фантастики. (Автор ское право 2005 г. компании Clemson University Digital Production Arts.)
Создание двухмерной жидкости Д Л Я создания двухмерной жидкости выполните следующие действия. 1.
В наборе меню Dynamics (Динамика) новой сцены Майя выберите пункты Fluid Effects => Create 2D Container W i t h Emitter (Эффекты жидкости => Создать плоский 1
контейнер с эмиттером). При этом будет создан новый контейнер (по умолчанию на званный f l u i d l ) со встроенным эмиттером, как показано на рис. 20.8, слева.
Рис. 20.8. Плоский контейнер жидкости с включенным эмитте ром жидкости (слева) и эмиттер, испускающий жидкость в контейнере (справа) 2.
Чтобы увидеть белое газообразное вещество, которое испускается эмиттером в кон тейнер, перейдите в режим тонирования текстуры (клавиша < 6 > ) и запустите вос произведение анимации сначала (см. рис. 20.8, справа).
Удостоверьтесь, что установлен покадровый режим воспроизведения анимации. В против ном случае процесс моделирования прервется. В меню Window (Окно) выберите пункты Settings/Preferences => Preferences (Параметры/Предпочтения => Предпочтения) и в появив шемся окне перейдите к параметрам временной шкалы.
Система Fluid Effects
783
3. Чтобы добавить в контейнер жидкости второй эмиттер, выберите пункты меню Fluid Effects => Add/Edit Contents => Emitter (Эффекты жидкости => Добавить/Редактировать
содержимое => Эмиттер). Хотя второй эмиттер будет создан, его не будет видно на сцене, поскольку он расположен в том же месте, что и первый эмиттер. 4. Чтобы увидеть новый эмиттер, пока он еще выделен, переместите его в новое поло жение по оси X или Y. Не перемещайте эмиттер по оси Z. Если он покинет пределы контейнера жидкости, он больше не будет испускать жидкость. (Можете попробовать сделать это, чтобы убедиться.) Потребность эмиттера оставаться внутри контейнера жидкости является одним важным отличием между эмиттерами жидкости и частиц. 5.
Снова воспроизведите анимацию. На экране должны появиться оба действующих эмиттера, и жидкости от них должны перемешиваться, как показано на рис. 20.9.
Взаимодействие жидкости с другими объектами Чтобы модель стала немного интереснее, можно создать любой тип геометрического при митива или частицы и, поместив его в контейнер жидкости, позволить ему взаимодействовать с самой жидкостью. Чтобы это продемонстрировать, используйте стандартную двухмерную жидкость из предыдущего примера (или создайте новый плоский контейнер жидкости с эмиттером), а затем создайте тор NURBS (выберите в меню Create (Создать) пункты NURBS Primitives => Torus (Примитивы NURBS => Top)). Растяните или деформируйте тор как угодно, а затем поместите его в контейнере жидкости. (Конечно же, только часть тора поместится в контейнер, потому что он плоский.) Если сейчас запустить воспроизведение анимации, жидкость будет игнорировать тор, поскольку еще не было установлено взаимодействие между ними. Чтобы два элемента сцены могли взаимодействовать, выделите тор, а затем выделите контейнер жидкости, нажав клавишу <Shift>, и выберите пункты меню Fluid Effects => Make Collide (Эффекты жидкости => Создать взаимодействие). После запуска можно увидеть, что жидкость обтекает тор, как показано на рис. 20.10.
Рис. 20.9. Два эмиттера жидкости в плоском контейнере
Рис. 20.10. Двухмерная жидкость взаимодействует с при митивом тора
Создание трехмерной жидкости Создание стандартной трехмерной жидкости не отличается существенным образом от создания двухмерной, и параметры в редакторе атрибутов также аналогичны — все, что
784
Глава 20
имеет смысл для двухмерных жидкостей, является только частным случаем для трех мерных. С другой стороны, трехмерные жидкости обычно медленнее в управлении из-за дополнительных затрат на вычисления третьего измерения. Таким образом, хотя трех мерные жидкости и могут применяться во всех случаях, когда необходимы жидкости, за частую разумно задаться вопросом, можно ли вместо нее использовать двухмерную жид кость? Для многих задач двухмерная жидкость будет работать вполне удовлетворитель но, а кроме того, ее моделирование (и визуализация) осуществляются намного быстрее. (В конце этой главы, в разделе "Практика", рассмотрен пример, в котором плоский контей нер прекрасно подходит для эффекта.) В других случаях следует использовать трехмерную жидкость. Обычно, если камера в некоторой степени неподвижна относительно жидкости и нет необходимости создавать такие сложные эффекты, как возникновение теней (это созда ет впечатление большей глубины), двухмерная жидкость будет работать просто замеча тельно. Если камера перемещается или пролетает сквозь жидкость и (или) на жидкость не обходимо наложить тени, тогда нужно использовать трехмерную жидкость. Чтобы создать трехмерную жидкость с включенным эмиттером, в наборе меню Dynamics (Динамика) выберите пункты Fluid Effects => Create 3D Container W i t h Emitter
(Эффекты жидкости => Создать объемный контейнер с эмиттером). Будет создан куб, со держащий эмиттер жидкости, который при запуске воспроизведения анимации будет испускать трехмерный объем газообразной жидкости, как показано на рис. 20.11.
Рис. 20.11. Объемный контейнер жидкости с эмиттером (слева) и эмиттер, испускающий жидкость в контейнер (справа) Поскольку объемные и плоские контейнеры по существу одинаковы, атрибуты жид кости и контейнера рассматриваются на примере двухмерной жидкости.
Редактирование атрибутов жидкости Теперь, после изучения создания стандартных эффектов жидкости, рассмотрим некоторые из атрибутов, позволяющие изменить поведение жидкости. Сначала соз дайте обычный плоский контейнер жидкости с эмиттером. Затем выделите контей нер и откройте редактор атрибутов. На экране должны появиться выбранная вкладка f l u i d S h a p e 1 в верхней части окна, несколько спрятанных за раскрывающи мися стрелками разделов атрибутов, которые можно корректировать, и раздел Notes (Примечания) в нижней части окна (рис. 20.12). Раздел Notes (Примечания) в ниж ней части окна находится область, в которой можно записывать примечания о на-
785
Система Fluid Effects
стоящей жидкости. Это отличный способ для записи об особенностях создаваемой жидкости или для чтения заметок об особенностях жидкости, созданной кем-то дру гим. Например, если открыть одну из подготовленных жидкостей в окне V i s o r (Просмотр) и посмотреть ее в редакторе атрибутов, можно увидеть несколько пред ложений, описывающих определенный эффект, и несколько предлагаемых методов для его модификации.
Puc. 20.12. Элемент f l u i d 1 в редакто ре атрибутов Кроме того, в редакторе атрибутов содержится множество параметров, корректируя которые можно изменять поведение самой жидкости или контейнера, в котором она на ходится. Хотя в книге недостаточно места для подробного рассмотрения каждого атри бута, некоторые из наиболее полезных будут описаны. Как обычно, при моделировании динамики в Майя эксперименты являются отличным способом изучить все атрибуты жидкости, так что не стесняйтесь экспериментировать с параметрами.
Раздел Container Properties Давайте, начиная сверху, рассмотрим раздел Container Properties (Свойства контей нера) редактора атрибутов, в котором корректируется разрешение и поведение самого контейнера жидкости. Параметры r e s o l u t i o n (Разрешение) (по умолчанию значение по осям X и Y равно 4 0) управляют количеством вокселей в контейнере. Большее число (например, 100 в каждом направлении) предназначено для более точного моделирова ния жидкости, но при этом оно выполняется медленнее из-за возросшего количества вы числений, что связано с большим количеством вокселей, чем необходимо для запуска моделирования. Параметры Size (Размер) (по умолчанию для осей X и Y установлено
786
Глава 20
значение 10, а для оси Z — значение 0.25) управляют размером контейнера жидкости. (Для интерактивного изменения размера контейнера можно также использовать инст румент Scale (Масштаб).) Параметры Boundary X (Граница по оси X) и Boundary Y (Граница по оси Y) опре деляют, как контейнер работает с жидкостями, которые достигают его стен. По умол чанию для этих атрибутов установлено значение Both Sides (Обе стены), которое ука зывает, что жидкость будет реагировать на все четыре стены (обе стены по осям X и Y) и соответственно будет вести себя как в "комнате", из которой нельзя убежать. С дру гой стороны, если жидкость должна взаимодействовать только с одной стеной, совер шать круговорот (wrap), т.е. появляться из нижней части контейнера при достижении верхней части, или же вовсе не взаимодействовать со стенами, можно выбрать подхо дящее условие из контекстного меню. На рис. 20.13 показана модель жидкости при бо лее высоком разрешении (100x100) и при значениях параметров Boundary X и Y (Границы по осям X и Y), установленных в None (Нет). Жидкость проходит сквозь границу контейнера (и соответственно исчезает). Это могло бы быть более желатель ным поведением, если, скажем, необходимо создать походный костер на открытом воз духе и дым от огня не должен опускаться обратно вниз к земле, когда он достигнет верхней части контейнера. Когда жидкость выходит за пределы своего контейнера (что возможно при установке усло вий для границ таким образом, чтобы жидкость могла проходить через них), она полно стью исчезает со сцены. Таким образом, обычно не стоит показывать границы контейнера, которые позволяют жидкостям проходить через них, поскольку при этом обнаружится рез кий разрыв между моделируемой жидкостью и пустотой.
Раздел Contents Method В разделе Contents Method (Метод содержимого) (который находится под разделом свойств контейнера) содержится несколько контекстных элементов управления, которые определяют поведение жидкости в контейнере. Для двухмерной жидкости по умолчанию для параметров Density (Плотность) и Velocity (Скорость) установлено значение Dynamic Grid (Динамическая сетка), для параметров Temperature (Температура), Fuel (Топливо) и Falloff Method (Метод отставания) — значение Off (Отключено), для пара метра Color Method (Метод окрашивания) — значение Use Shading Color (Использовать тонирующий цвет). Условия динамической сетки обновляются во вре мени, что позволяет моделированию выполняться. Если вместо этого установить для параметра Density (Плотность) или Velocity (Скорость) значение Static Grid (Статическая сетка) (при этом процесс моделирования не будет обновляться с каждым кадром), то жидкость будет просто собираться вокруг эмиттера вместо того, чтобы распространяться и заполнять контейнер. Если установить для параметра Velocity (Скорость) режим Gradient (Градиент), а для параметра Velocity Gradient (Градиент скорости) — значение X Gradient (Градиент оси X), вся испускаемая жидкость будет направляться под углом 45° от эмиттера, как по казано на рис. 20.14. (Другие параметры градиента изменят движение в другом направ лении.) Изменение параметров Temperature (Температура) и Temperature Gradient (Градиент температуры) на значения Gradient (Градиент) и X Gradient (Градиент оси X) приведет к тому, что градиент температуры в направлении оси X будет "нагревать" жид кость, увеличивая ее быстрее под углом к оси X. (Этот эффект станет очевиднее, если
787
Система Fluid Effects
сначала вернуть значение метода Velocity (Скорость) обратно в Dynamic Grid (Динамическая сетка).) Без энергии на сцене (подробнее создание энергии рассматрива ется в следующем разделе) параметр Fuel (Топливо) не будет влиять на эту модель. На конец, параметр Color Method (Метод окрашивания) определяет, как рассчитывается цвет жидкости. Для управления цветом параметр Use Shading Color (Использовать то нирующий цвет), выбранный по умолчанию, использует параметры из раздела Shading (Тонирование) редактора атрибутов. Статическая и динамическая сетки допускают оп ределенное управление цветом (статически или динамически), который испускается или прорисовывается в контейнере. (В этом случае для управления цветом используют па раметры цвета раздела Contents Details (Детали содержимого). Данная тема рассматри вается далее в этой главе.)
Рис. 20.13. Более точное моделирова ние (100x100 вокселей) с установ ленным для границ значением None
Рис. 20.14. Использование для жидко сти скорости X Gradient (вместо Dynamic
Grid)
Раздел Display Раздел Display (Представление) редактора атрибутов содержит элементы управле ния для интерактивного тонирования жидкости непосредственно в Maya (в противо положность элементам управления render (Визуализация), которые изменяют вид жидкости при визуализации). В режиме тонирования (по умолчанию) можно отобра зить визуализированный вариант жидкости, установив для отображения значение Off (Отключено) или настроив отображение плотности, цвета, температуры и т.п. Также можно включить отображение внутренней сетки в контейнере или установить значе ние Outline (Контур) (по умолчанию) или Bounding Box (Ограничивающий блок). Для плотности, температуры или энергии жидкости можно открыть окно Numeric Display (Числовой дисплей), в котором отображается информация об атрибутах каж дого вокселя (хотя обычно это и не очень полезно для аниматора). Кроме того, можно включить отображение скорости всех точек в контейнере, выбрав параметр Velocity Draw (Отображение скорости). Когда он включен, можно корректировать параметр Velocity Draw Skip (Пропуск отображения скорости) (уменьшение количества стрелок на экране) и (или) длину каждой стрелки. На рис. 20.15 показана базовая модель со скоростями, отображенными в виде стрелок.
Глава 20
788
Раздел Dynamic Simulation Раздел Dynamic Simulation (Динамическое моделирование) редактора атрибутов позволяет управлять физической моделью жидкости в контейнере. Основной элемент управления, Gravity (Гравитация), определяет, как жидкость будет растекаться на сце не. При значении по умолчанию (9.8) гравитация распространяет жидкость к верхней части контейнера с постоянной скоростью. При отрицательном значении гравитации жидкость перемещается вниз. Величина определяет, как быстро жидкость поднимает ся или спадает в контейнере. Параметр Viscosity (Вязкость) определяет, как сильно каждая частица жидкости прилипает к своим соседям. Величина 0 означает, что час тицы свободно скользят относительно друг друга. Величина 1 означает, что все они слипаются вместе и соответственно не покидают эмиттер. Параметр Friction (Трение) определяет, как жидкость взаимодействует с границами контейнера (или объектами, с которыми она сталкивается): значение 0 означает, что трения нет, а значение 1 означа ет, что все элементы жидкости, которые соприкасаются с контейнером или объектом, полностью к нему прилипают. Сопротивление определяет, как быстро затухает движе ние частиц жидкости. На рис. 20.16 показана модель жидкости с параметром Gravity (Гравитация), равным -10, Viscosity (Вязкость), равным 0.3, Friction (Трение), рав ным о . 5, и Damp (Сопротивление), равным 0 . 05.
Рис. 20.15. Модель жидкости с вклю ченным параметром Velocity Draw, указывающим скорость и направле ние движения жидкости в каждой точке контейнера
Рис. 20.16. Модель жидкости с отри цательной гравитацией и средними значениями вязкости и трения
Раскрывающееся меню Solver (Решатель) определяет, какой процессор моделирова ния используется. (Для большинства задач процессор на основе уравнений Н а в ь е Стокса является наилучшим.) Параметр High Detail Solve (Решение с высокой детализа цией) обеспечивает более точное моделирование (за счет увеличения времени вычисле ний), которое может выполняться во всех сетках, за исключением скорости или только для скорости. (Пример использования параметра High Detail Solve (Решение с высокой детализацией) рассмотрен ниже в этой главе в разделе "Практика: создание исчезающего эффекта облака для Машизмо".) Параметр Solver Quality (Качество решателя) исполь зуется совместно с параметром High Detail Solve (Решение с высокой детализацией) для
Система Fluid Effects
789
определения точности выполнения вычислений. Параметр Grid Interpolator (Интерпо лятор сетки) определяет точность выполнения моделирования: интерполяция Linear (Линейная) грубее, чем Hermite (Эрмит), но выполняется быстрее. Параметр Start Frame (Начальный кадр) определяет, когда моделирование начнет выполняться, па раметр Simulation r a t e Scale (Масштаб скорости моделирования) изменяет хроно метраж моделирования в большую или меньшую сторону, чем принятое по умолчанию значение (установка большего значения приведет к очень быстрому и грубому выпол нению моделирования), а параметр Disable Evaluation (Отключить обработку) полно стью отключает вычисления жидкости. Флажки Conserve Mass (Сохранить массу), Use Collisions (Использовать взаимодействия), Emission (Испускание) и Fields (Поля) позволяют включать и отключать отдельные элементы при выполнении моде лирования сцены.
Раздел Contents Details В раздел Contents Details (Детали содержимого) редактора атрибутов (рис. 20.17) вложены подчиненные разделы, которые относятся к параметрам Density (Плотность), Velocity
(Скорость),
Turbulence
(Турбулентность),
Temperature
(Температура),
Fuel
(Топливо) и Color (Цвет) и используются для детального управления поведением самой жидкости. Здесь рассматриваются некоторые из наиболее интересных элементов управ ления. Параметр Buoyancy (Плавучесть) раздела Density (Плотность) управляет тем, на сколько положительно или отрицательно плавучей является жидкость (отрицательная плавучесть заставляет жидкость погружаться, а не всплывать). Кроме того, в этом разде ле имеются параметры Diffusion (Диффузия) и Dissipation (Рассеивание). Значение па раметра Diffusion (Диффузия) большее, чем 0, заставляет жидкость рассредоточиваться по контейнеру, вместо того, чтобы быть сплоченной. Отличное от нуля значение пара метра Dissipation (Рассеивание) заставляет жидкость переходить обратно в обычное (не цветное) состояние контейнера.
Puc. 20.17. Раздел Contents Details ре дактора атрибутов
790
Глава 20
Параметр Swirl (Водоворот) раздела Velocity (Скорость) определяет, сколько вихрей (vortice) создано в жидкости. Параметры Strength (Сила), Frequency (Частота) и Speed (Скорость) раздела Turbulence (Турбулентность) определяют, насколько сильно поле турбулентности воздействует на систему жидкости. При больших значениях всех этих параметров получится модель, подобная изображенной на рис. 20.18. В разделе Fuel (Топливо), который недоступен, пока для параметра Fuel Contents Method (Метод содержимого топлива) не установлено значение Dynamic Grid (Дина мическая сетка) или Static Grid (Статическая сетка), имеются элементы управления для параметров r e a c t i o n S p e e d (Скорость реагирования) (как быстро горит топливо), Ignition Temperature (Температура воспламенения) (когда топливо воспламеняется), а также для параметров Heat (Теплота) и Light r e l e a s e d (Испускание света) при горе нии топлива. Если топливо и температура скрыты в контейнере (см. следующий раз дел), модель жидкости будет выглядеть наподобие изображенной на рис. 20.19. На этом изображении видимая жидкость распространялась вокруг под воздействием колебаний температуры от горящего топлива, которое было размещено в верхнем правом углу контейнера, и (в заключительном визуализированном состоянии) жид кость будет принимать цвет горящего топлива, как указано в параметрах Light r e l e a s e d (Испускание света).
Рис. 20.18. Жидкость под воздействием сильного поля турбулентности
Рис. 20.19. Жидкость, деформированная невидимым горящим топливом
Раздел Grids Cache Раздел Grids Cache (Кэш сеток) редактора атрибутов позволяет управлять тем, какие части кэша жидкости (используемого для ускорения воспроизведения) будут прочитаны при воспроизведении сцены.
Раздел surface В разделе surface (Поверхность) находятся элементы управления, которые опре деляют вид самой жидкости при визуализации. Двумя типами атрибутов являются Volume render (Визуализация объема), установленный по умолчанию, и surface render (Визуализация поверхности) (показан на рис. 20.20), которые создают жид кость, выглядящую более твердой, которая может имитировать все что угодно, от воды до лавы. Параметр Hard surface (Твердая поверхность), который доступен при вы-
Система Fluid Effects
791
бранном параметре surface render (Визуализация поверхности), придает жидкости более твердый вид и с более четкой формой, а параметр Soft surface (Мягкая поверх ность) придает поверхности более аморфный вид. Параметр surface Threshold (Граница поверхности) определяет, где начинается и заканчивается поверхность: ма лое значение границы включает большую часть эффекта жидкости (и с плотностью окружающей среды), а большое значение границы включает только самые плотные об ласти жидкости. Остальные атрибуты этого раздела определяют внешний вид поверх ности и ее преломление после визуализации.
Разделы Shading, Color, Incandescence и Opacity В разделе Shading (Тонирование), показанном на рис. 20.21, находятся элементы управления визуализацией жидкости. Большинство из них похоже на параметры то нирования, которые участвуют в сети тонера (подробно о сетях тонирования см. в гла ве 12, "Тонирование и текстурирование при анимации"), но некоторые параметры ис пользуются исключительно для жидкостей. Выберем, например, для примера Dropoff Shape (Форма спада) значение Sphere (Сфера), а для примера Edge Dropoff (Граничный спад) — небольшое значение (например, 0. 05) и запустим воспроизведе ние анимации с начала, чтобы увидеть реакцию жидкости. Параметр Dropoff S h a p e (Форма спада) определяет, как рассчитываются границы жидкости. Кубическая форма затухания создает невидимый куб вокруг объекта, заставляя жидкость постепенно ис чезать при контакте с ним. Формы сферы, конуса или двойного конуса (три других па раметра) создают сферическую, конусообразную или двунаправленную конусообраз ную границы. Параметр E d g e Dropoff (Граничный спад) определяет, насколько плотно форма границы охватывает объект жидкости. Воздействие этих параметров станет нагляднее, если запустить моделирование при видимой жидкости. Затем не обходимо выбрать параметр Dropoff S h a p e ( Ф о р м а спада) и переместить ползунок параметра E d g e Dropoff (Граничный спад) вперед и назад, чтобы увидеть, как изме няется граница жидкости. Раздел Color (Цвет) позволяет управлять цветом жидкости и свойствами, которые применяются к цвету. Для цвета можно выбрать единое значение (условие по умолчанию) или, щелкнув на ползунке градиента в правой части образца Selected Color (Выбранный цвет), создать градиент цветов. (Щелкните на образце Selected Color (Выбранный цвет), чтобы установить отдельные цвета градиента.) Па раметр Color Input (Входящий цвет) определяет, какой аспект жидкости окрашен (и соответственно отображен и визуализирован), а параметр Input Bias (Смещение входящего свойства) перемещает все цвета градиента или вверх, или вниз, если пара метры градиента по умолчанию установлены не совсем верно. Нововведением Майя 8.5 является кнопка со стрелкой справа от маленьких градиентов в этом и других разделах (см. рис. 20.21); щелчок на этой кнопке развернет градиент, увеличив его размер и облегчив редактирование атрибутов. На рис. 20.22 представлены параметры цвета, корректируемые в развернутом окне редактора градиента, и получаемые ре зультаты в плоском контейнере. Параметры раздела Incandescence (Накал) работают точно так же, как и параметры цвета, но их воздействие дополняет параметры цвета, создавая при визуализации эффект сверкания.
792
Глава 20
Рис. 20.20. Модель жидкости, показанная на рис. 20.19, представлена как поверхность, а не как объем
Рис. 20.21. Разделы Shading, Color и Incandescence редактора атрибутов
Рис. 20.22. Параметры цвета и получающееся в резуль тате изображение жидкости Наконец, параметры раздела Opacity (Непрозрачность) определяют, какое свойство жидкости применить к параметру непрозрачности (параметр Opacity Input (Входящая непрозрачность)) и как оно применяется (параметр Opacity r a m p (Градиент непрозрач ности)). Заданный по умолчанию линейный градиент, от значения о (прозрачный) слева до значения 1 (полностью непрозрачный) справа, создает эффект, применяемый для жидкостей довольно часто. С другой стороны, если для параметра Opacity Input (Входящая непрозрачность) используется значение Density (Плотность) и левая точка градиента сдвинута к значению 1, вся сцена становится непрозрачной (со значением, ус тановленным на дальнем левом конце градиента цвета). Это происходит потому, что вся жидкость является единой, в которой отображаются только изменения плотности. Таким образом, если вся жидкость сделана непрозрачной, можно увидеть только то, что контей нер заполнен этой жидкостью. Можно добавить и изменить кривую, щелкнув в парамет ре Opacity r a m p (Градиент непрозрачности), а также изменить переход градиента от од ной степени непрозрачности к другой, изменив метод интерполяции (по умолчанию — линейный).
Система Fluid Effects
793
Здесь заслуживает упоминания еще один момент: значения градиентов цвета и нака ла могут применяться с файловой или процедурной текстурой, если щелкнуть на кнопке с шашками, расположенной рядом с кнопкой Selected Color (Выбранный цвет). Параметр Matte Opacity (Матовая непрозрачность) корректирует визуализацию ка нала прозрачности жидкости. Использование параметра Opacity Gain (Коэффициент усиления непрозрачности) со значением параметра Matte Opacity (Матовая непрозрач ность), равным 1, создаст при визуализации жидкости канал прозрачности. Остальные параметры или значения корректируют это поведение.
Раздел Shading Quality В разделе Shading Quality (Качество тонирования) доступны параметры, определяю щие качество внешнего вида жидкости при визуализации. Наиболее важными парамет рами в этом разделе являются Quality (Качество) (изображение более высокого качества выглядит лучше, но его визуализация занимает больше времени) и Sample Method (Метод отбора), который может помочь избавиться от полос с помощью значений Jittered (Дрожание) или Adaptive Jittered (Адаптивное дрожание), но за счет появления некоторых шумов в окончательном изображении. Использование высококачественных параметров сделает проблему шума менее заметной, но увеличит время визуализации.
Раздел Textures В разделе Textures (Текстуры) редактора атрибутов (рис. 20.23) содержатся элемен ты управления, позволяющие создать для жидкости более совершенную окраску, чем просто задание цвета. Кроме того, эти текстуры допускают анимацию, что создает иллю зию трехмерного движения статической модели. Так, можно создать, скажем, модель трехмерного облака со статической сеткой (избавившись таким образом от вычислений, участвующих в динамическом расчете большой трехмерной сетки) и непосредственно наложить движущуюся текстуру на жидкость, создав для нее эффект движения. Таким образом создан стандартный эффект s t o r m y C l o u d s . (Если посмотреть атрибуты этого эффекта, можно увидеть, что все методы содержимого выключены.) Параметр Texture Opacity (Непрозрачность текстуры) является наиболее очевидным элементом управле ния. (Параметры Color (Цвет) и Incandescence (Накал) управляются похожим обра зом.) После включения параметра Texture Opacity (Непрозрачность текстуры) выбор из контекстного меню Texture Туре (Тип текстуры) такого параметра, как Billow (Лавина), изменит стандартный внешний вид жидкости на подобный облаку или лавине. При этом, изменяя параметры Threshold (Порог), Amplitude (Амплитуда), r a t i o (Соотношение) и т.п., можно управлять основными свойствами текстуры Billow (Лавина) (или другой). Изменяя тип текстуры и эти параметры, можно создать любое количество различных внешних видов. Параметр Billow (Лавина) (и Volume W a v e s (Величина волны)) также имеет ряд особых элементов управления в нижней части раздела Textures (Текстуры). Изменяя параметры Billow Density (Плотность лавины), Spottyness (Пятнистость), Size r a n d (Граница размера) и r a n d o m n e s s (Коэффициент случайности), можно изменить обычный вид текстуры Billow (Лавина) по своему усмотрению. Элемент управления Implode (Взрыв) делает текстуру такой, как будто она взрывает ся изнутри (с регулируемым центром взрыва). В заключение, элементы управления Texture
Time
(Время текстуры),
Frequency (Частота),
Scale
(Масштаб)
и Origin
(Источник) позволяют корректировать такие свойства, как масштаб и частота текстуры, а с помощью элемента управления Texture Time (Время текстуры) можно перемещаться
794
Глава 20
по текстуре (передвигая ползунок), чтобы найти подходящий момент, когда текстура вы глядит так, как необходимо. На рис. 20.24 изображена стандартная двухмерная жидкость с текстурой типа Billow (Лавина) и большим значением частоты, чем принято по умолчанию. Подобно другим атрибутам жидкости, большинство атрибутов раздела Textures (Текстуры) может быть использовано при наложении текстуры после щелчка на кнопке с шахматной пикто граммой в правой части элемента управления.
Puc. 2023. Раздел Textures редактора атрибутов
Рис. 20.24. Двухмерная жидкость с наложен ной текстурой типа Billow
Если запустить анимацию, то, вероятнее всего, станет сразу заметно, что жидкость те чет, а текстура остается на месте. Это выглядит странно. Однако, установив ключевые кадры для параметра Texture Time (Время текстуры) (и многих других атрибутов), мож но выполнить анимацию текстуры во времени, что создает иллюзию, будто она движется. Например, можно перейти к какому-либо кадру анимации, выбрать в меню Fluid Effects (Эффекты жидкости) пункт Set Initial State (Установить начальное состояние), чтобы установить текущий кадр в качестве начального условия жидкости, и задать для пара метра Velocity (Скорость) значение Off (Отключено). Затем следует установить ключе вые кадры для атрибута Texture Time (Время текстуры) с различными значениями вре мени (для этого щелкните правой мыши на параметре Texture Time (Время текстуры)
Система Fluid Effects
795
и в появившемся контекстном меню выберите пункт Set Key (Установить ключевой кадр)). Теперь жидкость выглядит изменяющейся во времени, несмотря на то, что она статична. В этом можно убедиться, если запустить воспроизведение анимации с послед него ключевого кадра. Комбинируя динамическое моделирование с движущимися тек стурами (или просто перемещая сами текстуры), можно создавать убедительные эффек ты, которые быстро моделируются и визуализируются.
Раздел Lighting В разделе Lighting (Освещение) редактора атрибутов содержится несколько элемен тов управления, которые определяют освещение самой жидкости: с помощью наложения теней либо с использованием встроенного или реалистичного освещения. Параметр Self Shadow (Наложение тени) позволяет накладывать тени на жидкость, а установка флаж ка Hardware Shadow (Аппаратная тень) позволит увидеть это наложение тени в окне сцены Maya. При использовании наложения теней такие объемные жидкости, как обла ка, будут выглядеть намного более реалистично, чем без наложения теней. Если флажок r e a l Lights (Реалистичные источники света) сброшен, то используется установленный по умолчанию направленный источник света (его положение можно изменять в полях ввода осей X, Y и Z параметра Directional Light (Направленный источник света)). Если выбрать параметр r e a l Lights (Реалистичные источники света), то для расчета наложе ния теней будут использоваться действительные источники света на сцене. Использова ние действительных источников света может быть лучшим вариантом, но при этом осу ществляется намного больше вычислений, чем при использовании стандартного источ ника света, так что следует быть готовым к замедлению визуализации.
Рисование в контейнерах Рассмотрев влияние различных атрибутов жидкости на ее поведение и внешний вид, давайте посмотрим, как фактически изображать свойства в контейнере. Сначала создайте стандартную двухмерную жидкость без эмиттера. Затем в меню Fluid Effects (Эффекты жидкости) выберите пункт Add/Edit Contents => Paint Fluids Tool • (Добавить/Редактиро
вать содержимое => Инструмент рисования жидкостей • ) . В разделе Paint Attributes (Нанести атрибуты) окна параметров удостоверьтесь, что в контекстном меню Paintable Attributes (Наносимые атрибуты) установлено значение Density (Плотность), а затем с помощью мыши изобразите на сцене некоторую плотность жидкости. Если используется Планшет, можно установить давление пера, чтобы изменять плотность (белизну) окра шиваемой жидкости. В противном случае измените значения параметров Value (Значение), в разделе Paint Attributes (Нанести атрибуты), и r a d i u s U and L (Радиус в направлении U и L), в разделе Brush (Кисть), для изменения плотности и размера штри ха. После нескольких штрихов с разными формами и размерами кисти должно полу читься нечто подобное изображению на рис. 20.25. Если запустить воспроизведение ани мации, можно увидеть, как жидкость перемещается и кружится вокруг под воздействием заданной по умолчанию гравитации и взаимодействий с самим контейнером. Теперь известно, как изображать плотность. Посмотрим, что же произойдет при изо бражении других свойств в контейнере. 1. В разделе Dynamic Simulation (Динамическое моделирование) редактора атрибутов установите для параметра Gravity (Гравитация) значение 0. (Как можно удостове риться, теперь жидкость больше не изменяет своего начального положения.)
796
Глава 20
Рис. 20.25. Штрихи различной плотно сти в контейнере жидкости 2.
Инструментом рисования жидкостей сотрите содержимое контейнера, установив значение параметра Value (Значение) равным 0 (в разделе Paint Attributes (Нанести атрибуты)) и щелкнув на кнопке Flood (Заполнить).
3.
Верните значение параметра Value (Значение) в 1 и нарисуйте окружность плотно сти примерно посередине контейнера. Если запустить воспроизведение анимации, окружность не будет двигаться, поскольку гравитация на не больше не действует.
4.
Выберите в контекстном меню Paintable Attributes (Наносимые атрибуты) значение Temperature (Температура) вместо Density (Плотность). Должно появиться преду преждение о том, что для правильного моделирования температуры необходимо ус тановить динамическую сетку. Для этого щелкните на кнопке Set То Dynamic (Установить в динамический режим). Обратите внимание, что теперь контейнер снова пустой: хотя изображенная плотность все еще присутствует, ее больше не вид но, так как теперь установлен режим температуры.
5.
Нарисуйте несколько штрихов высокой температуры (белого цвета) в нижнем пра вом углу контейнера, как показано на рис. 20.26.
6.
Снова выберите значение Density (Плотность) в контекстном меню Paintable Attributes (Наносимые атрибуты) и запустите воспроизведение анимации. На экране поле плотности жидкости должно кружиться под воздействием высокой температу ры, источник которой находится в нижнем правом углу контейнера (рис. 20.27).
В контейнере можно изображать другие свойства, включая поля скорости, которые будут проталкивать поле плотности повсюду, и топливо, которое при превышении полем порогового значения температуры (установленного в редакторе атрибутов) будет вос пламеняться, выделяя тепло и свет и соответственно изменяя внешний вид и положение плотности жидкости в контейнере. Попробуйте в предыдущей сцене нанести топливо вдоль нижней части контейнера, чтобы оно касалась области температуры, созданной ранее. (При появлении предупреждения установите сетку энергии в динамический ре жим.) Если установить экран в режим отображения топлива, то можно запустить вос произведение анимации и посмотреть, как расходуется топливо при горении (рис. 20.28,
797
Система Fluid Effects слева).
Если установить режим отображения плотности, то можно увидеть воздействие горящего топлива на плотность жидкости (см. рис. 20.28, справа).
Рис. 20.26. Штрихи температуры, на рисованные в плоском контейнере
Рис. 2027. Поле плотности жидкости под воздействием (невидимой) температуры
Рис. 20.28. Топливо, расходуемое при горении (слева), и плотность жидкости, подвергающаяся воздействию от горящего топлива (справа)
Создание эффекта океана Создать эффект океана с самого начала так же просто, как и создать плоский или объ емный контейнер жидкости. В наборе меню Dynamics (Динамика) выберите пункты Fluid Effects => Ocean => Create Ocean (Эффекты жидкости => Океан => Создать океан). В результате на сцене отобразится искривленный, округлый фрагмент NURBS, по имени o c e a n P l a n e l , похожий на изображение рис. 20.29, с небольшим демонстрационным фрагментом, отображающим основные параметры внешнего вида волны, которая будет получена при визуализации. Если визуализировать сцену, то можно увидеть стандарт ный набор волн на голубом фоне. Kevin запустить воспроизведение анимации в окне сцены, то обновится только демонстрационный фрагмент. Дело в том, что инструмент Ocean Effects (Эффекты океана), не выполняя правдоподобное моделирование жидкости, соз-
798
Глава 20
дает видимость океана и движение волн с помощью наложения текстур и смещения со ответственно. Демонстрационный фрагмент в исходной точке указывает, как будет вы глядеть общая сцена после визуализации. В то же время этот фрагмент обновляется дос таточно быстро для интерактивной работы. Если выполнить быструю визуализацию сцены в первом кадре, а затем выполнить повторную визуализацию части предыдущей сцены в новом кадре, то можно заметить, что волны на поверхности движутся, вызывая соответствующую иллюзию большого жидкого тела (рис. 20.30).
Рис. 20.29. Вид издалека фрагмента NURBS, содержащего Рис. 20.30. Стандартная модель океатонер океана на, визуализированная в первом кадре (слева) и в кадре 50 (справа). Волны между кадрами не совпадают, доказы вая, что карта смещения, создающая эффект волн, находится в движении Визуализация поверхности океана, как можно заметить, является долгим процессом, осо бенно если установлено высокое значение сглаживания. Это связано с тем, что процессы смещения и текстурирования, являющиеся основой этого эффекта, требуют больших вы числительных затрат. Один из способов решения этой проблемы заключается в снижении качества сглаживания и разрешения при пробной визуализации, пока не будет достигнут удовлетворительный результат в общем. Как и для инструмента Fluid Effects, в редакторе атрибутов для инструмента Ocean Effects (Эффекты океана) имеется набор элементов управления, включая высоту волны, турбулентность, окрас и т.п. Ни один из этих элементов управления на самом деле не влияет на моделирование. Они просто управляют текстурированием и смещением. Чтобы увидеть, как работают некоторые из этих элементов управления, выделите по верхность океана и откройте раздел Ocean Attributes (Атрибуты океана) в редакторе ат рибутов (рис. 20.31). Сначала обратите внимание на то, что вверху для параметра Туре (Тип) установлено значение Ocean Shader (Тонер океана), которое обеспечивает доступ к элементам управления, расположенным ниже. В разделе атрибутов океана, находя щимся непосредственно под раскрывающимся списком Туре (Тип), наиболее важными параметрами являются Time (Время), который управляет анимацией эффекта, а по умолчанию для него должны быть установлены ключевые кадры, Scale (Масштаб) (управляет масштабом модели), W i n d UV (Ветер UV) (управляет скоростью ветра, кото рый в свою очередь влияет на высоту и движение волны), W a v e Speed (Скорость вол ны) и Observer Speed (Скорость наблюдателя) (заставляет наблюдателя перемещаться относительно волн). Большинство остальных элементов управления в двух верхних бло ках раздела Ocean Attributes (Атрибуты океана) вполне очевидны, и, проведя несколько экспериментов с ними, вполне можно понять, как они воздействуют на океан.
799
Система Fluid Effects
Рис. 20.31. Часть раздела редакторе атрибутов
Ocean
Attributes
в
В трех следующих разделах — W a v e Height (Высота волны), Turbulence (Турбулент ность) и Peaking (Гребни волны) — используется градиентная метафора, похожая на ис пользуемые в некоторых разделах (например, тонирование) атрибутов инструмента Fluid Effects. Например, в разделе W a v e Height (Высота волны) градиент применяется для определения размера волн на основе их длины. Левой части градиента соответствуют волны с наименьшей длиной, а правой — с наибольшей. Добавление или перемещение точек градиента позволяет управлять высотой волны для каждого установленного раз мера волн. (Прямолинейный градиент делает все волны одинакового размера.) Если, на пример, для левой части градиента установить значение 1, а для правой — значение 0, то самые короткие и часто встречающиеся волны будут очень большими, а более длинные будут иметь нулевую высоту, что приводит к эффекту ряби и заставляет воду выглядеть больше похожей на ванну, а не на океан. Изменение значений на противоположные (установить 0 и 1 соответственно) создаст большие длинные волны с плохой детализа цией, которые выглядят слишком гладкими для настоящей воды. Эксперименты с раз личными значениями (обычно больше 0) приводят к лучшим результатам, чем любой из этих двух экстремальных вариантов. Раздел W a v e Turbulence (Турбулентность волны), который настраивается так же, как и раздел W a v e Height (Высота волны), управляет турбулентностью (или случайным пе ремещением) волн. Если для всего частотного спектра турбулентности волны установ лено значение о, то все волны будут упорядочены, что придаст им гладкий, неестествен ный вид. Раздел W a v e Peaking (Гребни волны), который доступен только при значении раздела W a v e Turbulence (Турбулентность волны) больше о, создает горизонтальное (а не вертикальное) движение волн во времени. И снова, установка для этого раздела значения больше 0 создает более случайную, динамическую водную поверхность, хотя и за счет дополнительных затрат времени на визуализацию, поскольку раздел W a v e Peaking (Гребни волны) требует интенсивных вычислений.
800
Глава 20
Длина волны, которая обратно пропорциональна ее частоте, является расстоянием между двумя впадинами или вершинами волны. Это выражается уравнением А, = (к / f), где X — длина волны; f — частота; к — константа, отражающая скорость волны. Тогда волны с большой длиной имеют большое расстояние между каждой волной и поэтому выглядят, как большие океанические гребни, с грохотом разбивающиеся о берег, или волны, на кото рых люди занимаются серфингом. С другой стороны, волны с короткой длиной имеют не большое расстояние между впадинами, что приводит к мелкой ряби волн, которые сущест вуют (или наложены) на поверхности более крупных волн. Таким образом, как правило, не обходимо, чтобы волны с короткой длиной имели равную или меньшую высоту, чем волны с большой длиной. В нижней части раздела Ocean Attributes (Атрибуты океана) находятся параметры Foam Emission (Выделение пены), Threshold (Порог) и Offset (Смещение), которые по зволяют создать пену на верхушках больших волн (размер больших волн определяется значением параметра Threshold (Порог)). Применив этот эффект пенных гребней, мож но создать на сцене бушующий океан (рис. 20.32). И наконец, в разделе C o m m o n material Attributes (Общие атрибуты материала) нахо дятся элементы управления фактическим цветом самой воды. Здесь можно откорректи ровать цвет воды и пены, накал, прозрачность и коэффициент преломления воды, что по зволяет создавать все, что угодно, начиная с весьма фотореалистичной воды и заканчи вая загадочными розовыми океанами чужих планет. Одним из важнейших аспектов инструмента O c e a n Effects ( Э ф ф е к т ы океана) является способность поддерживать любое количество объектов непосредственно на поверхности океана. Поскольку поверхность рассчитывается через наложение сме щения, необходимо использовать выражения, которые определяют смещение любой точки поверхности, чтобы вычислить, как будет плыть объект. К счастью, компания Autodesk сделала процесс более понятным для пользователя: в меню Fluid Effects (Эффекты жидкости) выберите пункты O c e a n => Float S e l e c t e d Objects ( О к е а н е Сделать выделенные объекты плавающими), чтобы открыть параметры объектов, плавающих на поверхности океана, включая плавающие локаторы, к которым позже можно присоединить камеру или объект, B u o y (Буек) (локатор с присоединенной сферой), а также параметр для плавания любого геометрического объекта (Float Selected O b j e c t s (Сделать выделенные объекты плавающими)) или для создания обычной или моторной лодки ( M a k e Boat (Сделать лодку) или M a k e Motor Boat (Сделать моторную лодку) соответственно). Все эти плавающие объекты работают одинаково (с изменяющимися параметрами), поэтому для примера используем пункт меню Make Boat (Сделать лодку). На стандарт ной сцене океана создайте несколько геометрических примитивов, таких как конус NURBS, или добавьте любую модель по собственному желанию. При выделенном объек те выберите в меню Fluid Effects (Эффекты жидкости) пункты O c e a n s Make Boats (Океан => Сделать лодки). Теперь объект должен присоединиться к локатору, который поддерживает траекторию движения объекта. Если воспроизвести анимацию, то можно увидеть "лодку", качающуюся вверх и вниз на невидимой поверхности океана, как пока зано на рис. 20.33. Создание лодки делает возможным трехмерное движение созданного объекта. Если ис пользуется плавающий объект, то он будет подпрыгивать вверх и вниз, оставаясь на по верхности, но не сможет поворачиваться.
Система Fluid Effects
Рис. 20.32. Стандартная сцена океана, к которой применен эффект волн с пенными гребнями
801
Рис. 20.33. Конус "лодки", плывущей на поверхности океана
В редакторе выражений, отсортированном по имени выражения, под элементом e x p r e s s i o n l можно увидеть длинное выражение, которое фактически выполняет всю черную работу по обеспечению плавания объекта на поверхности океана. К счастью, не обязательно иметь дело с этим выражением (но при желании можно). Можно просто от крыть редактор атрибутов для элемента l o c a t o r S h a p e l и, перейдя к разделу Extra Attributes (Дополнительные атрибуты), отобразить элементы управления лодкой. Все они связаны с переменными в только что рассмотренном выражении. По завершении изучения данной главы большинство этих параметров должно быть понятно. В качестве примера можно изменить значение плавучести, по умолчанию равное 0 . б. Если умень шить плавучесть объекта (скажем, задать значение 0.2), он погрузится в океан, а если увеличить плавучесть до большего числа, например 1.0, то объект будет плыть как пляжный мяч, лишь касаясь волн. (В этом случае, вероятно, необходимо будет увеличить значение параметра Air Damping (Сопротивление воздуха), иначе лодка будет сильно трястись.) Если установить значение плавучести меньше нуля, то лодка потонет, как ка мень. Таким образом, устанавливая ключевые кадры плавучести, можно заставить лодку всплыть на поверхность, подпрыгнуть над ней, а затем снова погрузиться под воду. Одним печальным следствием того, что инструмент Ocean Effects (Эффекты океана) использует моделирование смещения, является то, что след от лодки или другого пла вающего объекта не рассчитывается. Соответственно плывущая по поверхности воды лодка не будет правильно взаимодействовать с океаном, создавая пену или волны от пе ремещения по поверхности. Эту проблему можно решить с помощью средства Create W a k e (Создать волну). Выделите плоскость океана и в меню Fluid Effects (Эффекты жидкости) выберите пункты Ocean => Create W a k e (Океан => Создать волну). При этом появится эмиттер жидкости, который создает рябь, когда он неподвижен, и волны, когда он перемещается. Инструмент Create W a k e (Создать волну) имеет три параметра: W a k e Size (Размер волны), W a k e Intensity (Интенсивность волны) и Foam Creation (Создание пены). Па раметр W a k e Size (Размер волны) задает размер, или масштаб, контейнера жидкости волны. Параметр W a k e Intensity (Интенсивность волны) определяет высоту волн, за полняя атрибут плотности жидкости. Положительная интенсивность заставляет океан подниматься вверх, а отрицатель ная — опускаться вниз. На рис. 20.34 изображена волна от невидимой движущейся "лодки". (Здесь установлены ключевые кадры для перемещения во времени эмиттера
802
Глава 20
волны, что создает более явное поведение волны.) К сожалению, в окне параметров соз дания волны нельзя вводить отрицательные значения, для этого необходимо изменить параметр Fluid Density Emission (Испускание плотности жидкости) эмиттера волны по сле его создания. Третий параметр, Foam Creation (Создание пены), моделирует турбу лентные аспекты волны, добавляя нечто похожее на тепло к находящимся под воздейст вием вокселям, имитируя бурун и пену. Подобно всем остальным атрибутам в разделе Ocean Effects (Эффекты океана), для управления волной используется ряд тонеров.
Рис. 20.34. Создание волны от "лодки"
Создание эффекта водоема Эффекты водоема являются двухмерными эффектами жидкости, которые использу ются для формирования поверхностей с помощью карты высот (height map) и решателя каркаса пружин (spring mesh solver). Таким образом, эти эффекты находятся где-то меж ду эффектами океана, в которых используется смещение/визуализация, и двумерны ми/трехмерными жидкостями, которые являются правдоподобными моделями жидко сти. Чтобы создать водоем, в меню Fluid Effects (Эффекты жидкости) выберите пункты Pond => Create Pond • (Водоем => Создать водоем • ) , затем выберите размер контейнера жидкости, который необходимо создать, и щелкните на кнопке Create Pond (Создать водоем). Исследуя атрибуты эффекта водоема в редакторе атрибутов, можно заметить, что во доем является двумерной жидкостью, но заданные по умолчанию значения некоторых атрибутов отличаются от "обычных" двумерных жидкостей, а кроме того, эффект водо ема автоматически имеет набор начальных состояний. Наиболее явные отличия заклю чаются в том, что в эффекте водоема используется поле высот (height field), а его вычис ление осуществляется при помощи решателя каркаса пружин вместо обычного решателя Навье-Стокса. В отличие от эффекта океана, эффект водоема является неподвижным, пока на него не начнет воздействовать некоторая сила. Водоемы отлично работают с эффектами волны, которые можно добавить, выбрав в меню Fluid Effects (Эффекты жидкости) пункты Pond => Create W a k e (Водоем => Создать волну). Так как жидкость волны водоема использует тот же плоский контейнер жидко сти, который используется и для водоема, существует только два параметра для создания волны водоема: W a k e Intensity (Интенсивность волны) и Foam Creation (Создание пе ны). Поведение этих параметров похоже на поведение параметров с такими же назва ниями, которые используются при создании волны океана. В отличие от эффекта океана, который основан на наложении смещения, в Maya можно наблюдать деформацию по верхности водоема (рис. 20.35).
Система Fluid Effects
803
Рис. 20.35. Эффект водоема с добавленной движущейся волной
Практика: создание эффекта облака для исчезновения Машизмо Теперь, когда стали понятны основы создания эффектов жидкости, давайте немного развлечемся и создадим эффект, который позволит Машизмо исчезать в клубах дыма. (На эту идею вдохновил эффект "bamf", созданный для персонажа Nightcrawler в фильме "Люди Икс-2" (Х-Меп 2), но здесь, для простоты и демонстрации некоторых возможно стей инструмента Fluid Effects (Эффекты жидкости), он будет выглядеть несколько ина че.) Выполните следующие действия. 1.
Откройте на прилагаемом компакт-диске файл Bamf S t a r t .mb. Здесь, как показано на рис. 20.36, Машизмо стоит, готовый исчезнуть в облаке дыма. Обратите внимание, фигура Машизмо становится невидимой в кадре 10, с которого начинается эффект "bamf.
2.
Сначала необходимо создать новую камеру (в меню Create (Создать) выбе рите пункты Cameras (Камеры) и Camera (Камера)), переместить ее так, чтобы она снимала Машизмо со стороны (рис. 20.37), а затем заблокировать ее каналы поворота и перемещения. (Выделите каналы поворота и переме щения, щелкните правой кнопкой мыши и в появившемся контекстном меню выберите пункт Lock Selected (Блокировать выбранное).) Сделать это необ ходимо потому, что будет создан эффект двухмерной жидкости, правильная работа которого зависит от угла обзора камеры.
3.
Создадим двухмерную жидкость (без эмиттера). В меню Fluid Effects (Эффекты жидкости) выберите пункт Create 2D Container • (Создать пло ский контейнер • ) . Оставьте для параметров значения по умолчанию и соз дайте контейнер. Поверните его на 90° по оси Y, переместите и измените масштаб так, чтобы он был похож на рис. 20.37. В разделе Container Properties (Свойства контейнера) редактора атрибутов установите значение параметра r e s o l u t i o n (Разрешение) равным 80x80 вокселей.
804
Глава 20
Рис. 20.36. Машизмо стоит и готов исчезнуть
4.
Рис. 20.37. Плоский контейнер жидкости был повернут., перемещен и масштаби рован так, чтобы охватить Машизмо
Теперь в стандартной фигуре Машизмо нарисуем некоторую плотность. Она будет функционировать как зарождающиеся клубы дыма, поэтому должна повторять его силуэт (вот зачем нужно было заблокировать камеру визуализации). Выделите плоский контейнер и в меню Fluid Effects (Эффекты жидкости) выберите пункты Add/Edit Contents => Paint Fluids Tool • (Добавить/Редак 1
тировать содержимое => Инструмент рисования жидко стей • ) . В разделе Paint Attributes (Нанести атрибуты) установите в меню Paintable Attributes (Наносимые ат рибуты) значение Density (Плотность), для параметра Paint Operation (Окрашивание) выберите значение r e p l a c e (Заменить) и убедитесь, что для параметра Opacity (Непрозрачность) в разделе Brush (Кисть) установлено значение 1. Откорректируйте радиус кисти (для этого, удерживая нажатой клавишу <В>, перетащите указатель мыши вперед-назад над контейнером) и закрасьте силуэт эффекта жидкости Машизмо. (Убедитесь, что его тело внутри также окрашено. Можно отключить слой геометрических форм, чтобы удостовериться в том, что окрашено все тело.) По завершении сцена должна выглядеть так, как на рис. 20.38. Если запустить воспроизведение сцены прямо сейчас, то можно столкнуться с нескольки ми проблемами. Во-первых, жидкость начинает рассеиваться в первом кадре вместо 10-го. Вовторых, плотность становится видимой слишком рано. (Она должна появляться при исчезно вении Машизмо.) В-третьих, рассеивание дыма слишком сглажено и замедленно — необхо дим более интенсивный, бурный эффект. Сейчас эти проблемы будут решены по очереди. 1.
При выделенном плоском контейнере откройте редактор атрибутов. В разделе Dynamic Simulation (Динамическое моделирование) установите для параметра Start Frame (Начальный кадр) значение 9 вместо 1. Теперь динамика не будет работать до девятого кадра. (Кадр 9 вместо кадра 10 был выбран потому, что иначе произошел бы незначительный рывок в первом кадре, прежде чем динамика начала бы работать.)
Система Fluid Effects 2.
805
Пока плоский контейнер все еще выделен, переместите ползунок временной шкалы к кадру 9 и установите ключевой кадр видимости контейнера в состояние Off (Отключено). Перейдите к кадру 10 и установите ключевой кадр для перевода види мости в состояние On (Включено). Теперь эффект жидкости появляется в момент исчезновения фигуры.
3. Далее необходимо создать эффект вакуума, как будто воздух вовлекается туда, где находилось тело Машизмо, и добавить немного турбулентности, а также несколько других настроек, чтобы модель выглядела правильно. Чтобы создать всасывающий эффект, выделите плоский контейнер, а затем в меню Fields (Поля) выберите пункт Newton • (Ньютон • ) . Установите для параметра Magnitude (Величина) значение 500, для параметра Attenuation (Затухание) — значение 0, а все остальное оставьте в состоянии по умолчанию. Щелкните на кнопке ОК, чтобы создать это поле, и оно автоматически присоединится к плоскому контейнеру. При выделенном поле перей дите в панель каналов и установите канал Apply Per Vertex (Применить к отдельным вершинам) в состояние On (Включено), чтобы поле влияло на каждый вексель неза висимо. При запуске воспроизведения анимации можно увидеть, что всасывающий эффект слишком сильный. Необходимо установить ключевые кадры так, чтобы эф фект затухал через какое-то время. Установите ключевой кадр для параметра Magnitude (Величина) со значением -500 примерно на кадре 17, а другой ключевой кадр для параметра Magnitude (Величина) со значением 0 — примерно на кадре 19 (все предложенные здесь параметры можно корректировать по своему усмотрению). 4.
После того как был получен подходящий эффект вакуума, добавим немного турбу лентности, чтобы дым рассеивался более интенсивно. При выделенном плоском кон тейнере откройте раздел Contents Details (Детали содержимого) редактора атрибу тов, а затем откройте подраздел Turbulence (Турбулентность). Установите для пара метра Strength (Сила) значение 0.5, для параметра Frequency (Частота) — значение 30 и для параметра Speed (Скорость) — значение 1. Это создаст некоторый высоко частотный шум для возмущения рассеивающегося дыма.
5.
И наконец, настроим несколько других параметров. В разделе Dynamic Simulation (Динамическое моделирование) установите для параметра Damp (Сопротивление) значение 0 . 0 5 , а также установите ключевые кадры для значения 0 . 2 параметра Viscosity (Вязкость) и значения 9.8 параметра Gravity (Гравитация) примерно на кадре 16. Для этого поместите курсор над текстом и, щелкнув правой кнопкой мыши, выберите в появившемся контекстном меню пункт Set Key (Установить ключевой кадр). В кадре 26 установите для параметра Viscosity (Вязкость) значение 0.005. В кадре 50 установите для параметра Gravity (Гравитация) значение 200. Коррекция вязкости позволит дыму реагировать скорее как густая жидкость в начале и как раз реженный дым в конце. Коррекция гравитации сделает эффект дыма распростра няющимся быстрее, так что он не будет разлетаться вокруг слишком долго. Сущест вует, конечно же, множество других параметров, которые можно откорректировать, чтобы получить собственный эффект, так что не бойтесь экспериментировать с лю быми интересными параметрами в редакторе атрибутов.
Можно также создавать более высококачественные решения, которые показывают намного больше деталей в завитках дыма. Давайте включим этот режим, чтобы получить результат более высокого качества.
806
Глава 20
1. Выделив плоский контейнер, откройте раздел Dynamic Simulation (Динамическое моделирование) редактора атрибутов и установите для параметра High Detail Solve (Решение с высокой детализацией) значение All Grids (Все сетки). Это задействует режим высококачественного решения, создав более изящный эффект (рис. 20.39). 2.
Этот способ моделирования довольно быстрый и визуально очень интересный. Можно оставить эффект таким, как есть, и визуализировать его. (Убедитесь, что ус тановили самые высокие значения для параметров качества визуализации, чтобы по лучить хорошие результаты.) Но давайте пройдем на один шаг дальше и исследуем возможность нанесения сетки отставания. Эта возможность похожа на использовав шуюся ранее при нанесении сетки плотности. Чтобы нарисовать эту сетку, выделите пло ский контейнер. (Лучше перейти к первому кадру и перевести видимость контейнера в состояние On (Включено), чтобы можно было наносить отставание в сетке.) Сначала не обходимо откорректировать несколько параметров, чтобы можно было видеть и модели ровать сетку отставания. В разделе Contents Method (Метод содержимого) редактора ат рибутов установите для параметра Falloff Method (Метод отставания) значение Static Grid (Статическая сетка). Для параметра Dropoff Shape (Форма спада) раздела Shading (Тонирование) установите значение Use Falloff Grid (Использовать сетку отставания). В разделе Display (Представление) для параметра Shaded Display (Тонированное пред ставление) установите значение Falloff (Отставание). Теперь можно видеть сетку отста вания по мере ее прорисовки.
3. Снова примените инструмент Paint Fluids (Рисование жидкостей) и в меню Paintable Attributes (Наносимые атрибуты) раздела Paint Attributes (Нанести атри буты) выберите значение Falloff (Отставание) вместо Density (Плотность). Как и прежде, обрисуйте силуэт Машизмо с использованием режима замены рисования. Однако теперь рисуйте и снаружи контура тела, поскольку дым должен быть виден за пределами персонажа. Также можно изменить режим на сглаженный и закрасить границы фигуры, чтобы сделать границы отставания настолько ровными, насколько возможно. Когда завершите работу, сетка отставания должна выглядеть так, как на рис. 20.40.
Рис. 20.39. Создание решения высокой детализации для эффекта дыма
Рис. 20.40. Нанесение сетки отставания
807
Система Fluid Effects
Чтобы снова увидеть сетку плотности, выберите любой инструмент, кроме Paint Fluids (Рисование жидкостей), например Select (Выделить) или Move (Пе ремещение). При запуске анимации дым теперь "захвачен" в области отставания, как по казано на рис. 20.41. Чтобы посмотреть завершенную сцену, можно открыть файл BamfComplete.mb на компакт-диске. Или же посмотреть файл bamf .mov, чтобы уви деть, как Машизмо исчезает в клубах дыма!
Рис. 20.41. Клубы дыма, содер жащиеся внутри нанесенной об ласти отставания
Резюме Хотя жидкости являются сложными эффектами, требующими больших вычисли тельных затрат, в этой главе было показано, как с помощью инструмента Maya Fluid Effects (Эффекты жидкости) можно довольно легко и быстро создавать все виды бога тых, реалистичных эффектов без необходимости копаться в сложных уравнениях и алго ритмах. Корректируя разнообразные параметры предустановленной модели, можно по лучить любое количество эффектов дыма, огня, облаков, воды и океана или, при жела нии, начать с самого начала, самому быстро создать простые или сложные эффекты, как проиллюстрировано в последнем практическом примере. С таким багажом знаний в арсенале можно чувствовать себя уверенным в своих спо собностях при создании всех видов естественных (или сверхъестественных) эффектов для собственной анимации. После небольшой практики можно создавать все, что угодно, начиная со штормового океана и заканчивая кипящим вулканом или дымящейся чашкой кофе. То, что можно сделать, ограничено только фантазией и мастерством!
Система Maya Hair Система волос Maya Hair является мощной частью пакета Maya Unlimited, позво ляющей создавать сложное движение волос, реалистичные прически и другие динамиче ские эффекты. В этой главе изложено, как устанавливать волосы на голове персонажа, использовать ограничители и силы для создания прически, создавать реалистичный внешний вид с помощью инструментов Paint Effects, а также управлять скелетной систе мой, используя динамические кривые волос. , •
Основы систем волос
•
Создание волос
•
Управление системами волос
•
Создание причесок
•
Динамика и взаимодействие
•
Визуализация волос
•
Создание кэша
•
Использование динамических кривых для управления скелетной системой
Основы систем волос Для управления динамикой группы фолликулов в Майя используется специальный узел, называемый Hair System (Система волос). Каждый фолликул содержит кривую волос и может влиять на внешний вид и поведение отдельных прядей волос. При созда нии узлов системы волос для них можно использовать как систему Paint Effects, так и кривые NURBS. С помощью системы Paint Effects можно получить выглядящие реали стично пряди волос, поскольку используемые штрихи будут налагаться на моделируе мые кривые волос. Если же более предпочтительны NURBS-поверхности, то для созда ния поверхности можно использовать обтяжку и другие операции моделирования по верхностей. Считайте узел Hair System главным уровнем управления группой фолликулов. На эти фолликулы воздействуют такие атрибуты системы волос, как гравитация, турбу лентность, жесткость, взаимодействие и многие другие. На сцене может содержаться множество узлов системы волос, что позволяет легко создавать различные виды динами ки волос для разных частей персонажа. Как будет продемонстрировано в дальнейшем, фолликулы могут переопределить некоторые параметры узла системы волос, что позво ляет нарушить единообразное и полностью контролировать поведение волос персонажа.
810
Глава 21
Активные и пассивные фолликулы При создании волос фолликулы можно сделать как активными, так и пассивными. Фолликул (follicle) представляет собой группу из определенного количества отдельных волос. Волосы внутри каждой группы наследуют совершенно одинаковую динамику. Ак тивные фолликулы являются динамическими и независимыми от других фолликулов в узле системы волос. Голова со слишком большим количеством активных фолликулов, хотя и является физически более точной, может быть крайне неэффективной в плане вычислений. Пассивные фолликулы интерполируют динамическое поведение соседних активных фолликулов, что, соответственно, снижает точность, но существенно повышает эффективность по сравнению с расчетом каждого волоса. Количество пассивных фолликулов определяется величиной пассивного заполнения при создании волос. Как правило, если необходимо создать достаточно равномерно дви жущиеся волосы, можно использовать большее количество пассивных фолликулов. Если уже имеется система волос из активных фолликулов, то в Maya легко добавить пассив ные фолликулы с помощью инструмента Paint Hair Follicles Tool (Инструмент нанесе ния фолликулов волос), а также изменить их тип в редакторе атрибутов. На рис. 21.1 по казано, как с помощью интерполяции между соседними активньши фолликулами созда ется форма пассивного фолликула.
Рис. 21.1. Форма пассивного фолликула определена в результате интерполяции положения между двумя активными фолликулами
Начальная, текущая позиции и позиция покоя Фолликула имеет три положения: Start (Начальное), Current (Текущее) и r e s t (Покой). Во время работы необходимо будет постоянно переключаться между отобра жением каждого из этих состояний, доступных при выборе в меню Hair (Волосы) пункта Display (Представление). Начальное положение представляет форму волос в начале мо делирования. Этот режим представления позволяет легко выбирать отдельные активные фолликулы для добавления ограничителей или изменения атрибутов отдельных фолли кулов. Начальное положение можно установить из любого текущего состояния волос,
Система Maya Hair
811
если выделить фолликулы и выбрать в меню Hair (Волосы) пункты Set Start Position => From Current (Установить начальное положение => Из текущего). При переходе к началу моделирования волос процесс начнется из этого положения. Положение Current (Текущее) представляет собой расположение волос в любом за данном кадре. Начальное положение и положение покоя зачастую устанавливаются из текущего положения в желаемом кадре. Если при запуске воспроизведения временной шкалы имитации движения волос не будет, то невозможно будет наблюдать и систему волос в режиме текущего положения. Положение r e s t (Покой) описывает целевую, конечную форму фолликулов волос. Когда положение покоя установлено (зачастую это окончательная форма желаемой при чески), фолликулы пытаются сохранять форму покоя. Положение покоя можно увидеть из начального или текущего кадра, выбрав в меню Hair (Волосы) пункт Set r e s t Position (Установить положение покоя).
Как создавать волосы Майя предоставляет множество способов для создания волос. Прежде чем добавить волосы на сцену, необходимо четко представлять себе, какой должен быть результат. Должны ли быть волосы длинными или короткими? Нужно ли создать прическу, или волосы будут естественно ниспадать? Должны ли волосы выглядеть как отдельные пря ди или как управляемая сетка? К счастью, для всех этих параметров можно применить мощную динамику инструмента волос Майя. Можно позволить Майя разместить волосы самостоятельно или нанести их вручную. Можно даже пересаживать (транспланти ровать) волосы с одного персонажа на другой!
Создание волос Волосы можно автоматически создавать на любой NURBS-поверхности или полиго нальной сетке. Майя позволяет даже указать количество фолликулов, создаваемых на по верхности в направлениях U и V. Поскольку создание волос зависит от координат UV, убе дитесь сначала, что их нанесли для всех полигональных сеток. (Автоматическое наложение работает быстрее всего.) Иногда после создания волос можно заметить лысые участки. Наиболее вероятно, что это последствия неправильного нанесения координат UV. Как же б ы т ь с SDS-поверхностями?
Майя не поддерживает добавление волос к SDS-поверхностям. Если необходимо, чтобы во лосы появились на SDS-поверхности, добавьте их на NURBS или полигональной парик . За тем можно скрыть геометрическую форму парика. В качестве альтернативы систему волос можно присоединить к стандартной полигональной сетке SDS-поверхности. 1
При создании волос можно задать их длину, коэффициент случайности (чтобы ин тервал между фолликулами был неодинаков), желаемый формат результата и другие па раметры. Параметр Points Per Hair (Точки отдельных волос) определяет, как много кон трольных точек создано вдоль кривой волос. Чем больше точек отдельных волос, тем де тальнее могут они наследоваться. Как правило, более длинные волосы должны иметь больше точек, чтобы обеспечить достаточно гладкий внешний вид.
В оригинале скальп (skullcap), но обойдемся без кровожадных подробностей. — Примеч. ред.
812
Глава 21
В редакторе атрибутов для каждого узла фолликула можно указать, будут ли созда ваемые волосы статическими, пассивными или динамическими. На статические волосы не влияют силы, и для них можно устанавливать ключевые кадры вручную. Кривые пас сивных волос интерполируют соседние кривые активных волос, создавая модель, менее требовательную к ресурсам, чем полностью динамическая система волос. Динамические волосы реагируют на силы и движение объекта, с которым они связаны. Теперь также можно указать, будут ли волосы создаваться на сетке выделенной поверхности или на выделенных гранях. Еще одной возможностью является способность установить, нужно ли создавать дополнительные фолликулы волос в новом узле системы волос или же до бавлять их к уже существующим. При создании волос можно заметить множество дополнительных узлов и объектов в файле сцены. В нем будут присутствовать узлы системы волос, результирующие кри вые, фолликулы, узлы кэша, ограничители и другие элементы. Поскольку в узле системы волос содержится множество элементов, Maya предоставляет способ для выбора только необходимых элементов из них. Выделите любой элемент системы волос, а затем преоб разуйте выделение во что угодно, выбрав в меню Hair (Волосы) пункт Convert Selection (Преобразовать выделение). (Этот инструмент позволяет быстро выделять элементы без необходимости их поиска в окне иерархической структуры.) Удаление такой сложной системы узлов может быть настоящим кошмаром. Однако Maya облегчает удаление всех элементов системы волос: выделите любую часть волос и выберите в меню Hair (Волосы) пункт Delete Entire Hair System (Удалить систему волос полностью). Все элементы волос, относящиеся к выделению, будут удалены. Если необ ходимо назначить выделение новой или другой системе волос, выберите в меню Hair (Волосы) пункт Assign Hair System (Применить систему волос). В следующем примере волосы создаются на простой сфере NURBS, а затем воспро изводится результат. 1.
На новой сцене создайте сферу NURBS.
2.
Выделив сферу, в наборе меню Dynamics (Динамика) выберите пункты Hair => Create Hair • (Волосы => Создать волосы • ) .
3.
В окне Create Hair Options (Параметры создания волос) (показанном на рис. 21.2) выберите в меню Edit (Правка) пункт r e s e t Settings (Восстановить параметры по умолчанию), а затем щелкните на кнопке Create Hairs (Создать волосы).
Рис. 21.2. В окне Create Hair Options пред ставлен один из методов создания волос
Система Maya Hair 4.
813
На экране появится множество волос, созданных средствами Paint Effects, которые торчат вокруг сферы (рис. 21.3). Чтобы увидеть имитацию волос, воспользуйтесь кнопкой Play (Воспроизвести) на временной шкале.
Д Л Я правильного вычисления динамической модели необходимо, чтобы в предпочтениях временной шкалы для скорости воспроизведения был установлен покадровый режим.
Нанесение фолликулов волос Надо полагать, что желателен больший контроль над размещением волос на объекте. Инструмент Paint Hair Follicles (Нанесение фолликулов волос) не только позволяет на носить активные и пассивные фолликулы непосредственно на модель, но и укорачивать или удлинять волосы; удалять фолликулы или изменять все типы других атрибутов — и все это с помощью интерактивной кисти! 1.
Создайте на новой сцене сферу NURBS.
2.
В наборе меню Dynamics (Динамика) выберите пункты Hair => Paint Hair Follicles • (Волосы => Нанесение фолликулов волос • ) , чтобы отобразить окно Paint Hair Follicles Settings (Параметры кисти фолликулов волос), показанное на рис. 21.4. По скольку работа осуществляется кистью, необходимо специальное окно, позволяющее задать ее параметры. Для этого упражнения прекрасно подойдут значения парамет ров по умолчанию.
Рис. 21.3. Простая модель волос, созданная на сфере
Рис. 21,4. Окно Paint Hair Follicles Settings позволяет управлять ат рибутами фолликулов
3.
В окне параметров инструмента Paint Hair Follicles (Нанесение фолликулов волос) выберите в меню Edit (Правка) пункт r e s e t Settings (Восстановить параметры по умолчанию).
4.
Установите для параметров Follicle Density U (Плотность фолликулов в направле нии U) и Follicle Density V (Плотность фолликулов в направлении V) значение 8.
5.
Для нанесения фолликулов на сферу используйте кисть в перспективном представлении. Обратите внимание, что для более плотного заполнения промежутков в окне параметров необходимо увеличить значения плотности фолликулов в направлениях U и V.
6. Также можно изменить длину только что нанесенных волос, что позволяет создавать специальные стрижки и прически. Из режима Paint Mode (Графический режим) пе рейдите в режим Extend Hairs (Расширение волос) и измените значение параметра Points Per Hair (Точки отдельных волос) на 10. Свободно рисуйте на сфере для рас ширения существующих фолликулов.
814 7.
Глава 21 Чтобы увидеть модель созданных волос, щелкните на кнопке Play (Воспроизвести) временной шкалы. Результат должен быть похож на изображение, приведенное на рис. 21.5.
Предустановленные образцы волос и их трансплантация Maya предоставляет библиотеку предустановленных образцов волос, доступных в окне Visor (Просмотр) и используемых для пересадки (трансплантации) волос между поверхностями. Каждый предустановленный образец волос поставляется с замечатель ными примечаниями компании Autodesk о том, как они создали систему волос, а также с советами по правильному моделированию и освещению выбранного стиля. Пересадка волос может оказаться полезной возможностью, если на сцене имеется много персона жей с похожими прическами. Больше не нужно каждый раз начинать размещение волос персонажа с начала. В следующем примере используется предустановленный образец волос, который пересаживается на сферу. 1. В меню Hair (Волосы) новой сцены выберите пункт Get Hair Example (Получить об разец волос). В окне Visor (Просмотр) можно увидеть 12 предустановленных образ цов, созданных компанией Autodesk. 2.
Найдите файл BunBack.ma, щелкните на нем правой кнопкой мыши и в появив шемся контекстном меню выберите пункт Import Maya File BunBack.ma (Импортировать файл Maya BunBack.ma) или с помощью средней кнопки мыши перетащите пиктограмму в окно сцены. Файл волос должен затем импортироваться на сцену. Закройте окно Visor (Просмотр).
3.
Если щелкнуть на узле hairSysteml или pfxHairl в группе hairAll окна иерар хической структуры, а затем открыть редактор атрибутов, в разделе Notes (Примечания) можно прочесть подробную информацию об этапах создания и советы по формированию, моделированию и освещению прически. Благодаря этим средст вам можно научиться создавать собственные уникальные прически и правильно ис пользовать эти предустановленные образцы.
4.
Создайте сферу, измените ее масштаб и расположите так, чтобы она стала соответст вовать форме волос. На эту сферу и будут трансплантированы волосы.
5.
Выделите узел hairAll, а затем, нажав клавишу <Shift>, выделите сферу. Выберите в меню Hair (Волосы) пункт Transplant Hair • (Трансплантировать волосы • ) . В ре зультате появится окно Transplant Hair Options (Параметры трансплантации волос), как показано на рис. 21.6. Если необходимо переместить, а не копировать волосы на сферу, сбросьте флажок Copy Follicles (Копировать фолликулы). Для пересадки можно выбрать метод Match UV (Соответствие UV) или Nearest Point (Ближайшая точка). Метод Match UV (Соответствие UV) подходит при трансплантации между похожими объектами. Ме тод Nearest Point (Ближайшая точка) пытается согласовать расположение фоллику лов на совершенно новой поверхности, но если эта поверхность не соответствует в пространстве текущей системе волос, результаты будут нежелательными. Наконец, новые волосы можно нанести на существующую систему волос. Если выбран режим Same Hair System (Та же система волос) и установлен флажок Copy Follicles
Система Maya Hair
815
(Копировать фолликулы), система волос будет сдублирована. Если флажок Сору Follicles (Копировать фолликулы) сброшен, то фолликулы будут использовать те кущую систему волос. Если имеется система волос, у которой уже есть определен ный внешний вид, можно разместить волосы в существующей системе волос, выбрав ее из списка.
Рис. 21.5. Инструмент Paint Hair Follicles позволяет наносить фолликулы с различными свойствами 6.
Рис. 21.6. Окно Transplant. Hair Options позволяет нанести существующую систему волос на новую модель
Сбросьте флажок Copy Follicles (Копировать фолликулы), выберите метод Nearest Point (Ближайшая точка) и режим размещения волос Same Hair System (Та же сис тема волос). Затем щелкните на кнопке Transplant Hair (Трансплантировать волосы). Теперь волосы переместятся с импортированного парика на новую сферу, как пока зано на рис. 21.7.
Практика: нанесение волос на голову В большей части этой главы система Maya Hair исследуется на модели с уже на несенными волосами. Цель этого упражнения заключается в создании типичного образца динамических волос с реалистичным внешним видом и движением. Будет создана относительно короткая женская стрижка с приподнятой частью посередине. Поскольку прическа имеет три отдельные части (задняя, левая и правая стороны), для облегчения управления каждой частью будут использованы три системы волос. Затем волосы будут уложены в желаемую прическу и настроены для динамического движения.
Создание фолликулов на голове В этой части упражнения показано, как создать фолликулы волос на экземпляре гео метрической формы головы. (Вполне можно использовать и другую модель головы вме сто предлагаемой.) Не существует единственно верного способа создания волос. По скольку имеется модель головы высокого разрешения, для более быстрого расчета и не зависимости волос от окончательной модели головы используется парик (таким образом, моделирование волос можно начать прежде, чем будет завершено создание мо дели головы). Три части волос отмечены на парике разным цветом, чтобы легче было различать нанесение фолликулов для каждой системы волос.
Глава 21 1.
Откройте на компакт-диске файл сцены H e a d N o H a i r . m b . На экране поя вится женская голова с париком, как показано на рис. 21.8 (чтобы сосредото читься на модели, вероятно, придется нажать клавишу < F > ) .
Рис. 21.7. Предустановленный образец волос перенесен на сферу
Рис. 21.8. Волосы нанесены на парик, а не на фактическую модель головы. Различные части головы отмечены разным цветом, что облегчает рабочий процесс
2.
Создаваемая прическа имеет три отдельные части. Сначала создадим заднюю часть волос. Выделите парик, а затем в меню Hair (Волосы) выберите пункт Paint Hair Follicles • (Нанесение фолликулов волос • ) .
3.
После восстановления параметров по умолчанию измените значения плот ности фолликулов в направлениях U и V на 10, из-за чего на парике будет создано не более 10 фолликулов в направлениях U и V. Так как волосы должны быть средней длины, установите для длины значение 10, а для пара метра Points Per Hair (Точки отдельных волос) установите значение 26, как показано на рис. 21.9.
4.
В перспективном представлении с помощью кисти нарисуйте на задней красной части головы (рис. 21.10) настолько много фолликулов, насколько позволит Майя (всего около 17). Не волнуйтесь, если фолликулы немного попадут на раздел другого цвета. Поскольку Майя выполняет только дина мическое моделирование этих фолликулов, они будут действовать как "управляющие" тысячами волос, которые в итоге будут добавлены к голове.
Рис. 21.9. Параметры фолликулов для задней части головы •
Рис. 21.10. К задней части головы добавлены активные фолликулы, которые будут в итоге управлять тысячами волос
Система Maya Hair 5.
817
В открытом окне параметров инструмента Paint Hair Follicles (Нанесение фоллику лов волос) выберите в списке Hair System (Система волос) значение Create New (Создать новый) и измените значения плотности фолликулов в направлениях U и V на 15. Нанесите фолликулы на голубую часть. Поскольку волосы зеленого и голубо го разделов должны иметь разную длину, плотности фолликулов были увеличены для создания их большего количества. Если какие-либо фолликулы кажутся нане сенными неправильно, выберите в режиме Paint Mode (Графический режим) пункт Delete Follicles (Удалить фолликулы) и "побрейте" кистью проблемные области.
6. Для создания третьей системы волос еще раз в открытом окне параметров инстру мента Paint Hair Follicles (Нанесение фолликулов волос) выберите в списке Hair System (Система волос) значение Create New (Создать новый). Нанесите фоллику лы на зеленую часть. Теперь на голове должны быть нанесены активные фолликулы, как показано на рис. 21.11.
Добавление ограничителей взаимодействий Первым шагом на пути к успешному оформлению волос является создание взаимо действия волос с поверхностью головы. Взаимодействие объектов можно установить, выбрав в меню Hair (Волосы) пункт Make Collide (Создать взаимодействие). Взаимодей ствия, особенно у моделей с высоким разрешением, могут потребовать больших вычис лительных затрат. Поэтому в Maya существуют предустановленные ограничители взаи модействий для сферы и куба, расчет которых выполняется намного быстрее, чем для плотного каркаса. Остальные ограничители рассматриваются ниже. Все ограничители волос в Maya имеют параметр Curve Indices (Индексы кривой), содер жащий массив фолликулов, на которые он воздействует. К сожалению, этот индекс не может быть легко добавлен или значительно изменен без использования сценариев языка MEL. При добавлении ограничителя взаимодействий к системе волос выходная величина out Pin огра ничителя связывается с входной величиной inputHairPin узла формы Hair System. Хотя с ограничителем взаимодействий можно связывать другие системы волос с помощью гиперграфа, массив Curve Indices (Индексы кривой) в ограничителе не изменится. Следовательно, то же количество кривых, которые воздействуют на первую систему волос, будут влиять и на последующие системы волос. Если подключенные позже системы волос содержат больше фолликулов, избыточные фолликулы взаимодействовать не будут. Поэтому не рекомендует ся присоединять множество систем волос к одному ограничителю. Каждая система волос должна присоединяться к собственному ограничителю взаимодействий. Процесс, который впоследствии используется для создания взаимодействия много численных систем волос с похожим на внешний вид ограничителем, заключается в свя зывании точек множества взаимодействий вместе, их группировке и последующем ма нипулировании группой так, чтобы перемещать, поворачивать и масштабировать их все вместе. Давайте добавим в пример взаимодействия и посмотрим, как они работают. 1.
Продолжая предыдущий пример (или открыв файл H e a d A c t i v e Follicles .mb), установите для каждого из трех узлов hairSystemShape значение качества представления равным 1. (Выделите систему волос, от кройте редактор атрибутов, перейдите на вкладку hairSystemShape и изме ните значение параметра Display Quality (Качество представления).) Благо даря этому воспроизведение модели волос будет происходить быстрее.
818 2.
Глава 21 Запустите воспроизведение анимации. Фолликулы упадут прямо внутрь головы (рис. 21.12), без взаимодействий. Перейдите к кадру 0.
Рис. 21.11. Для облегчения управле ния активными фолликулами ис пользуется несколько систем волос 3.
4.
Рис. 21.12. При моделировании без взаимодействий фолликулы пада ют вертикально вниз, проникая в геометрическую форму головы
Выделите элемент hairSystemlFollicles и в меню Hair (Волосы) выберите пункты Create Constraint => Collide Sphere (Создать ограничитель => Сфера взаимо действия). Будет создана сфера взаимодействия hairConstraintl. Создайте еще две сферы взаимодействия для элементов hairSystem2Follicles и hairSysterr3Follicles.
5.
Теперь преобразуем все три объекта взаимодействия так, чтобы их взаимодействия были аналогичны. Создайте локатор и переместите его в панель вида. Привяжите каждый из трех объектов взаимодействия к локатору так, чтобы они занимали то же трехмерное пространство. (В качестве альтернативы для объектов взаимодействия можно задать одинаковые глобальные координаты.)
6.
Сгруппируйте три объекта взаимодействия и назовите группу CollidersGrp. Цен трируйте опорную точку группы, выбрав в меню Modify (Изменить) пункт Center Pivot (Центрировать опорную точку)). Теперь, когда объекты взаимодействия собра ны вместе, можно удалить локатор, созданный на предыдущем этапе.
7.
Используя вид спереди, сбоку и в перспективе, переместите и измените масштаб группы CollidersGrp так, чтобы она охватила голову. Если она не будет прилегать плотно, это вполне допустимо.
8.
Запустите воспроизведение анимации на временной шкале. Теперь волосы наталкиваются на сферы взаимодействия, как показано на рис. 21.13. Перей дите к кадру 0.
Только что описанный метод является лишь одним из множества решений для создания взаимодействую щих волос. Поскольку не существует единственно пра вильного способа создания подобных эффектов, прове дите несколько экспериментов, чтобы подобрать наибо Рис. 21.13- Теперь фолликулы взаи модействуют с ограничителем лее подходящий для конкретной сцены. Если разработчик предпочитает создавать по нескольку разделов в единой системе
Система Maya Hair
819
волос, новые фолликулы к взаимодействующим волосам можно добавлять с помощью пункта меню Assign Hair Constraint (Применить ограничитель волос), который является нововведением Maya 8. Более подробная информация по этой теме приведена далее.
Создание прически После размещения активных фолликулов на сцене можно создавать прическу. Соз дание прически обычно выполняется с помощью комбинации полей и ограничителей. Для воздействия на волосы могут быть применены все динамические поля Maya. Так что если необходимо сильно завить волосы, к системе волос можно применить поле Vortex (Вихрь). Однородные поля замечательно подходят для укладки волос феном (blow-dryer). Как только волосы примут необходимое положение, для них можно применить ограни читель на выбор, что позволит точнее регулировать прическу. С И Л Ы И ВОЛОСЫ
Мощнейшей возможностью динамики Maya является Interactive Playback (Интер активное воспроизведение), которая позволяет просматривать динамику в реальном времени. При включенной функции интерактивного воспроизведения можно переме щать ограничители и изменять силы, интерактивно взаимодействуя с формой волос. Те перь, для создания прически, продолжим пример с использованием однородных полей и ограничителей r u b b e r Band (Резиновая нить). 1.
Продолжая предыдущий пример (или открыв файл HeadCollide.mb), вы делите элемент hairSysteml и добавьте однородное поле, выбрав в меню Fields (Поля) пункт Uniform • (Однородно • ) .
2.
В открывшемся окне параметров однородного поля восстановите параметры по умолчанию и измените значение параметра Magnitude (Величина) на 5000.0. Также измените значения параметров Direction X (Направление по оси X) и Direction Y (Направление по оси Y) на 0.0, а для параметра Direction Z (Направление по оси Z) установите значение -1.0. Щелкните на кнопке Create (Создать).
3.
Если запустить воспроизведение анимации, то можно увидеть, как волосы на задней части головы ниспадают назад. Остановите воспроизведение и перейди те к кадру 0. Теперь добавим однородные поля к оставшимся двум разделам.
4.
Как и прежде, добавьте однородные поля в направлениях [-1.0, 1.0, 0.0] и [1.0, 1.0, 0.0] для систем волос hairSystem2 и hairSystem3 соответст венно. Эти поля помогут создать приподнятую часть посередине волос.
5.
В наборе меню Dynamics (Динамика) выберите пункты Solvers => lnteractive Playback (Решатели => Интерактивное воспроизведение). Теперь волосы должны простираться в разных направлениях (рис. 21.14). Выделите каждое из однород ных полей и измените значение параметра Magnitude (Величина) на 0.0. Теперь волосы должны мягко упасть на свое место. Остановите временную шкалу.
6.
Если волосы ниспадают вокруг головы так, как необходимо, выделите все фол ликулы (можно выделить их группы) и в меню Hair (Волосы) выберите пункты Set Start Position => From Current (Установить начальное положение => Из текуще го). Теперь при переходе к кадру 0 волосы останутся в данном положении, а не примут форму, заданную по умолчанию (рис. 21.15).
Глава 21
820
Рис. 21.14. При моделировании прически с применением укладки используются однородные поля
Рис. 21.15. Пост применения однородных полей для создания прически волосы остаются неподвижны ми и взаимодействуют с головой
Ограничители и волосы Хотя силы прекрасно подходят для обычного размещения волос, с помощью ограни чителей могут быть установлены специальные настройки. rubber Band Если расстояние между ограничителем и волосами превышает длину ре (Резиновая нить) зиновой нити, волосы будут притягиваться к ограничителю Stick (Шест)
В любой точке модели, если расстояние между волосами и ограничителем меньше начального расстояния, волосы отталкиваются. Если расстояние между волосами и ограничителем больше начального расстояния, то во лосы притягиваются к ограничителю. Поворот и масштабирование огра ничителя не влияют на результат
Transform (Перемещение)
Похож на ограничитель Stick (Шест), только его можно поворачивать и масштабировать. Полезен для присоединения волос к другому объекту, который манипулирует ими
Hair to Hair Стягивает волосы вместе для создания группы (Волос к волосу) Hair Bunch (Пучок волос)
Действует так же, как и самовзаимодействие, но более эффективно. От талкивает волосы, которые пересекаются друг с другом
Ограничители r u b b e r Band (Резиновая нить), Stick (Шест) и Transform (Переме щение) похожи между собой, однако каждый из них имеет свои достоинства. Каждый из этих ограничителей создает связь между локатором ограничителя и каждым фоллику лом, находящимся под воздействием. Используя ограничитель r u b b e r Band (Резиновая нить), представьте себе резиновый шнур, соединяющий ограничитель и находящиеся под воздействием фолликулы. Длина этих связей устанавливается в начальном кадре моде ли. Если во время моделирования ограничитель перемещается так, что расстояние между ним и фолликулом становится больше, чем длина резиновой нити, то фолликулы, нахо дящиеся под воздействием, будут перемещаться вместе с ограничителем. Если же огра ничитель перемещается так, что длина связи становится меньше, чем длина резиновой нити, никакого эффекта на фолликулы это не производит. Ограничитель Stick (Шест) можно представить себе как жесткие стержни, соеди няющие находящиеся под воздействием фолликулы с локатором ограничителя. Ограни чители Stick (Шест) похожи на резиновые нити тем, что фолликулы перемещаются вме сте с удаляющимся ограничителем, но отличаются тем, что, если расстояние между воло-
821
Система Maya Hair
сами и ограничителем становится меньше, чем начальное расстояние, волосы отталки ваются, заставляя расстояние от волос до ограничителя оставаться постоянным. Ограничитель Transform (Перемещение) действует при перемещениях наподобие ог раничителя Stick (Шест). Но отличается от него тем, что поворот и масштабирование локатора ограничителя соответственно влияют и на фолликулы. Обычно ограничитель Transform (Перемещение) используется тогда, когда волосами манипулирует другой объект. Например, если волосы используются при создании поводка, два ограничителя Transform (Перемещение) можно присоединить к ошейнику собаки и к руке хозяина. Ограничители Hair to Hair (Волос к волосу) стягивают волосы вместе так, чтобы они действовали как группа. Этот тип ограничителя полезен при моделировании ленты. Ог раничитель Hair Bunch (Пучок волос) может применяться для отталкивания волос друг от друга и использует меньше вычислительных ресурсов, чем самовзаимодействие. На рис. 21.16 и 21.17 показано, как каждый из этих пяти ограничителей воздействует на кривые. На рис. 21.17 ограничитель r u b b e r Band (Резиновая нить) сильнее воздейст вует на крайнюю правую кривую и слабее — на самую левую кривую. Ограничитель Stick (Шест) влияет на каждую кривую одинаково (из-за своих жестких связей). Обра тите внимание на то, что ограничитель Transform (Перемещение) сохраняет жесткие связи, как и ограничитель Stick (Шест), однако волосы поворачиваются в соответствии с движением. Ограничители Hair to Hair (Волос к волосу) и Hair Bunch (Пучок волос) не оказывают влияния на фолликулы при перемещении ограничителя. Однако, если пере мещается стержень, удерживающий кривые, то кривые под влиянием ограничителя Hair to Hair (Волос к волосу) не будут взаимодействовать друг с другом, а будут сохранять индивидуальное движение, в то время как кривые под воздействием ограничителя Hair Bunch (Пучок волос) будут перемещаться равномерно.
Рис. 21.16. Пример добавления каж дого типа ограничителя к пяти кривым перед их перемещением
Рис. 21.17. Пример перемещения каждого ограничителя на две единицы в направлении -X и на одну единицу в направлении - Y
Нововведением Maya 8 является возможность добавлять фолликулы к уже существующим ограничителям волос и переназначать ограничители дру гим фолликулам. Это может существенно сократить количество объектов взаимодейст вия и ограничителей на сцене. Чтобы использовать этот инструмент, выделите фоллику лы, которые необходимо добавить, а затем выделите ограничитель. Выберите пункт меню Hair => Assign Hair Constraint • (Волосы => Применить ограничитель волос • ) . Если уста новлен флажок r e p l a c e (Замена), то выбранный ограничитель будет переназначен выде ленным фолликулам волос. Если установлен флажок Append (Добавить), выбранный ог раничитель будет добавлен к выделенным фолликулам волос и воздействиям на них.
822
Глава 21
О г р а н и ч и т е л и волос м о ж н о п р и м е н я т ь т о л ь к о к т е м ф о л л и к у л а м , к о т о р ы е н а х о д я т с я в т о й же с и с т е м е волос. Г р у п п и р о в к а и л и п о д ч и н е н и е о г р а н и ч и т е л е й из р а з н ы х с и с т е м волос п р и в о д и т к п о л у ч е н и ю е д и н о г о о г р а н и ч и т е л я , в л и я ю щ е г о н а н е с к о л ь к о с и с т е м волос.
При желании проверить эти ограничители самостоятельно, откройте на ком пакт-диске файл сцены C o n s t r a i n t s S t a r t . m b . Например, чтобы добавить на сцену ограничитель, выполните следующие действия. 1. Переключите вид в начальное положение волос, выбрав в меню Hair (Волосы) пунк ты Display => Start Position (Представление => Начальное положение). В этом режиме обзора можно легко выделять отдельные кривые фолликулов. 2.
Выделите кривые, которые необходимо изменить, и выберите желаемый ограничи тель, воспользовавшись пунктом меню Haip => Create Constraint (Волосы => Создать ограничитель).
3.
Поместите ограничитель на сцену. Положение ограничителя относительно фолли кулов, находящихся под воздействием, определяет начальную длину соединений между волосами и локатором ограничителя.
4.
Переключите вид на текущее положение волос, выбрав в меню Hair (Волосы) пункты Display => Current Position (Представление => Текущее положение). Включите функ цию интерактивного воспроизведения и визуально переместите ограничитель, чтобы установить волосы в желаемое положение.
5.
Чтобы сохранить получившуюся форму и сделать ее прической по умолчанию, вы делите фолликулы и в меню Hair (Волосы) выберите пункты Set Start P o s i t i o n s From Current (Установить начальное положение => Из текущего).
Использование ограничителей на отдельных фолликулах волос является отличным способом корректировать положение любых "отбившихся" волос, которые не были пра вильно поставлены при создании основной прически. Безусловно, те же самые ограничи тели могут вытащить несколько отдельных волос, чтобы придать прическе некоторую беспорядочность или пушистость.
Изменение длины волос Хотя для укорачивания волос вполне можно просто удалять из них контрольные вершины (CV), Майя предоставляет два способа изменения длины волос: параметры Extend/Trim (Расширение/Отсечение) в окне параметров инструмента Paint Hair Follicles (Нанесение фолликулов волос) и инструмент Scale Hair (Масштаб волос). Кроме того, с помощью инструмента Paint Hair Follicles (Нанесение фолликулов волос) можно наносить множество атрибутов, включая операции Extend (Расширение) и Trim (Отсечение), которые изменяют волосы на основе количества выделенных точек отдель ных волос. Преимущество этих инструментов в том, что волосы будут просто умень шаться или расти, сохраняя свою форму. Чтобы изменить длину волос с помощью окна параметров инструмента Paint Hair Follicles (Нанесение фолликулов волос), выберите в раскрывающемся списке Hair System (Система волос) систему волос, содержащую фол ликул (фолликулы), измените режим Paint Mode (Графический режим) на Trim (Отсечение) или Extend Hairs (Расширение волос). Затем введите соответствующее зна чение параметра Points Per Hair (Точки отдельных волос) и рисуйте поверх существую щих фолликулов, изменяя их длину. Обратите внимание, что управляет длиной сущест-
Система Maya Hair
823
вующих фолликулов величина Points Per Hair (Точки отдельных волос), а не величина Hair Length (Длина волос). Поскольку динамика волос чувствительна к количеству кон трольных точек на кривой волос, нежелательно просто изменять их длину без изменения количества точек отдельных волос. Существующий фолликул волос имеет набор специ фической для него динамики, которая может нарушиться при изменении соотношения длины и количества точек отдельных волос. Инструмент Scale Hair (Масштаб волос) позволяет интерактивно масштабировать волосы. Можно масштабировать либо отдельные фолликулы, либо все волосы сцены, пе ретаскивая указатель мыши влево для увеличения и вправо — для уменьшения. Масшта бирование волос увеличивает объем прически и завитки волос, но изменение объема яв ляется побочным эффектом. Чтобы избавиться от нежелательного объема, немного уменьшите масштаб, выполните моделирование, установите текущее положение в каче стве начального, немного увеличьте масштаб и повторите. Имейте в виду, что средство Undo (Отменить) в Maya записывает каждое изменение в мас штабируемой фолликуле (даже если кнопка мыши не была отпущена). Соответственно, про грамма сможет сделать множество отмен для возврата к состоянию до масштабирования.
Изменение кривых Иногда кривые волос приходится редактировать вручную. Выбор пункта Modify Curves (Изменить кривые) меню Hair (Волосы) предоставляет доступ к нескольким инструментам изменения формы кривых. Редактировать можно только кривые типа Start (Начальное) и r e s t (Покой) (выделяя, их). Формы кривых типа Current (Текущие) получаются в результате моделирования и не могут быть изменены непо средственно. В пункте меню Modify Curves (Изменить кривые) доступны следующие инструменты: •
Lock Length (Блокировать длину);
•
Unlock Length (Разблокировать длину);
•
Straighten (Выпрямление);
•
Smooth (Сглаживание);
•
Curl (Завивка);
•
Bend (Изгиб);
•
Scale Curvature (Масштаб кривизны).
Зачастую при манипулировании кривыми их длину необходимо блокировать (а впо следствии разблокировать) для сохранения длины фрагмента каркаса или контрольных вершин выделенных кривых. Когда кривую изогнули слишком сильно, для ее выпрям ления можно использовать функцию Straighten (Выпрямление). Инструмент Smooth (Сглаживание) просто уменьшает курчавость. Инструмент Curl (Завивка) позволяет из менять частоту и величину курчавости выделенного фолликула. В следующем разделе описано, как создать завитки для всей системы волос. Хотя иногда наличие этого уровня управления каждым фолликулом является важным. Функция Scale Curvature (Масштаб кривизны) просто позволяет сокращать или расширять кривизну фолликула с помощью коэффициента масштабирования.
824
Глава 21
Курчавые и волнистые волосы Создание прически выходит за пределы лишь общего расположения волос с помо щью сил и ограничителей. Возможно, необходимо будет заплести "конский хвост" или завить волосы персонажу, что было бы довольно сложно сделать, используя только силы. К счастью, Майя позволяет легко получить эти эффекты с использованием системы во лос и атрибутов фолликулов. Курчавостью управляют в разделе Displacements (Смещения) атрибутов системы волос. (Чтобы открыть его, выделите узел h a i r S y s t e m X и откройте редактор атрибу тов.) Параметр Curl (Завивка) управляет величиной волнистости волос, принадлежащих выделенной системе волос. Так как для завитых волос требуются сглаженные дуги, убе дитесь, что в разделе Clump And Hair Shape (Группа и форма волос) для параметра Sub Segments (Субсегменты) установлено значение как минимум 3 или 4. Параметр Curl Frequency (Частота завитков) задает количество подлежащих созданию завитков. Для волнистых волос оставьте эту величину небольшой, а для курчавых волос ее необходимо увеличить. Неплохо всегда добавлять немного завитков к волосам, даже к прямым, про сто для придания им большей реалистичности (иначе волосы будут совершенно гладки ми). На рис. 21.18 проиллюстрированы результаты добавления завитков.
Рис. 21.18. Различные эффекты завивания, возникаю щие при изменении атрибутов Curl и Frequency Добавление случайности к группированию волос с помощью эффекта шума обеспе чивает еще более реалистично выглядящие результаты. В разделе Displacement (Смещение) узла h a i r S y s t e m доступно несколько атрибутов, которые помогают созда вать отлично выглядящие завитки и волны. Существуют три метода шума: r a n d o m (Случайный), surface UV (Поверхность UV) и Clump UV (Группа UV). Метод r a n d o m (Случайный) разбрасывает волосы без учета соседних волос и лучше подходит для вью щихся волос. Метод surface UV (Поверхность UV) создает шум в трех направлениях (в направлениях U и V поверхности, а также в направлении W, определяющем длину во лос) и является взаимосвязанным с распределением волос в направлении UV на поверх ности. Метод Clump UV (Группа UV) также имеет шум в трех направлениях, но не зави-
Система Maya Hair
825
сит от распределения в направлении UV на поверхности. Методы шума surface UV (Поверхность UV) и Clump UV (Группа UV) лучше всего подходят для создания нату рально выглядящих завитков и волн. Частота шума может быть изменена независимо в направлениях U, V и W. На рис. 21.19 проиллюстрированы результаты применения трех методов шума. т
Групповой шум
Поверхностный шум
Случайный шум
Рис. 21.19. Примеры трех методов шума. Для дости жения более реалистичного результата шум учиты вает группировку Параметр Sub Clumping (Подгруппы) определяет, как группируются отдельные во лосы в каждом фолликуле. Добавление подгрупп создает эффект мокрых волос, как если бы пряди волос спутались. Для достижения желаемого эффекта подгрупп атрибутами шума случайности и группировки в направлениях UV можно управлять. На рис. 21.20 показаны результаты применения подгрупп к фолликулам волос.
Без подгрупп
Рис.21.20. Атрибут Sub дать эффект мокрых волос
С подгруппами
Clumping
позволяет соз
826
Глава 2 1
Шкала Displacement (Смещение) позволяет изменять величину смещения, приме ненную к длине волос, управляя параметрами Curl (Завивка), Noise (Шум) и Sub Clumping (Подгруппы) в направлении W. Левая часть графика представляет нижнюю часть волос, а правая — верхнюю. Щелкните в графике, чтобы увеличить или уменьшить смещение относительно длины волос, и перетащите указатель мыши в панели для кор ректирования формы кривой смещения.
Коса Переплетение виртуальных волос может показаться очень сложным заданием, но оно является простым при использовании параметра отдельных фолликулов Braid (Коса). Выделите фолликул, из которого необходимо сделать косу, и выберите параметр Braid (Коса). Волосы должны иметь достаточно подчиненных сегментов (их можно найти в атрибутах системы волос), чтобы кривые отображались правильно. Кроме того, коррек ция в атрибутах системы волос значения параметра Hairs Per Clump (Количество волос в группе) и величины Density Mult (Коэффициент плотности) в разделе фолликула render Overrides (Переопределение визуализации) обеспечит объем, необходимый для удачной косы. Изменение ширины группы в системе волос позволит смоделировать во лосы, связанные вместе на конце косы (рис. 2 1 . 2 1 ) . Моделирование геля для волос с использованием параметра Start
Curve Attract
Великолепной возможностью системы волос Майя являются параметр Start Curve Attract (Притяжение к начальным кривым), находящийся в подразделе Forces (Силы) раздела Dynamics (Динамика) узла hair system. Этот параметр контролирует степень притяжения модели волос к начальным позициям кривых. Используя моделирование и ограничители, кривые волос можно привести к желаемому сти лю, установив начальную позицию кривых (Hair => Set Start Position => From Current (Волосы => Установить начальное положением Из текущего)) и корректируя их с помощью атрибута при тяжения, который позволяет задать жесткость волос относительно их исходной позиции. По умолчанию атрибут Start Curve Attract имеет значение О. О, означающее, что кри вые волос не будут жестко придерживаться начальной формы. Увеличение этого значения начнет притягивать волосы к начальной позиции, имитируя лак или гель для волос. Макси мальное значение, 1. о, жестко зафиксирует форму волос в исходном положении. Когда атрибут Start Curve Attract имеет значение выше О . О, появляется возможность изменять значение параметра Attraction Damp (Сопротивление притяжению), находящееся в редакторе атрибутов непосредственно ниже. Это значение добавляет к силе притяжения эффект затухания, позволяя получить более-менее эластичные волосы при низком или вы соком значении соответственно.
Добавление волосам густоты и объема Зачастую одиночные активные фолликулы выглядят на сцене слишком редкими. Как только был выбран их общий стиль, можно добавить тысячи волос для заполнения про белов. Это можно сделать несколькими способами. Для повышения эффективности вычислений форма и движение волос определяются выбором нескольких фолликулов, которые обозначены как активные. После того как этим фолликулам будет придана желаемая форма, для большей густоты и объема волос могут быть добавлены пассивные фолликулы. Форма и движение этих пассивных фол-
Система Maya Hair
827
ликулов интерполируется с учетом соседних активных фолликул, так что они не увели чивают значительно время моделирования. Для управления густотой в узле формы системы волос имеются два важных парамет ра: Hairs Per Clump (Количество волос в группе) и Clump Width (Ширина группы). Уве личение значений этих атрибутов приведет к добавлению большего количества волос ко всем фолликулам связанной системы волос. Для заполнения определенных областей, ко торым необходимы волосы, можно откорректировать параметр Density Mult (Коэффициент плотности) в разделе render Overrides (Переопределение визуализации) на основе отдельных фолликулов. Не в каждой ситуации требуются пассивные фолликулы. Из-за их эффективности по сравнению с активными фолликулами, а также для демонстрации, чтобы продемонстри ровать, как они применяются, добавим их к текущему примеру размещения волос на го лове девочки. Продолжая выполнение примера, используйте собственную сцену волос или от кройте на компакт-диске файл HeadAlteredLengths.mb. 1.
Для просмотра фолликулов в их начальном положении выберите в меню Hair (Волосы) пункты D i s p l a y s Start Position (Представление => Начальное положение) (рис. 21.22).
Рис. 21.21. Из фолликулов легко можно создать косу
Рис. 21.22. После создания фолликулов их длину можно изменить в за висимости от желаемой прически
2. Выделите парик и в меню Hair (Волосы) выберите пункт Paint Hair Follicles • (Нанесение фолликулов волос • ) . Замените режим Paint Mode (Графический ре жим) режимом Create Passive Follicles (Создать пассивные фолликулы) и выберите систему волос hairSystemShapel. Поскольку плотность волос необходимо повы сить, увеличим значение плотности фолликулов в направлениях U и V до 34. Так как пассивные фолликулы получают значения точек отдельных волос и длины от со седних активных фолликулов, изменять остальные параметры нет необходимости. 3.
Нарисуйте фолликулы кистью на задней стороне парика (красной части). На экране сразу же появится множество фолликулов. Нанесите столько фолликулов в этой об ласти, сколько сможете. Чтобы выявить непокрытые области, проверьте сцену, ви зуализировав ее. Если сквозь любую часть волос, на которую нанесены фолликулы, хорошо видна кожа, попробуйте увеличить плотность фолликулов в направлениях U и V в окне настроек инструмента Paint Hair Follicles (Нанесение фолликулов волос).
4.
Выберите систему волос hairSystemShape2 и нанесите пассивные фолликулы в соот ветствующей области. Проделайте то же самое и для системы hairSystemShape3.
\
828
Глава 21
Как можно заметить, после нанесения фолликулов при значении их плотности в на правлениях U и V, равном 34, верхняя часть головы остается абсолютно лысой. Ка ждый фолликул в Майя имеет связанную группу волос. По умолчанию на один фол ликул приходится десять волос. 5.
После увеличения плотности волос => итеративность может существенно снизиться. Поместите объекты системы Paint Effects и фолликулы каждой системы волос на их собственный слой представления. Теперь для просмотра можно выбрать только те волосы, с которыми необходимо работать. Параметр Display Quality (Качество пред ставления) каждого узла формы системы волос также позволяет управлять количе ством волос, представленных в окне предварительного просмотра.
6.
Выделите систему волос h a i r S y s t e m 3 (часть парика с волосами зеленого цвета) и откройте редактор атрибутов. Во вкладке Clump And Hair Shape (Группа и форма волос) измените значение параметра Hairs Per Clump (Количество волос в группе) на 4 0 и установите для параметра Clump W i d t h (Ширина группы) значение 0.8.
7.
Чтобы группы не имели вид, состоящий из кусков, сделайте их немного тоньше. (Значение 0.4 должно подойти.)
Создание предустановленного образца для системы во лос в редакторе атрибутов и его дальнейшее применение к другим системам волос ускоряет рабочий процесс и га рантирует, что волосы будут иметь одинаковые настрой ки. Для выполнения этой задачи щелкните в редакторе атрибутов на кнопке Presets (Предустановленные). 9.
Рис. 21.23. Увеличивая плотность Чтобы изменить все волосы головы, повторите шаги фолликулов системы волос, мож 8-9 для других двух систем волос. Для более точной но быстро добавить тысячи во настройки результатов (рис. 21.23) свободно нано лосков, которые интерполируют сите больше пассивных фолликулов и откорректи свою форму на основе активных фолликулов руйте группировку.
Динамика волос и взаимодействия Атрибутами движения волос управляет система волос Hair System. Элементы фолли кула соответствующей системы волос имеют ограниченный набор переопределений, ес ли необходимо управлять определенными группами. Как было замечено ранее, при соз дании прически силы в динамике Майя могут влиять на движение волос. Атрибуты, управляющие динамикой и взаимодействиями системы волос, находятся в разделах Dynamics (Динамика), Collisions (Взаимодействия) и Turbulence (Турбулент ность) соответствующего узла h a i r S y s t e m S h a p e , доступного в редакторе атрибутов. Назначение каждого атрибута кратко описано в следующей таблице.
Dynamics (Динамика)
Iterations (Итерации)
Задает количество итераций на единицу времени при расчете. При увеличении этого значения волосы выглядят более жесткими, но время вычислений увеличивается
Система Maya Hair
829 Продолжение
таблицы
Dynamics (Динамика) Length Flex Определяет, как сильно могут растягиваться волосы (Эластичность по длине) Stiffness (Жесткость)
Задает для волос сопротивление кручению
Stiffness Scale (Шкала жесткости)
График, позволяющий корректировать жесткость в точках кривой
Drag (Трение)
Моделирует трение воздуха. Величина О соответствует отсутст вию трения, а величина 1 предотвращает движение
Motion Drag (Изменение трения)
Нововведение Maya 8. Ослабляет движение кривых волос отно сительно движения их фолликулов
Damp (Сопротивление)
Ослабляет динамический эффект. Чем меньше сопротивление, тем дольше у волос остается энергия для движения
Friction (Трение)
Задает трение между волосами и поверхностью взаимодействия
Gravity (Гравитация)
Сила, которая постоянно приложена к волосам в направлении -Y
Start Frame (Начальный кадр)
Указывает, с какого кадра начинать моделирование. Если пара метр Current Time (Текущее время) указывает кадр до начального, динамика не будет действовать
Collisions (Взаимодействия) Collide (Взаимодействие) Collide Over Sample (Взаимодействие по образцу) Collide Width Offset (Смещение ширины взаимодействия)
Переключатель взаимодействий
Определяет качество образца взаимодействия
Корректирует смещение взаимодействия в случае проникновения
Self Collide (Самовзаимодействие)
Переключатель взаимодействий между волосами
repulsion (Отталкивание)
Количество отталкивающих сил, применяемых в случае взаимо действия
Static Cling (Статическая лип кость)
Определяет силу прилипания между волосами
Num Collide Neighbors (Количество соседей взаимодействия)
Определяет количество соседей, с которыми взаимодействует во лос. Увеличение количества соседей отрицательно сказывается на скорости воспроизведения
Collide Ground (Взаимодействие с ос нованием)
Быстрый и эффективный способ организации взаимодействия во лос с бесконечной плоскостью
Ground Height (Высота основания)
Определяет высоту основания взаимодействия
830
Глава 21 Окончание
таблицы
Collisions (Взаимодействия) Draw Collide Width (Отображать ширину взаимодействия)
Отображает ширину области взаимодействия вокруг волос
Width Draw Skip Задает качество отображения параметра Draw Collision Width (Пропуск отображения (Отображать ширину взаимодействия) ширины) Turbulence (Турбулентность) Intensity (Интенсивность)
Задает интенсивность турбулентности
Frequency (Частота)
Определяет, как быстро турбулентность изменяется в пространстве
Speed (Скорость)
Скорость, с которой шаблон турбулентности изменяется во времени
Ускорение общего рабочего процесса Иногда при моделировании волос и создании прически время взаимодействия суще ственно затягивается. Ниже приведены советы, позволяющие временно упростить рабо ту с системой волос, а также уменьшить чрезмерные затраты времени на вычисления.
Взаимодействия При анимации волос на сложной сцене можно временно отключить взаимодействия, чтобы получить правильное общее движение и динамику волос, а также сократить время на вычисления. Чтобы отключить взаимодействия, сбросьте флажок Collide (Взаимодействие) в списке атрибутов системы волос. Когда будет получена хорошая ос нова динамики, снова включите взаимодействия для получения точных результатов. Для проверки движения волос со взаимодействиями лучше использовать низкое зна чение параметра Collide Over Sample (Взаимодействие по образцу). Если волосы замет но проникают сквозь поверхность взаимодействия, увеличьте значения параметров Collide Over Sample (Взаимодействие по образцу) и Collide W i d t h Offset (Смещение ши
рины взаимодействия). Если волосы должны взаимодействовать с плоскостью основа ния, например у швабры и пола, то вместо создания объекта взаимодействия из геомет рической плоскости используйте параметр Collide Ground (Взаимодействие с основани ем), поскольку этот атрибут не влияет на производительность решателя.
Настройка видимости Поскольку волосы имеют тенденцию группироваться, нет необходимости в предвари тельном просмотре всей головы при моделировании движения. Создание 100 фоллику лов вместо 10000 действительно даст ощутимую разницу в производительности! Сохра нение минимального значения параметра Display Quality (Качество представления) сис темы волос значительно увеличит скорость воспроизведения. Добавление каждой группы волос к их собственному слою представления позволит лучше организовать сце ну и отображать только те части волос, над которыми ведется работа в настоящее время.
Система Maya Hair
831
Настройка моделирования Так как при предварительной визуализации нет необходимости отображать каждый отдельный волос, не нужно при работе над анимацией тела моделировать именно каж дый волос. В атрибутах системы волос параметр Simulation Method (Метод моделирова ния) по умолчанию имеет значение All Follicles (Все фолликулы). Изменение значения этого параметра на Off (Отключено) скроет систему волос, и она не будет моделировать ся. Это может быть полезным при моделировании другой части сцены, не имеющей от ношения к волосам. Установка для параметра Simulation Method (Метод моделирова ния) значения Static (Статический) сохранит систему волос неподвижной, но волосы бу дут двигаться вместе с расположенной под ними поверхностью, из которой они "растут". При установке для параметра Simulation Method (Метод моделирования) значения Dynamic Follicles Only (Только динамические фолликулы) отображаться и моделиро ваться будут только активные фолликулы. Так как пассивные фолликулы часто исполь зуются для заполнения промежутков при визуализации волос, их не нужно моделиро вать, пока активные фолликулы не станут корректными.
Кэш Как и другие динамические системы в Maya, кэши используются для сохранения дан ных моделирования, чтобы можно было перемещаться по анимации и, экономя время за счет избежания повторного расчета модели, представить своему руководству различные варианты модели, а также отправить сцены распределенным системам визуализации. Чтобы создать кэш для моделирования волос, выделите систему волос и в меню Hair (Волосы) выберите пункт Create Cache • (Создать кэш • ) . Открывшееся в результате окно свойств показано на рис. 21.24. Можно указать, нужно ли кэшировать кадры, уста новленные в текущих параметрах визуализации, диапазон временной шкалы или опре деленные начальный и конечный кадры. Также можно выбрать, будет ли зависеть вы числение от сложности сцены. При создании кэша Maya воспроизводит указанные кадры и записывает данные для каждого фолликула в файл* => . mchp, который находится в папке данных текущего проекта. Для того чтобы увидеть этот файл кэша в соответствующей папке, необходимо сохранить настройки проекта и сцену. Это одна из самых больших ловушек, расставленных системой волос пользователям. Узел кэша, который называется cache_yourHairSystemName, содержит привязку к файлу кэша, присоединенного к системе волос, как показано на рис. 21.25. Через этот узел можно загружать разнообразные кэши, если необходимо посмотреть различные ва рианты. Предположим, необходимо полностью изменить анимацию, в которой вырастают кэшированные волосы. Нужно удалить кэш, чтобы он мог быть повторно смоделирован при новой анимации. Для этого выделите систему волос и в меню Hair (Волосы) выбери те пункт Delete Cache (Удалить кэш). Иногда требуется удалить только часть кэша. Перейдите к кадру, с которого необхо димо начать отсечение, и в меню Hair (Волосы) выберите пункт Truncate Cache (Отсечь кэш). Кадры, находящиеся перед текущим, сохранят свой кэш, а из последующих кадров кэшированная информация будет удалена. Эта возможность полезна, если сделаны не значительные изменения анимации и нет желания повторно кэшировать все моделиро-
832
Глава 21
вание. Выбрав в меню Hair (Волосы) пункт Append То Cache (Добавить к кэшу), можно добавить информацию к существующему кэшу.
Рис. 21.24. Кэш позволяет сохранять модели на диске, исключая необходимость расчета динамики для каждого кадра
Рис. 21.25. Сохранение различных вариантов кэша, каждый из которых содержит атрибуты разных процессов моделирова ния, позволяет быстро просматривать эти процессы без повторного вычисления
Визуализация волос Хотя динамика волос довольно запутанна, реалистичная визуализация замысловатых деталей волос выглядит не менее пугающе. К счастью, такие вопросы, как обеспечение густоты волос и управление многообразием цветов, легко решать с помощью мощных параметров тонирования, предоставляемых Майя. В зависимости от выбранного выходного формата имеется множество параметров ви зуализации волос. Для моделирования реалистично выглядящих прядей волос, как пра вило, используются инструменты системы Paint Effects. Если выходным форматом яв ляются динамические кривые NURBS, поверхности могут быть созданы из этих кривых.
Система Paint Effects Если для моделирования используется система Paint Effects, то главным образом управляют тонированием, а не связанно системой волос. В разделе Shading (Тонирование) системы волос можно выбрать общий цвет волос. Майя предоставляет полный контроль над оттенками волос. Как правило, ближе к корням волосы кажутся темнее. Инструмент Hair Color Scale (Шкала цвета волос) позволяет перемножать интерполированные зна чения цвета в общий цвет волос. Крайний левый цвет представляет корень волос. Одни из самых влиятельных атрибутов цвета системы волос находятся среди параметров Color randomiZation (Установка случайного цвета). Эти ползунки позволяют управлять цве том произвольных потоков цвета, типичных в реалистичных волосах. Параметр Multi Streaks (Количество потоков) содержит количество дополнительных волос для каждой группы, сочетая намного больше туб системы Paint Effects с небольшим увеличением времени на вычисления. Значение этого атрибута можно изменять в его собственном разделе среди атрибутов системы волос. На рис. 21.26 изображены стандартные волосы, а на рис. 21.27 показаны те же волосы с включенным параметром Multi Streaks (Количество потоков).
Система Maya Hair
Рис. 21.26. Система Paint Effects с отключенным параметром Multi Streaks. Обратите внимание на то,
какими тонкими выглядят фоллику лы волос
833
Рис. 21.27. Система Paint Effects с установленным параметром Multi Streaks. Это придает дополнитель ный объем фолликулам с небольшим увеличением времени на вычисления
Если в качестве выходного формата на сцене используются кривые NURBS, то может появиться желание применить к динамическим кривым кисть Paint Effects. Для этого выделите фолликулы волос и откройте окно Visor (Просмотр) (в меню W i n d o w (Окно) выберите пункты General Editors => Visor (Общие редакторы => Просмотр)). Перейдите на вкладку Paint Effects и щелкните на соответствующей кисти. (При этом фолликулы в области просмотра сцены и кисть в окне просмотра должны быть выделены.) В меню Hair (Волосы) выберите пункт Assign Paint Effects Brush To Hair (Применить к волосам кисть системы Paint Effects). Если выполнить визуализацию теперь, то можно заметить, что система Paint Effects в действительности визуализирует не так, как ожидалось. Тонкие и многочисленные воло сы могут иметь странные цвета. Помните, что в разделе Shading (Тонирование) системы волос значения параметров Hair Color (Цвет волос) и Hair Color Scale (Шкала цвета во лос) перемножаются со стандартными цветами системы Paint Effects. По существу, что бы проигнорировать эти возможности, сделайте цвет волос белым и удалите не белые цвета в графике Selected Color (Выбранный цвет). Для изменения густоты и количества штрихов измените параметры Hairs Per Clump (Количество волос в группе) и Hair Width (Ширина волос), которые находятся в разделе Clump A n d Hair Shape (Группа и форма волос) атрибутов системы волос. Подробную информацию о системе Paint Effects см. в главе 17, "Система Paint Effects".
Геометрия При использовании кривых NURBS в качестве выходной формы или создании дина мики кривых кривые волос могут применяться для формирования поверхностей, кото рые двигаются подобно волосам. С помощью выдавливания и обтяжки кривых поверх ности можно построить так, чтобы сохранить хронологию динамических фолликулов. Это полезно, если необходимо создать геометрические "куски" волос вместо волос сис темы Paint Effects, а также веревки, простую ткань и другие динамические объекты. В следующем примере создается динамическая плоскость, иллюстрирующая, насколько просто создать динамику существующего объекта NURBS. 1.
На новой сцене создайте плоскость NURBS и установите промежутки между изопараметрическими линиями в направлениях U и V равными 5 или около того. Можете масштабировать их как угодно.
834
Глава 21
2.
Выделите плоскость и перейдите в режим компонентов. Выделите две противопо ложные изопараметрические линии на краях плоскости, как показано на рис. 21.28. Используя параметры по умолчанию, преобразуйте эти две изопараметрические ли нии в кривые, выбрав в наборе меню surfaces (Поверхности) пункты Edit Curves => Duplicate surface Curves (Редактировать кривые => Дублировать кривые по верхности).
3.
Удалите историю сцены и плоскость. Должны остаться две кривые. Хотя это и не прямой способ получения двух параллельных кривых, данный метод можно приме нять для более сложных объектов.
4.
Выделите обе кривые и в наборе меню Dynamics (Динамика) выберите пункты Hair => Make Selected Curves Dynamic (Волосы => Сделать выделенные кривые динамиче скими). При этом будут созданы элемент hairSysteml, а также группы hair-
5.
Выделите две кривые в группе h a i r S y s t e m l O u t p u t C u r v e s (это легче сделать в окне иерархической структуры) и обтяните их вместе. Важно не удалять историю этой обтянутой поверхности. Она должна быть похожа на плоскость, из которой бы ли сделаны кривые.
SystemlFollicles и hairSystemlOutputCurves.
6. Для каждого фолликула в группе hairSystemlFollicles измените в панели ка налов значение параметра PointLock (Блокирование точек) на Base (Основание). 7.
Запустите воспроизведение временной шкалы. На экране поверхность должна нис падать подобно куску ткани, как показано на рис. 21.29. В зависимости от разреше ния направлений UV плоскости, созданной на первом этапе, может потребоваться добавить контрольные вершины (CV), чтобы получить поверхность, более похожую на ткань. Для этого выделите кривые в группе h a i r S y s t e m l O u t p u t C u r v e s и фак тические кривые каждого фолликула. Перестройте эти кривые с большим количест вом вершин, например 20. Помните, что чем больше контрольных вершин имеет ди намическая кривая, тем более свободной и шелковистой она выглядит.
Рис. 21.28. Крайние изопарамет рические линии плоскости NURBS могут быть использованы для соз дания кривых, которые служат гра ницами динамической геометрии
Рис. 21.29. При создании поверхно сти из обтянутых волос получа ется динамическая геометриче ская форма, управляемая систе мой волос
Другим методом создания динамической геометрической формы является использо вание кривых для управления скелетной системой. Эта тема рассматривается в отдель ном разделе чуть ниже.
Система Maya Hair
835
Нанесение текстур волос Maya предоставляет инструмент Paint Hair Textures (Нанесение текстур волос), кото рый позволяет использовать специальную трехмерную кисть (Artisan) для нанесения лы син, цвета волос и блеска. Чтобы использовать этот удобный инструмент, выделите систему волос и в меню Hair (Волосы) выберите пункт Paint Hair Textures (Нанесение текстур во лос), а затем пункт Baldness (Лысина), или Hair Color (Цвет волос), или же Specular Color (Цвет блика). Плотность и цвет волос изменяются в том месте, где осуществляется рисова ние на объекте. Это отличный инструмент для наложения разнообразных карт волос в трехмерной среде. Можно также добавлять собственные плоские полутоновые изображе ния для лысин, цвета волос и блеска. Поле для вставки карты лысин находится в разделе Clump And Hair Shape (Группа и форма волос) атрибутов системы волос. Пути к файлам карт цветов, блеска и волос можно найти в разделе Shading (Тонирование).
Освещение и тени Заключительным этапом программной визуализации волос является правильное нало женных теней. Тени действительно добавляют реализм волосам системы Paint Effects. Для создания хорошего контраста между светом и тенью обычно необходим основной источник света с высокой интенсивностью ( 1 . 5 - 2 . 0 ) . В разделе Shadows (Тени) атрибутов света установите флажок Use Depth Map Shadows (Использовать карту глубин теней), посколь ку Maya не может трассировать лучи теней системы Paint Effects. Для оптимальных зри тельных результатов отключите параметр Use Mid Dist Dmap (Использовать карты глубин среднего расстояния) и измените значение параметра Dmap Filter Size (Размер фильтра карты глубин) для получения более сглаженных теней. Возможно, потребуется увеличить значение параметра Dmap Bias (Смещение карты глубин), чтобы сквозь волосы проходило больше света и чтобы разрешить любые проблемы дефектов теней.
Технология mental ray для Maya Способность визуализировать волосы в системе mental ray позволяет упростить про цесс производства, исключив необходимость осуществлять отдельные проходы про граммной визуализации. Результаты и настройка немного отличаются от тех, которые были при использовании системы программной визуализации. (Подробно визуализация волос с использованием технологии mental ray описана в документации Maya.) Если для волос системы Paint Effects используются множественные потоки, то эти потоки не бу дут обнаружены в системе mental ray. Для получения такого же эффекта можно увели чить количество волос в отдельных группах. Убедитесь, что в окне render Settings (Параметры визуализации) на вкладке инст румента mental ray в разделе Features (Возможности) установлен флажок render Hair (Визуализация волос). Волосы, визуализированные по технологии mental ray, как пра вило, выглядят немного темнее, чем при программной визуализации. Если волосы вы глядят слишком темными, то для компенсации можно откорректировать цвет и освеще ние волос. Система визуализации mental ray позволяет использовать точную компози цию глубины резкости. Глубина резкости в системе программной визуализации является не точной. На волосы может воздействовать эффект размытости движения в системе mental ray. Кроме того, они полностью интегрированы со сценой и не обрабатываются в дальнейшем с помощью композиции глубины по оси Z. При этом достигается большая
Глава 21
836
точность и реалистичность, чем может предоставить стандартная система визуализации Майя. Более подробную информацию об использовании системы визуализации mental ray в Maya 8.5 см. в главе 14, "Улучшенная визуализация с помощью mental ray".
Использование волос для управления скелетной системой Мощная система динамики, на которой создана система волос, может быть использо вана для создания множества эффектов. Делая существующие кривые динамическими, а затем присоединяя их к скелету, можно получить отличную вторичную анимацию гео метрических объектов. Сделать так, чтобы кривые управляли суставами, можно не сколькими способами. С помощью языка сценариев MEL можно разрабатывать выраже ния для обновления положения суставов на основе положения соответствующих кон трольных вершин (CV) динамической кривой. Более непосредственный метод заключается в использовании инверсной кинематики сплайнов для соединения движе ния кривых волос с деформируемой геометрической формой. Чтобы начать процесс преобразования динамики кривой волос в геометрическую форму, сначала необходимо создать скелет. Так как количество контрольных вершин (CV) кривой, которая будет создана, равно количеству суставов, убедитесь в том, что имеется достаточно суставов для сглаженной деформации. После создания скелета сде лайте его плавную привязку к геометрической форме. Затем, установив параметр Point Snapping (Привязка точек), нарисуйте кривую первого порядка вдоль скелета с кон трольной точкой для каждого сустава. Остальная часть процесса описана на примере применения образца геометрических волос к предыдущей модели головы. В представленной сцене уже имеются смоделиро ванные волосы, скелеты, созданные для каждой пряди волос, и стандартная кривая, про ходящая через каждый скелет. 1. Откройте на компакт-диске файл HeadGeoHair.mb. Динамической будет сделана только передняя часть волос, поскольку остальные волосы скручены в узел и не будут двигаться. На рис. 21.30 изображены волосы со скелетными костями, созданными для передних прядей волос. Существуют две группы объектов прядей волос: StaticHair и DynamicHair. Другие компоненты сцены объединены в структуры с очевидными названиями групп. Также, для улучшения организации, были созданы слои представления для головы, ста тических волос, динамических волос, скелетов и кривых волос. 2.
Отключите видимость всех слоев, кроме HairCurves. На экране должны появиться кривые, представляющие переднюю часть волос. Выделите все кривые и в меню Hair (Волосы) выберите пункт Make Selected Curves Dynamic (Сделать выделенные кривые динамическими). При этом будут созданы фолликулы из кривых, узел HairSysteml и новая группа hairSystemlOutputCurves.
3.
Отключите видимость слоя HairCurves (который теперь по умолчанию со держит фолликулы волос). Если запустить воспроизведение временной шкалы, кривые на экране должны выглядеть динамическими. Вернитесь к первому кадру.
837
Система Maya Hair 4.
Воспользуемся сплайнами инверсной кинематики, чтобы скелеты волос следовали за этими новыми динамическими кривыми. Включите видимость слоя HairSkeletons. Теперь должны появиться все скелеты и динамические кривые. В наборе меню Animation (Анимация) выберите пункты Skeleton => iK Spline Handle Tool • (Скелет => Инструмент маркера сплайна IK • ) . В панели Options (Параметры) восстановите параметры инстру мента по умолчанию и сбросьте флажки Auto Parent Curve (Автоматическое подчинение кривой) и Auto Create Curve (Автоматическое создание кривой), — это позволит устано вить динамические кривые в качестве управляющих.
5.
На одном из скелетов с помощью инструмента IK Spline Handle (Инструмент марке ра сплайна IK) выделите корневой сустав, затем конечный сустав и связанную дина мическую кривую. На конце скелета появится маркер IK с линией, соединяющей ко рень с концом. Повторите это для каждого из других восьми скелетов. По окончании работы сцена должна выглядеть похожей на рис. 21.31. Если в сплайне IK наблюда ется нежелательное скручивание, обратитесь к дополнительным элементам управле ния скручиванием в разделе IK Solver Attributes (Атрибуты решателя IK) окна атри бутов маркера IK. Более подробная информация о сплайнах IK приведена в главе 8, "Постановка и оснащение персонажа".
Рис. 21.30. Мощь инструмента Maya Hair позволяет управлять даже геометрическими волосами
Рис. 21.31. Инверсная кинематика сплайна проходит через скелет, позволяя управлять им с помощью динамических кривых волос
6.
На каждом скелете теперь должен иметься сплайн IK. Включите видимость слоя DynamicHair и запустите воспроизведение временной шкалы, чтобы увидеть, как гео метрическая форма волос перемещается вместе с кривыми. Перейдите к первому кадру.
7.
Теперь необходимо настроить динамику и движение волос. В окне иерархической структуры выделите все узлы фолликулов в группе HairCurves. Используя редак тор каналов (чтобы можно было изменять атрибуты для всех выделенных объектов), установите для параметра pointLock (Блокирование точек) значение Base (Основание) вместо значения BothEnds (Оба конца), это сделает волосы присоеди ненными только в их основании, а не на обоих концах.
8.
Если теперь включить видимость слоя Head и запустить воспроизведение модели, волосы обрушатся вниз сквозь геометрическую форму головы. Перейдите в начало, выделите фолликулы в группе H a i r C u r v e s и в меню Hair (Волосы) выберите пунк ты Create Constraint => Collide Sphere (Создать ограничитель => Сфера взаимодейст вия). Сфера появится в начале координат, поэтому переместите и измените ее мас штаб так, чтобы она приблизительно окружала голову персонажа. После размещения
838
Глава 21 сферы взаимодействия подчините ее геометрической форме головы. При воспроиз ведении сцена должна быть похожа на изображение, приведенное на рис. 21.32.
9. Чтобы волосы оставались в соответствующем исходном положении, выделите кри вые волос и в меню Hair (Волосы) выберите пункты Set Start Position => From Current (Установить начальное положение => Из текущего). Пока кривые еще выделены, вы берите в меню Hair (Волосы) пункты Set r e s t Position => From Current (Установить положение покоя => Из текущего). 10. Поскольку положения динамических кривых волос определяются связанными фол ликулами, подчините группу HairCurves геометрической форме головы. Затем, чтобы улучшить модель волос, выделите систему волос и в разделе параметров Dynamics (Динамика) измените значения параметров Iterations (Итерации) на 30, поскольку слишком низкое значение этого параметра может придать волосам модели слишком шелковистый вид, Stiffness (Жесткость) — на 0.8, чтобы придать волосам жесткости, и Damp (Сопротивление) — на 10, это улучшит плавность движений во лос. При желании можно добавить голове простую анимацию, поворачивая или пе ремещая ее для проверки динамики. Свободно корректируйте любые параметры, чтобы создать желаемую анимацию. 1 1 . Заключительным этапом является создание взаимодействий прядей волос. Нежела тельный побочный эффект использования множества систем "кривая-скелет" заклю чается в том, что геометрические поверхности не взаимодействуют. Взаимодействовать могут только кривые волос. Несмотря на это, можно разрешить самовзаимодействия, установив параметр Self Collide (Самовзаимодействие). (Выделите систему волос, а за тем в панели каналов установите параметр selfCollide (Самовзаимодействие).) Если пряди все еще проникают насквозь, можно откорректировать шкалу жесткости, откор ректировать жесткость отдельных фолликулов или добавить ограничитель Hair-toHair (Волос к волосу) или Stick (Шест). На рис. 21.33 изображены геометрические волосы в разных анимационных позах.
Рис.2132. Динамические геометрические волосы опираются нa сферу взаимодействия
Рис.21.33. Используя динамические кривые волос и сплайны IK, можно динамически моделировать даже геометрические волосы
Система Maya Hair
839
Это только один пример того, как кривые могут управлять скелетом, который в свою очередь управляет геометрической формой. С применением сплайнов IK и динамиче ских кривых можно быстро настроить любой объект, для которого необходима вторич ная динамическая анимация.
Резюме В этой главе рассмотрены возможности технологии Maya Hair, позволяющие успеш но создать для собственного персонажа динамические волосы. Если потребуется реали стично выглядящий парик или специальная прическа, Maya предоставит широкий выбор параметров для их применения. Более того, инструмент Maya Hair можно использовать для управления многими специальными эффектами, создавая поверхности из динамиче ских кривых или используя волосы для управления скелетными системами. Не забудьте, что окно Visor (Просмотр) содержит несколько фантастических примеров волос с вели колепными примечаниями. Изменяя и переустанавливая их атрибуты, можно многому научиться. Мощность, присущая технологии Maya Hair, совместно с технологиями Cloth и Fur делает пакет Maya Unlimited достойным для производственных потребностей. В следующей главе рассматривается создание компьютерного меха. Хотя волосы и мех похожи в некоторых отношениях, Maya обращается с ними, как с совершенно раз ными системами, каждая из которых имеет уникальные параметры и атрибуты.
Система Maya Fur Система Maya Fur позволяет создать мех для персонажа с помощью установки значе ний атрибутов. Модуль меха использует ряд эффектов, таких как создание мха на скале, в стиле моментальной фотографии. С момента своего создания система меха в Майя проделала длинный путь усовершенствования, а ныне, после появления мощнейшей тех нологии визуализации mental ray, она стала еще лучше. Кроме того, такие дополнитель ные системы визуализации для Майя, как renderMan компании Pixar, создадут даже бо лее изумительный внешний вид меха с минимальными усилиями. В этой главе рассматриваются общие вопросы применения меха к персонажам, а так же практический пример создания меха для персонажа ондатры (muskrat). Имейте в ви ду, что технология Maya Fur лучше всего подходит для создания короткого меха и ко ротких волос, а не длинных волос или лохматого меха, поскольку она не приспособлена для моделирования сложных инерционных движений, которые типичны для длинных волос. (Для этого нужна система Maya Hair, обсуждавшаяся в предыдущей главе.) Одна ко система Maya Fur вполне приспособлена для движений, которыми можно управлять как в анимации по ключевым кадрам, так и с использованием динамических полей. •
Создание, редактирование, анимация и визуализация меха
•
Карты атрибутов меха и точки притяжения
•
Практический пример: добавление меха к персонажу
Создание меха Мех накладывается на одиночные или множественные NURBS-поверхности или по лигональные поверхности. Предупреждение: для полигональных поверхностей необхо димо устанавливать неперекрывающиеся направления UV на поверхности, которые рас полагаются в диапазоне между о и 1 в пространстве текстуры. (Подробно о применении плоских текстур к полигональным поверхностям см. в главе 12, "Тонирование и тексту рирование при анимации".) Система Fur основана на поверхностных атрибутах (surface-mapped Attribute), расположение которых зависит от направлений UV. Для по лигональных персонажей, более чем вероятно, направления UV уже созданы заранее, по этому здесь не должно возникать никаких затруднений. В остальных случаях для согла сования полигональных областей текущей модели без направлений UV при желании можно даже создать NURBS-поверхность. Чтобы продемонстрировать, как легко может быть создан мех, лучше всего просто на чать этот процесс. Способ работы и внешний вид системы Maya Fur могут быть полно-
842
Глава 22
стью настроены в соответствии с предпочтениями пользователя. Начиная работу, имеет смысл выяснить, какая система будет использована для визуализации результата. Про граммная система визуализации Maya отлично подходит для меха, хотя можно обнару жить, что технология mental ray выполняет более основательную работу, особенно при наложении на мех теней. Использование поддерживаемой инструментом Maya Fur до полнительной системы визуализации, такой как renderMan для Maya, изменит рабочий процесс согласно системе визуализации при детализации внешнего вида. Тем не менее при создании меха для программной визуализации Maya и визуализации по технологии mental ray рабочий процесс — точно такой же. Переключаться между программной ви зуализацией и визуализацией по технологии mental ray очень легко, и в этой главе будут описаны оба метода. Итак, создадим какой-нибудь мех. Чтобы научиться создавать и редактировать мех, начнем с создания простого меха на примитиве NURBS. Чтобы научиться создавать и размещать мех, а также устанавливать различные атрибуты для управления его внешним видом, в этом упражнении на сферу NURBS будет наложена прическа в стиле могавк (Mohawk), называемая еще ирокезом. Перейдите в набор меню rendering (Визуализация) и убедитесь, что модуль Fur (Мех) загружен, если в данном наборе меню нет меню Fur (Мех). Если он не загружен, выберите в меню W i n d o w (Окно) пункты S e t t i n g s / P r e f e r e n c e s => Plug-in M a n a g e r (Параметры/Предпочтения => Диспетчер дополнений). В диспетчере дополнений устано вите флажок напротив дополнения Fur.mil. Можно также установить для параметра Auto Load (Автозагрузка) значение On (Включено), чтобы система Maya Fur всегда за гружалась при запуске Maya. Когда система Maya Fur будет загружена, создайте сферу NURBS, и, выделив сферу, выберите в меню Fur (Мех) пункты Attach Fur Description => N e w (Присоединить описа ние меха => Новый). Теперь сфера должна выглядеть похожей на рис. 22.1. Обычно из сферы должны исходить белые линии. Это локаторы, которые визуально представляют мех и заданный для него по умолчанию цвет, т.е. обычно по умолчанию задан белый цвет. Теперь для данного эффекта создано описание меха (fur description), представляющее со бой набор параметров меха. Это все, что нужно для создания меха на NURBSповерхности. Что по-настоящему сложно, так это отредактировать набор параметров ме ха так, чтобы он соответствовал поставленной задаче. Визуально мех в окнах сцены представлен локаторами. Если после создания описания меха или открытия файла сцены с мехом на экране ничего не видно, удостоверьтесь, что лока торы отображаются в панели вида (выберите в меню Show (Показать) пункт Locators (Локаторы)).
Параметры отображения меха Откройте редактор атрибутов. Он будет настроен на сферу, если она выделена. Чтобы настроить редактор атрибутов на мех, выделите локаторы. Теперь в редакторе атрибутов отображается узел NURBSSpherel_FurFeedback.Shape (рис. 22.2). Здесь можно откорректировать свойства отображения меха, увеличив или уменьшив степень его детализации, а также включить или отключить отображение цвета. Отклю чение этого параметра приведет к применению для локаторов принятого в Maya по умолчанию голубого цвета, когда они не выделены. В атрибутах описания меха (рас сматриваемых в следующем разделе) можно задать собственные цвета. На рис. 22.3 при-
843
Система Maya Fur
веден пример цветовой обратной связи, где желтый цвет сделан базовым, а красный — предупреждающим цветом фолликулов меха. Эта настройка упрощает работу, но для бо лее сложного проекта меха, вероятно, придется увеличить качество отображения.
Рис. 22.1. Сфера с добавленным мехом
Рис. 22.2. Узел NURBSSpherel_FurFeedbackShape, с помощью которого в редакторе атрибутов можно кор ректировать свойства меха в реальном масштабе времени Чем больше локаторов участвует в отображении, тем лучше будет видно расположе ние меха на поверхностях. Количество локаторов отображения можно изменить, коррек тируя значения параметров U Samples (Шаблон направления U) и V Samples (Шаблон направления V). Будьте внимательны, не устанавливайте эти значения слишком боль шими, поскольку это снизит производительность Майя. Как правило, для большинства задач вполне достаточно значения 3 2 по направлениям U и V.
844
Глава 22
Рис. 22.3. Для организации и улучшения предварительного про смотра меха можно настроить цветовую обратную связь Кроме того, корректировка отображения определяет, как выглядит сам мех. Чтобы откорректировать уровень детализации каждого локатора меха, можно перемещать пол зунок Fur Accuracy (Точность меха). Это позволит увидеть завивку, изгиб и форму меха. Однако густота меха не будет отображаться, для этого необходимо выполнить визуали зацию проверочного кадра. Нововведением Майя 8.5 является возможность точной настройки промежутков на причесанном мехе по граничным краям UV за счет из менения значения параметра Export W r a p T h r e s h o l d (Порог экспортной оболочки). Как правило, изменять это значение не нужно, но если интерполяция меха по гра ничным краям UV выглядит плохо, для него можно ввести значение в диапазоне от О до 1.
Коррекция описания меха Вот где начинается настоящая работа. Создание меха, как уже было продемонстриро вано, задача не сложная, вся работа по приданию меху правильного вида заключается в нанесении соответствующих карт значений. Перейдите в редакторе атрибутов с вклад ки FurFeedback на вкладку FurDescription1. (Конечно, мех должен быть выделен.) Взгляните на атрибуты меха, прежде чем перейти к прическе могавк для сферы. Можно не выделять локаторы, представляющие мех, а получить доступ к атрибутам набора параметров меха, выбрав в меню Fur (Мех) пункты Edit Fur Description => FurDescriptionl (Редактировать описание меха => F u r D e s c r i p t i o n 1 ) (название меха мо жет быть другим). В табл. 22.1 приведены и описаны все атрибуты меха. Первые три элемента соответ ствуют общим параметрам меха. Остальные атрибуты задают параметры визуализации меха. Просмотрите эту таблицу, а затем используйте ее в качестве ориентира, когда нач нете создавать собственные описания меха далее в этой главе.
Система Maya Fur
845
Таблица 2 2 . 1 . А т р и б у т ы м е х а Атрибут
Описание
Light Model (Модель освещения)
При визуализации меха учитывается влияние освещения, установлен ного на сцене. Величина Ambient (Рассеивание) означает, что для вы числения окончательного цвета меха учитываются только цвет осно вания (Base Color) и рассеянный цвет кончиков (Tip Ambient Color). Значение Ambient + Diffuse (Рассеивание + Диффузия) означает, что цвета основания и кончиков будут добавлены к рассеянным цветам основания и кончиков. И наконец, значение Ambient + Diffuse + Specular (Рассеивание + Диффузия + Блик) добавляет к цвету меха бликовую подсветку
Density (Плотность)
Определяет густоту всего меха на поверхности. Это, вероятно, наи более часто изменяемый атрибут при создании меха, поскольку на стройка этой величины значительно изменяет внешний вид меха. Чем выше плотность, тем дольше будет выполняться расчет и визуализа ция меха. Поэтому важно найти наилучшее значение для соответст вующего внешнего вида и приемлемого времени визуализации
Global Scale (Глобальный мас штаб)
Равномерно корректирует масштаб величин Base Width (Ширина ос нования), Tip Width (Ширина кончиков), Length (Длина) и Offset (Смещение) описания меха
Base Color (Цвет основания) и Tip Color (Цвет кончи ков)
Устанавливает градацию цвета волос снизу вверх
Base Ambient Color (Рассеянный цвет основания) и Tip Ambient Color (Рассеянный цвет кончиков)
Устанавливает градацию рассеянного цвета каждого волоса снизу вверх
Specular Color (Цвет Задает цвет блика волос при отражении света от них блика) Specular Sharpness
Задает общий блеск меха
(Резкость блика) Length (Длина)
Задает длину каждого волоса
Baldness (Лысина)
Определяет на поверхности области без меха. Обычно этот атрибут используется совместно с картой. Значение 1 указывает на наличие меха, а значение О — на его полное отсутствие
Inclination (Наклон)
Определяет угол, под которым каждый волос расположен к поверх ности. Величина О указывает на перпендикулярное положение, а зна чение 1 — на то, что мех лежит на поверхности
roll (Вращение)
Поворачивает основание меха относительно оси V поверхности, при значении о угол составляет -90°, а при значении 1 угол равен 90°
Polar (Полюсное вращение)
Поворачивает основание меха относительно нормали к поверхности. При значении о угол составляет -180°, а при значении 1 угол равен 180°
846
Глава 22 Окончание
Атрибут
табл.
22.1
Описание
Base Opacity Определяет соответственно прозрачность основания и кончиков меха (Непрозрачность ос нования) и Tip Opacity (Непрозрачность кон чиков) Base Width (Ширина основа ния) и Tip Width (Ширина кончиков)
Регулирует толщину основания и кончиков волос
Base Curl (Завивка основания) и Tip Curl (Завивка кон чиков)
Определяет, как сильно завиваются основания и кончики волос. При значении О . 5 завивки нет. При значении меньше О . 5 волосы завива ются в одном направлении, а при значении больше о . 5 — в другом
Scraggle (Закручивание)
Добавляет элемент случайности к ориентации меха, добавляя (kink) отдельным волосам Определяет, как часто встречаются закрученные изгибы
Scraggle Frequency (Частота закручи ваний)
изгибы
Scraggle Correlation (Корреляция закру чиваний)
Определяет, как закручивание каждого волоса соотносится с закру чиванием других волос. При значении 1 все волоски закручиваются одинаково, а при значении о закручивание каждого волоса отлича ются от другого
Clumping (Группировка)
Определяет способ группировки частей меха. Чем выше значение этого параметра, тем больше волос притягивается к центру области группы
Clumping Frequency (Частота группи ровки)
Задает количество групп на поверхности. Это значение находится в диапазоне от 0 до 100. Но чем оно больше, тем дольше длится ви зуализация
Clump Shape (Форма группы)
Определяет, является ли группа вогнутой или выпуклой, т.е. прогиба ется ли она внутрь или разгибается наружу. Диапазон величин — от 10 (вогнутая) до 10 (выпуклая)
Segments (Сегменты)
Задает количество сегментов волос: чем больше сегментов у меха, тем более сглаженным будет каждый волос. Следовательно, чем длиннее волосы и чем больше инерционность их движения, тем больше должно быть количество сегментов
Attraction (Притяжение)
Устанавливает величину притяжения к точкам притяжения (аттракторам), используемым для движения меха
Offset (Смещение)
Задает расстояние от поверхности до начала корней меха
Custom EqualiZer (Специальный эк валайзер)
Специальный эквалайзер, используемый для настройки карт описания меха. Карты эквалайзера компенсируют неравномерности распреде ления меха на поверхности неравномерной параметризацией
Система Maya Fur
847
Воздействие значений атрибутов на мех продемонстрировано на рис. 22.4-22.7. На рис. 22.4 показан результат применения параметра Inclination (Наклон). На рис. 22.5 проиллюстрировано, как параметр r o l l (Вращение) воздействует на мех. На рис. 22.6 по казана роль параметра Polar (Полюсное вращение), а на рис. 22.7 демонстрируется груп пировка, которая отлично подходит для создания мокрого меха. Некоторые экземпляры меха на рисунках были сделаны завитыми, чтобы продемонстрировать этот эффект.
Inclination = 0
Inclination = 0,5
Inclination = 1
Рис. 22.4. Результат применения к меху атрибута Inclination
r o l l = 0,5
r o l l = 0,0
r o l l = 1,0
Рис. 22.5. Результат воздействия на мех атрибута roll
Polar = 0,0
Polar = 0,5
Polar = 0,75
Рис. 22.6. Результат применения атрибута Polar
Продолжение создания прически могавк Вернемся к прическе. Сначала изменим название меха с FurDescriptionl на mohawk_fur. Установим для параметра Length (Длина) значение 0.15. Для размещения мо гавка на сфере создадим карты залысин. Создание карты залысин позволит продемонстриро вать способ создания и применения карт для практически любых других атрибутов меха. 1.
Чтобы открыть окно Create render Node (Создать узел визуализации), щелкните правой кнопкой мыши на параметре Baldness (Лысина) и в появившемся контекст ном меню выберите пункт Create New Texture (Создать новую текстуру). Выберите
848
Глава 22 обычный градиент (не проецируемый) и назовите его baldaess_ramp. Как видите, все локаторы отображения меха исчезли со сферы. Дело в том, что атрибут залысин меха получает свои значения из нижней части градиента. Сначала отображается тот цвет, который задан в нижней части градиента. Это просто такая особенность отобра жения локаторов, так что не стоит волноваться. Теперь, как показано на рис. 22.8, заме ните градиент черно-белым, установив для параметра Interpolation (Интерполяция) значение None (Нет).
Рис. 22.7. Группировка при следующих значениях атрибутов: Clumping = 1, Clumping Frequency = 25 и Clump Shape
2.
=
Рис. 22.8. Сначала установите для градиента простой черно-белый переход
О
Чтобы получить визуальное представление о том, как градиент залысин влияет на расположение меха, используем старый трюк: установим этот градиент, b a l d n e s s _ ramp, в качестве цвета сферы. Это позволит непосредственно отобразить расположе ние цветов градиента на поверхности. Для этого выполните следующие действия: • откройте окно гипершейдера; • создайте новый тонер Lambert и примените градиент b a l d n e s s _ r a m p к парамет ру Color (Цвет); • примените тонер Lambert к сфере. В результате градиент будет размещен на сфере. Перейдя в режим отображения тек стуры (клавиша < 6 > ) , можно увидеть, как и где градиент залысин воздействует на мех сферы. Если на сфере ничего не видно, убедитесь, что в меню Shading (Тонирование) панели представления установлен параметр Hardware Texturing (Аппаратное текстурирование).
3.
Расположите черный и белый цвета градиента так, как показано на рис. 22.9. Мех бу дет расположен там, где на сфере находится белая полоса.
Текстуры, накладываемые на атрибуты меха, должны быть фиксированными, прежде чем они окажут какой-либо эффект на набор параметров меха. Любые последующие измене ния, внесенные в этих текстурах, должны быть повторно фиксированы для воздействия на мех. Большинство карт атрибутов меха эффективно при разрешении 512x512. Большие разрешения карт используются в более сложных моделях меха. 4.
Обратите внимание на то, что никаких локаторов все еще не видно. Чтобы карта мог ла воздействовать на мех, она сначала должна быть зафиксирована на карте атрибу тов меха. Система Maya Fur не может считать этот узел текстуры непосредственно из
Система Maya Fur
849
параметра Baldness (Лысина). Чтобы зафиксировать залысины, откройте редактор атрибутов для набора параметров меха (в меню Fur (Мех) выберите пункты Edit Fur Description => mohawk_fur (Редактировать описание Mexa => mohawk_fur)) и выберите
параметр Baldness (Лысина) из раскрывающегося меню Bake Attribute (Фиксировать атрибут). Установите для параметров Map Width (Ширина карты) и Map Height (Высота карты) значение 512. Эти две величины задают размер в пикселях файла кар ты, который Maya запишет, чтобы применить его к параметру Baldness (Лысина) дан ного описания меха. Щелкните на кнопке Bake (Фиксировать). Теперь вдоль белой полосы сферы появятся локаторы. Отсоедините градиент от параметра Color (Цвет) тонера Lambert, чтобы удалить его и сделать сферу снова серой. 5.
Поверните сферу так, чтобы могавк был вверху головы, как показано на рис. 22.10.
Рис. 22.9. Поместите белую полосу на одной стороне сферы
Рис. 22.10. Первый вырез при создании волос
Чтобы проверить проделанную работу (или сразу перейти к текущему положению), можно открыть файл сцены Haircut_v01.mb, который расположен на компакт-диске в проекте Haircut. Для правильной загрузки карт текстур меха удосто верьтесь, что в проекте Maya указан каталог Haircut папки главы 22 на CD (для этого выберите пункт меню File => Project => Set (Файл => Проект => Установки), перейдите в ката лог Haircut и щелкните на кнопке О К ) .
Нанесение атрибутов меха Прическа могавк была без проблем размещена на сфере, теперь осталось выполнить некоторые "отделочные" работы и откорректировать детали с помощью инструмента Paint Fur Attributes (Нанесение атрибутов меха). При создании меха атрибуты можно наносить с помощью набора кистей или инструмента Maya Artisan. Это один из самых простых способов редактирования параметров меха, начиная с создания карт длины и заканчивая укладкой меха в определенном направлении. Поскольку работа с градиентной текстурой завершена, выделите ее в окне гипершейдера и удалите. Лысина уже была гавк не будет удалена при удалении узла baldness_ramp. Нанесите остальные залыси ны прически могавк, выполнив следующие действия.
1.
Выделите сферу и выберите в меню Fur (Мех) пункт Paint Fur Attributes Tool • (Инструмент нанесения атрибутов меха • ) , чтобы открыть окно Paint Fur Attributes
850
Глава 22 Tool Settings (Параметры инструмента нанесения атрибутов меха) и окно Tool Settings (Параметры инструмента), как показано на рис. 22.11. Курсор примет вид пиктограммы специальной кисти.
Puc. 22.11. Окна Paint Fur Attributes Tool Settings и Tool Settings 2.
В окне Paint Fur Attributes Tool Settings (Параметры инструмента нанесения атрибу тов меха) задайте атрибут, который необходимо нанести на поверхность, а также описание меха, находящееся под воздействием. В раскрывающемся меню атрибутов меха выберите пункт Baldness (Лысина). Удостоверьтесь, что для параметра Fur Description (Описание меха) установлено значение mohawk_fur. Для атрибутов ши рины и высоты карты оставьте значение 512, — его будет вполне достаточно. Безус ловно, для более сложных карт и поверхностей его можно увеличить.
3. Откорректируйте размер кисти в окне Tool Settings (Параметры инструмента). Перей дите на вкладку Display (Представление) и задействуйте параметр Color Feedback (Отображение цвета), чтобы можно было видеть то, что читатели рисуют. Используя значение 0, нанесите карту залысин, чтобы убрать мех с полюсов сферы, как показано на рис. 22.12. Выйдите из окна Paint Fur Attributes Tool Settings (Параметры инстру мента нанесения атрибутов меха), выбрав какой-либо другой инструмент (например, нажав клавишу < W > для инструмента Translate (Перемещение)).
851
Система Maya Fur
Рис. 22.12. Нанесите карту, которая оставляет полюса лысыми. Лысым об ластям соответствует значение О 4.
Чтобы удлинить волосы, измените значение параметра Length (Длина) с изначаль ного 0.15 на 0.5. Чтобы сделать волосы на границах прически короче, чем в средней части, снова воспользуйтесь окном Paint Fur Attributes Tool Settings (Параметры ин струмента нанесения атрибутов меха) для нанесения карты длины. Однако сначала следует увеличить детализацию отображения меха, чтобы прическу можно было просматривать со всеми подробностями. Выделите локаторы и откройте редактор атрибутов. Установите для параметров U Samples (Шаблон направления U) и V Samples (Шаблон направления V) значение 64. Теперь, как можно заметить, коли чество локаторов удвоилось.
5.
Чтобы нанести на внешних границах прически более короткие волосы, выделите сферу и в меню Fur (Мех) выберите пункт Paint Fur Attributes Tool • (Инструмент нанесения атрибутов меха • ) . Этот инструмент всегда имеет смысл открывать с па нелью параметров, чтобы сразу получить доступ к параметрам кисти. В окне Paint Fur Attributes Tool Settings (Параметры инструмента нанесения атрибутов меха) ус тановите для параметра Fur Attribute (Атрибут меха) значение Length (Длина). В ок не Tool Settings (Параметры инструмента) установите для параметра Operation (Операция) значение Scale (Масштаб), а для параметра Value (Значение) — значе ние 0.5. В результате длина меха уменьшится в два раза везде, где будет выполнять ся рисование на сфере. Прорисуйте границу прически, и внешний край меха станет короче, как показано на рис. 22.13.
6.
Теперь пришло время проверить мех и посмотреть, как он выглядит. Создайте про жектор, направив свет на сферу сбоку сверху, который будем использовать в качест ве основного источника света на сцене. В качестве заполняющего источника света также будем использовать прожектор, направив его в противоположном направле нии. Во вкладке Common (Общие) диалогового окна render Settings (Параметры визуализации) установите для параметра Image Size Presets (Предустановленный размер изображения) значение 640x480, а во вкладке Maya Software (Программная визуализация) установите для параметра Quality (Качество) значение Production Quality (Производственное качество). Оставив значения по умолчанию для всех ос тальных параметров меха, визуализируйте кадр сферы с новой прической. Должно получиться нечто похожее на изображение рис. 22.14.
852
Глава 22
Рис. 22.13. Прическа могавк (ирокез) с волосами, укороченными вдоль границ
Рис. 22.14. Прическа, расположенная на сфере 7.
Сейчас мех выглядит более похожим на небольшие пластиковые иглы. Чтобы соз дать прическу в стиле панк-рок, откорректируем цвет, плотность и ширину меха. Чтобы открыть редактор атрибутов меха, выберите в меню Fur (Мех) пункты Edit Fur Description => mohawk_fur (Редактировать описание Mexa => mohawk_fur). Уста новите для параметра Base W i d t h (Ширина основания) значение 0.008, а для пара метра Tip Width (Ширина кончиков) — значение 0.003. Это значения для достаточ но тонких волос. В большинстве случаев используются значения ширины в пределах от 0 . 01 до 0 . 02.
8. Если выполнить визуализацию, то волосы будут выглядеть лучше, но останутся редкими. Измените значение параметра Density (Плотность) с 1000 на 20, ООО. Запустив систему визуализации, можно увидеть нечто более похожее на на стоящую прическу.
853
Система Maya Fur
9. Теперь нужно добавить цвет. Установите для параметра Base Color (Цвет основа ния) темный красно-бурый цвет, а для параметра Tip Color (Цвет кончиков) — зеле ный неоновый цвет. В конце концов, ведь это прическа в стиле панк! Бурый цвет ос нования создает видимость корней волос. Даже если предполагается, что волосы бу дут иметь однотонный цвет, для более натурального внешнего вида лучше установить цвет основания темнее, чем цвет кончиков. (Поскольку к корням волос поступает меньше света, они кажутся темнее.) Запустите проверочную систему ви зуализации и просмотрите результат. 10. Чтобы мех выглядел как можно более реалистичным, добавьте немного прозрачности кончикам волос. Установите для параметра Tip Opacity (Непрозрачность кончиков) значение 0.635 и при следующей визуализации обратите внимание на то, что волосы стали выглядеть более натурально. Уменьшение величины параметра Tip Opacity (Непрозрачность кончиков) используется часто и является отличным трюком. 1 1 . И наконец, попытайтесь придать форму волосам. Установите для параметра r o l l (Вращение) значение 0. 6, чтобы слегка причесать могавк. Добавьте прическе небольшой элемент случайности, установив значение параметра Scraggle (Закручивание) равным 0.1. Это добавит лишь небольшой элемент случайности, который сделает волосы меха немного изогнутыми в разных направлениях (рис. 22.15).
Рис. 22.15. Могавк после добавления эффек та небольшого закручивания
Укладка меха в определенном направлении Давайте сделаем прическу на сфере слегка расходящейся в стороны, создав сначала посередине небольшой участок расходящихся волос. Для этого используем окно Paint Fur Attributes Tool Settings (Параметры инструмента нанесения атрибутов меха), кото рое позволит уложить (comb) волосы в нужном положении. Сначала убедитесь, что значение параметра Inclination (Наклон) больше нуля или же значение параметра r o l l (Вращение), Base Curl (Завивка основания) или Tip Curl (Завивка кончиков) отличается от 0 . 5 . Чтобы открыть окно Paint Fur Attributes Tool Settings (Параметры инструмента нанесения атрибутов меха), выделите сферу и выберите в меню Fur (Мех) пункт Paint Fur Attributes Tool • (Инструмент нанесения атрибутов меха • ) . Оставьте для атрибутов меха режим Direction (Направление). Установите величину па раметра Value (Значение) равной 0.03 и используйте кисть малого радиуса. Кистью уло-
854
Глава 22
жите мех в желаемое положение, чтобы расщепить и развести в стороны середину причес ки. Проведите несколько экспериментов с направлением движений кисти, чтобы уложить мех в правильных направлениях. На рис. 22.16 изображен мех, расходящийся в стороны. Чтобы работала функция Comb (Укладка), необходимо, чтобы значение параметра Inclination (Наклон) было больше нуля или чтобы для атрибута roll (Вращение), Base Curl (Завивка основания) или Tip Curl (Завивка кончиков) было установлено значение, отличное от 0.5. Укладка меха создает карту для параметра Polar (Полюсное вращение). Но чтобы увидеть какие-либо изменения меха при изменении параметра Polar (Полюсное вращение), для ворса должен быть задан некоторый начальный угол.
Рис. 22.16. С помощью функции Comb причес ка могавк сделана расходящейся в стороны Как можно заметить, основная работа по созданию правильного внешнего вида меха заключается в его редактировании. Создание и (или) нанесение карт атри бутов меха является ключевым элементом создания соответствующего меха. Это станет очевидно на практике, в конце этой главы, при добавлении меха к персонажу. Использо вание таких коротких упражнений, как создание прически могавк на сфере, достаточно важно, поскольку фактическое применение меха — наилучший способ научиться эффек тивно применять его в собственных проектах. Сохраните эту прическу, — она будет ис пользована позже, при придании волосам некоторого движения. Чтобы сравнить полу ченный результат, можно также загрузить файл Haircut_v02.mb, находящийся на компакт-диске.
Карты атрибутов меха Где сохраняются эти карты? В структуре каталогов проекта можно обнаружить папку меха с собственным набором каталогов, которые называются furAttrMap, furEqualMap, furFiles, furlmages и ShadowMap. Эти каталоги хранят все изобра жения и карты меха, которые необходимы в Maya для описания и визуализации меха. Карты, которые фиксируют или наносят, становятся файлами изображений IFF и назы ваются картами атрибутов меха (fur Attribute map, или, сокращенно, furattrs). При со хранении файла сцены Maya присваивает имя файлу карты атрибутов меха и помещает его в каталог проекта fur/furAttrMap. Имена файлов имеют следующий формат: имяСцены_имяПоверхностиМеха_ описаниеМеха_ атрибут .iff
855
Система Maya Fur
На рис. 22.17 показан образец набора файлов атрибутов меха в каталоге fur/ furAttrMap данного проекта. Обратите внимание на соглашение об именовании фай лов. Оно позволяет легко определить, каким атрибутом меха управляет файл карты. В операционной системе, ограничивающей максимальное количество символов в имени файла, лучше всего использовать соглашения об именовании файлов и объектов в крат кой форме. Например, при создании межплатформенных компакт-дисков следует учи тывать, что некоторые операционные системы не смогут прочитать имена файлов, со стоящие более чем из 32 символов.
Puc. 22.17. Назначение файла карты атрибутов легко определить по его имени При смене проекта или создании нового, т.е. когда файл сцены сохраняется в каталоге но вого проекта, карты атрибутов меха по умолчанию повторно сохраняются в новом каталоге f u r / f u r A t t r M a p этого проекта. Наличие отдельных файлов, которые используются для отображения атрибутов меха, является удобным способом управления и редактирования меха, но это может привести к появлению весьма большого количества файлов во время работы над продолжитель ным проектом. Как только появится уверенность в том, что корректировать карты меха или перемещать проект не потребуется, можно запретить Maya записывать новые карты атрибутов меха. В меню Fur (Мех) выберите пункт Fur render Settings (Установки ви зуализации меха), чтобы открыть окно Fur Globals (Общие параметры меха), и в разделе Fur render Options (Параметры визуализации меха) установите для параметра Copy Attr Maps (Копировать карты атрибутов) значение Never (Никогда). Это уменьшит количе ство файлов для карт атрибутов меха в проекте, но может вызвать путаницу, поскольку имена файлов карт больше не смогут соответствовать имени файла сцены. Тем не менее, пока действительно не станет хватать дискового пространства (карты атрибутов занимают немного места), лучше оставить этот параметр в состоянии по умолчанию. Таким образом, можно быть уверенным в том, что каждое имя файла карты атрибутов будет соответствовать имени файла сцены. Однако можно хранить журнал те кущих используемых файлов и задействовать его по мере разработки проекта для записи о создании или удалении прежних файлов атрибутов меха.
Редактирование карт атрибутов меха Как только карта атрибутов меха будет создана, ее можно редактировать в редакторе атрибутов описания меха. Чтобы открыть редактор атрибутов, в меню Fur (Мех) выберите пункты Edit Fur Description => mohawk_fur (Редактировать описание Mexa => m o h a w k _ f u r ) .
В разделе Details (Детали) (рис. 22.18) находятся разделы для всех атрибутов меха. Каждый раздел предоставляет доступ к тем картам атрибутов меха, которые были за несены или сохранены в файлах. На сцене с прической могавк откройте разделы Length (Длина) и Maps (Карты). Здесь находятся два ползунка и два текстовых поля для кор ректировки карты, а также указан путь и фактическое имя файла карты длины, нало женной на прическу.
856
Глава 22
Puc. 22.18. Детали атрибутов меха в редакторе атрибутов (развернут раздел Base Color) Параметр Map Offset (Смещение карты) увеличивает или уменьшает общую величи ну примененной карты. Параметр Map Multiplier (Коэффициент карты) умножает вели чины в файле карты, усиливая или ослабляя воздействие карты на мех. Параметр Noise Amplitude (Амплитуда шума) создает для карты шаблон случайного шума, чтобы при дать меху разнообразие, а параметр Noise Frequency (Частота шума) управляет частотой создания шума. Чтобы придать прическе разнообразие, воспользуйтесь разными значениями пара метра Noise Amplitude (Амплитуда шума) карты длины. Для наилучшего эффекта уста новите значение параметра равным примерно 0.15. Попробуйте изменить значения ат рибутов Map Offset (Смещение карты) и Map Multiplier (Коэффициент карты), чтобы по смотреть, как они влияют на длину меха. По завершении экспериментов восстановите их исходные значения.
Система Maya Fur
857
Разъединение карт атрибутов меха Для восстановления атрибута меха, который был сохранен или нанесен, необходимо отсоединить карту атрибутов меха от атрибута меха в разделе Details (Детали). Напри мер, чтобы восстановить длину прически могавк, выберите в меню Details (Детали) пункты Length => Maps (Длина => Карты). Для отсоединения карты от атрибута щелкните на имени файла карты, а затем щелкните на кнопке r e m o v e Item (Удалить элемент). Однако сам файл при этом удален не будет. Если вы вдруг передумаете, то операцию разъединения можно отменить. Отсоединение текстуры непосредственно от атрибута (в отличие от удаления карты) не окажет воздействия на сам атрибут, если он был ранее сохранен. Для восстановления отдельного атрибута меха необходимо удалить файл карты.
Создание движения меха с помощью системы Hair Все это хорошо, но что оно означает? Это остается тарабарщиной до тех пор, пока не начнешь его использовать, верно? Хорошо, тогда давайте сделаем могавк развевающимся на ветру. Загрузите свою последнюю версию прически или используйте файл Haircut_v02 . mb из проекта Haircut на компакт-диске. Для правильной загрузки карт текстур меха удостоверьтесь, что в проекте Maya указан каталог Haircut папки главы 22 на CD (для этого выберите пункт меню File => Project => Set (Файл => Проект => Установки), перейдите в каталог Haircut и щелкните на кнопке О К ) . В устаревших версиях Maya движением меха управляли с помощью нескольких ат тракторов (attractor), которые позволяли придать меху простое движение при анима ции по ключевым кадрам или при динамической анимации. Для анимации цепей аттрак торов можно было использовать маркеры IK, повороты FK и деформации мягких тел. Сам мех подражал движению аттрактора. Хотя теория использования аттракторов не изменилась, их практическое примене ние, несомненно, изменилось. Движение меха основано на кривых волос, присоединен ных к описанию меха. Это обеспечивает для меха лучшую динамическую реакцию, по скольку кривые волос могут быть гладкими кривыми любой длины или формы, а преж ние аттракторы меха могли соответствовать при движении только трехзвенным цепям. Более того, кривые волос можно использовать не только для создания прически из меха, но даже и для ее движения. Аттракторы меха, созданные в предыдущих версиях Maya, будут нормально работать и в Maya 8.5, хотя для существующего меха вместо новых аттракторов имеет смысл исполь зовать кривые. Кривые волос, управляющие движением меха, можно создать либо с помощью сетки кривых, покрывающих поверхность, либо размещая кривые волос в определенных точ ках или областях на поверхности модели. Более подробную информацию о кривых волос см. в главе 21, "Система Maya Hair".
Создание аттракторов В примере этой главы добавим движение прическе могавк с помощью кривых волос. 1.
Открыв файл Haircut_v02.mb, щелкните правой кнопкой мыши на сфере и в появившемся контекстном меню выберите пункт surface Point (Точки на
858
Глава 22 поверхности). Выделите шесть точек на поверхности вдоль линии могавка, как пока зано на рис. 22.19. Нельзя выделять контрольные вершины (CV), для создания кри вых волос в необходимых точках поверхности следует выделить точки именно на по верхности.
Не нужно использовать в качестве аттракторов динамические кривые. Можно использовать статические (нединамические) кривые в окне Create Hair Options (Параметры создания волос) и откорректировать контрольные вершины (CV) кривой (кривых), чтобы создать из меха при ческу или даже анимировать кривые вручную, если появится такая навязчивая идея. 2.
Выделив точки на поверхности, создайте кривые волос, выбрав в наборе меню Dynamics (Динамика) пункты Hair => Create Hair • (Волосы => Создать волосы • ) . В окне параметров для параметра Output (Исходящие) выберите значение NURBS Curves (Кривые NURBS) и щелкните на кнопке r a d i a l (Радиальный) для параметра At Selected Points/Faces (В выбранных точках/поверхностях). Убедитесь, что вы бран переключатель Dynamic (Динамика) и для параметра Length (Длина) установ лено значение 1, а значение параметра Points Per Hair (Точки отдельных волос) рав но 10, как показано на рис. 22.20. Щелкните на кнопке Create Hairs (Создать воло сы). Результат должен быть похож на приведенный на рис. 22.21.
Puc. 22.19. Выделите точки на noверхности, чтобы расположить кривые волос в качестве аттрак торов для могавка 3.
Рис. 22.20. Окно Create Hair Options
В окне Outliner (Иерархическая структура) выделите новый узел h a i r S y s t e m , а за тем в меню Fur (Мех) выберите пункты Attach Hair System to Fur => Mohawk_fur
(Присоединить систему волос к M e x y => M o h a w k _ f u r ) . При этом для создания движения меха к нему будет присоединено динамическое движение кривых во лос. И это все! Выделите сферу и, установив несколько ключевых кадров, организуйте ее переме щение на сцене. При воспроизведении сцены можно заметить, что при движении кри вые волос немного колышутся. На рис. 22.22 мех прически наклонен, но только посе редине. Чтобы увидеть мех в замершем положении, получившемся при движении сфе ры, запустите воспроизведение сцены с начала и остановите его, когда сфера пройдет половину пути.
859
Система Maya Fur
Рис. 22.21. Эти кривые волос будут использованы для управления движением меха Аттракторы кривых волос воздействуют на мех только посередине прически. Поэто му необходимо отредактировать новый узел набора аттракторов кривой. Для этого в ме ню Fur (Мех) выберите пункты Edit Curve Attractor Set => FurCurveAttractors1 (Редактировать
набор аттракторов кривой => FurCurveAttractors1). Этот узел содержит все атрибуты аттрактора. Обратите внимание на то, что структура редактора атрибутов выглядит по хоже на структуру узла описания меха (рис. 22.23). Параметр r a d i u s (Радиус) управляет областью влияния аттрактора на волосы. При низком значении этого параметра (см. рис. 22.22) аттрактор (точка притяжения) управляет только ближайшими волосами. Пробуя увеличить параметр r a d i u s (Радиус), можно заметить, что еще не весь мех реагирует на воздействие. Значения 10 для параметра r a d i u s (Радиус) более чем достаточно, но при уменьшении радиуса об ратите внимание на то, как остальная часть могавка перестает реагировать на кривые. Проблема (пока значение радиуса установлено таким высоким, как 10) фактически заключается в длине части меха. Чтобы точка притяжения, созданная для прически, была эффективной по всей длине волос, необходимо откорректировать параметр Threshold Length (Пороговая длина). Эта величина устанавливает минимальную длину волос, которая необходима аттрактору, чтобы он мог воздействовать на них. Поскольку длина части волос меньше, чем значение пороговой длины по умолчанию ( 0 . 3 3 ) , измените ее значение на 0 . 0 5 . Как видно на рис. 22.24, теперь все волосы изогнулись. Чтобы проверить текущий результаты работы, загрузите файл H a i r c u t _ v 0 3 . m b из проекта H a i r c u t на компакт-диске. Для правильной загрузки карт текстур меха удостоверьтесь, что в проекте Maya указан каталог H a i r c u t папки главы 22 на CD (для этого выберите пункт меню File => Project => Set (Файл => Проект => Установки), перей дите в каталог H a i r c u t и щелкните на кнопке О К ) .
860
Глава 22
Puc. 22.22. Аттракторы кривых воздействуют только на середину прически
Рис. 22.23. Редактор атрибутов аттрактора кривых выглядит похожим на редактор атри бутов описания меха
Рис. 2224. Теперь вместе с аттрак торами двигается вся прическа
861
Система Maya Fur
Другие параметры аттрактора кривой Параметр Influence (Воздействие) определяет, как сильно аттрактор воздействует на мех. Чем больше его значение, тем сильнее влияние, а нулевое значение отключает эф фект. Параметр Power (Мощность) определяет, как воздействие аттрактора убывает вдоль линии волос. Если значение равно 1, то воздействие начинает убывать немедленно от кончиков волос к основанию. Если значение равно 0, то на все волосы (ограниченные параметрами Threshold Length (Пороговая длина), Start Length (Начальная длина) и End Length (Конечная длина)) воздействие оказывается равномерно, без спадов. Параметр Start Length (Начальная длина) устанавливает начальное положение воз действия аттрактора, а параметр End Length (Конечная длина) определяет конечное по ложение. Эти атрибуты ограничивают область вдоль каждого волоса, на которую факти чески воздействуют аттракторы. Обычно для параметра Start Length (Начальная длина) можно установить значение 0, а для параметра End Length (Конечная длина) — значение, равное длине самого короткого (shortest) волоса меха. Иначе существует риск, что кон чики меха не будут реагировать на движение аттрактора, что приведет к странному ре зультату. Для уверенности можно установить немного большее значение, чем длина са мого длинного (longest) волоса. Теперь мех повторяет форму и движение аттрактора. Однако при изменении значе ния параметра Attractor Model (Модель аттрактора) с Local (Локальная) на Global (Глобальная) волосы меха устремятся по направлению к ближайшему аттрактору. Установите для параметра Attractor Model (Модель аттрактора) значение Global (Глобальная) и обратите внимание на то, что все волосы могавка стали направлен ными к локатору, как показано на рис. 22.25. В этом случае перемещение верхнего узла аттрактора воздействует на движение меха. Это отличный способ анимации ме ха, ориентированного в определенных направлениях. Мех все еще реагирует на ди намические силы, если в качестве аттрактора в глобальном режиме используются динамические кривые.
Рис. 22.25. Когда для атрибута Attractor Model задан глобальный режим, мех направлен к аттрактору
862
Глава 22
Наконец, параметр Curves Per Fur (Количество кривых меха) определяет, сколько точек притяжения воздействует на отдельный волос. Если значение этого атрибута равно 1, то каждый волос находится под воздействием ближайшего аттрактора. Если значение установлено равным 2, то каждый волос находится под влиянием двух ближайших ат тракторов, и т.д. Этот атрибут полезен, если был создан ряд аттракторов или если в опре деленных точках поверхности имеются разные аттракторы. Хитрость получения красивого движения меха заключается в том, чтобы использо вать мех, исследуя, насколько он может подойти для персонажа или эффекта. В действи тельности нет лучшего способа изучить систему Maya Fur, или любую другую. В сле дующем разделе полученная в этой главе информация будет использована для добавле ния меха к персонажу из множества фрагментов NURBS.
Нанесение меха на персонаж Теперь, когда стало понятно, как работает мех, добавим его к персонажу, ондатресупергерою. Модель ондатры состоит из нескольких поверхностей с переменными направлениями UV. Она послужит для захватывающего исследования меха. Добав ление меха к персонажу со многими поверхностями является отличным примером работы в реальном производстве. В этом упражнении будет выполнена ориентация меха в правильном направлении на различных поверхностях, а также осуществлено его тонирование. Чтобы начать меховую отделку персонажа Майти Маскрат (Mighty Muskrat), необ ходимо загрузить уже оснащенную модель, как показано на рис. 22.26. Лучше всего до бавлять мех уже после того, как геометрическая форма будет полностью создана и связа на с анимационной оснасткой. Не имеет особого значения, текстурирована ли модель, хотя было бы полезно ее текстурировать, чтобы можно было устанавливать соответст вующие цвета и соответствующий внешний вид самого меха. На рис. 22.27 представлен результат визуализации меха, создаваемого в этом упражнении.
Рис. 22.26. Персонаж готов к отделке мехом!
Система Maya Fur
863
Рис. 22.27. Окончательная визуализация меха. Обратите вни мание на различия поверхностей персонажа, рассматриваемого в этой главе Здесь будем использовать оснащенную модель персонажа, на которую еще не наложены текстуры. Чтобы использовать этот файл, откройте проект MM_Fur (папка главы 22, "Система Maya Fur", на прилагаемом компакт-диске) и загрузите сцену MM_Fur_v01.mb. Это оснащенная модель персонажа с элементами управления, создан ными для анимации и проверки реакции меха на двигающемся персонаже. Чтобы завер шить создание персонажа, необходимо добавить только мех и текстуры.
Нанесение меха на голову Начнем с наиболее сложной задачи — добавления меха к голове ондатры. 1.
Выделите геометрическую форму морды и головы. В меню Fur (Мех) выберите пункты Attach Fur Description => New (Присоединить описание меха => Новый). На рис. 22.28 изображена голова до добавления меха, а на рис. 22.29 показаны локаторы меха после его создания.
2.
Присвойте текущему описанию меха, показанному в редакторе атрибутов, имя MM_Face. Установите разумную длину, например около 0.08. На этом этапе следует убрать мех с губ и рта персонажа. Также не нужен мех под маской, поскольку его не будет видно. Что еще хуже, если его не убрать, он будет проглядывать сквозь маску. Лучше всего начать с градиента залысин, как это было сделано выше на прическе могавк.
3.
Создайте градиентную текстуру для параметра Baldness (Лысина) меха MM_Face. Установите переход градиента от черного к белому и установите для параметра Interpolation (Интерполяция) значение None (Нет).
И н т е р а к т и в н о с т ь и т о н е р градиента
При интерактивном рабочем процессе можно установить такой же градиент, как цвет на тонере Lambert. Затем примените тонер к геометрической форме головы, чтобы видеть
864
Глава 22
цвета градиента по мере их размещения, как это было сделано в упражнении с могавком. Таким образом, можно будет увидеть, где разграничиваются черные и белые участки гра диента при его корректировке, когда черные участки будут располагаться в тех местах, где меха быть не должно. Прежде чем временно назначать этот новый тонер, если модель уже была текстурирована, запомните тонер, который был применен к голове ранее.
Рис. 22.28. Выделена голова персонажа
Рис. 22.29. Описание меха присоединено к поверхности головы
Система Maya Fur 4.
865
После того как градиент будет назначен параметру Color (Цвет) тонера головы и па раметру Baldness (Лысина) меха, переключитесь в режим текстуры (рис. 22.30).
Рис. 22.30. Градиент залысин представлен на поверхности морды как градиент цвета, чтобы можно было интерактивно размещать мех. Градиент еще не уста новлен правильно 5.
Выделите маску и перейдите в режим шаблона, чтобы можно было видеть голову и то, где будет разграничиваться положение градиента. Переключите градиент на ориентированный по направлению U, чтобы черный и белый цвета разделялись на голове горизонтально. Затем откорректируйте расположения цветов так, чтобы внутренняя часть рта была черной, а остальная часть головы — белой. Тем самым бу дет убран мех со рта персонажа. Используя градиент, не получится установить залы сины для остальной части головы из-за направлений UV геометрической формы.
6. Чтобы зафиксировать этот шаблон залысин на мехе, сохраните параметр Baldness (Лысина). Установите для параметров Map Width (Ширина карты) и Map Height (Высота карты) значение 1024. В раскрывающемся меню Bake Attribute (Фиксировать атрибут) выберите параметр Baldness (Лысина) и щелкните на кнопке Bake (Фиксировать). Таким образом, будет создан файл описания залысин меха, который отображает на поверхности описание того, где будет расположен мех на голове. Об ратите внимание, что черные области рта на рис. 22.31 больше не содержат мех. Пом ните о том, что любые изменения, внесенные в градиенте залысин, необходимо будет фиксировать для меха, прежде чем станут видны какие-либо изменения. Мех не бу дет автоматически обновляться, поскольку его залысины присоединены не к гради енту, а к файлу карты, который создается каждый раз при ее фиксации. 7.
Чтобы убрать мех из-под маски, атрибут следует нанести прямо на поверхность. Вы делите геометрическую форму головы (которая в этом файле называется F a c e ) и выберите в меню Fur (Мех) пункт Paint Fur Attributes Tool • (Инструмент нанесе-
866
Глава 22 ния атрибутов меха • ) , чтобы открыть окно параметров. Для параметра Fur Description (Описание меха) уже должно быть установлено значение MM_Face. В ка честве атрибутов меха выберите параметр Baldness (Лысина).
Рис. 22.31. Устранение меха со рта ондатры с по мощью градиента текстуры для атрибута Baldness 8.
Выберите подходящий размер кисти, установите значение ее параметра Value (Значение) равным 0 и нанесите лысый участок под маской и ниже воротника. Пе рейдите на вкладку Display (Представление) и установите параметр Color Feedback (Отображение цвета). За счет этого при рисовании будет показана величина залы син. Рисуйте, убирая мех с части головы, невидимой под маской, как показано на рис. 22.32. Для точного нанесения границ вокруг губ (рис. 22.33) используйте инст румент Paint (Кисть).
9.
По окончании сохраните работу и пойдите выпить газировки.
Рис. 22.32. Закрашивание областей, в которых не должно быть меха
867
Система Maya Fur
Рис. 22.33. Внимательно рисуйте вокруг губ, чтобы на них не было меха 10. Снимите назначение предыдущего шейдера головы, в данном случае серого тонера Lambert. Проверьте визуализацию кадра, чтобы увидеть мех на голове персонажа. Он и не собирается выглядеть хорошо (рис. 22.34). 1 1 . Найдите подходящее значение толщины меха. В меню Fur (Мех) выберите пункты Edit Fur Description => MM_Face (Редакти ровать описание Mexa => MM_Face). Установите для параметра Base Width (Ширина основания) значение 0.003, а для пара метра Tip W i d t h (Ширина кончиков) — значение 0. 002. 12. Для установки положения меха задайте для параметра Inclination Рис. 22.34. Ранняя (Наклон) значение 0. 7, чтобы наклонить мех к поверхности (но проверка визуали не полностью), и для параметра Polar (Полюсное вращение) ус зации меха тановите значение 0.225, чтобы повернуть мех в направлении вдоль мордочки (рис. 22.35).
Рис. 22.35. Укладка меха в направлении вдоль мордочки
868
Глава 22 Е С Л И сейчас запустить пробную визуализацию, ондатра будет выглядеть так, будто она проходит сеанс акупунктуры. Причина кроется в том, что плотность меха слиш ком низкая.
13. Измените для параметра Density (Плотность) значение с 1 0 0 0 на 200, 000. Да, да, это большой скачок, но он стоит того! Измените цвет меха, установив для параметров Base Color (Цвет основания) и Tip Color (Цвет кончиков) золотисто-коричневый цвет. 14. В верхней части редактора атрибутов меха установите для параметра Light Model (Модель освещения) значение Ambient + Diffuse (Рассеивание + Диффузия), чтобы избежать визуализации бликовых подсветок. Иногда мех выглядит лучше без блико вых подсветок. Уберите режим шаблона для маски и визуализируйте кадр, чтобы сравнить текущий результат с изображением, приведенным на рис. 22.36.
Нанесение теней меха Не стоит паниковать, если мех пока выглядит плоским. Чтобы он выглядел более реалистично, необходимо включить тени, — они создадут ощущение объема. Тени при дают потрясающий реализм и объем любому меху. Но в системе Maya Fur нанесение те ней выполняется немного иначе, чем для постоянных объектов. Чтобы наложить тени на мех, необходимо присоединить к источнику света специальные параметры Fur Shadow (Тени меха), это позволит меху выполнять самозатенение. Но чтобы затенение меха сра ботало, источнику света нет необходимости отбрасывать тени с использованием карт глубин или трассировки лучей, если он присоединен к атрибутам затенения меха. Для того чтобы добавить тени к описанию меха, необходимо выделить источник света сцены и применить средство Add To Selected Light (Добавить к выделенному источнику света). Чтобы создать тени для меха персонажа, выполните следующие действия. 1. Создайте прожектор, направленный на голову Мортимера спереди под углом. С вы деленным источником света выберите в меню Fur (Мех) пункты Fur Shadowing Attributes => Add То Selected Light (Атрибуты затенения меха => Добавить к выделен ному источнику света). Это приведет к самозатенению меха на основе света от дан ного направленного источника. В редакторе атрибутов источника света можно обна ружить несколько новых атрибутов в разделе Fur Shading/Shadowing (Тонирование/ затенение меха), как показано на рис. 22.37. 2. Для лучшего освещения сцены добавьте еще один прожектор как заполняющий ис точник света. Он также добавит меху тень. Если снова запустить визуализацию при включенном затенении меха источниками света, то улучшение внешнего вида меха станет заметно сразу. Теперь стала видна густота меха, как показано на рис 22.38. 3. Для укорачивания некоторых волос вокруг рта и щек, чтобы они не слишком сбива лись в кучу, попробуйте нанести карты длины. Откройте в редакторе атрибутов раз дел Details (Детали) и добавьте к параметру Noise Amplitude (Амплитуда шума) кар ты волос значение 0.1. Это придаст длине небольшой элемент случайности. 4. Добавьте немного закручивания и завивания кончиков со значением приблизитель но 0.25. В заключение откройте в разделе Details (Детали) подраздел Base Color (Цвет основания) и установите для параметра Noise Amplitude (Амплитуда шума) значение около 0. 03. Откройте раздел Tip Color (Цвет кончиков) и установите зна чение параметра Noise Amplitude (Амплитуда шума) равным примерно 0. 02.
Система Maya Fur
869
Рис.22.36. Визуализация меха в на стоящий момент. Несмотря на кор рекцию плотности, цвета и освещения, внешнему виду меха все еще не хватает глубины
Puc. 22.37. Атрибуты Fur и Shadowing
Shading
Puc. 22.38. Затенение меха придает ему большее ощущение объема 5.
Выполните пробную визуализацию и оцените, как выглядит мех на мордочке Мортимера. Чтобы все выглядело правильно, необходимо настроить различные ат рибуты меха, выполняя повторные визуализации. Величины, используемые в этом примере, должны дать прекрасный результат.
Чтобы проверить работу или перейти к следующему разделу, загрузите файл сцены M M _ F u r _ v 0 2 . m b из проекта MM_Fur на компакт-диске. Для правильной загрузки карт текстур меха удостоверьтесь, что в проекте Maya указан каталог Haircut папки главы 22 на CD (для этого выберите пункт меню Filе => Рroject => Set (Файл => Проект => Установки), перейдите в каталог MM_Fur и щелкните на кнопке ОК.
Визуализация меха с помощью технологии mental ray Визуализация меха с помощью технологии mental ray иногда дает результаты лучшего качества, особенно в затененных областях анимации. Для этого требует-
870
Глава 22
ся не так уж много дополнительных настроек. Используя технологию mental ray вместо инструмента Maya Software с текущим мехом, установленным на ондатре, визуализацию можно начать сразу, в любой момент. Продолжим работу с момента, на котором остано вились в предыдущем разделе, используя файл сцены MM_Fur_v02.mb из проекта MM_Fur или текущий файл сцены. Чтобы визуализировать ондатру с помощью технологии mental ray, выполните сле дующие действия. 1. Откройте окно render Settings (Параметры визуализации) и измени те систему визуализации на mental ray. Установите для параметра Quality Presets (Предустановленное качество) значение Production (Производственное). 2.
Визуализируйте кадр мордочки ондатры с его текущими параметрами меха. Обратите внимание на то, что мех выглядит темным и снова не хватает теней. Это происходит потому, что технология mental ray ис пользует параметры обычных теней источника света и игнорирует ат рибуты затенения меха, необходимые для системы визуализации Майя Software.
3.
Выделите направленный источник света, направленный прямо, и устано вите параметр Depth Map Shadows (Карта глубин теней) в окне редактора атрибутов прожектора. Пока можно оставить значение разрешения рав ным 512. Визуализируйте кадр и обратите внимание на то, что мех выгля дит намного живее, чем раньше (рис. 22.39).
4.
Нововведением Майя 8 является возможность ускорить визуализацию за счет указания системе mental ray используемого тонера меха. При мер визуализации с заданным по умолчанию тонером меха Hair Primitive (Простые волосы) приведен на рис. 22.40. Чтобы изменить тонер, выберите пункт меню Fur => Fur render Settings (Мех => Установки визуализации меха) и в редакторе атрибутов разверните на вкладке defaultFurGlobals раздел mental ray. Обратите внимание, что для тоне ра меха (Fur Shader) установлено значение Hair Primitive (Простые во лосы). Измените значение этого атрибута на Volume (Объем) и визуа лизируйте следующий кадр. Хотя качество деталей пока не столь вы соко, как у простого тонера (см. рис. 22.40), объемный тонер предоставляет для системы mental ray более быстрый алгоритм визуа лизации меха.
Вот и все! Если подробно сравнить мех, визуализированный с помощью системы mental ray и программной визуализацией Майя, то можно увидеть лишь небольшое раз личие в деталях тени возле носа. Система mental ray визуализирует тени немного мягче, чем система визуализации Майя, но не приводит к существенному увеличению времени визуализации (если вообще его увеличивает). Однако в целом результат работы обеих систем визуализации выглядит почти одинаково. Тем не менее рекомендуется заранее определиться с системой визуализации, прежде чем зайти слишком далеко при настрой ке меха. Для анимированных сцен с мехом и тенями, как правило, лучше полагаться на визуализацию с помощью технологии mental ray.
Система Maya Fur
Рис. 22.39. Мех, визуализированный темой mental ray с тенями карты бин и простым тонером меха
871
cucглу-
Рис. 22.40. Мех, визуализированный системой mental ray с объемным тонером меха
Для остальной части главы примем, что визуализация выполняется в системе Майя Software, за исключением оговоренных случаев. Если выполнять визуализацию с примене нием системы mental ray, то результаты, за исключением теней, будут почти такими же, как и полученные в данной главе. Как упоминалось в этом разделе, для наложения тени меха с помощью технологии mental ray необходимо включить тени в качестве обычных для источ ников света, отбрасывающих тени.
Нанесение меха на уши Поскольку уши являются геометрической формой модели персонажа, отделенной от головы, они нуждаются в собственных описаниях меха. Поскольку единственные реаль ные отличия между мехом ушей и мехом мордочки заключаются в плотности и направ лении, можно начать с таким же описанием меха, которое создано для мордочки, и отре дактировать его для улучшения внешнего вида, дублируя описание меха MM_Face. 1.
В меню Fur (Мех) выберите пункты Fur Description (more)ODuplicate => MM_Face (Описание меха (дополнительно) => Дублировать => М М _ Р а с е ) .
2.
Переименуйте скопированное описание меха на ММ_Еars и примените его к обоим ушам, выделив их и выбрав в меню Fur (Мех) пункты Attach Fur Description => MM_Ears (Присоединить описание Mexa => MM_Ears). При этом существующее опи сание меха будет соединено с выделением.
3.
При дублировании описания меха карты, установленные на атрибутах описания ме ха, не будут скопированы. Но это не является проблемой, поскольку так или иначе необходимо вновь создать карту залысин. Откройте окно Paint Fur Attributes Settings (Параметры нанесения атрибутов меха) и, использовав инструмент Paint Fur Attributes (Нанесение атрибутов меха) для нанесения карты залысин, чтобы сохра нить мех за ушами Мортимера, разместите его только на задней части каждого уха.
4.
Установите значение параметра Length (Длина) равным 0.04 и добавьте к карте длины параметр Noise Amplitude (Амплитуда шума) со значением 0.05. Установите для параметра Polar (Полюсное вращение) значение 0, а для параметра Inclination (Наклон) — 0. 685.
Теперь, наверное, стало заметно, что мех на левом ухе обращен не в том же направле нии, в котором ориентирован мех на правом ухе. Направление меха на обоих ушах должно
872
Глава 22
быть одинаковым, но сейчас он правильно выглядит только на правом ухе (рис. 22.41). Чтобы перенаправить мех на левом ухе, не нужно будет создавать для него совершенно но вое описание меха с другими значениями параметров Polar (Полюсное вращение) или roll (Вращение).
Рис. 22.41. Мех на левом ухе необходимо исправить 5.
Выделите левое ухо и в меню Fur (Мех) выберите пункты Offset Fur Direction Ву => 270 Degrees (Смещение направления меха на => 270 градусов), чтобы установить мех в том же направлении, что и на другом ухе. Если используется собственная мо дель, возможно, придется сместить направление одного или обоих ушей, чтобы мех был направлен вдоль задней стороны ушей.
6.
Поскольку площадь поверхности меха намного Меньше, чем площадь на мордочке, установите для параметра Density (Плотность) значение 15,000. Визуализируйте пробный кадр. Мех на ушах теперь должен соответствовать меху на мордочке, как показано на рис. 22.42.
Рис. 22.42. Направление меха на ушах смеще но, а плотность увеличена так, чтобы мех на ушах соответствовал меху на мордочке
Нанесение меха на руки Поскольку руки этого персонажа имеют различные поверхности, мех на них снова придется наносить по отдельности.
Система Maya Fur 1.
873
Скопируйте описание меха MM_Face и переименуйте его в ММ_Аrms.
2.
Выделите геометрическую форму рук и примените к ним описание меха MM_Arms.
3.
Обратите внимание на то, что мех на правой руке направлен внутрь. Нормали меха для этой руки необходимо развернуть так, чтобы мех рос наружу. Выделите поверх ность правой руки и в меню Fur (Мех) выберите пункт r e v e r s e Fur Normals (Обратить нормали меха), чтобы перевернуть мех в другую сторону. Также убедитесь, что мех растет вниз вдоль рук, как показано на рис. 22.43. При необходимости выберите в меню Fur (Мех) пункт Offset Fur Direction By (Смещение направления меха на).
Рис. 22.43. Соблюдайте правильное направление меха 4.
Оставьте значение параметра Length (Длина) равным 0.08, а для параметра Noise Amplitude (Амплитуда шума) раздела Length Details (Детали длины) редактора ат рибутов установите значение 0.15. Установите для параметра Inclination (Наклон) значение 0. 6, чтобы немного распушить мех на руках.
5.
Установите для параметра Scraggle (Закручивание) значение 0.14, а для параметра Density (Плотность) — значение 10,000. Оставьте остальные параметры такими же и выполните пробную визуализацию. Убедитесь, что мех не проглядывает сквозь перчатки. Чтобы сохранить мех на руках выше перчаток, нанесите карту залысин.
Нанесение меха на ноги Чтобы нанести мех на ноги, скопируйте описание меха MM_Arms и переименуйте его в MM_Legs. Обратите внимание на то, что мех на обеих ногах создан в неверных направле ниях (рис. 22.44).
Рис. 22.44. Направление меха неверно для обеих ног
874
Глава 22
Сместите направление меха на левой ноге на 180°, а на правой ноге — на 270°, чтобы мех рос вниз (рис. 22.45).
Рис. 22.45- Сместите направление меха так, чтобы он рос в правильном направлении В разделе Length Details (Детали длины) установите для параметра Noise Amplitude (Амплитуда шума) значение 0.08. Запустите пробную визуализацию и убедитесь, что параметр Density (Плотность), скопированный с описания меха MM_Arms (10,000), также работает и для ног. Помните о том, что при визуализации с помощью технологии mental ray необходимо вклю чить тени для самих источников света, чтобы сделать возможным затенение меха.
Нанесение меха на хвост Теперь нужно нанести мех на хвост ондатры. 1. Скопируйте описание меха MM_Arms и переименуйте его в MM_Tail. 2.
Удостоверьтесь, что мех растет вниз вдоль хвоста, как показано на рис. 22.46.
Рис. 22.46. Создайте мех растущим вниз вдоль хвоста 3.
Установите для параметра Density (Плотность) значение 35, ООО, а для параметра Length (Длина) — 0.12. Установите для параметра Noise Amplitude (Амплитуда шума) значение 0.2, чтобы задать допустимую величину случайности меху хвоста.
4.
Установите для параметра Inclination (Наклон) значение 0.75 и запустите пробную визуализацию, чтобы убедиться в хорошем внешнем виде этого и остального меха на персонаже, при данных значениях параметров плотности и длины. Чтобы посмотреть полную версию персонажа с мехом, загрузите из проекта MM_Fur на компакт-диске файл сцены MM_Fur_v03 . mb. Для правильной за-
Система Maya Fur
875
грузки карт текстур меха удостоверьтесь, что в проекте Maya указан каталог Haircut папки главы 22 на CD (для этого выберите пункт меню File => Project => Set (Файл => Проект => Установки), перейдите в каталог MM_Fur и щелкните на кнопке ОК.
Резюме Система Maya Fur является прекрасным инструментом нанесения меха на персонаж, а также создания таких эффектов, как мох, растущий на скале, или поверхность дерева. Она является простым и эффективным решением для создания меха, которое удовлетво ряет множеству потребностей. Можно обнаружить, что визуализация с использованием системы mental ray или даже с помощью дополнения для Maya renderMan компании Pixar дают несколько отличающиеся результаты, которые могут обеспечить лучшую детализа цию затенения для анимированных персонажей без возможных шумов визуализации, ко торые могут появиться при использовании стандартной системы визуализации Maya. Чтобы улучшить ондатру, попробуйте добавить аттракторы к ее меху, — это придаст ему некоторое движение. Для меха персонажа можно имитировать движение легкого ве терка, когда при анимации он бежит или летит по воздуху. Чтобы проверить свои замыс лы, иногда имеет смысл создавать простые примеры меха на обычной сфере, как у при чески могавк. Лучший способ получить опыт работы с системой Maya Fur заключается в экспериментировании и изучении ее возможностей и ограничений. Самым известным ограничением является движение меха. Хотя существуют много численные параметры для придания меху движения, они эффективны только для незна чительных движений. Кроме того, систему Fur лучше использовать для короткого меха или волос и не рекомендуется применять для эффектов с длинными волосами. Однако с помощью технологии Maya Fur можно создать разнообразие эффектов: от коротких во лос, полностью покрывающих персонажа, и до пары бровей или поля растущей травы на общем плане.
Моделирование ткани с использованием системы nCloth Новая для Майя система nCloth является эффективным средством моделирования тканей, пополнившим арсенал инструментов художника. В системе nCloth применяет ся решатель на основе технологии Nucleus — внедренной в Майя системы частиц и свя зок, позволяющих стабильно и быстро моделировать практически любой вид ткани. Помимо традиционных тканей, система nCloth может служить для моделирования са мых разных объектов, в том числе листьев, воздушных шаров и даже водных эффек тов. Система nCloth доступна только в версии пакета Майя 8.5 Unlimited. Если же ус тановлена предыдущая версия Майя или версия 8.5 Complete, то воспользоваться сис темой nCloth, изучая материал этой главы, не получится. (Глава о предыдущей реализации системы моделирования тканей, которая теперь называется Classic Cloth и поддерживается компанией Autodesk только для обратной совместимости, находится на CD, прилагаемом к этой книге.) В этой главе рассматриваются следующие вопросы. •
Что представляет собой система nCloth
•
Моделирование тканей в системе nCloth
•
Свойства системы nCloth
•
Ограничения системы nCloth
•
Силы в системе nCloth
•
Применение системы nCloth для моделирования объектов, отличающихся от тканей
•
Реалистичная модель рваной рубашки
Что представляет собой система nCloth Встроенный в Майя механизм nCloth, приводимый в действие новым ядерным реша телем компании Autodesk, представляет собой систему частиц, соединенных связками, которые, в свою очередь, приводят в действие геометрические объекты (юбку, флаг, пару брюк, воздушный шарик и пр.) с учетом анимации, сил и взаимодействий так, что они выглядят сделанными из ткани или другого мягкого материала. Для тех, кому приходи лось использовать мягкие тела с пружинами, освоение системы nCloth не будет особенно трудным, поскольку здесь применяется аналогичный метод моделирования природных явлений. Однако в отличие от мягких тел, в системе nCloth используется решение, опти-
878
Глава 23
мизированное для нерастягивающихся, несдвигающихся материалов, а следовательно, эта система идеально подходит для моделирования тканей и материалов, подобных им. Как следует из документации по Maya, ядерный решатель можно будет в перспективе при менять и для других видов моделирования, в том числе для мягких тел и жидкостей, но в настоящее время он используется только в системе nCloth. Модель ткани nCloth может быть получена из любого полигонального объекта (объекты NURBS и SDS придется сначала преобразовать в полигональные). После соз дания объекта nCloth из полигональной сетки Maya помещает в каждую его вершину по одной частице, как показано на рис. 23.1. Затем система nCloth помещает связки по диа гонали из одного угла каждой четырехугольной грани в другой, соединяя таким образом частицы. Эти связки обеспечивают необходимую жесткость и снижают вероятность сдвига, сохраняя угол между соседними ребрами грани. В треугольных гранях система nCloth не помещает связки между частицами, расположенными в вершинах грани, по этому работать целесообразно с четырехугольными гранями, создавая для дальнейшего использования модели в виде сеток nCloth.
Рис. 23.1. Составляющие одной грани модели nCloth При создании объекта nCloth исходный полигональный объект скрывается, а вместо него образуется новый объект ткани, а также новый ядерный решатель, если таковой от сутствует. Если же такой решатель уже имеется для какого-то другого объекта на сцене, то объект можно добавить ему или создать новый решатель. На рис. 23.2 показаны эле менты решателя nCloth, отображаемые в окне гиперграфа. Следует заметить, что узел pPlaneShapel (узел формы исходного объекта) скрыт, узлы n C T o t h S h a p e l и nucleusl присоединены к узлу time1, поскольку они неявно подлежат анимации, а узел o u t p u t c l o t h 1 (отображаемый в области просмотра) управляется непосредст венно узлом n C l o t h S h a p e l . В окне иерархической структуры взаимосвязи между уз лами отчасти скрыты. Так, при создании объекта nCloth в этом окне появляется толь ко узел nCloth1, но, как следует из вида в окне гиперграфа, для модели образуются более сложные связи.
Моделирование ткани с использованием системы nCloth
879
После создания объекта nCloth на связанные частицы могут воздействовать внешние силы, включая силу тяжести, которая по умолчанию автоматически учитывается при моделировании, ветра, завихрений и т.д. Кроме того, объекты (как пассивные объекты, находящиеся на сцене, такие и другие объекты ткани) могут взаимодействовать во время анимации с вновь созданным объектом ткани. Взаимодействия могут, в частности, слу жить для надлежащего контакта юбки из ткани с анимационной моделью, позволяя юбке двигаться во время ходьбы, прыжков или танца персонажа. Кроме того, если вам уже приходилось работать с моделями частиц или мягких тел, значит, принципы действия внешних сил и взаимодействий должны быть знакомы. И наконец, на объекты ткани мо гут быть наложены ограничения, благодаря чему она остается прикрепленной к другому объекту; так, пассивная геометрическая форма (например, пуговица) — принудительно остается на поверхности ткани, а базовая геометрическая форма, на основе которой соз дан объект ткани, — притягивает модель ткани к ее форме. Более подробную информацию о частицах см. в главе 19, "Использование частиц".
Моделирование в системе nCloth В качестве примера, демонстрирующего основы применения системы nCloth, рас смотрим модель развевающегося флага. Несмотря на всю простоту такой модели, она на глядно демонстрирует, как изменяются параметры настройки ткани, и поэтому будет ис пользована в ряде последующих разделов в качестве своеобразного испытательного стенда для выявления возможностей системы nCloth. Откройте файл сцены f l a g s t a r t . m a , находящийся на прилагаемом к книге CD. Сцена состоит из простого цилиндра (древка флага) и плоскости (полотна флага), как показано на рис. 23.3. Плоскость подчинена цилиндру, чтобы полотнище флага повторяло движения древка, простая анимация размахивания которым начинается с кадра 50. Для большей наглядности модели на оба объекта наложен ряд простых тек стур (для их просмотра нажмите клавишу < 6 > ) . Если воспроизвести анимацию, то мож но увидеть, как колышется древко флага, а вместе с ним и полотнище, но в настоящий момент флаг больше похож на жесткую полигональную плоскость, чем на кусок ткани.
880
Глава 23
Базовая анимация создается в системе nCloth достаточно просто. Для этого выделите полотнище флага (плоскость) и выберите в меню nCloth пункты nCloth => Create nCloth • (Система nCloth => Создать объект nCloth • ) . При этом имеются две возможности, ткань можно создать в локальном (Local Output) или глобальном ( W o r l d Space Output) пространстве. Оставьте установленную по умолчанию кнопку-переключатель Local Output и выберите решатель. В настоящий момент доступен лишь пункт Create New Solver (Создать новый решатель), поскольку иная мо дель ткани на сцене отсутствует. Если бы очередной объект ткани создавался вслед за первым подобным объектом, то но вую модель можно было бы присоединить к уже имеющемуся решателю или же создать для нее новый. Щелкните на кнопке Create Cloth (Создать ткань), и в окне иерархической струк туры появится узел n C l o t h l , а посередине полотнища флага Рис.233. Простая модель отобразится кружок (маркер), указывающий на то, что модель древка и полотниищa флага, создана успешно! подготовленная к внесению При воспроизведении этой анимации сразу же обнаруживазавершающих штрихов ются два недостатка. Во-первых, флаг спадает с древка, по скольку его модель не присоединена к древку, несмотря на то, что исходная полигональная плоскость была присоединена к древку. Дело в том, что тка невым вариантом полотнища управляют лишь внешние силы и ограничители. Вовторых, анимация воспроизводится очень медленно, причем полотнище флага понемно гу смещается вниз. Устраним сначала второй недостаток. Для этого выделите узел n C l o t h 1 и откройте окно редактора атрибутов, затем выберите в верхней его части вкладку nucleus"!. Как показано на рис. 23.4, вкладка nucleus1 имеет целый ряд парамет ров настройки воспроизведения анимации. Сейчас изменим только параметр Gravity (Гравитация), введя в его поле большое значение, например 98. Теперь при воспроизве дении анимации оказывается, что флаг спадает с древка намного быстрее. Сила тяжести действует на анимацию как коэффициент масштабирования: чем больше значение пара метра Gravity, тем, как правило, более мелкой выглядит модель. Так, если оставить для этого параметра принятое по умолчанию значение 9.8, флаг будет казаться очень круп ным, тогда как при достаточно большом значении, например 1000, он будет выглядеть как игрушечный флажок из очень тонкой, шелковистой ткани. Следовательно, установку значения 98 можно считать удачным компромиссом между надлежащим масштабом мо дели и "нормальным" размером флага, хотя можно установить и другие значения пара метра Gravity. Как всегда, при воспроизведении анимации моделей физических явлений в глобальных па раметрах воспроизведения анимации следует установить режим Play Every Frame (Воспроизводить каждый кадр). Если же установить режим real Time (В реальном масштабе времени), то модель, зависящая от состояния в предыдущем кадре, будет рассчитываться для следующего кадра, что может сделать ее движения неестественными. Для установки нужного режима воспроизведения анимации используйте окно Preferences (Предпочтения) (пункт меню Window => Settings/Preferences => Preferences (Окно => Параметры/Предпочтения => Предпочтения) или щелкните на небольшой пиктограмме Animation (Анимация) в нижнем правом углу временной шкалы (рядом с пиктограммой ключа), а затем выберите пункт Play Every Frame (Воспроизводить каждый кадр) из раскрывающегося списка Playback Speed (Скорость воспроизведения) в категории Timeline (Временная шкала).
Моделирование ткани с использованием системы nCloth
881
Puc. 23.4. Свойства ядерного решателя и предустановленные значения его па раметров А теперь устраним второй недостаток, прикрепив флаг к древку. Для этого необходимо создать ограничитель перемещения, который блокирует некоторые из вершин ткани по по зиции и повороту (они выглядят как локаторы). Затем подчиним ограничитель древку флага, привязав к нему вершины. 1.
Выделите геометрическую форму флага, щелкните на нем правой кнопкой мыши и в появившемся контекстном меню выберите пункт Vertex (Вершина).
2.
Переключите режим выделения, чтобы выделить сначала две верхние, а затем две нижние вершины на левом краю полотнища флага (ближайшему к древку). Выберите в меню nCloth пункт nConstraint => Transform (Система nConstraint => Перемещение). Между выделенны ми вершинами появится крестик, похожий на локатор, а в окне иерархической структуры — вновь созданный узел dynamicConstraintl.
Рис. 23.5. Базовая модель флага с примененной си лой тяжести и ограни чителями перемещения. Чтобы привязать к древку флага этот ограничитель, а сле В настоящий момент сет довательно и полотнище, выделите узел d y n a m i c C o n s ка полотнища флага про t r a i n t l , удерживая нажатой клавишу <Shift>, выделите низывает древко древко и установите таким образом связь между ними. Воспроизведите анимацию, чтобы увидеть, как флаг ниспадает (под действием силы тяжести) и развевается, но остается скрепленным с древком флага благодаря ограни чителям (рис. 23.5).
882
Глава 23
Итак, чтобы наглядно продемонстрировать изменение поведения ткани, ограничители пе ремещения были наложены лишь на несколько вершин ее сетки. Такое количество ограни чиваемых вершин для "настоящей" модели может оказаться достаточным или недостаточ ным в зависимости от конкретных потребностей. Несмотря на то что простая модель флага теперь выглядит довольно хорошо, ей все же присущ один очевидный недостаток: как можно заметить на рис. 23.5, сетка полотна флага пронизывает древко! И хотя система nCloth автоматически формирует поведение самовзаимодействия, она не создает взаимодействий с пассивной геометрической фор мой. Очевидно, этот вопрос следует решать еще до завершения даже такой простой мо дели, как рассмотренная выше. Для этого выделите сетку полотнища флага, нажмите клавишу <Shift>, выделите древко и выберите в меню nCloth пункт nCloth => Create Passive • (Система nCloth => Создать пассивный объект). Среди возможных вариантов выполнения команды Make Collide (Создать взаимодействие) имеются только два: ис пользовать для взаимодействий текущий решатель n u c l e u s l или же создать новый. Ос тавьте решатель n u c l e u s l и разрешите взаимодействие, щелкнув на кнопке Make Collide. В окне иерархической структуры появится новый узел n r i g i d l , а флаг станет взаимодействовать с древком, как показано на рис. 23.6. Обратите внимание на то, что теперь анимация воспроизводится значительно медленнее из-за дополнительных расче тов взаимодействия геометрических форм, которые вынужден произвести решатель. Но с другой стороны, анимация теперь выглядит намного реалистичнее, поскольку полот нище флага не проникает сквозь древко! Если же флаг по-прежнему заворачивается во круг древка, не обращайте на это особого внимания, данный недостаток будет устранен далее в этой главе. В модель флага можно также ввести дополнительные внешние силы (например, ве тер и завихрение), чтобы флаг надувался или вздымался. Введем, например, силу вет ра, чтобы показать, как это делается. Для этого выделите каркас полотнища флага и выберите в меню nCloth пункт Fields => Air • (Поля => Воздух • ) . Щелкните на кнопке W i n d (Ветер) в разделе Air, чтобы задать значения параметров для эффекта ветра. Ус тановите значение 2 5 для параметра Magnitude (Величина), нулевое значение — для параметров Attenuation (Затухание) и Direction Y (Направление по оси Y), значение -1 — для параметра Direction Z (Направление по оси Z) и значение 10 — для парамет ра S p e e d (Скорость), а затем щелкните на кнопке Create, чтобы создать силу ветра. При воспроизведении можно заметить, что флаг довольно быстро надувается в на правлении правой части экрана (благодаря значению -1 параметра Direction Z ) , как показано на рис. 23.7. Данный эффект особенно заметен в начале анимации перед размахиванием флага и после его перехода в состояние покоя в самом конце. Для более удобного просмотра воспроизведите анимацию флага в режиме предваритель ного просмотра, чтобы увидеть данный эффект в реальном масштабе времени. Если воспроизведение в этом режиме происходит слишком медленно или же ветер оказы вается очень сильным, настройте соответствующие параметры, чтобы изменить мо дель по своему усмотрению. Теперь когда получена базовая анимация, посмотрим, каким образом изменение па раметров узлов ткани, ядерного решателя, ограничителей и взаимодействий оказывает влияние на саму модель. Чтобы не усложнять модель для рассмотрения в последующих разделах, удалите узел ветра A i r .
Моделирование ткани с использованием системы nCloth
Рис. 23.6. Ввод в модель флага взаимодействия с пассивной геометрической формой
883
Рис. 23.7. Ввод силы ветра в модель флага
Свойства ядерного решателя Как уже можно было заметить, в наборе узлов содержится целый ряд параметров, оказывающих влияние на ход моделирования ткани. Рассмотрим сначала основные эле менты управления моделью, сосредоточенные в узле ядерного решателя. Воспользуйтесь моделью флага из предыдущего раздела (предварительно уда лив узел A i r ) или откройте файл сцены flagProperties.ma, находящийся на прилагаемом к этой книге CD. Этот файл послужит отправной точкой для исследования параметров объекта nCloth, поэтому сохраните его копию в текущем состоянии, чтобы без труда вернуться к ней, когда в этом возникнет необходимость. Вновь посмотрите на рис. 23.4, где представлены значения по умолчанию для на стройки ядерного решателя ткани системы nCloth. В верхнем разделе находятся пара метры силы тяжести и ветра — двух внешних сил, чаще всего применяемых к моделям ткани. Если величина силы тяжести по умолчанию устанавливается равной 9 . 8 в на правлении оси Y, то сила ветра первоначально отсутствует. Для активизации силы ветра достаточно установить для параметра W i n d Speed (Скорость ветра) значение, отличное от нуля. В результате настройки параметров W i n d Direction (Направление ветра) и Air Density (Плотность воздуха) изменится сама модель ткани. Параметры силы тяжести и ветра ядерного решателя представляют собой простой набор значений, доступных для полей A i r и Gravity, вводимых в модель ткани. Более подробно о вводе таких полей в модель ткани речь пойдет в далее в этой главе. В предыдущем разделе был создан эффект ветра за счет применения его силы к сетке тка ни. Очевидно, что для этого можно было бы просто воспользоваться параметрами силы ветра в узле решателя, но для демонстрации внешних сил вместо этого был выбран непо средственный ввод силы ветра в модель. И тот и другой способ вполне работоспособен, хотя наложение внешней силы ветра со встроенной может привести к трудно контроли руемому поведению модели. В следующем по порядку разделе находятся элементы управления, предполагающие использование стандартной поверхности взаимодействия. При установке флажка Use Plane (Использовать поверхность) активизируются взаимодействия с плоскостью, кото рые рассчитываются быстрее, чем взаимодействия с физическим объектом. После акти визации взаимодействий с плоскостью можно уточнить координаты начала ее отсчета, атрибут ее нормали, а также коэффициенты упругости и трения при взаимодействии
884
Глава 23
с ней. Так, настраивая составляющую нормали к плоскости основания по оси Y, можно поднять или опустить виртуальное основание (а составляющие по осям X и Z особого значения не имеют, если только в расположенном выше разделе параметров не изменено направление силы тяжести.) Атрибут нормали (Plane Normal) определяет направле ние последней перпендикулярно плоскости основания, причем значения 1 по оси Y, как правило, оказывается достаточно. Параметр Plane bounce определяет упругость (степень отскока) при столкновениях, причем максимальная упругость достигается при значении 1, а полное отсутствие — при значении 0. Параметр Plane Friction определяет степень скольжения объекта ткани но поверхности во время касательных взаимодейст вий. На рис. 23.8 показано взаимодействие флага с виртуальной плоскостью основания при значении 20 по координате Y от данной плоскости. В следующем разделе, Solver Attributes (Атрибуты решатели), находятся элементы управления качеством анимации, особенно при взаимодействиях. Так, атрибут Substeps определяет, сколь ко выборок подкадров требуется решателю для рассчета анима ции. При значении 1, устанавливаемом по умолчанию в поле ат рибута Substeps, используется одна такая выборка на каждый кадр, чего оказывается достаточно для медленно движущихся объектов. Для ткани, движущейся быстрее, возможно, потребу ются 2, 4 и более выборки, чтобы точно определить, где и когда происходит взаимодействие. Если же ткань запутывается или пронизывает другие объекты, то этот недостаток можно устра Рис. 23.8. Взаимодей нить, увеличив значение атрибута Substeps, хотя и за счет за ствие флага с вирту альной плоскостью ос медления анимации вследствие дополнительных расчетов, кото нования при значении рые с этим связаны. Параметр Max Collision Iterations (Макси 20 единиц для коорди мальное количество повторений при взаимодействиях) определя наты Y начала отсче ет количество повторений, допускаемых при анализе взаимодей та данной плоскости ствий. В результате увеличения этого значения можно устранить недостатки проникновения ткани сквозь поверхности, прилипа ние ткани к поверхностям (или ее углубление в поверхности) или же просто поправить внешний вид ткани. Однако делается это за счет замедления анимации. Параметр Collision Layer r a n g e (Пределы действия слоев взаимодействий) определяет, на сколько слоев вверх или вниз от слоя текущего решателя обнаруживаются взаимодействия. Так, если активы шесть разных слоев решателей и установлено значение 3 в поле атрибута Collision Layer range, ткань на слое решателя solverl будет взаимодействовать только с объектами и тканями на собственном слое, а также с теми, что находятся одним-тремя слоями выше (более подробная информация о слоях взаимодействий приве дена в следующем разделе, посвященном свойствам nCloth). Параметр Collision Softness (Мягкость взаимодействия) определяет, насколько глубоко ткань может проникнуть в объект при взаимодействии с его поверхностью и как далеко она должна отклониться на зад. При нулевом значении этого атрибута, устанавливаемом по умолчанию, взаимное проникновение отсутствует, а при положительном значении ткань проникает сквозь по верхность до определенной степени, прежде чем отражается в обратную сторону. В разделе Time Attributes (Временные атрибуты) параметр Start Frame (Начальный кадр) определяет момент начала анимации. Увеличив значение этого атрибута, например от 1 до 4 0, можно указать решателю проигнорировать анимацию вплоть до указанного
Моделирование ткани с использованием системы nCloth
885
кадра (т.е. 40-го). В разделе Scale Attributes (Атрибуты масштабирования) параметр Time Scale (Масштаб времени), по существу, определяет, как быстро воспроизводится анимация. Так, при значении 2 анимация воспроизводится в два раза быстрее, а следова тельно, ткань выглядит более тяжелой. Данный атрибут используется в случае, когда не обходимо откорректировать хорошо сформированную анимацию, чтобы ткань действо вала лучше в более широких пределах. Параметр Space Scale (Пространственный мас штаб) вносит поправки. Поскольку по умолчанию используются метры, то, если установить значение 0.01 данного атрибута, масштаб анимации изменится до сантимет ров. Следует также заметить, что вместо изменения значения силы тяжести до 98 в пре дыдущем разделе достаточно было бы изменить до 0 .1 значение параметра Space Scale. Последний способ предоставляет и дополнительные преимущества, поскольку позволяет придать одинаковый масштаб всем остальных параметрам, составляющим модель.
Свойства системы nCloth Теперь, когда читатель имеет ясное представление о ядерном решателе, рассмотрим свойства узла n C l o t h . Для этого выделите в окне иерархической структуры узел n C l o t h 1 и откройте окно редактора атрибутов. В этом окне имеется ряд разделов с мно гочисленными элементами управления свойствами ткани, поэтому рассмотрим в каждом разделе лишь наиболее важные элементы управления. В верхнем разделе без названия имеется флажок Enable (Разрешить). Если сбросить его, то будет запрещена вся анима ция ткани. Это позволяет быстро отключить решатель ткани, чтобы сосредоточиться на других аспектах анимации.
Свойства поверхности Следующий по порядку раздел, surface Properties (Свойства поверхности), пред ставленный на рис. 23.9, является, вероятно, наиболее важным для определения характе ра поведения моделируемой ткани, а следовательно, и ее вида. Прежде всего, в данном разделе находятся два флажка, разрешающих соответственно взаимодействие (Collide) и самовзаимодействие (Self Collide). Самовзаимодействие раз решено по умолчанию, тогда как взаимодействие необходимо лишь при создании пас сивного объекта, с которым взаимодействует ткань. При сбросе любого из этих флажков соответствующий режим взаимодействия запрещается. Далее следует параметр Collision Layer (Слой взаимодействий), который устанавливает приоритет взаимодействий для системы nCloth. Два куска ткани (или же ткань и пассивный объект) на одном слое взаимодействуют как обычно. Если же один кусок ткани (или пассивная геометрическая форма) находится на более высоком слое, чем другой кусок, то ткань на нижнем слое по лучает приоритет при расчете взаимодействий, приводя в действие взаимодействия с объ ектами на верхнем слое. Такое назначение приоритетов может оказаться очень полезным при взаимодействии нескольких объектов. Так, если установить кожный покров персонажа на слое 0, его рубашку — на слое 1, а пиджак — на слое 2, то кожный покров будет руково дить взаимодействием с рубашкой, а та, в свою очередь, с пиджаком, как это обычно и быва ет в реальной ситуации. Благодаря настройке значений частичных слоев определяется сте пень приоритетности одного слоя над другим: чем ближе частичные слои друг к другу, тем более равным оказывается их приоритет, а следовательно, и взаимодействие объектов. Как отмечалось в предыдущем разделе, для решателя можно установить пределы действия ело-
Глава 23
886
ев взаимодействий, ограничивающие степень взаимодействия одних объектов с другими. В примере с рубашкой и пиджаком установка значения 1 параметра Collision Layer r a n g e означает, что кожный покров будет приводить в действие рубашку, а та — пиджак, но кож ный покров персонажа не будет взаимодействовать с пиджаком. Такое поведение может оказаться наиболее предпочтительным для данной модели.
Puc. 23.9. Раздел
surface
Properties узла
nCloth
Далее следуют свойства Thickness (Толщина) и Self Collide Width Scale (Масштаб ши рины самовзаимодействия), определяющие толщину ткани как для самой себя, так и для пассивных объектов взаимодействия на сцене. Толщина связана со всеми видами взаимо действий (как самовзаимодействиями, так и взаимодействиями с пассивными объектами) и определяет, насколько каждая взаимодействующая частица идентифицирует себя как не что существующее и до какой степени она крупная. При большой толщине частица стано вится крупной в расчетах взаимодействий, а ткань кажется более плотной, тогда как при малой толщине ткань кажется менее плотной, допуская очень близкое соприкосновение сетки с самой собой и с другими объектами. А коррекция масштаба самовзаимодействий позволяет настраивать толщину для самовзаимодействий. Так, если общие атрибуты тол щины взаимодействий ткани с пассивными объектами удовлетворительны, но ткань долж на быть чуть более толстой (или тонкой) при самовзаимодействии, можно откорректиро вать значение параметра Self Collide Width Scale, которое умножается на значение пара метра Thickness. Параметры Solver Display (Визуальное представление свойств решателя) и Color по зволяют наглядно представить рассмотренные выше свойства толщины взаимодействия, а также другие свойства, в том числе связки и коэффициенты. Если выбрать, например, пункт Self Collision Thickness (Толщина самовзаимодействия) из раскрывающегося списка
Моделирование ткани с использованием системы nCloth
887
Solver Display, то вокруг каждой частицы ткани появится сферическая область, в пределах которой происходит взаимодействие (рис. 23.10). Такие сферические области подобны шари кам для пинг-понга на поверхности ткани, которые отталкивают другие вершины, оказываю щиеся в пределах радиуса их действия. Как только сферические области будут отображены, можно откорректировать параметры Thickness и Self Collide Width Scale, наблюдая за тем,
как размеры сфер приводятся в соответствие с настраиваемыми значениями. Свойство Color позволяет назначить отдельный цвет для каждого вида отображаемого элемента. Далее следуют свойства ткани Bounce (Упругость), Friction (Трение) и Mass (Масса). Свойства Bounce и Friction связаны как с взаимодействиями, так и с самовзаимодействиями, определяя соответственно количество энергии, передаваемой при взаимодействии, а также прилипание частиц друг к другу при углах взаимодействия, отличающихся от прямого. Параметр Mass определяет характер реакции объекта ткани на все внешние си лы и взаимодействия, а по существу, насколько тяжелой оказывается ткань. Так, при очень малой массе (0 или 0,01) имитируется легкий материал, подобный шелковой тка ни, а при больших значениях (1 или 10) — материал, подобный хлопчатобумажной или грубой хлопчатобумажной ткани. Очевидно, что свойство Mass имеет большое значение для общего впечатления от модели. На рис. 23.11 приведены отличия, которые свойство Mass вносит в модель флага.
Рис. 23.10. Наглядное представле ние толщины самовзаимодействия в системе nCloth
Рис. 23.11. Вид модели флага на кад ре 40 при нулевом значении (а) и значении 10 (б) параметра Mass
Параметры Lift (Подъем), Drag (Трение) и Tangential Drag (Касательное трение) оп ределяют характер аэродинамического взаимодействия ткани с воздухом (и ветром) в ее окружении. Параметр Lift — это та подъемная сила, которая действует на крыло самолета, отрывая его от земли, тогда как параметр Drag обозначает противоположную силу, тор мозящую движение ткани, оказывая сопротивление силе ветра. Параметр Tangential Drag определяет, насколько перпендикулярно действует сила торможения: при нулевом его значении ветер, дующий параллельно поверхности, не испытывает сопротивления (немного приподнимая ткань), а при значении 1 сила трения равна силе ветра в любом направлении. При больших значениях свойств Lift, Drag и Tangential Drag флаг вздыма-
Глава 23
888
ется на ветру, а при нулевом значении всех трех свойств флаг никак не реагирует на ве тер, дующий строго параллельно его поверхности. И наконец, для свойств поверхности Thickness, Bounce, Friction, Mass и Wrinkle (Складка) объекта ткани можно создать и ввести карты. Эти полутоновые карты обычно создаются в редакторе изображений, аналогичном Photoshop, и обеспечивают точную на стройку свойств всей поверхности на уровне вершин. Цвета таких карт изменяются от чер ного (0 для малых значений соответствующих свойств) до белого (1 для больших значений этих свойств). Настраивая промежуточные значения серого по всему изображению карты, можно очень точно откорректировать соответствующее свойство, а значит, и поведение мо дели. Подробнее о создании карт свойств в диалогом режиме работы Maya речь пойдет в разделе, посвященном свойствам раскраски тканей в nCloth, далее в этой главе.
Динамические свойства Ниже раздела surface Properties находится раздел Dynamic Properties (Динамичес кие свойства) объекта nCloth (рис. 23.12). Параметры в этом разделе определяют харак тер реакции объекта ткани на внешние воздействия при анимации.
Puc. 23.12. Раздел Dynamic Properties уз ла nCloth Параметр Stretch r e s i s t a n c e (Сопротивление растяжению) определяет степень со противляемости ткани растяжению, когда она вытягивается или подвергается воздейст вию внешних сил. При большом значении сохраняются исходные размеры ткани, а при малом — допускается растягивание ткани, подобно латексу или эластичному синтетиче скому материалу. Параметр Compression r e s i s t a n c e (Сопротивление сжатию) опреде ляет степень сопротивляемости ткани сжатию или комканию. При малых значениях до-
Моделирование ткани с использованием системы nCloth
889
пускается сжатие и комкание ткани, подобно бумаге или кринолину, а при больших зна чениях ткань сопротивляется сжатию аналогично грубой хлопчатобумажной ткани или холсту. Параметры Bend r e s i s t a n c e (Сопротивление сгибанию) и Bend Angle Dropoff
(Спад угла сгибания) определяют степень сгибания объекта под внешним воздействием (силы тяжести или вытягивания). При больших значениях свойства Bend r e s i s t a n c e ткань похожа на дешевые новые джинсы, а при малых значениях ее поведение больше напоминает шелк. Параметр Bend Angle Dropoff изменяет степень сопротивляемости из гибу в зависимости от угла сгибания ткани. Так, если значение параметра Bend Angle Dropoff больше нуля, то при больших углах сгибания ткани последняя оказывает макси мальное сопротивление, но по мере распрямления ткани ее сопротивление сгибанию по степенно убывает. Параметр Shear r e s i s t a n c e (Сопротивление сдвигу) определяет сте пень сопротивляемости ткани сдвигу, т.е. растягиванию в поперечном направлении, по добно эластичному материалу. Чем больше значение параметра Shear r e s i s t a n c e , тем больше ткань сопротивляется силам сдвига. Параметры restitution Angle (Угол восстановления) и Tension (Натяжение) опреде ляют соответственно степень сгибаемости и растягиваемости объекта ткани до того, как он потеряет способность возвращаться в свое исходное состояние. Чем больше значения этих параметров, тем больше объект ткани деформируется, возвращаясь, тем не менее, в свое исходное состояние после снятия внешней силы. Параметр r i g i d i t y (Жесткость) определяет степень жесткости или гибкости объекта ткани. Так, при значении 1 этого свойства ткань проявляет максимальную жесткость и не сгибается, действуя на сцене как объект твердого тела. При нулевом значении ткань оказывается совершенно нежесткой, действуя на сцене, как и подобает объекту ткани. А при промежуточных значениях данного свойства создается смешанная ситуация. Свойство Deform r e s i s t a n c e (Сопротивление деформации) определяет, до какой степе ни ткань стремится сохранить свое исходное состояние. Чем больше значение этого па раметра, тем труднее ткань деформируется, а при малом его значении ткань очень легко деформируется и остается деформированной после снятия деформирующей силы. Па раметр Input Mesh Attract (Притяжение исходного каркаса) определяет, насколько объ ект ткани стремится вернуться в свое исходное состояние (восстановить форму исходно го полигонального объекта, на основании которой он был создан, или же форму своего исходного состояния). При больших значениях этого свойства объект ткани возвращает ся к форме своего исходного состояния, если это допускают силы и взаимодействия на сцене, а при малых значениях объект ткани полностью теряет форму своего исходного состояния. Параметр Input Attract Damp (Сопротивление исходному притяжению) опре деляет степень сопротивляемости объекта ткани возврату к форме своего исходного со стояния. Очевидно, что этот параметр не действует, если установлено нулевое значение параметра Input Mesh Attract.
Объект ткани можно вернуть в исходное состояние, отличающееся от первоначального со стояния и формы после его создания. Чтобы задать нужную исходную форму объекта ткани, перейдите к тому кадру, где объект ткани принимает нужную исходную форму (например, флаг, свисающий на древке), и выберите режим Edit nCloth Initial State Set From Current (Редактировать исходное состояние объекта nCloth, исходя из его текущего состояния). Параметры r e s t Length Scale (Масштаб длины в состоянии покоя) и Bend Angle Scale (Масштаб угла сгибания) изменяют масштаб параметров длины и угла сгибания, начиная с первого кадра анимации. А поскольку значения этих параметров умножают-
890
Глава 23
ся на длину в состоянии покоя и угол сгибания, то при значении 1 сохраняется теку щий масштаб, при большем значении материал ткани растягивается (или же сгибает ся), а при меньшем значении — сжимается. На рис. 23.13 показано, как материал флага растягивается при значении 2 свойства r e s t Length Scale в процессе воспроизведения анимации. Параметры Damp (Сопротивление) и Collision Damp (Сопротивление взаимодейст вию) определяют, насколько быстро движение или взаимодействие гасится после того, как внешние силы перестанут действовать на вершины ткани. В отсутствие сопротивле ния нередко одна или две вершины продолжают раскачиваться по завершении движения или взаимодействия, что и неестественно, и досадно (такой недостаток присущ верхним вершинам вблизи древка флага). При увеличении значений параметров сопротивления данный эффект гасится. Следует, однако, быть внимательным, чтобы не устанавливать эти значения слишком большими, иначе ткань будет выглядеть так, как будто она дви жется под водой. Пункты раскрывающегося списка Scaling r e l a t i o n (Взаимосвязь с масштабировани ем) определяют, каким образом масштабированные значения длины в состоянии покоя и угла сгибания применяются к объекту ткани. Так, вариант Link означает, что эти значе ния применяются ко всем связкам между частицами. Вариант Object Space определя ет масштабированные значения (включая и жесткость) в зависимости от размера объ екта. Пункт W o r l d Space также определяет подобные значения в зависимости от раз мера объекта, но жесткость оказывается фиксированной по величине в глобальном пространстве. А при выборе пункта Disable Solver Gravity решатель не будет исполь зовать устанавливаемые значения силы тяжести при получении решения для анима ции. Это все равно что установить нулевое значение параметра Gravity во вкладке nucleus рассматриваемого окна. И наконец, в разделе Dynamic Properties Maps (Карты динамических свойств) имеет ся возможность создать текстурные карты, определяющие такие динамические свойства, как растягивание (Stretch), сгибание ( B e n d ) , твердость ( r i g i d i t y ) , деформация (Deform), исходное притяжение (Input Attract), а также сопротивление взаимодействию (Collision Damp). Подробнее о создании карт динамических свойств см. выше в разделе "Свойства поверхности".
Другие параметры В разделе Pressure (Давление) узла n C l o t h (рис. 23.14) доступны параметры, позво ляющие придать объектам ткани поведение, аналогичное поведению воздушного шара или другого объекта, наполненного газом. Пункты раскрывающегося списка Pressure Method (Метод давления) определяют характер давления воздуха. Пункт Manual Pressure Setting (Установка давления вручную), например, позволяет произвольно ус танавливать значения давления по ключевым кадрам, тогда как пункт Volume Tracking Method (Метод отслеживания объема) обеспечивает более реалистичное моделирование, для которого решатель использует значения притока и оттока воздуха при расчете дав ления воздуха внутри объекта ткани. Флажок Seal Holes (Заделать отверстия), расположенный в нижней части раздела Pressure, позволяет автоматически заполнить отверстия в объекте ткани, чтобы исклю чить неумышленное ослабление давления из-за утечки воздуха. Если же утечка воздуха допускается, то этот флажок следует сбросить.
891
Моделирование ткани с использованием системы nCloth
Рис. 23.13. Увеличение значеним параметра rest Length Scale приводит во время вос произведения к вытягиванию флага наружу
Рис. 23.14. Раздел
Pressure
узла nCloth
Если выбран режим Manual Pressure Setting, то параметр Pressure определяет вели чину давления в объекте ткани. А параметр Pressure Damping (Сопротивление давле нию) гасит изменения давления воздуха таким образом, чтобы при анимации этих изме нений объект не слишком раскачивало. Если же выбран режим Volume Tracking Method, то параметр Pressure Damping по-прежнему доступен, но в то же время другие элементы управления устанавливают взаимосвязь с физической имитацией давления воздуха внутри объекта ткани. Так, параметр Start Pressure (Начальное давление) устанавливает связь относительного давления внутри объекта с окружающим его воздухом в начале. При нулевом значении этого параметра давление внутри объекта получается таким же, как и в его окружении, а значит, объект оказывается совершенно не надутым в начале анимации. Параметр Pump r a t e (Степень накачки) указывает, как быстро надувается объект ткани, тогда как параметр Air Tightness (Герметичность) определяет, насколько непроницаемым оказывается объект ткани, а следовательно, как быстро из него может происходить утечка воздуха. При малом значении параметра Air Tightness и полном от сутствии накачки объект сдувается очень быстро. И наконец, параметр Incompressibility (Неуплотняемость) определяет, до какой степени уплотняется воздух внутри объекта ткани. Чем выше неуплотняемость воздуха, тем, по-видимому, выше относительное дав ление, а следовательно, объект ткани труднее деформируется. В разделе Quality Settings (Параметры качества), приведенном на рис. 23.15, опре деляется точность моделирования ткани. В частности, параметр Max Iterations уста навливает максимальное количество повторений, которое система анимации может осуществлять для каждого кадра (или подкадра). Чем больше значение этого парамет ра, тем выше общее качество анимации, хотя и за счет замедления. Параметры Collision Flag (Признак взаимодействия) и Self Collision Flag (Признак самовзаимодействия) корректируют характер взаимодействия объекта nCloth с другими находящимися на сцене объектами и с самим собой соответственно. Настройка этих параметров оказы вает едва заметное, тем не менее, важное влияние на анимацию, поскольку вершины объекта ткани, взаимодействуя, например, с вершинами других объектов, образуют иные формы складок, чем при взаимодействии ребер объекта ткани с ребрами других
Моделирование ткани с использованием системы nCloth
893
ным. В раскрывающемся списке Evaluation Order (Порядок вычислений) можно выбрать два пункта: Sequential (Последовательно) и Parallel (Параллельно). Если выбран пункт Sequential, соединения связок вычисляются в зависимости от порядка следования краев полигональных сеток, из которых состоит объект ткани. А если выбран пункт Parallel, то данный порядок игнорируется и связки вычисляются в направлении от участков взаи модействия наружу. Если в режиме Sequential вычисления производятся быстрее, то в режиме Parallel удается добиться лучших результатов анимации, в ходе которой про исходят многочисленные взаимодействия ткани с пассивными объектами. Флажок Sort Stretch Links (Сортировать растягивающиеся связки) позволяет отсортировать связки в объекте ткани так, чтобы свести к минимуму растягивание ткани. Флажки Trapped C h e c k e d (Проверка на захват) и Self T r a p p e d Check (Проверка на
самозахват) служат соответственно для устранения ошибок взаимного проникновения ткани и пассивных объектов, а также самой ткани в себя. Если ткань и пассивные объек ты оказываются в "чистом" состоянии (т.е. не проникают друг в друга) в начале анимации, то при установке этих флажков решатель попытается сохранить данное состояние без вза имного проникновения, что очень полезно для повышения устойчивости анимации, в ходе которой происходит значительное взаимное проникновение. Остальные параметры, распо ложенные ниже упомянутых выше флажков, определяют, как и насколько области взаим ного проникновения могут быть возвращены в свое "нормальное" состояние. Параметр Push Out (Выталкивание) определяет, до какой степени одна вершина от талкивается от другой во время захвата, а параметр Push Out r a d i u s (Радиус выталки вания) задает максимальное расстояние, на котором действует эффект выталкивания. При установке значений параметров Crossover Push (Выталкивание при пересечении) и Self Crossover Push (Выталкивание при самопересечении) учитываются контуры пе ресечения ткани и других объектов (или же самой ткани с собой) для отталкивания эле ментов ткани. Эти свойства используются на начальном кадре анимации, поэтому они не будут учитываться, если сделать объект ткани "чистым" (т.е. без взаимного проникнове ния) вначале. В разделе Time Attributes (Временные атрибуты) представлены сведения о текущем времени (кадре) и моменте начала анимации. Ни одно из полей данного раздела не под лежит настройке в узле n C l o t h . Следовательно, для настройки параметра Start Frame перейдите к соответствующему разделу во вкладке nucleus (см. выше раздел, посвящен ный свойствам решателя).
Нанесение значений параметров кистью в системе nCloth Несмотря на то что иногда оказывается достаточно и глобальных параметров на стройки ткани, нередко возникает потребность в коррекции значений таких свойств, как, например, толщина ткани или сопротивление сгибанию на уровне вершин по всей по верхности ткани. Данную задачу можно решить двумя способами: применить полутоно вые карты текстур к соответствующим параметрам ткани (или атрибутам) или же нанес ти кистью значения этих свойств непосредственно в области просмотра Майя. Если кар ты текстур потенциально допускают более точную настройку свойств ткани, то раскраска последних носит более интуитивный характер и, как правило, выполняется быстрее. Поэтому рассмотрим здесь данный метод.
894
Глава 23 На объект nCloth с помощью кисти могут быть нанесены значения следующих пара
метров и динамических атрибутов ткани: Thickness, Bounce, Friction, Mass, Stretch, Bend, Wrinkle, r i g i d i t y , Deformability и Input Attract (подробнее обо всех этих параметрах
см. в предыдущем разделе). Эти параметры и атрибуты можно наносить как в виде карты текстур, так и карты вершин. Разрешение карты текстур может быть выше, чем плот ность вершин на сетке ткани, но для этого на объект ткани необходимо наложить чистую карту UV. С другой стороны, карта вершин пригодна для любого объекта ткани незави симо от наложения на него карты UV. Более подробную информацию о текстурировании и проецировании карт UV см. в гла ве 12, "Тонирование и текстурирование при анимации". Нанесение кистью значений любого свойства ткани выполняется практически одина ково, поэтому продемонстрируем ее на примерах создания двух карт: карты толщин — по методу раскраски карты вершин и карты растяжения — по методу проецирования тек стуры. Из этих примеров должно стать ясно, как следует наносить кистью значения ос тальных параметров ткани. Сначала создадим карту толщин, используя метод раскраски карты вершин. Для это го можно воспользоваться уже имеющейся моделью или открыть файл сцены f l a g P r o p e r t i e s . m a , находящийся на прилагаемом книге CD. Выделите сетку ткани, а затем выберите в меню nCloth пункт Edit nCloth => Paint Vertex Properties => Thickness •
(Правка объекта nCloth => Pacкpacкa свойств вершин => Толщина). Откроется стандартное окно Tool Settings (Параметры инструмента) для инструмента Paint (Кисть), а сетка по лотнища флага станет черной, указывая на нулевую толщину всех ее вершин (сейчас они взаимодействуют таким образом, как будто ткань очень тонкая). Установите значение около 0.25 параметра Opacity (Непрозрачность), выберите операцию r e p l a c e (Замена) в раскрывающемся списке Paint Operation (Окрашивание), установите значение 1 пара метра Value (Значение) и приступайте к раскраске сетки ткани. Вполне благоразумно сделать материал ткани более толстым вблизи древка флага и более тонким ближе к краю полотнища, но более творческий подход к раскраске продемонстрирован на рис. 23.17, а. Как показано на рис. 23.17, б в режиме отображения параметра Self Collision Thickness в виде сфер, чем светлее раскрашиваемый участок, тем толще оказывается ткань во время самовзаимодействия. А на рис. 23.17, в показан флаг при воспроизведе нии его анимации.
Рис. 23.17. Нанесение толщины флага кистью (а); наглядное представление полу чающихся в итоге значений толщины (б); флаг при воспроизведении анимации (в)
Моделирование ткани с использованием системы nCloth
895
Теперь нанесем карту растяжения как текстуру. Для этого вернитесь сначала к сохра ненному ранее файлу сцены, где отсутствует карта толщин, чтобы лучше видеть резуль таты раскраски на карте складок. Выделите объект ткани, а затем выберите пункт меню Edit nClotlr => Paint Texture Properties => Stretch • (Правка объекта nCloth => Раскраска
свойств вершин => Растяжение). На этот раз сетка ткани первоначально выделена белым цветом, указывая на то, что весь флаг оказывает сильное сопротивление растягиванию. Оставьте без изменения выбранный черный цвет, чтобы он вычитался из текущего цвета, уменьшите непрозрачность приблизительно до величины о. 2 и приступайте к раскраске поверхности объекта ткани. На рис. 23.18 приведены результаты нанесения свойства растяжения: верхняя часть флага, выделенная черным, растягивается и свисает в боль шей степени, чем нижняя часть, выделенная белым цветом.
Ограничители Помимо параметров ткани и внешних сил, для повышения реалистичности модели используют ограничители. Если ограничители перемещения уже использовались ранее для привязки некоторых вершин полотнища флага к его древку, то для решения этой же задачи имеются и другие ограничители. На рис. 23.19 показан раскрытый пункт nConstraint меню nCloth. Обратите внимание, что помимо пунктов наложения ограниче ний, в этом меню имеются также пункты нанесения параметров ограничений и преобра зования текстурных карт в карты параметров ограничений (подробнее о нанесении ки стью параметров и атрибутов в системе nCloth см. в предыдущем разделе). Кроме того, в этом меню есть пункты правки принадлежности к ограничителям (т.е. влияния видов ограничителей на отдельные вершины) и удаления ненужного ограничителя. Ниже при ведено краткое описание каждого вида ограничителей.
Puc. 23.18. Нанесение карты рас тяжения на полотнище флага
Рис. 23.19. Пункты меню nConstraint
Ограничитель Transform (Перемещение), который уже использовался в начале этой главы, привязывает выделенные вершины к локатору в пространстве. При перемещении в пространстве или вращении локатора привязанные к нему вершины повторяют эти движения, а вслед за ними приводятся в движение и остальные части объекта ткани по ходу анимации.
896
Глава 23
Ограничитель Component То Component (Компонент к компоненту) аналогичен ог раничителю "кнопка", используемому другими средствами моделирования ткани, но об ладающий большей гибкостью. Позволяет прикрепить пассивный объект (например, кнопку) к объекту ткани. Кроме того, данный ограничитель позволяет присоединять другие объекты ткани, например карман рубашки, к объекту nCloth, что обеспечивает больше функциональных возможностей, чем классическое кнопочные ограничители. Пассивные объекты, подобные кнопкам, будут и далее оставаться твердыми, тогда как присоединенные объекты ткани будут сгибаться, как и предполагалось. Ограничитель Point То surface (Точка к поверхности) позволяет прикреплять ткань к пассивным объектам и очень удобен для соединения элементов каркаса с объектом, расположенным ниже. Так, если в одежде персонажа имеются узкие лямки на плечах, с помощью ограничителя Point То surface их можно "прилепить" к плечам персонажа и не позволить им соскальзывать. Ограничитель Slide On surface (Скольжение по поверхности) является видоизме ненным вариантом ограничителя Point То surface, обеспечивающим прилипание вер шин объекта ткани к поверхности, но в то же время позволяющий скользить по ней в ог раниченных пределах. Возвращаясь к примеру одежды с узкими лямками, добавим, что данный ограничитель позволит узким лямкам, оставаясь на плечах персонажа, немного соскальзывать при движении. Такой ограничитель (аналогично ограничителю Point То surface) может использоваться для имитации скольжения одной ткани по другой, а так же скольжения ткани по пассивной геометрической форме. Ограничитель W e l d Adjacent Borders (Объединение смежных границ) в какой-то степени аналогичен ограничителю Component То Component, хотя он предназначен для того, чтобы объединить края двух объектов ткани и заставить их действовать как единый объект в ходе анимации. Так, если рубашка и ее рукава смоделированы в виде отдельных объектов, с помощью ограничителя W e l d Adjacent Borders рубашку можно соединить с рукавами, чтобы создать из них единый объект. Ограничитель Force Field (Силовое поле) прикладывает отталкивающую силу в пре делах сферической области. Действие силового поля распространяется на весь объект, но приносит большую пользу, если воздействует на отдельные вершины пассивного объекта или объекта ткани. В этом случае поле может быть использовано для отталкивания от дельных участков ткани, стремящихся проникнуть в другие объекты, осуществляя, по мере необходимости, локальную коррекцию модели. Для того чтобы применить ограни читель Force Field к отдельным вершинам, выделите эти вершины, а затем создайте си ловое поле. Ограничитель Attract То Matching Mesh (Притяжение к согласующей сетке) приво дит сетку (или выделенные вершины) в соответствие с находящимся на сцене пассивным объектом с аналогичной топологией. На практике исходную сетку, из которой создается объект ткани, можно сначала сдублировать, а затем деформировать, придав ей иную форму, после чего создать анимацию по ключевым кадрам с использованием данного ог раничителя так, чтобы объект ткани попадал в необходимую форму на заданном кадре анимации. И хотя такой прием отличается от "подлинного" моделирования, он, тем не менее, позволяет придать ткани определенный вид в нужный момент времени. Ограничитель Tearable surface (Рваная поверхность) интересен тем, что позволяет создавать рваные участки на объекте ткани. Под внешним воздействием, величина кото рого определяется параметром Glue Strength (Интенсивность сцепления), ткань рвется, образуя рваные участки. После применения данного ограничителя можно нанести ки-
Моделирование ткани с использованием системы nCloth
897
стью значения параметра Glue Strength так, чтобы задать те участки ткани, которые должны рваться легче. Для этого достаточно выбрать пункт меню nConstraint => Paint Properties by Vertex Map => Glue Strength (Система nConstraint => PacKpacKa свойств no карте вершин => Интенсивность сцепления). Ограничители Disable Collision (Отмена взаимодействия) и Exclude Collision Pairs
(Исключение взаимодействующих пар) позволяют отдельным объектам ткани (или же частям каждого из них) не взаимодействовать с другими объектами, находящимися на сцене. В частности, ограничитель Disable Collision отменяет взаимодействия со всеми ос тальными объектами на сцене (как пассивными, так и объектами ткани), тогда как огра ничитель Exclude Collision Pairs исключает взаимодействия только с конкретными пас сивными объектами или же с другими объектами ткани. Для того чтобы наложить огра ничитель Disable Collision, достаточно выделить ткань (или контрольные вершины на ткани), для которой требуется отменить взаимодействие на сцене. А для того чтобы на ложить ограничитель Exclude Collision Pairs, выделите все объекты ткани (или кон трольные вершины на этих объектах), для которых требуется исключить взаимодейст вие, а затем выберите данный ограничитель.
Поля Если С И Л Ы тяжести и ветра являются неотъемлемой частью исходного ядерного ре шателя, то для воздействия на модель ткани могут быть созданы поля целого ряда других сил. Это те же поля, что и для моделирования частиц, поэтому если приходилось пользо ваться частицами, то они должны быть знакомы. Поля могут существовать в трех формах: автономной, объемной и объектной. => Автономные поля существуют на сцене независимо от объектов ткани или геометрических объектов, оказывая влияние на все объекты сцены, если только не включен режим Attenuation (Затухание). В этом случае поле будет затухать по мере отдаления от источ ника. По мере надобности такие поля могут быть перемещены (повернуты или масшта бированы) на сцене. Для создания автономного поля достаточно выбрать его из пункта Fields меню nCloth, например Fields => Turbulence (Поля => Турбулентность). Объемные поля также не зависят от других элементов сцены, но порождают соответ ствующие силы в пределах объемной формы. В отличие от автономных полей, объемные поля действуют только в объеме, определяемом выделенной формой, а за пределами это го объема их силы не оказывают никакого воздействия на объекты. Для этого можно ис пользовать такие формы, как куб ( C u b e ) , сфера (Sphere), цилиндр (Cylinder), конус ( C o n e ) и тор (Torus), изменяя их форму и размер. Для формирования объемного поля сначала создайте автономное поле, а затем выберите для него требуемую объемную фор му из раскрывающегося списка Volume shape (Объемная форма) в разделе Volume Control Attributes (Атрибуты управления объемом) редактора атрибутов, как показано на рис. 23.20. После выбора формы объема становятся доступными некоторые параметры, в зависимости от вида выбранной формы. В частности, флажок Volume Exclusion (Исключение объема) изменяет действие поля на обратное: когда он установлен, сила поля воздействует только на объекты, находящиеся вне его объема. В полях Volume Offset X, Volume Offset Y и Volume Offset Z можно задать смещение поля относительно точки его создания на сцене. Несмотря на определенную пользу от данного элемента управления, как правило, намного проще сместить сам объем поля в окне сцены. Для сферических и тороидальных объектов доступно свойство Volume Sweep (Ограничение
Глава 23
898
объема), позволяющее сократить объект до определенной части его формы (например, полусферы вместо целой сферы). И наконец, для тороидальной формы доступно свойст во Section r a d i u s (Радиус сечения), изменяющее толщину такой формы. На рис. 23.21 приведены результаты воздействия поля тороидального завихрения на флаг.
Puc. 23.20. Создание поля объемной фор мы в редакторе атрибутов
Рис. 23.21. Результаты воздействия объем ного поля завихрения на флаг (для большей наглядности такого воздействия было отме нено действие силы тяжести) И наконец, объектные поля применяются к самим объектам nCloth и порождают си лы в зависимости от положения и скорости движения вершин объектов nCloth по ходу воспроизведения анимации. Вершины объекта nCloth с примененным полем действуют в качестве источников этого поля, оказывая воздействие на другие объекты сцены. Напри мер, силовое поле ветра или спутной струи может быть применено к объекту ткани (или пассивному объекту), оказывая воздействие на окружающие объекты ткани в зависимо сти от движения того объекта ткани, который порождает силу ветра. Для формирования объектного поля создайте сначала само поле, выделите его, а затем, нажав клавишу <Shift>, выделите объект nCloth, к которому требуется применить данное поле. Затем выберите пункт меню Fields => Fields Use Selected As Source Of Field (Поля => Использовать поля, выделенные в качестве источника поля), чтобы применить силовое поле к объекту (в этом случае поле станет порождаемым по отношению к объекту ткани). Далее следует краткое описание полей, которые могут быть использованы вместе с объектом nCloth. Поле Air имитирует воздействие воздуха на объект. К его предвари-
/
Моделирование ткани с использованием системы nCloth
899
тельно заданным разновидностям относятся ветер ( W i n d ) и спутная струя ( W a k e ) . Так, поле W i n d имитирует ветер, дующий в заданном направлении, а поле W a k e — действие воздуха, возмущенного проходящим мимо объектом, подобно листьям, развевающимся от проезжающей мимо автомашины. Поле Drag имитирует воздействие сопротивления воздуха на объект, тормозя движение ткани (т.е. оказывая ей сопротивление). Поле Gravity равномерно прикладывает к объекту силу тяжести (как правило, в отрицатель ном направлении по оси Y). Поле Newton, связанное с силой тяжести, представляет со бой радиальное гравитационное поле "планетарного" характера, которое убывает обратно пропорционально квадрату расстояния от центра объекта. Такое поле моделирует воз действие одних крупномасштабных объектов (подобных планетам) на другие, и поэтому оно может оказаться не вполне пригодным для ткани. Поле r a d i a l также имитирует силу радиального действия, но не убывает в пространстве, а втягивает или же отталкивает все объекты от себя в пределах заданного сферического объема. Поле Turbulence возмущает объект ткани, подобно кружащемуся вихрем ветру или другой силе завихрения. Это поле очень удобно использовать для того, чтобы придать модели более ярко выраженный вздымающийся вид. Поле Uniform действует аналогично полю r a d i a l , но прикладывает силу в одном направлении и равномерно, тогда как поле r a d i a l действует в пределах за данного сферического объема. Поле Vortex втягивает в себя объекты по спирали (или от талкивает их), подобно водовороту. Оно также удобно для создания эффекта торнадо. Поле Volume Axis перемещает ткань по заданной оси в пределах объемной формы и мо жет быть использовано для создания эффектов, в которых ткань перемещается в ограни ченном пространстве, как, например, белье в стиральной или сушильной машине.
Кэширование в системе nCloth Несмотря на то что модели nCloth получаются отличного качества, они требуют про должительных расчетов, особенно при взаимодействии ткани со многими внешними си лами, поэтому повторное моделирование ткани может оказаться досадно медленным, ко гда требуется воспроизвести анимацию. Как выход из этого положения, в системе nCloth применяется кэширование, позволяющее сохранять на диске состояние модели на каж дом кадре. Использование кэша позволяет смоделировать ткань только один раз, а в дальнейшем Майя считает состояние модели ткани с диска. Благодаря этому намного ус коряется воспроизведение анимации, а также появляется возможность выбирать на вре менной шкале любой момент, не повторяя создания анимации ткани до этого момента. Следовательно, можно уделить больше внимания другим элементам сцены (например, анимации лица персонажа или освещения). Конечно, если изменить какие-либо свойства ткани или решателя, изменить анимацию, или силы, или взаимодействия, или ограничи тели, то ткань придется анимировать повторно, чтобы получить правильные результаты. Помимо простого сохранения состояний ткани на диске, кэширование nCloth позво ляет сохранять анимацию ткани по частям в виде кэшированных фрагментов анимации геометрической формы, которые затем можно объединить и/или смонтировать в редак торе дорожек (подробнее о нелинейном монтаже и кэшировании геометрических форм см. в главе 10, "Нелинейная анимация"). О практическом применении кэширования речь пойдет в упражнении, приведенном далее в этой главе. Создать кэш нетрудно. Для этого выделите объект (или несколько объектов) ткани, а затем выберите пункт меню nCache => Create New Cache • (Система nCache => Создать новый кэш • ) . Среди параметров, доступных в окне Create nCloth Cache (рис. 23.22),
900
Глава 23
имеются самые разные способы создания и сохранения кэша. Так, в поде Cache directory указывается каталог, в котором кэш сохраняется на жестком диске. По умолчанию кэш хранится в подкаталоге данных проекта, но его можно хранить в любом другом месте, включая и внешний жесткий диск, если кэш окажется слишком крупным. Как и следова ло ожидать, в поле Cache Name указывается имя создаваемого кэш-файла. Под заголов ком File Distribution (Распределение файлов) имеется несколько вариантов сохранения файлов кэша. При выборе пункта One File Per Frame (Один файл на кадр) для каждого кадра анимации nCache создается отдельный файл, а при выборе пункта One File — один файл (хотя и очень крупный) для всего кэша. Если же выбрано несколько объектов тка ни, в таком случае следует установить флажок One File Per Geometry (Один файл на геометрическую форму), чтобы создать отдельный файл для каждого выделенного эле мента (и для каждого кадра анимации, если выбран пункт One File Per Frame). Анало гично кэшам геометрической формы, в Майя создается "главный" файл XML, исполь зуемый для хранения сведений обо всех остальных созданных файлах кэш. При повтор ном использовании кэша впоследствии доступ к нему обычно осуществляется с помощью главного файла XML, а не поиска среди отдельных файлов данных. Если в дальнейшем предполагается манипулировать файлами кэш определенным об разом (например, удалять вручную некоторые кадры и заменять их кадрами из других файлов), то следует выбрать пункт One File Per Frame. В противном случае лучше вы брать пункт One File, чтобы не создавать большой путаницы среди файлов, сохраняемых на диске. Варианты выбора, доступные под заголовком Cache Time r a n g e (Временной диапазон для кэша), позволяют кэшировать анимационные данные только в требуемом интервале времени. Так, если выбран вариант render Settings (Параметры визуализа ции), то кэшируются анимационные данные для кадров, заданных в окне render Settings. Если же выбран (по умолчанию) вариант Time Slider (Ползунок времени), то для определения временного диапазона используется текущее положение ползунка на временной шкале. Но если выбран вариант Start/End (Начало/Конец), то кадры для кэ ширования можно указать в находящихся ниже полях Start/End. В поле Evaluate Every Frame (Вычисления в каждом кадре) определяется, как часто при создании кэша ткани в системе nCloth используется выборка. Например, если установить в этом поле значение меньше 1, расчет модели ткани будет выполняться чаще, чем один раз за кадр. В поле Save Every Evaluation (Сохранить каждый результат вычислений) указывается, как час то сохраняются кэшированные данные. Так, при значении 1, устанавливаемом в этом по ле по умолчанию, кэшированные данные сохраняются для каждого кадра (или подкадра) анимации, что чаще всего и требуется. Итак, выбрав параметры в окне Create nCloth Cache Options по своему усмотрению, щелкните на кнопке Create, чтобы запустить моделирование и кэшировать данные на диск. По завершении кэширования анимация ткани будет считана с диска в сохраненном состоянии вместо ее повторного формирования, что позволит работать со сценой быст рее и эффективнее. Для того чтобы убедиться в этом, выберите произвольные моменты на временной шкале и понаблюдайте за тем, как обновляется анимация ткани в соответ ствующем состоянии. После создания кэша объекта ткани появляется несколько возможностей для мани пулирования им (рис. 23.23). В частности, кэш можно удалить, присоединить к другому файлу, отключить (что вынудит систему nCloth вновь прибегнуть к моделированию) или подключить кэш. Кроме того, можно заменить, присоединить, объединить элементы кэша или заменить либо удалить один кадр в кэше, а также нанести кистью весовые ко-
901
Моделирование ткани с использованием системы nCloth
эффициенты в пределах отдельного кэша. Если, например, имеется один удачный кэш для рукава рубашки и другой для самой рубашки, то можете объединить их вместе, ис пользуя удачной кэш только для рукава, но не для самой рубашки, и наоборот. И нако нец, из кэша можно создать полигональную исходную сетку для каждого кадра анима ции, используя пункт меню Transfer Cloth То Input Mesh (Перенести ткань на исходную сетку). Такие сетки могут служить в качестве целевых форм ткани при последующем моделировании или же для извлечения модели ткани в ее текущем состоянии для задан ного кадра (или ряда кадров).
Рис. 23.22. Окно Create nCloth Cache Options
Puc. 23.23. Меню nCache
Практика: модель рваной рубашки и брюк в системе nCloth В этом разделе предстоит воспользоваться знаниями, полученными в предыдущих разделах, для выполнения работы постановщика по одежде персонажей для одного кадра съемки. Независимо от вида создаваемой анимационной продукции, будь то небольшой короткометражный анимационный фильм, визуальный эффект для кинобоевика или ху дожественный анимационный фильм, существует несколько принципов и последова тельностей выполнения операций, которые помогут решить задачу ввода динамической ткани в кадр съемки или на сцену. В данном примере используется персонаж по имени Джек. Этот персонаж впервые появился в качестве вымышленного и томящегося от любви героя в короткометражном анимационном фильме "Первые впечатления" (First Impressions), созданном в универси тете Клемсона. В данном примере Джек должен иметь совершенно новый вид. Допустим, что Джек — пират, высадившийся на необитаемом острове в тропиках, чтобы исследо вать его. Одежда Джека изношена и изодрана, что предоставляет особый интерес для мо делирования ткани. Итак, откройте файл сцены j a c k _ c l o t h s e t u p . m a . Для сцены с тканью полезно ус тановить пространство проекта, чтобы использовать его для хранения кэшей, сценариев и других файлов. Для этого выберите пункт меню File => Project => New • (Файл => П р о е к т е Новый • ) . Присвойте новому проекту имя jack_clothsetup. Выберите ва риант Use Defaults (Использовать принятое по умолчанию), чтобы заполнить поля Project Data Locations (Места сохранения данных проекта), а затем щелкните на кнопке
902
Глава 23
Accept (Принять). В каталоге Maya/projects/jack_clothsetup будут созданы все каталоги, необходимые для нового проекта. На рис. 23.24 показан персонаж Джек, подго товленный для моделирования ткани.
Рис. 23.24. Персонаж Джек в рва ной одежде, готовой для модели рования Если воспроизвести данную сцену, то можно будет заметить анимационную оснастку персонажа с ключевыми кадрами. Это простая проверочная анимация диапазона движе ний оснастки Джека, предназначенная для опробования модели ткани. В данном приме ре предполагается, что для персонажа Джека и кадров съемки, в которых он появится, предстоит создать модель одежды средствами системы nCloth и добиться желаемого внешнего вида. Ниже приведена основная последовательность операций создания динамической ткани для одежды анимационного персонажа. 1.
Просмотрите анимацию, отметив в ней возможные ошибки.
2.
Осуществите кэширование анимации.
3.
Подготовьте ткань, примените к ней ограничители и т.д. Как правило, в производст венных условиях этот процесс автоматизируется с помощью сценариев MEL, или же разработчику предоставляется файл с подготовленными элементами сцены, в кото рый остается лишь импортировать и присоединить анимацию. Учитывая тот факт, что данный персонаж имеет деформирующую оснастку, остается лишь создать кэш геометрической формы деформирующегося персонажа, не прибегая к оснащению и использованию деформаторов.
4.
Устанавливайте по очереди различные параметры настройки nCloth до тех пор, пока не добьетесь желаемой анимации.
5.
После анимации ткани осуществите смешение кэшей и окончательную правку ре зультатов деформации.
6.
Управляйте тканью в режиме Beauty (Красиво) с использованием анимированной ткани и деформаторов оболочки.
Существуют два варианта моделирования рубашки и брюк. Они отличаются друг от друга количеством многоугольников. Назовем вариант с большим количеством многоугольником "beauty" (красивой) тканью, представляющей собой геометрическую форму, подлежащую
Моделирование ткани с использованием системы nCloth
903
окончательной визуализации. А вариант с низким разрешением будет использован для мо делирования ткани. В данном примере модель ткани уже готова, но обычно постановщику одежды персонажей приходится создавать ее самостоятельно. 7.
Передайте результаты анимации красивой ткани художнику по свету (возможно, в виде кэша геометрической формы, чтобы исключить издержки, связанные с наличи ем решателя nCloth и деформаторов).
Проверка анимации Получив первый раз сцену с анимационным персонажем, очень важно быстро прове рить движения и деформации персонажа. В данном случае интересны все участки, спо собные вызвать затруднения в ходе анимации. Ведь очень часто анимация, наблюдаемая в объектив снимающей камеры, может выглядеть отлично, но если присмотреться к ней внимательнее, то, скорее всего, обнаружатся мелкие препятствия, затрудняющие анима цию ткани. Например, решатели ткани неспособны справиться с таким недостатком, как проникновение одних конечностей сквозь другие или сквозь тело персонажа. Поскольку тело персонажа будет использовано для взаимодействий с тканью одежды, и если ткань будет проникать сквозь объект, с которым она взаимодействует, ее анимация может ока заться неудачной или стать причиной появления нежелательных артефактов. Одни разновидности взаимного проникновения частей тела персонажа могут быть легко устранены аниматором, а другие связаны с деформацией оснастки персонажа. К трудным участкам модели персонажа относятся места сочленений позади колен, впе реди бедер, на локтях и подмышках. Подобные недостатки могут быть устранены в ре зультате изменений оснастки персонажа или с помощью дополнительно введенных деформаторов. Для этого имеются самые разные способы. В частности, на трудных уча стках можно ввести скульптурные деформаторы или решетки, чтобы растолкать геомет рическую форму. Такие деформаторы можно даже настроить на применение только в том случае, если колено или локоть персонажа сгибается. Это делается с помощью дос тупной в Maya функции Set Driven Key (Установить управляемый ключевой кадр), бла годаря которой поворот сустава приводит в движение оболочку деформатора. Что же касается анимации персонажа Джека, то она выглядит довольно хорошо. Хотя в кадрах 60-80 появляется незначительное взаимное проникновение на передних участ ках бедер, когда поднимаются ноги персонажа. Кроме того, если внимательно проанали зировать кадр 120, то можно заметить некоторое перекрытие грудной клетки и живота. Возможно, это и не вызовет затруднений в ходе анимации, но все же следует взять на за метку на тот случай, если они все-таки возникнут. В конечном итоге обнаруженные при знаки возможных затруднений заставляют внимательнее анализировать упомянутые выше кадры, чтобы выявить в них действия, которые могут привести к зависаниям в ходе анимации.
Кэширование анимации При открытии файла сцены в первый раз обнаруживается, что деформация геометри ческой формы персонажа Джека приводится в действие его оснасткой, в том числе кла стером s k i n C l u s t e r и другими деформаторами. Деформирующаяся геометрическая форма будет использоваться для взаимодействий с тканью одежды. Для ускорения мо делирования можно зафиксировать деформации персонажа Джека, используя систему кэширования геометрической формы. Это намного упростит сцену и ускорит работу над
904
Глава 23
ней. Несмотря на то что оснастка персонажа Джека довольно проста и приводится в дей ствие при перемещении по временной шкале, у многих персонажей она очень сложная и обладает всевозможными системами деформации, обеспечивающими окончательный вид персонажа. Обычно тело персонажа состоит из одной поверхности. Но тело персонажа Джека со стоит из четырех отдельных частей: головы, левого предплечья, правого предплечья и туловища вместе с ногами. Для того чтобы получить все необходимое для анимации, предстоит кэшировать каждую часть тела персонажа по отдельности. Чтобы создать кэши для этих частей тела персонажа, воспользуйтесь встроенной в Майя системой кэ ширования геометрических форм. Для этого выберите пункт меню Animation => Geometry Cache => Create New Cache • (Анимация => Кэш геометрической формы => Создать новый кэш •) и установите параметры в состояние, используемое по умолчанию. Используя устанавливаемые по умолчанию параметры для кэширования каждой части тела персо нажа, создайте кэш в каталоге /data данного проекта. Итак, создайте кэши геометриче ской формы рук и тела персонажа из группы jak_bound_poly, а также головы из объ екта j a k _ b a s e h e a d — всего четыре кэша. После создания кэшей можно сдублировать геометрическую форму и импортировать кэши в полученные дубликаты. Для этого выделите группу jak_bound_poly, сдублируйте ее и присвойте ей и геометрической форме новые имена, добавив суффикс _cache в конце. Далее сдублируйте объект j a k _ b a s e h e a d и присвойте ему имя jak_basehead_cache. Затем объедините оба кэша, jak_bound_poly_cache и jak_basehead_cache, в одну новую группу под названием jak_cache_data. После этого необходимо удалить предысторию всех новых сеток и их родительских групп. Для этого выделите соответствующие объекты и выберите пункт меню Edit => Delete By Type => History (Правка => Удалить по типу => История), что гарантирует отсутствие всякой связи со старой оснасткой персонажа. Далее необходимо импортировать полученные выше кэши во все новые секи. Начни те с головы персонажа, выделив объект jak_basehead. Затем выберите пункт меню Animation => Geometry Cache => lmport Cache (Анимация => Кэш геометрической формы =>
Импортировать кэш). Перейдите в каталог /data, где находится соответствующий файл кэш геометрической формы головы персонажа. Выделите файл XML jak_baseh e a d S h a p e . xml, связанный с геометрической формой головы персонажа, и щелкните на кнопке Import. Повторите эту же процедуру для геометрической формы рук и тела пер сонажа. Кроме того, полезно иметь в своем распоряжении суставы из оснастки персонажа, чтобы с их помощью присоединить любые деформаторы, необходимые для создания окончательного вида. Для этого достаточно выделить все суставы в группе jak_BOUND_JOiNTS и выбрать пункт меню Edit => Keys => Bake Simulation (Правка =>
Ключевые кадры => Фиксировать анимацию). При устанавливаемых по умолчанию зна чениях параметров в каждом кадре создается ключевой кадр анимации каждого сустава. После импортирования кэшей и фиксации суставов в распоряжении разработчика имеются все необходимые части оснастки персонажа. Чтобы упростить сцену, с нее мож но удалить следующие объекты: jack (управляющая оснастка), basehead и jack_ BASE_JOlNTS. Сверьте все необходимые элементы сцены с содержимым окна иерархи ческой структуры на рис. 23.25. Теперь на сцене должна быть только кэшированная гео-
Моделирование ткани с использованием системы nCloth
905
метрическая форма персонажа, зафиксированные суставы, а также предметы одежды и красивая ткань, что намного ускоряет анимацию.
Рис. 2325. Вид окна иерархической струк туры со всеми элементами сцены, необхо димыми для начала анимации ткани
Постановка одежды из ткани Теперь все готово для постановки одежды из ткани средствами nCloth. В зависимости от типа персонажа и требований к анимационной продукции моделируемая одежда пер сонажа может сильно отличаться: от простой юбки до самых сложных костюмов, на ко торые только способно воображение. В данном примере модель одежды персонажа Дже ка достаточно простая. Частично процесс постановки одежды из ткани заключается в создании деформаторов оболочки между "простой" ("sim") и "красивой" ("beauty") тканью, чтобы первая приво дила в движение вторую. Может также возникнуть вопрос: почему бы не моделировать геометрическую форму с высоким разрешением? В самом деле, красивая ткань в данном примере моделируется достаточно просто, но, как правило, геометрическая форма кра сивой ткани бывает двухсторонней, чтобы показать толщину одежды персонажа, и может содержать мелкие, отдельно смоделированные детали рубашки и брюк, в том числе пуго вицы, швы, карманы и манжеты. Такие детали и двухстороннюю геометрическую форму очень трудно, если вообще возможно, анимировать эффективно, поэтому приходится применять один из стандартных в данной отрасли практических приемов: моделировать сетку ткани с низким разрешением, а затем использовать ее для приведения в движение сетки с высоким разрешением. Начинать следует с моделирования ткани брюк, поскольку она будет использоваться при моделировании ткани рубашки в качестве объекта взаимодействия. Отключите слои представления beauty_cloth и sim_shirt, чтобы лучше видеть геометрическую форму брюк с низким разрешением. 1.
Выделите объект jak_pants_garment и выберите пункт меню nCloth => nCloth => Create nCoth • .
2.
Выберите в открывшемся окне вариант W o r l d Space Output, оставьте без изменения выбранную вкладку решателя nucleus1 и щелкните на кнопке Create Cloth. В итоге будет создан новый ядерный решатель (т.е. узел nCloth), а также новая исходная сетка. При этом объект jak_pants_garment скроется, а в узле nCloth будет ис пользоваться исходная сетка inputMesh. Вновь созданный решатель, скорее всего, получит название nucleus1 и будет связан с объектом nCloth. Объект nCloth, веро-
906
Глава 23 ятнее всего, получит название nClothl, а узел его формы (Shape) будет содержать все свойства ткани брюк.
3.
Переименуйте узел nClothl в nClothPants, а его форму — в nClothPantsShape.
4.
Выход вновь созданного объекта nClothPants связан с исходной сеткой outputMesh, получающей типичное имя наподобие polySurfacel. А узел формы сетки outputMesh обычно называется outputClothl. Переименуйте их в nClothPantsOutputCloth и nClothPantsOutputClothShape соответственно.
5.
Переименуйте решатель в nucleusJackClothes, чтобы заменить его стандартное имя nucleusl.
Если щелкнуть на кнопке Play, брюки будут проваливаться сквозь персонаж, по скольку еще не были определены объекты взаимодействия и ни одна из частей брюк не присоединена к геометрической форме персонажа Джека. Поэтому сначала необходимо добиться взаимодействия брюк с ногами персонажа. Кроме того, брюки должны взаимо действовать только с определенной частью тела Джека. А голова и руки персонажа в ка честве объектов взаимодействия не нужны. Разумеется, если бы руки или голова каса лись брюк, их также пришлось бы сделать объектами взаимодействия. Для взаимодействия можно было бы выбрать объект bodyG_cache, но для более полного контроля над объектом взаимодействия и большей ясности сделайте деформи рующуюся копию тела персонажа, чтобы использовать ее для взаимодействия. Для этого выделите объект bodyG_cache и введите команду polyDuplicateAndConnect в окне редактора сценариев. По этой команде создается дубликат объекта bodyG_cache, в точ ности повторяющий его движение, поскольку входная сетка inMesh вновь созданного объекта связана с выходной сеткой outMesh исходного объекта bodyG_cache. Пере именуйте полученный дубликат в jak_body_collsion. Поскольку значения масштаба объекта jak_body_collsion подчинены, оставьте вновь созданный объект в группе jak_bound_poly_cache.
Кроме того, не все грани геометрической формы тела персонажа должны взаимодей ствовать с брюками. Так, руки, стопы и почти вся верхняя часть тела персонажа не тре буются для взаимодействия в данной анимации, а значит, они не должны вносить лиш ние грани в расчеты модели, замедляя без веских оснований данный процесс. Преимуще ство дубликата геометрической формы заключается, в частности, в том, что ненужные грани можно удалить, а сетка будет по-прежнему деформироваться, как и предполага лось. Итак, выделите грани объекта jak_body_collision на стопах персонажа, как по казано на рис. 23.26, и удалите их. В итоге получится ярко выраженный фрагмент гео метрической формы, вполне пригодный для эффективного использования в качестве объекта взаимодействия. Для создания объекта взаимодействия с брюками выполните следующее. 1.
Выделите объект jak_body_collision.
2.
Выберите пункт меню nCloth => nCloth => Create Passive •.
3. Выберите узел nucleusJackClothes в качестве решателя. 4.
Щелкните на кнопке Make Collide.
В итоге создается узел nRigid, который следует переименовать в nrigidPantsBody, чтобы определить его в качестве узла твердого тела, который будет управлять
Моделирование ткани с использованием системы nCloth
907
взаимодействием брюк с телом персонажа. Устанавливаемые по умолчанию значения параметров этого узла можно оставить пока что без изменения. Если теперь воспроизвести сцену с самого начала, то можно заметить, что брюки взаимодействуют с телом персонажа, но в конечном итоге они соскальзывают вниз из-за отсутствия ограничителей, способных удерживать их. По существу, персонажу Джеку требуется ремень, чтобы брюки не падали с него. Для этого достаточно применить под ходящие ограничители типа nConstraint, чтобы поддержать связь между поясом брюк и телом персонажа. 1.
Выделив сетку nClothPantsOutputCloth, щелкните правой кнопкой мыши и вы берите в контекстном меню пункт Vertex (Вершина).
2.
Выделите вершины на верхнем краю брюк, как показано на рис. 23.27.
3.
Нажав клавишу <Shift>, выделите объект j a k _ b o d y _ c o l 1 i s i o n .
4.
Выберите пункт меню nCloth => nConstraint => Point To surface. В итоге будет создан узел dynamicConstraint.
5.
Переименуйте узел dynamicConstraint в dynamicConstraintPantsWaist.
Рис. 23.26. Грани, выделенные на стопах персонажа
Рис. 23.27. Выделение вершин на поясе брюк позволит привязать их к телу персонажа с помощью огра ничителя
Теперь брюки будут взаимодействовать с телом персонажа, оставаясь привязанными к его талии с помощью ограничителя. Закончив основную подготовку брюк к моделиро ванию ткани, перейдите к подготовке рубашки. Используя объект jak_shirt_garment, создайте узел nClothShirt и переименуйте его в nClothSbirtOuputClotb. Восполь зуйтесь для этого уже имеющимся решателем nucleusJackCloth.es, созданным ранее для брюк. Кроме того, выберите для рубашки ту же геометрическую форму объекта jak_body_collision в качестве объекта взаимодействия. Моделируемые брюки должны правильно взаимодействовать с рубашкой. Как из вестно, за один проход в решателе nCloth получаются решения для нескольких слоев одежды. Но для этого ему нужно знать о расположении слоев одежды друг над другом. В данном примере можно выделить три следующих слоя взаимодействия: тело, выде ляемое на слое 0, брюки — на слое 1 и рубашка — на сдое 2. Благодаря этому рубашка бу дет взаимодействовать как с брюками, так и с телом персонажа, а брюки будут оставаться под рубашкой в тех местах, где эти предметы одежды перекрываются.
908
Глава 23
Д Л Я рубашки можно выбрать аналогичный ограничитель типа nConstraint. Воротник и вырез будут разъезжаться, если не скрепить их вместе. В частности, для того чтобы привязать воротник рубашки к телу персонажа Джека, необходимо применить ограничи тель Point to surface.
1. Выделите вершины вокруг воротника. 2.
Выберите пункт меню nCloth => nConstraint => Point On surface.
3.
Переименуйте вновь созданный ограничитель dynamicConstraint в dynamicConatraint_PTS_SbirtCollar.
Для того чтобы скрепить вырез в рубашке Джека с ее воротником, необходимо при менить ограничитель Component to Component. 1. Выделите две вершины, расположенные друг против друга на вырезе рубашки, как показано на рис. 23.28. 2.
Выберите пункт меню nCoth => nConstraint => C o m p o n e n t То Component.
3.
Переименуйте вновь созданный ограничитель dynamicConstraint в dynamicConstraiat_CTC_ShirtCollar_01.
4.
Наложите еще два ограничителя Component to Component на вершины, располо женные на краях выреза, выполнив ту же последовательность операций, что и на ша гах 1-3.
Рис. 23.28. Вершины, выделенные на вырезе рубашки Основная подготовка к моделированию ткани рубашки и брюк Джека проведена, а теперь нужно настроить соответствующие параметры, чтобы добиться наиболее каче ственного моделирования ткани обоих предметов одежды персонажа.
Изменение параметров ткани и решателя При воспроизведении анимации обнаруживается ряд недостатков, которые следует устранить. Эта часть задачи в большей степени связана с экспериментированием над ани мацией ткани. Наилучших результатов такого экспериментирования можно добиться лишь со временем и с опытом. А поскольку система nCloth и ядерный решатель относятся к но вым средствам, большинство пользователей Майя не имеют особых преимуществ с точки зрения практического опыта использования этих средств. В то же время принцип действия большинства решателей ткани основан на настоящих динамических силах, поэтому, при звав на помощь собственную интуицию и проявив известную долю творческих способно-
Моделирование ткани с использованием системы nCloth
909
стей, вполне можно найти решение, которое приведет к отличным результатам. В связи с этим следует заметить, что любые предположения, которые делаются в этом разделе отно сительно манипулирования свойствами ткани, являются не более чем предположениями. Здесь предоставляется возможность исследовать систему nCloth и манипулировать ее свойствами наиболее интересным и привлекательным образом. Ведь иногда даже самые не вероятные варианты выбора способны привести к наилучшим результатам. В данном примере можно оставить без изменения устанавливаемые по умолчанию значения параметров решателя и начать с анимации ткани брюк. При устанавливаемых по умолчанию значениях параметров в узле nClothPantsShape брюки съезжают вверх, когда Джек поднимает ноги или сгибает их в коленях. Брюки двигаются достаточно изящно, хотя и немного пружинисто, кроме того, они слишком сильно растягиваются и отскакивают при взаимодействии с телом персонажа. По-видимому, пружины, или связки, соединяющие вершины сетки ткани, слишком свободны и допускают значительное растягивание и сжатие. Поэтому попробуйте увели чить сопротивление растягиванию и сжатию. Для этого увеличьте до 125 значение пара метра Stretch r e s i s t a n c e и до 75 значение параметра Compression resistance. Это помо жет устранить растягивание, но в то же время внесет ненужные помехи. Для возмещения данного недостатка попробуйте увеличить до 10 значение параметра Damp, до 5 — значе ние параметра Collision Damp и до 2 000 — значение параметра Max Iterations. Кроме того, полезным окажется изменение до 0.2 параметра Thickness, до 0.1 — параметра Friction, до 0 . 5 — параметра Point Mass, а также установка флажка Trapped Check. Следует также иметь в виду влияние на брюки той части тела персонажа, которая выступает в роли объек та взаимодействия. Так, если увеличить до 0.5 значение параметра Friction в узле nrigidPants, скольжение ткани по поверхности объекта взаимодействия уменьшится. У модели ткани рубашки свои сложности. Если используются устанавливаемые по умолчанию значения параметров ткани, то пружины, или связки, оказываются слишком свободными и рубашка явно съезжает на голову персонажа Джека, когда он поднимает руки или наклоняется. При этом происходят также многочисленные самопроникновения рубашки. Для устранения этих недостатков откройте редактор атрибутов для выделенного узла рубашки nClothShirtOuputCloth и увеличьте до 125 и 75 соответственно значе ния параметров Stretch r e s i s t a n c e и Compression r e s i s t a n c e . Измените до 0.2 значение
параметра Thickness, до 1 — значение параметра Friction, до 5 — значение параметра Damp, до 1 — значение параметра Collision Damp, до 40 — значение параметра Max Self Collision Iterations, до 2 о о о — параметра Max Iterations, до 0.2 — параметра Point Mass, до 2 — па раметра Collision Layer, до 0.1 — параметра Self Crossover Push, а также установите
флажки Trapped Check и Self Trapped Check. По завершении всех этих настроек модель значительно улучшится и станет более устойчивой, как показано на рис. 23.29.
Кэширование анимации Как упоминалось выше, кэширование анимации ткани может оказаться весьма по лезным как для ускорения работы в диалоговом режиме со сценой, содержащей модель, так и для последующей правки анимации ткани. Для одновременного кэширования ани мации ткани рубашки и брюк можно воспользоваться системой кэширования. 1. Выделите узлы nClothShirtOutputCloth и nClothPantsOuputCloth. 2.
Выберите пункт меню nCloth => Create New Cache •.
Глава 23
910
Рис. 23.29. Вид персонажа Джека после настройки модели ткани 3.
В открывшемся окне выберите вариант O n e File Per Frame или One File и установи те флажок One File Per Geometry. В данном примере отличия в режимах кэширова ния не имеют особого значения.
4.
Щелкните на кнопке Create, чтобы начать процесс.
Некоторое время спустя воспроизведение завершится, и анимация ткани будет пол ностью сохранена на диске. Если же потребуется повторить анимацию, удалите ее кэш на диске и создайте новую. В некоторых случаях необходимого движения удается достичь с первого раза, а в дру гих для этого приходится соединять вместе отдельные части разных фрагментов анима ции. Как уже упоминалось, для смешения кэшей можно воспользоваться редактором до рожек. При смешении кэшей иногда оказывается полезно создать чистый, "ограниченный" вариант ткани. Для этого сначала создаются дубликаты предметов одежды из ткани, а затем они подвергаются воздействию деформаторов оболочки, которые придают им форму моделируемой ткани. Полученные таким образом предметы одежды кэшируются и далее используются для смешения с другими кэшами анимации ткани. Другой способ создания такой "ограниченной" ткани заключается в получении варианта одежды с огра ничителем Point to surface, наложенным на всю одежду. Если сохранить большое значе ние параметра Strength, то получится поведение модели ткани, которое может быть кэшировано и смешано. Для манипулирования кэшированной моделью ткани пригодны деформаторы сеточ ного и кластерного типов. В частности, их можно использовать для получения опреде ленного силуэта персонажа или для устранения некоторых видов взаимного проникно вения, от которого нельзя полностью избавиться при моделировании. Следует, однако, иметь в виду, что такие деформированные варианты ткани требуют повторного кэширо вания, чтобы смешивать их с другими кэшами в редакторе дорожек.
Управление красивой тканью После того как будут завершены все операции анимации, смешения и деформации ткани, в результате которых были получены удовлетворительные результаты, настанет время воспользоваться моделью ткани с низким разрешением для управления движени ем красивой ткани. Этот последний этап работы может быть выполнен с помощью дос тупных в Майя деформаторов оболочки.
Моделирование ткани с использованием системы nCloth
911
Перейдите в начальный кадр и активизируйте слой представления ткани, чтобы была видна красивая ткань. 1.
Выделите объект jak_shirt_beauty и, нажав клавишу <Shift>, выделите узел nClothShirtOuput.
2.
Выберите пункт меню Animation => Create Deformers => Wrap Deformer (Анимация => Создать деформаторы => Деформатор оболочки).
Благодаря этому красивая ткань рубашки приводится в движение при перемеще нии ткани nClothShirtOuput. Повторите шаги 1-2 для ткани брюк с низким и высо ким разрешением, чтобы наладить управление движением красивой ткани брюк при анимации ткани. Теперь красивая ткань готова для передачи на следующую стадию производственного процесса (как правило, это освещение и визуализация). Остается нанести последний штрих — создать кэш геометрической формы для красивой ткани. Благодаря этому дан ная сцена избавляется от всех лишних объектов nCloth, которые уже не требуются на по следующей стадии производства и только загромождают ее. Для того чтобы просмотреть анимацию персонажа Джека в одежде, откройте файл фильма JackClothSim.mov на прилагаемом к этой книге CD. В этом фильме показано, как сетка с высоким разре шением приводится в движение. А на рис. 23.30 показан визуализированный кадр из этого фильма.
Рис. 23.30. Персонаж Джек в ру башке и брюках с высоким раз решением, которые приводятся в движение тканью с низким раз решением Как следует из данного примера, система nCloth позволяет добиться отличных ре зультатов моделирования ткани после некоторой настройки и экспериментирования. Используя описанные здесь принципы, можно снарядить свои персонажи одеждой из динамической ткани, приводимой в движение средствами nCloth.
Резюме Как было продемонстрировано в этой главе, новый решатель ткани nCloth в Maya, использующий механизм на основе технологии nucleus для моделирования ткани, явля ется надежным, оперативным и относительно простым средством создания ткани из лю-
912
Глава 23
бого полигонального объекта. Создать саму ткань нетрудно, но намного труднее настро ить ее многочисленные свойства и атрибуты, чтобы добиться точной имитации желаемо го эффекта. Возможность настраивать свойства решателя и ткани, вводить силы и взаи модействия, наносить кистью значения атрибутов и кэшировать результаты делает но вую систему nCloth в Майя одним из самых эффективных решателей ткани на рынке и превращает ее в отличный инструмент для технических постановщиков и аниматоров, которым требуется создавать реалистичные эффекты ткани для своих персонажей.
Предметный указатель Brush Attribute Editor, 683 Buffer curve snapshot, 363 Buffer window, 526
A Action safe line, 358 Adaptive sampling, 520 => AE, 287 => Allowance, 256 Alpha channel, 518 Ambient, 402 Ambient occlusion, 533 Anchor, 215 Animate, 343 Animation, 126 Anticipation pose, 353 API, 626 Application Programming Interface, 626 Approximation Editor, 598 Area, 402 Attractor, 857 Attribute, 630 Editor, 30; 41; 43; 57; 100; 287 Spreadsheet, 513 Auto keyframe, 113 B Baking, 304; 731 Barn Doors, 411 Base object, 255 Batch rendering, 543 Bevel, 193 Binding, 311 Blend Shape, 255 deformer, Editor, 253 Blending, 384 Bone, 310 , Bookmark, 64; 299 Branching, 641 Breakdown, 287
.
276
Caustic light, 571 Channel Box, 30; 43 Character, 373 Character map, 388 Chord length parameteriZation, 437 Clamped tangent, 298 Clip, 286 Clipping plane, 502 Cluster, 309 Cluster deformer, 266,312 Collision layer, 717 Color, 400 Color bleeding, 572 Color file, 460 Command line, 47; 75; 626 Comment, 645 Component, 87 Component mode, 37; 87 Composition, 400 Compression pose, 353 Connection Editor, 66 Construction history, 39; 96 Contact marker, 333 Contact plane, 334 Contact pose, 356 Context menu, 88 Continuity, 209 Control
curve, 679 Vertex, 134; 180; 181 Vertices, 38 Creation node, 58 Current Time Indicator, 46
914
Предметный указатель
Curve flow, 758 CV,38; 134; 180; 181 Cycled animation, 304 D DAG node, 58 Debugging, 644 Decay rate, 404 Declaration, 638 Deformer, 309 Depth map, 412 Depth of field, 510 Device Aspect ratio, 507 Diffuse channel, 443 Directional, 121; 402 Disk based dmap, 414 Display layer, 86 Distribution, 400 Dmap bias, 413 Dmap resolution, 413 Dollying, 34; 35 Dope sheet, 294; 367 Drawing, 132 Dynamic animation, 285 Dynamic constraint, 728 E Edge-loop, 235 Edit Point, 134; 180; 181 Effector, 315 Effects animation => 285 End effector, 315 Envelope, 256 Environment Fog, 418 EP, 134; 180; 181 Exposure node, 590 Extruding, 160 F FBIK, 309; 321; 331 Feedback history, 75 Feedback line, 644 FG, 582 Field, 517; 745 Field rendering, 521
File node, 105 File texture, 427 Fill light, 401 Fillet, 195 Filleting, 193 Film Aspect r a t i o , 507 Final Gather, 572; 582 Final Gather map, 586 Fixed tangent, 299 FK, 314 Flag, 627 Flat tangent, 298 Flicker, 521 Floating menu, 36 Fluid container, 776 Focal length, 503 Fog, 416 Follicle, 810 Forward Kinematics, 314 Front, 32 Frustum, 502 Full Body IK, 309; 321; 392 Fur Attribute map, 854 Fur description, 842 G Geometry caching, 390 Geometry constraint, 265 GI, 573 Global illumination, 571; 573 Glow, 685 Glow Linear, 421 Goal, 745; 750 Gobo, 406; 423 Graph, 71 Graph Editor, 71; 297 Graphical User Interface, 646 Grayscale file, 460 Grid, 31 Group, 59; 86 Group node, 86 GUI, 646 H
Handle, 51 Handle vector, 315 I
915
Предметный указатель Hardware render buffer, 525 HD, 233 HDRI, 590 Heads Up Display, 159; 261 Height field, 802 Height map, 802 Help line, 47 Hierarchical edit, 257 Hierarchical tree, 85 Hierarchy, 267 High Definition Video, 233 High Dynamic r a n g e Image, 590 Hot key, 29 Hotbox,30;54 Hotkey, 78 Hotkey Editor, 78 HUD, 159; 261 Hull, 180; 181; 187
Input connection, 39 Intensity, 400 Interactive Photorealistic rendering, 125; 401 Interlacing, 517 Inverse Kinematics, 314 I O r , 552 401; 532 IPS, 125 Irradiance, 572 Isoparm, 183; 186
IPR,
T
Joint, 208; 264; 310
К
Human IK solver, 321 Hypergraph, 61; 98; 428 Hypershade, 68; 103; 428 Keyframe, 109 Keyframe animation, 285 Kicker, 401 Knot, 181
I IBL, 587 Icon, 29 IK, 314 handle, 315
L
r o t a t e Plane, 316 Single Cham, 316
lattice, 208; 309
solver, 315
Left Mouse button, 34 Lens Flares, 422 Lifespan, 735 Light Fog, 418 BS curve, 134
spring, Illumination, 685 Image Aspect r a t i o , 507 texture, 704 Image-based lighting, 587 Impact pose, 356 Incremental save, 82 Index Of refraction, 552 Indirect lighting, 571 Infrasampling, 550 Input box, 40
=>
70
L o c a l
о с с 1 ш 1 о П ;
ш
Lock,W Loop, Y52 Looping, 635»
Macros, 74 Main menu bar, 30 Manipulator, 5У
916
Предметный указатель
Marking menu, 30; 34; 55; 79 Mask, 406 material, 102 Maya Embedded Language, 47; 625 Hardware, 525 node, 630 MEL, 47; 625 Menu, 29 Menu set, 35; 56 Menu Set Editor, 56 Middle Mouse button, 34 MM, 34 Molding, 276 Morphing, 255 Motion blur, 512; 567 blur factor, 567 capture, 286 Move, 34 Movement, 400 Moving hold pose, 354 N Naming convention, 84 Node, 44; 59; 95; 631 Nonlinear animation, 286; 373 Non-Uniform rational B-Spline, 129; 179 NURBS, 179 NURBS curve, 181 NURBS-поверхность, 129; 185
О Object, 83 Object mode, 37; 87 Occlusion, 554 Offset, 256 Offset mesh, 605 Orthogonal plane, 235 Outline, 609 Outliner, 60; 101 Output connection, 39 Output line, 626 Oversampling, 550; 709
P ParameteriZation, 182 Parenting, 59 Parsing, 644 Participating media, 565 Particle cache, 749 instancing, 761 object, 734 Patch, 186 Path animation, 285 Perspective, 32 Perspective camera, 498 Physical fog, 420 Pick-walk, 258 Pinning, 334 Pivot point, 92 Pixel Aspect r a t i o , 507 Plateau tangent, 299 Plugin manager, 80 Point, 121; 402 Polygon, 129 Polygonal, 233 Polyline, 134 Posing, 347 Primitive, 133 Procedural texture, 104; 427 Procedure, 650 Profile, 610 Project, 81 Projection method, 431 Proxy object, 143; 723 Python, 630
r r a m p node, 438 r a m p texture, 742 r a n g e Slider, 31; 46 raytracing, 521; 551 reference, 389 referenced scene, 387 refining, 347 region of effect, 181 relationship Editor, 407 render layer, 46; 533
917
Предметный указатель render Layer Editor, 534 rendering, 122 rendering camera, 358 resolution, 506 result line, 627; 629 reverse node, 435 revolve node, 204 revolved surface, 191 rig, 309 rigging process, 375 r i g h t Mouse button, 34 rigid, 377 rigid-body spring constraint, 757 r i m light, 595 RM, 34 r o l l joint, 325 r o o t , 311 r o t a t e , 34 r o t a t e disc, 317
s Scanline, 521 Scattering, 595 Scene, 81 Scene menu, 31 Scene window, 31 Script, 74; 266; 652 Script Editor, 47; 74; 626 Sculpt deformer, 311 SDS-поверхность, 233 Selection mask, 37 Selection queue, 76 Selection set, 86 Selective visibility, 400 Setting keyframe, 109 Shaded mode, 48 Shaded view, 170 Shader, 67; 102; 103 Shading, 67 engine, 555; 683 group, 99 group node, 95 network, 70 Shadow map, 561 Shadow mask, 406 Shape node, 58; 95
Shelf, 30; 41 Shell, 277 Side, 32 Single-node camera, 498 Skeleton, 309; 310 Skin, 310 Skin cluster, 266 Skinning, 266 Smooth, 311 object, 143 preview, 240 Smoothed preview, 143 Snap, 39 Soft-body spring, 757 Span, 181; 186 Specular highlight, 103 Spline, 297 Spline drift, 298 Spline tangent, 297 Spot, 121; 402; 409 Spring animation, 691 Spring mesh solver, 802 Sprite, 759 Squash deformer, 293 Status line, 30; 35 Stepped tangent, 298 STROke, 655; 658 Subdiv proxy, 143 Subdivision surfaces, 233 SubDs, 233 surface continuity, 211 surface fillet, 193 surface normal, 131 Surfacing tool, 766
T Tab, 41 Tangency, 209 Target object, 255 Tear-off menu, 36 Technical animation, 286 • Template mode, 142 Tessellation, 186 Texture reference Object, 448 Three-node camera, 498 Tickmark, 381
918
Предметный указатель
Tileable texture, 674 Time marker, 379 Time Slider, 31; 46; 288; 289 Timeline, 46; 292 Timing, 294; 347 Tool Box, 30 Toon line, 609 Toon shader, 606 Top, 32 Top pose, 356 Transform node, 95 Transparency map, 434 Traversal depth, 65 Trax Editor, 373 Trimming, 193 Triple shading switch node, 456 TRO, 448 Tube, 658; 670 Tumble, 34 Tweak node, 263 Twist disc, 317 Two-node camera, 498
и Uncoil pose, 355 UV map, 259 UV Texture Editor, 463 V Variable, 637 Vector, 768 connection, 63 rendering, 528 View, 31 View Compass, 34 View panel, 31 View-port, 31 Virtual slider, 34 Volume, 402 Volume emitter, 745 Volume Fog, 420 Voxel, 776
Wireframe mesh, 48 Work area, 70 Workspace, 31 World origin, 264 Wrap deformer, 208; 256 Wrap object, 277 Z Z-Depth, 412; 503; 518 Zoom, 34 A Автоматическая установка ключевых кадров, 113 Адаптивный контроль образцов, 520 Анализ, 644 , Анимационная кривая, 71 Анимация, 126; 343 вдоль траектории, 285 с использованием ключевых кадров, 285 эффектов, 285 Анкер, 215 Аппаратная визуализация, 525 Аппаратный буфер визуализации, 525 Аппроксимация, 599 Атрибут, 630 Аттрактор, 857 Б
1
Базовый объект, 255 Безопасная область действия, 358 Блик, 103 Блокировка канала, 117 Буфер копий кривой, 363 Буферное окно, 526
В
W •Weight factor, 256 Wireframe, 237
Вектор, 768 Векторная визуализация, 528 Векторная связь, 63 Верхняя поза, 356 Весовой коэффициент, 256; 337 Вид, 31
91
Предметный указатель сбоку, 32 сверху, 32 спереди, 32 Видео высокого качества, 233 Визуализация, 122; 498 методом построчного сканирования,521 с использованием полей, 521 Визуализирующая камера, 358 Виртуальный ползунок, 34 Вкладка, 41 Воксель, 776 Временная шкала, 46; 292 Встроенный язык Maya, 47 Встроенный язык сценариев Maya, 625 Входящая связь, 39 Выборка, 588 Выборочная видимость, 400 Выдавливание, 160 Высокий динамический диапазон, 590 Г Галтель, 195 Геометрический ограничитель, 265 Геометрическое кэширование, 390 Гиперграф, 61; 98; 428 Гипершейдер, 68; 103; 428 Главное меню, 30 Глобальное освещение, 571; 573 Глубина, 518 по оси Z, 412; 503 представления, 65 резкости, 510 Горизонтальная касательная, 298 Градиентная текстура, 742 Графический интерфейс пользователя, 646 Группа, 59; 86 выделения, 86 тонирования, 99
д Движение, 400 Движение вида, 34 Двухузловая камера, 498
Деформатор, 208; 309 кластера, 312 кластеров, 266 оболочки, 208; 256 плавной модификации, 276 сжатия, 293 Динамика твердых тел, 707 Динамическая анимация, 285 Динамический ограничитель, 728 Диск кручения, 317 Диск поворота, 317 Дисковая карта глубин,414 Дискретизация, 588; 709 Диспетчер дополнений, 80 Дополнение кадра, 518
Ж Жесткая привязка, 311 Жидкостные эффекты, 775
3 Закладка, 64; 299 Закрепление, 334 Заполняющий источник света, 401 Затемнение, 554 Затенение, 406; 423 Захват движения, 286 Звено, 181; 186 И
Иерархическая структура, 59; 60; 101 Иерархическое дерево, 85 Иерархическое редактирование, 257 Иерархия, 267 Извлекаемое меню, 36 Изобразительная текстура, 104 Изогнутый поток, 758 Изопараметрическая линия, 183; 186 Инверсная кинематика, 314 всего тела, 309; 321; 331 Индикатор текущего времени, 46 Инкрементное сохранение, 82 Инструмент обработки поверхности, 166 сопряжения поверхностей, 193
920
Предметный указатель
Интенсивность, 400; 406 Интерактивная фотореалистическая визуализация, 125; 401; 532 Интерфейс Майя, 30 Интерфейс прикладных программ, 626 Информационный дисплей, 159; 261 Исполнительный элемент, 315 История ответов, 75 История создания, 39; 96 Источник света направленный, 402 объемный, 402 плоский,402 прожектор, 402 рассеянный, 402 точечный, 402 Исходная связь, 39 К Кадровое окно, 506 Камера, 498 Канал диффузии, 443 Канал прозрачности, 518 Каркас, 237 Каркасная сетка, 48 Карта Ш,259; 461 атрибутов меха, 854 высот, 802 глубин, 412 окончательной сборки, 586 персонажа, 388 прозрачности, 434 теней, 561 Касание, 209 Касательная к плато, 299 к прямой,298 к сплайну, 297 с фиксацией, 298 Кластер, 309; 312 Кластер оболочки, 266 Клип, 286; 377 Ключ, 285 Ключевой кадр, 109; 286 Командная строка, 47; 75; 626
Комбинация клавиш, 29; 78 Комментарий, 645 Компас вида, 34 Композиция, 400 Компонент, 87 Конверт, 256 Конечный исполнительный элемент, 315 Контактная плоскость, 334 Контактный маркер, 333 Контейнер, 65; 429 Контейнер жидкости, 776 Контекстное меню, 88 Контровый источник света, 401 Контрольная вершина, 38; 134; 180; 181 Контур, 609 Корневой сустав, 311 Кость, 310 Коэффициент искажения изображения, 507 пикселя, 507 пленки, 507 устройства, 507 преломления, 552 размытости, 567 Кривая, 180 NURBS, 181; 185 управления, 679 Кэш частиц, 749 Кэширование, 899 Л Левая кнопка мыши, 34 Линейная кривая NURBS, 134 Линейное свечение, 421 Локальная перегородка, 613 Ломанная линия, 134
м Макрокоманда, 74 Манипулятор, 51 Манипулятор света, 410 Маркер, 51 IK, 315
Предметный указатель времени,379 инверсной кинематики, 315 сплайна, 316 Маркированное контекстное меню, 30; 34; 55 Маркированные контекстные меню, 79 Маска, 406 Маска выделения, 37 Материал, 102 Меню, 29 Меню сцены, ЗУ Мерцание, 521 Метод проекции, 431 Мех, 841 Механизм тонирования, 555 Многоугольник, 129 Монтажный стол, 294; 367 Морфинг, 255 Мультипликационная линия, 609 Мультипликационный тонер, 606 Мягкая тень, 412
н Набор меню, 35; 56 Наезд, 34; 35 Наклон камеры, 34 Направленный источник света, 121 Начало глобальных координат, 264 Недовыборка, 550 Нелинейная анимация, 286; 373 Неоднородный рациональный бисплайн, 129; 179 Непрозрачность, 422 Непрямое освещение, 571 Несвязная оболочка, 277 Нормаль поверхности, 131
О Область влияния, 181 Область просмотра, 31 Оболочка, 310 Обход, 258 Объект, 83 TRO, 448
оболочки, 277 ссылочной текстуры, 448 частиц, 734 Объемный источник света, 405 туман, 420 эмиттер, 745 Объявление переменной, 638 Ограничитель, 895 Одноузловая камера, 498 Окно оперативного доступа, 30; 54 просмотра визуализации, 530 сцены, ЗУ Окончательная сборка, 572; 582 Окружающее затемнение, 533 Окружающий туман, 418 Оператор / addAt.tr, 631 break, 643 default, 643 else, 642 else if, 642 for, 640 getAttr, 631 if, 642 listAttr, 631 move, 636 print, 638 setAttr, 631 switch, 643 Описание меха, 842 Опорная точка, 92 Ореол, 421 Ортогональная плоскость, 235 Освещение, 121; 685 на основании анализа изображений,587 Освещенность, 572 Оснастка, 309 Основной источник света, 401 Отблеск линз, 422 Отладка, 644 Отметка времени, 381 Отсечение, 193 Очередь выделения, 76
922
Предметный указатель п
Пакетная визуализация, 543 Панель, 30; 41; 77 вида, 31 главного меню, 35 инструментов, 30; 42 каналов, 30; 41; 43 Параметризация, 182 по длине связки, 437 Перевыборка, 550 Переменная, 637 Переход,641 Персонаж, 373 Перспективная камера, 498 Перспективное представление, 32 Петля, 152 Петля краев, 235 Пиктограмма, 29 Плавающее меню, 36 Плавная модификация, 255 Плавная привязка, 311 Пленочный канал, 506 Плиточная текстура, 674 Плоский источники света, 404 Плоскость изображения,509 отсечения, 502 цепи суставов, 317 Поверхностный материал, 103 Поверхность вращения, 191 Поверхность сопряжения, 195 Поворот камеры, 34 Подчинение, 59 Поза, 375 задержки движения, 354 контакта, 356 развертывания, 355 сжатия, 353 удара, 356 упреждения, 353 Поле, 517; 745; 897 ввода, 40 высот, 802 Ползунок времени, 31; 46; 288; 289 Ползунок диапазона, 31; 46 Полигональная топология, 233
Поправка, 256 Построчное сканирование, 521 Правая кнопка мыши, 34 Предварительный просмотр, 143 Привязка, 39; 311; 336 Привязка источников света, 407 Примитив, 133 Программная визуализация, 519 Продолжительность существования, 735 Проект, 81 Прожектор, 121; 409 Просачивание цвета, 572 Профиль, 610 Процедура, 650 Процедурная текстура, 104; 427 Процесс оснащения, 375 Процессор динамики, 708 Процессор тонирования, 683 Пружинная анимация, 691 Пружины мягкого тела, 757 Прямая кинематика, 314
Р Рабочая область, 70 Рабочее пространство, 31; 32 Разделенное упрощение, 143 Разделяющий ключевой кадр, 287 Размытость, 512; 567 Разрешение, 506; 508 Разрешение карты глубин, 413 Распределение, 400 Рассеивание, 595 Рассеянный свет, 403 Редактор анимационных, 297 анимационных кривых, 71 аппроксимаций,598 атрибутов, 30; 41; 43; 57; 100; 287 атрибутов кисти, 683 взаимосвязей, 407 дорожек, 373; 375 комбинаций клавиш, 78 наборов меню, 56 плавной модификации, 253 плоских текстур, 463
Предметный указатель связей, 66 слоев, 30; 41; 43; 45 слоев визуализации, 534 сценариев, 47; 74; 626 Режим выделения, 37 компонентов, 37; 87 объектов, 37; 87 предварительного просмотра, 240 тонирования, 48 шаблона, 142 Решатель Ык, 322 Ж, 315 Ш?,316 ikSC, 317 ikSpring, 320 инверсной кинематики, 315 инверсной кинематики человека, 321 каркаса пружин, 802 твердого тела, 712 Решетка, 208; 309 Родительские и дочерние отношения, 85
С Свет, 400 Световой ободок, 595 Световой туман, 418 Свечение, 421; 685 Связность, 209 Связность поверхности, 211 Сглаженный объект, 143 Сдвиг сплайна, 298 Сетка, 31 Сетка смещения, 605 Сеть тонирования, 70; 430 Система Fluid Effects, 775 mental ray, 545 nCloth, 877 Скелет, 309; 310 Скорость угасания,404; 407 Скос, 193 Скульптурный деформатор, 311 Слой взаимодействий, 717
923 визуализации, 46; 533 представления, 45; 86 Смешение, 384 кистей, 672 клипов, 383 Смещение, 256 Смещение карты глубин, 413 Соглашение об именовании, 84 Создание оболочки, 266 Создание поз, 347 Солнечный зайчик, 571; 578 Сопряжение, 193 Сплайн, 297 Сплайновый решатель инверсной кинематики, 318 Спрайт, 759 Средняя кнопка мыши, 34 Ссылка, 389 Ссылочная сцена, 387 Строка вывода, 626 ответа, 644 результата, 627; 629 состояния, 30; 35; 36 справки, 47 Ступенчатая касательная, 298 Сустав, 208; 264; 310 Сустав вращения, 325 Сцена, 81 Сценарий, 74; 266; 652
т Таблица атрибутов, 513 Тангенциальный манипулятор, 297 Текстурирование, 427 Теневая маска, 406 Тень, 412 Техническая анимация, 286 Тонер, 67; 102; 103 Тонирование, 67; 435 Тонированное представление, 170 Точечный источник света, 121 Точка редактирования, 134; 180; 181 Трассировка лучей, 415; 521; 551 Трехузловая камера, 498 Триангуляция, 186
Предметный указатель
924
Фолликул, 810 Фрагмент, 186 Фрагмент каркаса, 180; 181; 187
Туба, 658; 670 Туман, 416; 565
У Увеличение, 34 Узел, 44; 59; 95; 181; 631 DAG, 58 IBL, 588 Майя, 630 вращения, 204 градиента, 438 группы, 86 группы тонирования, 95 настройки, 263 переключения тонирования, 456 реверса, 435 создания, 58 трансформации, 95 файла, 105 формы, 58; 95 экспозиции, 590 Управляющий вектор, 315 Упрощенный объект, 143; 723 Упругий ограничитель твердого тела, 757 Уровень, 422 Усеченная область, 502 Установка ключевых кадров, 109 Уточнение, 347 Участвующая среда, 565
Ф Файл полутонов, 460 Файл цветов, 460 Файловая текстура, 427 Физический туман, 420 Фиксация, 304; 731 Фиксированная касательная, 299 Флаг, 627; 631 Фокальное расстояние, 503
X Хронометраж, 294; 347; 359
ц Цвет, 400; 406 Целевой объект, 255 Цель, 745; 750 Цикл, 639 do - while, 641 for - in, 640 while, 641 Циклическая анимация, 304
ч Частица, 733 Чередование, 517
ш Шейдинг, 67 Штамповка, 276 Шторка, 411 Штрих, 655; 658 Шум, 422
э Экземпляр частиц, 761 Эмиттер, 733 Эскиз, 132 Я Язык MEL, 47
Научно-популярное
издание
Д Ж О Н К У Н Д Е Р Т - Г И Б Б С , М А Й К ЛАРКИНС, ДАРИУС Д Е Р А К Ш А Н И , Э Р И К КУНЗЕНДОРФ
Освоение Maya 8.5 Литературный редактор Верстка Художественный редактор Корректоры
И А. Попова О.В. Романенко Е.П. Дынник Л А. Гордиенко, Л.В. Чернокозинская
Издательский дом "Вильяме" 127055, г. Москва, ул. Лесная, д. 43, стр. 1 Подписано в печать 25.07.2007. Формат 70x100/16. Гарнитура Times. Печать офсетная. Усл. печ. л. 74,8. Уч.-изд. л. 62,47. Тираж 2000 экз. Заказ № 2154 Отпечатано по технологии CtP в ОАО "Печатный двор" им. А. М. Горького 197110, Санкт-Петербург, Чкаловский пр., 15.