В предыдущей статье («Мир ПК», № 9/2000, с. 72) мы познакомили вас с ПО для 3D-графики под названием LightWave, а теперь покажем, как можно использовать этот продукт для генерации персонажей. Моделировать будем с помощью metanurbs-технологии.

Сначала вы должны четко представить себе, кого хотите изобразить и как будет выглядеть герой. Затем следует выбрать способ создания персонажа. Есть проверенный и общепринятый — сделать большое число эскизов и выстроить по ним модель. А можно представить объект лишь в воображении, и тогда не придется заниматься рисованием, что доступно далеко не каждому, и подгонять его под эскиз. Следует только смоделировать героя и быстро придать ему нужные форму и пропорции.

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

Интерфейс

Перед моделированием следует изучить интерфейс LightWave Modeler. Его основное окно состоит из рабочего поля почти во весь экран, меню в верхней части панели, панели инструментов, стандартно расположенной слева, и вспомогательной панели внизу.

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

Панель меню содержит шесть закладок, и каждая из них открывает доступ к своему набору команд. Впрочем, предусмотрены и «горячие клавиши», — нажав , можно узнать текущие настройки и назначения их комбинации. Рассмотрим команды, требующиеся для построения полигональных и metanurbs-поверхностей. Щелкнув на закладке Objects, получим доступ к нескольким кнопкам, необходимым для создания примитивов и полигонов. При объемном моделировании примитивы являются теми кирпичиками, из которых строится весь проект. Box, Ball, Disc, Cone — набор небольшой, но его вполне достаточно, чтобы создавать любую фигуру, например, из Ball мы сделаем самого героя, а из Box — стопы ног и кисти рук. Внизу панели инструментов помещены кнопки Numeric и Options: первая — для задания параметров текущей команды, вторая — для общих настроек рабочей среды.

В панели инструментов Poligon потребуются следующие команды: Add Points, создающая вершины на ребре полигона; Triple, делящая полигональную поверхность на треугольники; SubPatch, преобразующая полигональную модель в metanurbs (при повторном нажатии происходит обратный переход); Freeze, «замораживающая» metanurbs-поверхность, т. е. превращающая ее в сглаженную полигональную модель с большим числом полигонов. Панель Display содержит полезные функции, облегчающие работу. Так, с помощью кнопки Options можно настраивать рабочие окна, помещать в них фоновое изображение, задавать индивидуальные параметры для каждого окна и пр. А четыре кнопки под словом Visibility позволяют работать только с частью полигональной модели, делая невидимыми неиспользуемые фрагменты.

Рассмотрим нижнюю вспомогательную панель. Слева на ней имеются кнопки переключения режимов: Points, позволяющая выделять и редактировать вершины; Poligons, обеспечивающая то же для полигонов; Volume, выделяющая прямоугольные области для обработки всего их содержимого (при однократном щелчке) и всего находящегося вне этих областей (при двукратном). Если требуется выделить объекты в режимах Points и Poligons, нужно помечать их мышью при нажатой левой кнопке, а если группу близкорасположенных вершин или полигонов — обвести при нажатой правой.

Обычно рабочее поле состоит из четырех окон, размеры которых можно изменять. А с помощью команды Toggle Single/Multiple Views можно раскрыть активное окно на весь экран. В левом верхнем углу каждого окна размещены два раскрывающихся меню: первое позволяет выбирать вид изображения в окне, второе регулирует режим отображения моделей. В правом верхнем углу есть три кнопки — для смещения рисунка, вращения и масштабирования.

Следует отметить, что чаще других используются команды из меню Modify: Move — переместить, Rotate — вращать, Size — изменять размер и Stretch — растягивать изображение.

Начинаем

Сперва создадим какой-нибудь объемный объект, из которого будем формировать персонаж. Используем примитив Ball. Для начала следует определить число сторон и сегментов и представить, из каких полигонов будем формировать руки, из каких — ноги и как построим голову. Однако нельзя забывать, что переизбыток сторон и сегментов может помешать работе и повлиять на топологию модели, неоправданно увеличив количество вершин и затруднив моделирование и анимацию.

Изобразим для примера сферу с 6 сторонами и 12 сегментами. Сначала следует выделить мышью кнопку Ball на панели инструментов Objects, потом на рабочем поле, нажав левую кнопку мыши, задать диаметр, а затем в другом окне высоту. Теперь с помощью клавиши N нужно задать число сегментов и сторон в полях sides и segments соответственно.

Далее в режиме редактирования вершин, обычно активизируемом при загрузке, выделяем вершины в области предполагаемой шеи, вызываем команду Stretch, переходим в окно «вид сверху» и, нажав левую кнопку мыши, создаем сужение в области шеи. Таким образом определяем, из чего будет сделан корпус, из чего голова (рис. 1а). Для того чтобы придать выделенным элементам некое подобие головы и корпуса, проводим операцию перемещения вершин. Для этого нужно вернуться в режим выделения, с помощью повторного вызова команды Stretch отметить «неправильно» расположенные вершины, активизировать команду трансформации и перетащить вершины на свои места (рис. 1б).

Рис. 1

Не стоит слишком усердствовать, выполняя эскиз, главное — подготовить «заготовку» для дальнейшей модификации. Нельзя забывать после каждой операции трансформации возвращаться в режим выделения, снимать текущие выделения клавишей и снова выделять вершины или полигоны для следующей операции.

Теперь подошла очередь вытягивать конечности с помощью инструмента Smooth Shift из меню Multiply. Перейдем в режим работы с полигонами и выберем на корпусе два полигона, из которых будем вытягивать ноги (рис. 1в). Активизируем команду и перемещаем мышь с нажатой левой кнопкой. Теперь можно нажать клавишу N, чтобы задать параметры операции и поставить в поле Max Smoothing A значение 0. В результате получился один сегмент ноги, а чтобы сделать следующие, вернитесь в режим выделения и повторите операцию столько раз, сколько требуется сегментов (рис. 1г).

Аналогично строятся руки, уши, нос, хвост, морда и т. д. Не расстраивайтесь, если конечности растянуты не в ту сторону. Всегда можно трансформировать отдельные части и поместить их там, где нужно. И даже не нужно конкретизировать, например указывать, что следует «переместить вершины среза будущей руки на столько-то сантиметров, или пунктов, или клеточек». Процесс полигонального моделирования достаточно быстр и интерактивен, поэтому большинство решений принимаются исходя из внутренних ощущений целостности модели. Подправить длину рук или ног проще и быстрее, чем указывать точные координаты при их создании. При объемном моделировании можно отдать предпочтение визуальной оценке размеров и пропорций модели.

После обработки заготовки получается нечто отдаленно напоминающее задуманный персонаж (рис. 2а). Если не терпится посмотреть, каким он станет после применения metanurbs, нужно нажать клавишу <Тab> (рис. 2б). В таком режиме можно редактировать модель, перетаскивая вершины, чтобы подкорректировать результирующую поверхность. Затем снова нажмите <Тab>, и в результате получится модифицированный полигональный объект.

Рис. 2

Теперь пора добавить стопы, кисти и прочие «мелочи». Перейдем во второй слой, отметив вторую кнопку в панели сверху справа. Чтобы отобразить основной слой, выделите нижний треугольник первого слоя. Используя команды из верхнего правого угла рабочего окна, разместите основание будущей руки так, чтобы место для кисти было в центре экрана, и увеличьте масштаб. Таким образом мы настроили среду для моделирования кисти. Можно опять начать со сферы, но воспользуемся кубом. Заодно освоим новый инструмент моделирования — изменение топологии модели.

Повторим процедуру создания примитива, используя инструмент Box (рис. 3а), разместив его у основания кисти и придав соответствующие пропорции. Теперь нужно сделать полигоны для вытягивания пальцев. Перейдем в режим редактирования полигонов, выделим тот, на месте которого должны начинаться пальцы и, нажав клавишу X, удалим его. Чтобы создать новые полигоны, следует на открывшихся ребрах разместить новые вершины; в данном случае три сверху и три снизу для четырех пальцев. Выделив полигоны, на которых будут создаваться вершины, перейдите в меню Poligon и нажмите кнопку Add Points. Теперь в окне перспективы с помощью левой кнопки мыши при нажатой клавише <Аlt> поверните рисуемую кисть так, чтобы были хорошо видны открытые полигоны. Щелкая три раза на верхнем полигоне и три раза на нижнем, получим шесть вершин.

Рис. 3

Переходим в режим редактирования вершин. Двигаясь по часовой стрелке, выделим четыре вершины у основания для мизинца и, нажав клавишу P, получим полигон. Первый полигон создан, теперь нужно повторить операцию для остальных пальцев (рис. 3б). Вытянем пальцы, трижды выполнив операцию Smooth Shift, и расправим их так, чтобы поверхности не пересекались (рис. 3в). Для большого пальца удалим боковой полигон на передней части кисти, сделаем четыре вершины, на них три полигона и из среднего вытянем большой палец. Осталось немножко подправить кисть и получим шаблон кисти, изображенный на рис. 3г.

Реализовать элементы персонажа — дело несложное, но лишь тогда, когда он состоит из простых элементов и не нужно добиваться реалистичности. Если же все элементы будут иметь сложную и сходную структуру, например пальцы, то более простым решением может оказаться использование шаблона. Но в этом случае возможны большие затраты времени на этапе присоединения шаблона к основанию. Поэтому нужно принять решение о выборе метода перед началом работы.

Попробуйте изобразить стопы своего героя самостоятельно, раз все операции известны, я же это сделал так (рис. 4).

Рис. 4

Теперь нужно описать все элементы единой поверхностью, чтобы места их соединений не проявлялись в виде рубцов при рендеринге или «плавающих рубцов» при анимировании. До того как подсоединить стопы и кисти к телу, их следует доработать, чтобы не корректировать каждый парный элемент. Затем готовые кисть и стопу нужно зеркально скопировать. Поэтому оставим активным второй слой в фронтальном окне, наберем комбинацию клавиш + V и установим ось копирования, нажав левую кнопку мыши. А отпустив ее, получим симметричное отображение элементов.

Основание кисти состоит из четырех вершин, место для присоединения кисти на руке также из четырех. Осталось только попарно объединить вершины, выполнив операцию Weld. Сначала перемещаем все объекты в один слой, при помощи копирования — C и вставки — V. Теперь выделим две точки, которые нужно совместить, и нажмем + W. Ту же операцию проведите для оставшихся точек на руках и ногах. Таким образом, получится модель персонажа с объемным каркасом.

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

Чтобы сделать из «шланга» нечто похожее, например, на ногу, нужно прорисовать на ней мышцы, коленку, связки и пр. Для демонстрации ограничимся лишь описанием построения коленного сустава и прорисовки основных мышц. Необходимо увеличить число вершин между верхом и низом ноги. Чтобы не возникал их избыток, нужно добавлять вершины, обдумывая необходимость наличия каждой новой.

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

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

На рис. 5а,б вы можете наблюдать последовательность действий, с помощью которых я увеличил детализацию поверхности в области колена. После этой операции, применяя Smooth Shift, можно вытянуть саму коленку из полигонов и подкорректировать вершины управления высотой (рис. 5в).

Рис. 5

В общем, сильно вытягиваем полигон — получаем палец, немного — рельефную поверхность. Если же выступ должен походить на мышцу, то его основание нужно сделать похожим на контур мышцы. Если же результат не устраивает, удаляйте полигоны и на их месте создавайте новые с другим расположением ребер (рис. 5г). Без этого не обойтись, если требуется высокое качество модели.

Я остановился на уровне детализации поверхности, показанном на рис. 6. Теперь осталось создать некоторые аксессуары: ногти, зубы, глаза и нос. Для изображения ногтей и зубов удобно пользоваться примитивом Cone, но не переусердствуйте, детализация мелких элементов должна соответствовать детализации тела, ведь сгоряча можно сгенерировать зубы с большим количеством вершин, чем само тело. А их-то и видно почти не будет. Глаза следует делать из полусфер, чтобы избежать использования ненужных полигонов, а нос — это всего лишь вытянутый Ball.

Рис. 6

Теперь осталось только разместить элементы на свои места, причем лучше в разных слоях, и можно приступать к текстурированию, о котором будет рассказано в следующей публикации. Сейчас же у вас появились необходимые знания для моделирования любого персонажа. А попрактиковавшись две-три недели, вы сможете создать подобную модель за один вечер (рис. 7).

Рис. 7

С автором можно связаться по e-mail:vit@osp.ru