Текстурирование, подготовка моделей и сцен для последующего рендеринга — основные операции при создании трехмерных изображений. В программных пакетах для работы с ними существует много готовых моделей, карт текстурирования и процедурных текстур, что значительно облегчает процесс создания 3D-сюжетов. Ниже мы рассмотрим подобные инструменты в LightWave 6.0. Если необходимо найти 3D-модель, то хорошим источником станут 3D-пакеты, в составе которых уже имеется немалый набор качественных экземпляров, а также коммерческие библиотеки моделей и, конечно, Internet, где существует множество как свободно распространяемых моделей, так и реализуемых через электронные магазины. Здесь же мы продолжим рассказ о персонаже, создание которого описывалось в журнале «Мир ПК», № 12/2000, с.44.
Работа с текстурами и поверхностями в LightWave 6.0 имеет свои принципиальные особенности — все начинается с создания Surface-поверхности. Только после ее определения можно приступать к текстурированию модели, разбивая ее на любое число поверхностей и сохраняя целостность каркаса. Это позволяет помещать на одну модель различные текстуры. Для обозначения поверхности нужно выделить полигоны и, нажав клавишу Q, задать ее имя. Причем работать с поверхностями следует в первый же момент моделирования, создавая одноименные для каждого элемента поверхности. Тогда появится дополнительная возможность управлять полигонами каркаса командой Statistics из панели Tools.
Необходимо выполнить несколько операций подготовки каркаса к текстурированию. Сперва определим поверхности: зубы, белки глаз, зрачки, внутреннюю полость рта, ногти, собственно тело, футболку и шорты. Зададим весь каркас как поверхность с именем Telo, для чего перейдем в режим работы с полигонами и проследим, чтобы ни один из них не был выделен. Тогда операции действуют на все полигоны модели в текущем слое. Нажмем клавишу Q и наберем в единственном поле параметров поверхности имя Telo. Затем нужно аккуратно выделить полигоны, которые будут выполнять роль футболки (рис. 1а), снова нажать клавишу Q и назначить имя Futbolka. И подобное проделывается со всеми элементами. Чтобы было удобнее, после назначения имени задайте каждой поверхности разные цвета (рис. 1б). Для этого запустим Surface Editor, в его левой части выберем поверхность из списка и напротив поля Color выделим кнопку выбора цвета.
Рис. 1. Подготовка каркаса модели для текстурирования |
Когда все поверхности приобретут свой цвет, следует проверить, каким образом применение к модели операции metanurbs повлияет на характер граничных кривых между различными поверхностями. На рис. 1в показано, как неестественно может выглядеть срез шорт. Этот эффект можно ликвидировать, усилив детализацию. В данном случае можно разделить искривляющийся полигон пополам, что дает вполне приемлемый результат (рис. 1г). Также необходимо проконтролировать граничные кривые в области живота и рукавов футболки.
Затем определим еще две поверхности — фронтальную frontFutbolka и оставшуюся по умолчанию — и зададим им один цвет. Это позволит накладывать на грудь персонажа различные изображения, в данном случае — буквы LW. В LightWave 6.0 появилось средство UV-текстурирования, с помощью которого гораздо удобнее выполнять наложение карт изображений на одну поверхность, однако мы используем надежный и проверенный метод разделения поверхностей.
Текстуры
Для демонстрации основных приемов работы достаточно одной текстуры на груди персонажа, а для создания реалистичных моделей требуются десятки текстур. Итак, загрузим любой графический растровый редактор, например Photoshop. Создадим новый документ размером 400x300 точек в цветовом режиме RGB. С помощью инструмента Type посередине наберем большие буквы LW. Потом с помощью инструмента Magic Wand создадим зону выделения над буквами. Применив команду Select?Feather с параметром 10, получим заготовку для изображений текстуры. Удалим слой с буквами, а затем с помощью инструмента Paint Backet получим требуемое изображение символов, предварительно выбрав желаемый цвет.
Рис. 3. Изображения, подготовленные для текстурирования |
Сохраним файл, например, в формате JPG с именем LW-Color.jpg. Не закрывая его, создадим Alpha-канал для изображения, чтобы скрыть фон картинки. Для этого отменим операцию Paint Backet, установим текущий цвет черный и снова зальем картинку. Теперь снимем выделение и применим операцию Invert Color. Полученный Alpha-канал сохраним как файл LW-Alpha.jpg. Канал можно применить и для обеспечения рельефности букв LW (рис. 3).
Чтобы работать в LightWave 6.0 с файлами, имеющими расширение JPG, следует загрузить соответствующие подключаемые модули, входящие в стандартный пакет.
Вернемся в LightWave Modeler и откроем Surface Editor. Выберем для редактирования поверхность frontFutbolka и отметим кнопку T напротив свойства Color — откроется Texture Editor. Выделим кнопку Image и выберем в меню load image. Загрузим сначала файл LW-Alpha.jpg, а затем LW-Color.jpg. Снимем флажки Width и Height Repeat и укажем метод проецирования Planar, обычно устанавливаемый по умолчанию. Выберем ось проецирования в поле Texture Axis и приведем размер изображения к желаемому в нижней панели Scale.
Таким образом, мы расположили текстуру на груди персонажа, а результат можно увидеть, установив режим отображения Texture в одном из рабочих полей Modeler. Однако картину портит оставшийся белый фон. Уберем его, вернувшись в Texture Editor и создав с помощью кнопки Add Layer в левом верхнем углу еще один слой для текстуры. Чтобы корректно установить параметры, щелкнем мышью на нижнем слое и с помощью клавиши C скопируем все данные в буфер. Затем, нажав V, перейдем во второй слой и перенесем содержимое буфера в новый. Заменим карту с LW-Color на LW-Alpha и в меню Blending Mode выберем режим Alpha.
Реализуем эффект рельефности, для чего выйдем из Texture Editor и назначим карту рельефности в пункте Bump модуля Surface Editor, указав файл LW-Alpha.jpg. На этом работу в Modeler можно считать законченной. Сохраним все данные и загрузим Layout, где всегда приходится окончательно доводить текстурирование моделей. Здесь выстроим сцену, установим освещение и тогда сможем увидеть результаты нашей работы, применив программный рендеринг, чего нельзя сделать в Modeler (рис 4).
Рис. 4. Текстурированная модель в LightWave Modeler |
Пошаговая подготовка сцены
Загрузив Layout, поместим модель в сцену, используя команду Add?Load Object из панели меню Actions. На сцене будет присутствовать камера и один источник света, которые устанавливаются по умолчанию. Чтобы настроить элементы сцены, запустим команду Item Properties из нижней вспомогательной панели, предварительно выделив нужный объект.
Рис. 5. Сцена, подготовленная для рендеринга |
В данном случае дополнительно были введены плоскости Box-1 и Box-2, полученные из примитива Box. Применим процедурные текстуры: первую — для реализации пола, вторую — стены. Теперь организуем сцену с помощью команд трансформации Move и Rotate из панели Actions. Будет проще работать, если ограничить трансформации одной осью, указав курсором мыши нужную. Для создания сцены я подготовил персонаж с помощью скелетонов Layout (рис. 5), а для формирования освещенности использовал дополнительно еще один источник света, установив ему 10%-ную опцию Light Intensity в панели Item Properties. Окончательно настроим сцену, задав параметры камеры в Item Properties и значения рендеринга в меню Render?Render Options.
Настроим камеру, выбрав разрешение изображения в поле Resolution или вручную указав величины в полях Width и Height. Пункт Current Camera позволяет выбрать ту камеру, из которой будет проводиться рендеринг картинки. Параметры Zoom Factor — фокусное расстояние объектива камеры лучше настраивать интерактивно в меню Camera Zoom панели Actions. Упомяну еще опцию Antialiasing, которая сглаживает ребристость края объектов, возникающую из-за невысокого разрешения, однако она сильно замедляет скорость рендеринга, и потому ее лучше использовать лишь на заключительном этапе.
Из параметров рендеринга важны следующие:
- Render Display — определяет режим отображения процесса рендеринга;
- Ray Trace Shadows, Ray Trace Reflection, Ray Trace Refraction — сигнализируют о включении рендеринга теней, отражений и преломления соответственно;
- Save RGB в панели Output Files — помогает выбрать формат выходного файла и указать его имя.
Рис. 2 |
Теперь запустим обработку графики, нажав клавишу F9. В большинстве случаев только сейчас и начинается отладка текстур. Для модели с установленными цветами и единственной текстурной картинкой нужно еще настроить параметры поверхностей в панели Basic Surface Editor. Чтобы побыстрее сделать поверхности более привлекательными, целесообразно использовать процедурные текстуры, но вот когда требуется усилить реалистичность, то их нужно применять крайне осторожно, а лучше использовать простые карты текстур. Так что запаситесь терпением и экспериментируйте с настройками до тех пор, пока вас не удовлетворит качество изображения. Я же завершил работу с персонажем, ограничившись результатом, представленным на рис. 2.
ОБ АВТОРЕ
Виталий Галактионов, e-mail: vit@osp.ru
Описание Surface Editor
При запуске модуля на экране появляются два окна. Первое служит библиотекой материалов текстур. В его верхней части находится раскрывающееся меню, где выбирается тема, а ниже расположены варианты материалов, относящиеся к выбранной теме. Эта библиотека вполне пригодна для применения, так как имеет много реалистичных вариантов текстурирования. Во втором окне — базовом — содержатся все необходимые инструменты для работы с текстурами. В его левой верхней части располагается панель администрирования поверхностей, а под ней — окно отображения и выбора поверхностей. Перед редактированием нужно выбрать поверхность в левом списке окна Surface Editor, под которым находятся окно отображения текущего состояния поверхности и кнопки настройки.
Рабочая панель Surface Editor располагается справа и состоит из четырех закладок. Первая — Basic, содержит основные параметры поверхности, значения которых одинаковы для любого 3D-редактора: Color — определяет цвет поверхности; Luminosity — степень внутреннего свечения; Diffuse — отражающая способность (чем меньше значение, тем сильнее поверхность поглощает свет); Specularity — яркость блика на поверхности (соответствует степени матовости поверхности).
Параметр Glossiness определяет размер блика, Reflection — отражающую способность поверхности, Transparency — ее прозрачность, а Refraction Index — преломляющую способность прозрачного материала (он предназначен для получения эффекта линзы). Translucency определяет степень засвечивания поверхности обратно отраженными лучами от источника света, а Bump устанавливает, какое влияние оказывает Bump-карта или степень рельефности поверхности.
Панель Surface Editor |
Ниже находятся поля установки сглаживания поверхности: закладка Smoothing — задает величину угла между полигонами, до которой нужно сглаживать полигоны, и флажок, назначающий материалу двусторонность Double Sided (т. е. указывающий на необходимость рендеринга внешней и внутренней поверхностей объектов). Напротив каждого пункта имеется по три кнопки: первая — для выбора или установки конкретного значения; вторая, с символом Е, — для анимации значений параметров (начиная с LightWave 6.0 практически все параметры анимируются), третья, с символом Т, — для вызова Texture Editor (основного рабочего инструмента для работы с текстурами).
Вторая закладка, Advanced, служит для определения дополнительных параметров поверхности. В поле Alpha Channel можно выбрать метод, посредством которого поверхность будет отображаться в Alpha-канале, Glow Intensity определяет степень свечения поверхности, но для его активизации необходимо установить флажок Enable Glow в панели Image Process. Пункт Render Outlines позволяет отображать поверхность и выполнять рендеринг, представляя ее в виде каркаса.
Третья закладка, Environment, содержит элементы управления изображением на отражающей и преломляющей поверхностях. По умолчанию поверхность взаимодействует с фоновым (Backdrop) изображением, но если загрузить картинку из файла, она будет отражаться или преломляться с игнорированием фона.
И наконец, закладка Shaders, обеспечивающая загрузку файла и управление подключаемыми функциями, которые, как правило, представляют собой процедурные текстуры.
Модуль Texture Editor
В левой верхней части модуля находятся четыре кнопки управления слоями. С помощью кнопки Add Layer можно создать новый слой поверх существующего, при этом можно выбрать тип Image Map — изображение из файла; Procedural — процедурную карту; Gradient — мощный инструмент реализации спецэффектов. Остальные три кнопки обеспечивают копирование, вставку и удаление слоев. Под кнопками расположен перечень слоев со значениями прозрачности, а в левом нижнем углу — окно, где отображается состояние текстуры с кнопками настройки.
Содержимое правой панели изменяется в зависимости от типа выбранной текстурной карты, а ее верхняя часть постоянна. В верхнем, ниспадающем меню Layer Type можно выбрать или переопределить тип карты, а в нижнем — Blending Mode — задать режим ее преобразования. Первые пять строчек этого меню определяют тип перехода по применяемым операциям: Additive — сложение, Subtractive — вычитание, Difference — отличие, Multiply — умножение, Divide — деление. Строка Alpha определяет карту прозрачности: чем темнее точка, тем меньше видно сквозь нее из нижних слоев. Последняя строка Texture Displacement —режим наложения карт, при котором верхняя может искажать изображение на нижней.
Нижняя часть модуля Texture Editor зависит от типа выбранной карты. Для карт типа Image Map на панели имеются средства для загрузки изображений из файла и настройки его параметров. Так, в поле Projection можно выбрать вид проецирования карты на модель, в Image — либо загрузить файл изображения, либо установить один из уже загруженных. В расположенном под полем маленьком окошке видно саму карту и кнопку Edit Image для вызова простенького редактора изображений, который позволяет отрегулировать контрастность, насыщенность изображения, подкорректировать цветовую гамму и использовать функции доработки изображения аналогично модулям Photoshop.
Панель Texture Editor во время настройки градиента |
Слева помещены флажки Width и Height Repeat, разрешающие повторение картинки по горизонтали и вертикали, а также флажки Pixel Blending и Texture Antialiasing, нивелирующие артефакты текстуры при рендеринге крупным планом, когда ее разрешение ниже желаемого. В поле Texture Axis следует выбрать ось проецирования текстуры, а в поле Reference Object — назначить манипулятор текстуры, перетаскивая который можно управлять расположением текстуры на объекте. Внизу экрана представлены средства трансформации текстуры относительно поверхности: Scale, Position, Rotation и Falloff.
Вид панели для процедурных текстур Procedural отличается от Image Map только средней частью, где выбирается тип процедурной текстуры и задаются ее параметры. Панель Gradient служит для создания специальных эффектов при помощи взаимодействия градиентных переходов с нижележащими слоями текстур. В большом окне слева находится регулятор градиента, с помощью которого можно определить линейный градиент любой сложности. Справа вверху — выпадающее меню управления режимами действия градиента: Previous Layer — градиент отображается поверх мест плавных переходов на предыдущем слое, например, в месте перехода от черного к серому; Bump — градиентный переход определяется в зависимости от интенсивности Bump-карты; Slope — режим, при котором оценочным критерием для построения перехода является крутизна рельефности в Bump-карте.
Остальные режимы имеют пространственный характер и создают переходы в зависимости от угла зрения, местоположения источника света, камеры и пр. Отмечу только Weight Map, позволяющий с помощью назначенных установок управлять степенью сглаживания отдельных вершин при работе в режиме metanurbs в Modeler, а в Layout может использоваться для создания цветовых переходов.
В правой части панели управления градиентами расположены контрольные точки градиентного перехода, с помощью которых можно вставлять, удалять, масштабировать изображения и т. д.