Назначение материалов и освещение сцены
Пришло время сделать объекты сцены более привлекательными. Материалы не только позволяют сделать поверхность цветной, но и добавляют ей такие характеристики, как зеркальные блики или прозрачность. Назначая материалы объектам сцены, можно выделить их друг относительно друга и придать им более реалистичный вид. В этом разделе вам предстоит узнать, как создаются и назначаются материалы в окне диалога Hypershade (Редактор узлов). В этом окне диалога также можно редактировать узлы, связанные с визуализацией, то есть текстуры, материалы, источники освещения, специальные эффекты и т. п. В упражнении этого раздела вы назначите материалы объектам сцены и произведете эскизную визуализацию, чтобы посмотреть, каким образом их требуется отредактировать. Работа с материалами неотделима от использования источников света, так как последние оказывают влияние на вид материалов.
Упражнение. Создание источников света и назначение материалов
Перед тем как приступить к визуализации сцены, необходимо создать хотя бы простейшую систему освещения. В этом упражнении будет создан направленный источник света, имитирующий солнце. Затем вы назначите текстуры объектам сцены.
- Прежде всего нужно добавить в сцену направленный источник света. Это делается при помощи команды Create > Lights > Directional (Создание > Источники света > Направленный свет). В окне каналов присвойте этому источнику имя SunRays. Чтобы посмотреть на действие этого источника света, нажмите клавишу 7.
- Теперь нужно изменить параметры созданного источника света. Его местоположение не имеет значения, так что настроить нужно только фокус. В окне каналов введите в поля Rotate Y (Поворот по Y) и Rotate Z (Поворот по Z) значения -132 и -38 соответственно.
- Введите в поля Scale X (Масштабирование по оси X), Scale Y (Масштабирование по оси Y) и Scale Z (Масштабирование по оси Z) значение 10, чтобы увеличить значок источника света и тем самым упростить процесс его выделения. В разделе Shapes (Формы) окна каналов измените значение параметра Use Raytrace Shadows (Использовать трассированные тени) на on. Теперь сцена достаточно освещена, чтобы визуализировать ее и рассмотреть материалы, так что пришла пора заняться их созданием.
- В Maya есть вариант компоновки окон проекции, наилучшим образом подходящий для работы с текстурами. Как показано на рис. 4.19, он включает окна проекции Perspective (Перспектива), Hypershade (Редактор узлов) и Render View (Визуализатор). Для перехода к данной компоновке воспользуйтесь командой Panels > Saved Layouts > Hypershade/Render/Persp (Панели > Заданные варианты компоновки > Hypershade/Render/Persp).
- Создание текстур является очень сложным процессом, поэтому в данном упражнении мы воспользуемся уже готовыми вариантами раскраски. Для их импорта щелкните на квадратике, расположенном справа от команды Import (Импорт) меню File (Файл), и в появившемся окне диалога Import Options (Параметры импорта) установите флажок Group (Группы). В раскрывающихся списках раздела Name Clash Options (Конфликтующие имена) выберите такие варианты, чтобы получилась строка Resolve clashing nodes with this string (Разрешить конфликтующие узлы с этой строкой), и введите в появившееся справа текстовое поле слово Water. Затем нажмите кнопку Import (Импортировать). В появившемся окне диалога выберите файл OceanWater.ma (он находится в папке Chapter_04\ Shaders\ на компакт-диске) и нажмите кнопку Import (Импортировать). В итоге в окне Hypershade (Редактор узлов) на вкладке Materials (Материалы) появится материал OceanWater, как показано на рис. 4.20.
- В окне Hypershade (Редактор узлов) щелкните правой кнопкой мыши на материале OceanWater и выберите в появившемся меню команду Graph Network (Сеть узлов). Это приведет к появлению в рабочей области окна Hypershade (Редактор узлов) всех узлов, использовавшихся для создания данного типа раскраски. Эту информацию можно использовать, чтобы разобраться, как работает раскраска, и в дальнейшем создать свою собственную.
Рис. 4.19. Вариант компоновки окон проекции, наилучшим образом подходящий для работы с текстурами
Рис. 4.20. Результат импорта материала OceanWater Назначение материалов и освещение сцены
- В окне проекции Perspective (Перспектива) выделите плоскость WaterPlane, затем щелкните правой кнопкой мыши на материале OceanWater и выберите в появившемся меню команду Assign Material to Selection (Назначить материал выделенному объекту).
- С помощью инструмента IPR (Интерактивная фотореалистичная визуализация) можно увидеть, как текстуры и источники освещения меняют вид сцены. Любое изменение цвета, материала, текстуры, освещения или теней приводит к обновлению сцены в окне Render View (Визуализатор). Прежде всего сфокусируйте изображение в окне проекции Perspective (Перспектива) таким образом, чтобы ясно видеть как участок земной поверхности, так и фрагмент водной глади.
- Начните воспроизведение анимации и остановите его, когда ползунок таймера анимации окажется приблизительно в середине диапазона. На панели инструментов окна проекции Render View (Визуализатор) нажмите третью слева кнопку, чтобы начать процесс интерактивной фотореалистичной визуализации. По сравнению с обычной тестовой визуализацией, этот процесс более долгий, потому что программа загружает в память всю информацию о каждом пикселе выделенной области. Благодаря этому впоследствии появляется возможность быстро обновить сцену после редактирования материалов или освещения. После завершения процесса визуализации в нижней части окна появляется надпись Select a region to begin tunning (Выделите обновляемую область). Нарисуйте выделяющую рамку, подобную показанной на рис. 4.21, начав движение указателя мыши с верхнего правого угла и закончив нижним левым. После завершения ее создания рамка станет зеленой.
Рис. 4.21. Выделение области, которая будет автоматически обновляться в процессе интерактивной фотореалистичной визуализации
- Откройте окно диалога Outliner (Структура), нажмите среднюю кнопку мыши и перетащите строчку placeBdTexture17 на строчку WaterGroup.
- Теперь нужно импортировать раскраску для земной поверхности. Повторите действия, описанные в пятом шаге, заменив слово Water в текстовом поле раздела Name clash options (Конфликтующие имена) словом Ground, и нажмите кнопку Import (Импортировать). В появившемся окне диалога выделите файл Oceanround.ma и снова нажмите кнопку Import (Импортировать). В результате в окне Hypershade (Редактор узлов) появится материал с именем OceanGround. Выделите плоскость GroundPlane и, щелкнув правой кнопкой мыши на новом материале, выберите в появившемся меню команду Assign Material to Selection (Назначить материал выделенному объекту). Изображение в окне проекции Render View (Визуализатор) будет автоматически обновлено. Сохраните сцену.
- Оставьте видимым только слой BoatL. Импортируйте материал OceanBoat.ma, используя процедуру, описанную в пятом шаге. В текстовое поле раздела Name clash options (Конфликтующие имена) введите слово Boat. В окне диалога Outliner (Структура) выделите строчку BoatG, затем щелкните правой кнопкой мыши на матер!гале Ocean Boat и выберите в появившемся меню команду Assign Material to Selection (Назначить материал выделенному объекту). Перейдя в окно проекции Perspective (Перспектива), нажмите клавишу f, чтобы сфокусироваться на изображении шлюпки.
- Визуализируйте шлюпку, и вы заметите, что текстура выглядит не совсем так, как требуется. Дело в том, что узлы размещения текстуры неправильно выровнены на поверхности объекта. Чтобы исправить их положение, щелкните правой кнопкой мыши на материале OceanBoat и выберите в появившемся меню команду Graph Network (Сеть графов). В сети материала OceanBoat есть узел place3dTexture_boat (рис. 4.22). Нужно изменить значения координат этого узла.
Рис. 4.22. Узел place3dTexture_boat определяет размещение текстуры на поверхности шлюпки
- Выделите упомянутый узел и откройте окно диалога Attribute Editor (Редактор атрибутов), нажав комбинацию клавиш Ctrl+a. Щелкните на кнопке Fit to group bbox (Разместить на поверхности габаритного контейнера группы) в разделе 3D Texture Placement Attributes (Параметры размещения трехмерной текстуры). В окне проекции Perspective (Перспектива) появится зеленая рамка, отмечающая положение текстуры на поверхности шлюпки.
- Рамка расположена под углом к поверхности шлюпки, так как последняя была развернута в процессе привязки к траектории движения. Нужно временно повернуть шлюпку в исходное положение и назначить ей узел размещения. Выделите объект BoatG и измените все значения параметров преобразования поворота в окне каналов на нулевые. Параметры, значения которых вы поменяли, выделены в окне каналов оранжевым цветом. Это значит, что данные значения использовались для задания положения объекта в ключевом кадре. Соответственно, если сейчас включить воспроизведение анимации, шлюпка автоматически примет нужную ориентацию по отношению к траектории движения.
- Снова выделите узел place3dTexture_boat в окне проекции Hypershade (Редактор узлов), вызовите окно диалога Attribute Editor (Редактор атрибутов), если вы его закрыли, и снова щелкните на кнопке Fit to group bbox (Разместить на поверхности габаритного контейнера группы). Теперь текстура корректно размещена на поверхности шлюпки, как показано на рис. 4.23.
Рис. 4.23. Результат настройки положения узла place3dTexture_boat
- Если теперь воспроизвести анимацию, окажется, что при перемещении шлюпки текстура остается на исходном месте. То есть возникает эффект скольжения текстуры по поверхности объекта. Этого можно избежать, сделав объект BoatG предком узла place3dTexture_boat. Откройте окно диалога Outliner (Структура) и средней кнопкой мыши перетащите строчку Groupl на строчку BoatG. Теперь при воспроизведении анимации положение текстуры будет меняться при изменении ориентации шлюпки.
- Сохраните сцену.