Моделирование сложной архитектуры. Работа с графическими материалами
Подготовка сцены. Представление материалов.Как уже было сказано выше, архитектурная модель памятника создается на основании архитектурных обмеров, планов и чертежей. Модель, созданная на основе фотоматериалов, видеосъемки, живописных изображений и зарисовок, точной не будет. Они могут служить лишь вспомогательным материалом*. Существует весьма полезный прием, позволяющий представить имеющиеся источники в трехмерной сцене в виде плоскостей, на которые нанесено изображение.
Процедура. Создадим объект «плоскость» (create – geometry – plane) и зададим ей размеры, в точности совпадающие с размерами нашего чертежа (плана, обмера), выраженными в пикселях (если этого не сделать, то изображение исказится).
Откроется окно проводника, после чего вы сможете выбрать нужный вам графический файл (текстура bitmap позволяет «наклеить» на сетку графическое изображение). Включите функцию Show Map in Viewport(соответствующая кнопка на Material Editor toolbar). Назначим материал нашим плоскостям (Material Editor – Select Material – Toolbar – Assign Material to Selection).
Обязательно дадим названия нашим объектам (плоскостям) и материалам. Теперь расположим различные проекции в пространстве так, как показано на рисунке. При необходимости, проекции и разрезы, не нужные для работы в данный момент, можно скрыть (раскрыть) (RMB – Hide Selection/Unhide All/Unhide by Name)или заморозить (разморозить) (RMB – Freeze Selection/Unfreeze All/Unfreeze by Name)**. Для точной подгонки плоскостей необходимо визуализировать сцену (как правило, неоднократно). Бывает полезно при этом изменять прозрачность материалов (Material Editor – Blinn***Basic Parameters – Opacity).
Моделирование стен на основе сплайнов. Существует несколько способов, позволяющих создавать архитектурные модели. Если в нашем распоряжении имеется точный план объекта (в виде графического файла), то представляется оптимальным начать работу с моделирования стен на основе сплайнов. Для этого нам понадобится плоскость с «наклеенным» на нее планом. В окне проекции Top «обведем» сплайном контуры стен храма. Мы создаем сплайн типа «линия» (Create – Shapes – Splines – Line).
Если во время работы (при создании сплайна) линия прервалась, то не спешите начинать все сначала. Начните новую линию. Чтобы получился единый объект, сбросьте флажок Start New Shape(если вы забыли это сделать, то просто присоедините новый сплайн к уже имеющемуся (Modify – RMB – Attach)). Затем перейдите на уровень редактирования «вершины» (Vertex).Выделите крайние вершины в месте разрыва линии. Последовательно примените инструменты Fuse и Weld. Получится непрерывная линия. Работать будет удобно если сделать сплайн видимым в окне проекций Top (Modify – Rendering – Enable inViewport), затем настройте счетчик Thickness при включенной кнопке Radial. Не переходя на другой уровень редактирования, назначьте вершинам определенный тип. Для этого необходимо выполнить последовательность операций Select Vertex – RMB – Smooth/Corner. Назначьте вершинам, расположенным в углах стен тип Corner, остальным – Smooth. В дальнейшем мы применим к нашему сплайну модификатор Extrude,а затем конвертируем полученный объект в сетку типа Editable Poly.
Чтобыу нас получилась сетка, с которой нам было бы удобно работать в дальнейшем, сплайн должен отвечать некоторым требованиям. Во-первых, вершины должны быть расположены равномерно. Добавьте необходимое количество вершин для того, чтобы этого добиться, используя инструмент Refine. Во-вторых, необходимо настроить параметры интерполяции. Для этого достаточно включить функцию Optimizeвкладки Interpolation.
После того, как нами получен сплайн, максимально точно повторяющий контуры стен, мы применяем к нему модификатор Extrude (Select Spline – Modify – Extrude).
Он позволит нам «построить» стены на основе нашего сплайна, как бы выдавив их из него. Его интерфейс очень прост. Он содержит только одну вкладку – Parameters. Настройте параметры Amount (это высота стен) и Segments(количество сегментов, на которые сетка делится по вертикали).
Для настройки высоты стен нам придется использовать (открыв (RMB – Unhide by Name)) плоскости, показывающие разрезы, сделанные в различных направлениях. Доведем высоту сетки до уровня стен боковых апсид. Для настройки количества вертикальных сегментов включите режим просмотра Smooth + Highlight (RMB в левом верхнем углу окна проекций), и добавьте к нему функцию Edged Faces(там же). Количество вертикальных сегментов должно быть таким, чтобы в итоге получилась более или менее равномерная сетка, состоящая из квадратных ячеек. Это необходимо для корректной работы инструментов, которые мы будем применять в ходе дальнейшей работы. Установим флажок Cap End. В результате применения модификатора Extrudeмы получим сетку, имеющую сложную форму в сечении (ее обеспечивает сплайн) и одинаковую высоту по всей сетке. Вместе с тем, анализ источников (архитектурных обмеров) показывает, что высота церкви не была одинаковой на всем протяжении стен. Большинство древних памятников несколько ассиметричны, поэтому нам придется уточнять нашу модель в дальнейшем вручную.
Рассказывая о приемах создания стен с помощью сплайнов, мы имели в виду, прежде всего, реконструкцию архитектуры церкви Спаса-на-Нередице. Склепы могут быть устроены иначе. Они вырублены в каменном массиве. Кроме того, их архитектура гораздо проще. При работе, над реконструкцией склепов способ представления материалов остается такой же, в то время, как процесс создания архитектурной модели несколько изменяется и упрощается.
Основным приемом моделирования становится метод создания и редактирования объектов типа Editable Poly– основной метод моделирования в 3Ds Max, представляющий собой большой набор самых разнообразных инструментов, предназначенных для создания объектов любой сложности, обладающими при этом множеством свойств. Конечно, мы применим его и при моделировании архитектуры церкви Спаса-на-Нередице.
Но вернемся к реконструкции Двойного склепа. Итак, мы расположили в сцене исходные материалы с помощью описанных выше приемов. Сначала создается плоскость по размерам и пропорциям похожая на абрис пола одной из камер склепа (задней) и имеющую достаточное (но не избыточное количество граней). Затем она конвертируется («превращается») в редактируемую сетку (объект типа Editable Poly, SelectPlane – RMB – Convert To – Editable Poly).
Затем мы переходим на вкладку Modifyи выбираем уровень редактирования Vertex. Далее, выделяя и перемещая вершины, мы придаем нашей плоскости форму пола. Следующий этап – применение инструментаExtrude, входящего в комплекс Editable Poly(не путать с одноименным модификатором). Он может применяться к различным подобъектам Editable Poly – вершинам, ребрам, границам и полигонам. Применяя его к выделенным наборам ребер, мы можем создать модель пола с учетом ступенек. Затем, применив тот же инструмент к границе объекта, мы можем начать моделировать стены.
Теперь вернемся к реконструкции архитектуры церкви Спаса-на-Нередице. Мы видим, что стены боковых апсид значительно ниже стен центральной апсиды и остальных стен церкви. Чтобы продолжить моделирование, конвертируем наш объект (сплайн с примененным модификатором Extrude) в объект Editable Poly.Мы видим, что сетка имеет своего рода «крышку» сверху (следствие установки флажка Cap End). Она представляет собой один полигон с большим количеством вершин****. Наша задача – «поднять» одну часть полигона (стены и центральную апсиду), оставив на месте боковые апсиды. Для этого разделим полигон на несколько, выделив необходимые участки. Для этого применим инструмент Create (редактирование на уровне ребер). Затемвыделим нужные нам полигоны и применим инструмент Extrude(редактирование на уровне полигонов).
Его интерфейс несколько отличается от интерфейса одноименного модификатора. Вместо счетчика Amount мы имеем счетчик Extrusion Height. Чтобы добиться разделения полученной в результате выдавливания полигонов сетки на несколько сегментов по вертикали, необходимо несколько раз (столько, сколько сегментов мы хотим порлучить) нажать кнопку Apply. В блоке Extrusion Type выберем кнопку Group или Normal. Мы получили приблизительную модель стен.
Моделирование верхней части стен. Завершение моделирования стен.Верхняя часть стен имеет сложную форму. Стены, декорированные лопатками, заканчиваются закомарами, при этом лопатки разделяются, и отдельные ветви их смыкаются вверху закомар. Мы, кроме того, должны иметь ввиду, что стены сами по себе имеют довольно сложную форму. Все это можно отнести и к апсидам. Поэтому, чтобы завершить моделирование, нам придется использовать самые разнообразные инструменты, имеющиеся в арсенале приложения 3Ds Max. Их существует великое множество и каждый художник, использующий эту технику, может отдавать предпочтение каким-то своим наборам инструментов. Кроме того, метод полигонального моделирования не является, вообще говоря, единственным, существуют и другие (прежде всего, следует отметить моделирование на основе сплайнов или кривых NURBS). Поэтому, говоря о продолжении и завершении моделирования сложных форм и поверхностей, присущих архитектуры церкви Спаса-на-Нередице, мы покажем лишь некоторые, наиболее часто используемые приемы.
Создание закомар. Инструмент Extrude Along Spline.В верхней части стен лопатки раздваиваются, после чего ветви, вырастающие из двух соседних лопаток, соединяются, образуя закомару – полукруглое завершение наружной стены церкви, соответствующее внутренней форме свода. Мы будем моделировать закомару в два этапа – сначала создадим арку над стеной, а затем «зашьем» пространство между стеной и аркой. Мы создадим арку с помощью инструмента Extrude Along Spline,доступным при редактировании полигональных сеток на уровне Polygons (Select Object – Modify – Polygon – Edit Polygons - ExtrudeAlong Spline).
Для этого создадим сплайны, представляющие центральную ось арок. Для этого используем соответствующие разрезы и работаем в различных окнах проекций. Затем подготавливаем сетку – выделяем верхнюю часть каждой лопатки и делим ее на две части в соответствии с архитектурными источниками, применяя для этого уже знакомые инструменты Create, InsertиVertex Connect. Затем выделяем полигоны, которые мы хотим «выдавить» вдоль соответствующего сплайна. И применим инструмент Extrude Along Spline.Настроим параметр Segments, который позволит разделить полученную арку на несколько сегментов, добиваясь, тем самым, желаемой гладкости. Завершая первый этап, соединим арку с верхней поверхностью стены. Для этого, во-первых, удалим полигоны на конце арки и полигоны, образующие соответствующую площадку на верхней поверхности стены. Далее, имеются два варианта. Первый – применить инструмент Bridge. Этот инструмент доступен на разных уровнях редактирования, но в нашем случае оптимально применить его на уровне редактирования Border («граница дырки»), Выделим две границы и применим инструмент (Select Object – Modify – Border – Edit Border – Bridge). Выберем режим работы Use Bordder Selection. Если полученный результат нас не удовлетворил (ребра оказались «скрученными», например), то попробуем исправить ситуацию, поменяв значения в счетчиках Twist 1 и Twist 2 (по умолчанию – 0). Все остальные параметры можно оставить без изменений. Если по каким-нибудь причинам этот инструмент вам показался неудобным, можно создать нелостающие полигоны «вручную». Для этого активизируем инструмент Create (вкладка Edit Geometry, уровень редактирования Polygons). Становятся видны вершины. Для создания нового полигона необходимо последовательно выделить (не нажимая клавишу Ctrl) нужные вершины (соответствующие ребра при этом подсветятся). Метод, основанный на создании новых полигонов «вручную» более универсален.
Нам остается только соединить арки со стенами. Для этого выделим и удалим полигоны, расположенные на верхней части стен и на нижней части арок. Затем, перейдя на уровень редактирования Border, выделим соответствующую границу и применим инструмент Cap (Select Object – Border – Edit Border – Cap). Никаких настроек он не имеет, он просто создает полигон, краями которого является выделенная граница. При желании, его можно разделить на несколько полигонов описанным выше способом.
Создание закомар закончено.
Уточнение формы стен с помощью модификаторов FFD.Мы уже говорили о некоторой асимметрии, неровности, присущей памятникам древности (не всем, конечно). Это может быть связано и с влиянием времени, и с замыслом архитектора, и с ошибками, допущенными при строительстве (известно предание о том, что в архитектуре афинского Парфенона вообще отсутствуют прямые линии). Не учитывать это при создании компьютерной трехмерной реконструкции означает лишить ее правдоподобия. С другой стороны, с помощью современных средств создания трехмерной графики и архитектурного проектирования мы, по умолчанию, создаем абсолютно правильные геометрические фигуры – сферы, плоскости, многоугольники и т.д. Поэтому появляется необходимость создать ощущение асимметрии искусственно. На чем мы можем основываться? Скорее всего, имеющиеся у нас архитектурные обмеры не обеспечат нас информацией о форме стен (в деталях) с достаточной точностью. Для сравнения вспомним о том, что в настоящее время проводятся работы по созданию максимально точных баз данных, позволяющих очень подробно описать форму памятника. Для этого (в течение долгого времени) проводится огромное количество измерений с использованием самых современных технологий. Мы, естественно не располагаем в наших случаях результатами таких измерений, но, используя имеющиеся в нашем распоряжении материалы (передающие общие особенности формы, его абрис), мы можем приблизиться к решению этой задачи. Для этого постараемся уточнить форму.
Это можно сделать, уточняя модель, перемещая отдельные вершины, но этот путь является неоправданно долгим и малоэффективным. Мы рекомендуем использовать для этих целей модификаторы FFD (Free-Form Deformation).Они действуют следующим образом. Вокруг сетки, к которой применен такой модификатор, формируется решетка (Lattice) с контрольными точками (Control Points), количество которых намного меньше, чем вершин полигональной сетки. Количество контрольных точек можно определять с помощью кнопки Set Number of Points. Существуют два вида FFD-модификаторов – FFD(box) и FFD(cyl). Они различаются формой решетки: в первом случае она имеет форму прямоугольного параллелепипеда, во втором – цилиндра. Перемещая решетку, можно определить ту часть сетки, на которую будет воздействовать модификатор. Альтернативный метод – выделить определенные полигоны и применить модификатор не снимая выделения и оставаясь на уровне редактирования Polygons. Модификатор будет воздействовать не на всю сетку, а только на выделенные полигоны. Теперь мы можем менять форму сетки, перемещая контрольные точки модификатора. Если количество контрольных точек подобрано грамотно, то можно достаточно быстро и эффективно редактировать исходную сетку.
После окончания редактирования можно снова конвертировать полученный объект (сетка + модификатор) в объект Editable Poly (Select Object – RMB – Convert To – Editable Poly). Эту операцию (применение модификатора с последующей конвертацией объекта в сетку) можно применять сколько угодно раз.
С помощью описанного приема можно весьма эффективно уточнить молученную модель стен, придав им в определенных местах наклон или кривизну.
Моделирование оконных и дверных проемов. Создание составных объектов Boolean.Составные объекты (Compound Objects), это новые объекты, которые создаются из двух или нескольких исходных объектов (т. н. операндов). Булиновские объекты (один из видов составных объектов) – это объекты, полученные из двух исходных объектов (операндов), в результате произведения над ними некоторых действий – объединения, пересечения, вычитания и «вырезания» (Union, Intersection, Substraction, Cut). Этот инструмент можно применить при создании оконных и дверных проемов и ниш, расположенных в стенах. Для этого сперва создадим сплайны по форме проемов и применим к ним модификатор Extrude. Полученные объекты должны быть шире, чем стены в тех местах, где расположены окна и двери, кроме того они должны иметь некоторое количество продольных сечений. Расположите эти объекты-заготовки для окон и дверей в соответствующих местах так, чтобы они пересекали стены. Затем необходимо выделить стену, активизировать инструмент создания объектов Boolean (Create – Compound Objects – Boolean). Выделенный объект (стена) по умолчанию станет операндом А. Далее, выберите тип операции (Parameters –Substraction)и выделите соответствующую заготовку для окна или двери (Pick Boolean – Pick Operand B).
Создание окна или двери почти завершено (нишу можно создать таким же способом, только соответствующая заготовка должна пересекать стену не полностью). Остается сделать некоторые замечания.
Во-первых, проемы и ниши в стенах старинных зданий могут иметь сложную форму – внешний и внутренний контуры могут отличаться по форме и размерам. Добиться этого можно двумя путями: либо доработать модель-заготовку (конвертировать в объект Editable Poly и редактировать с помощью соответствующих инструментов), либо доработать итоговую модель. Для этого полученный объект (Boolean)нужно конвертировать в объект Editable Poly. Впрочем, это конвертирование придется сделать в любом случае, вне зависимости от того, какой путь вы выбрали для уточнения формы. Дело в том, что булиновские объекты крайне неудобны для дальнейшего использования (хотя их можно редактировать).
Во-вторых, необходимо учесть следующее. Получить корректные результаты при использовании булиновских операций можно при условии, что сетки обеих операндов состоят из равномерно распределенных граней, имеющих примерно одинаковый размер.
В-третьих, сетка, полученная после конвертации булиновского объекта, может иметь несколько «неправильный» вид. В этом случае ее придется редактировать, например, присоединяя одни точки к другим.
Моделирование сложных форм (своды) путем постепенного увеличения количества полигонов.Некоторые архитектурные элементы могут иметь необычайно сложную форму. В случае церкви Спаса-на-Нередице это своды. Сложность их формы можно сравнить, разве что, с формой головы человека. Чтобы создать правдоподобную модель таких архитектурных форм, естественно было бы использовать приемы моделирования, которые применяются при создании моделей живых существ.
Проиллюстрируем этот метод примером моделирования головы человека. Сначала создадим своего рода заготовку – прямоугольный параллелепипед (примитив Box) с минимальным количеством граней, примерно совпадающий по своим параметрам с пропорциями предмета, который мы моделируем. Затем, добавляя по мере необходимости новые грани (выделяя соответствующие ребра и соединяя их) и перемещая вершины, мы будем постепенно усложнять и уточнять форму до тех пор, пока не получим достаточно убедительную модель. Заметим, что предлагаемый прием моделирования очень похож (и это не случайно) на методику классического (академического) рисунка и предполагает наличие некоторой художественной подготовки. С технической точки зрения, смысл такого моделирования в том, что количество вершин, с которыми нам придется работать (т. е. выделять и перемещать) минимально.
Сглаживание сетки. Инструментарий 3D Max (как и других приложений) позволяет добиваться визуального ощущения плавного перехода между гранями. Процесс применения соответствующих инструментов называется сглаживанием (Smooth). При создании геометрических примитивов грани могут определенным образом сглаживаться между собой (флажки Smooth, флажки группы Smooth для тора). Они обеспечивают некоторое сглаживание, которое сохраняется при конвертации примитивов в редактируемые сетки. Аналогично обстоит дело при создании исходных объектов другими путями (например, путем моделирования на основе сплайнов). Для дальнейшего сглаживания могут применяться как некоторые модификаторы (Smooth, MeshSmooth, TurboSmooth), так и инструменты, входящие в комплекс редактирования объектовEditable Poly (MSmooth, инструменты вкладок Subdivision SurfaceиSmoothing Groups).
Группы сглаживания. Полигоны (грани) могут быть распределены по так называемым группам сглаживания (Smoothing Groups). Это означает следующее: полигоны, входящие в одну группу сглаживания, сглаживаются между собой (разумеется, при условии, что они между собой соприкасаются), полигоны, входящие в разные группы сглаживания – нет. Полигон может входить в состав скольких угодно групп сглаживания. Как инструменты комплекса Editable Poly, так и модификаторы, обеспечивающие сглаживание сеток, имеют функцию «Разделять по группам сглаживания» (Separate By Smoothing Groups), т. е. дальнейшее сглаживание производится только внутри групп сглаживания, граница между группами сглаживания остается жесткой.
Чтобы назначить группы сглаживания (или присоединить полигоны к уже существующей группе), необходимо выделить соответствующие полигоны и нажать кнопку с номером группы сглаживания. Чтобы исключить полигоны из группы сглаживания, необходимо выделить (подсветится номер (или номера) групп сглаживания), затем нажать кнопку с номером соответствующей группы. Чтобы исключить полигоны из всех групп сглаживания, необходимо выделить их и
нажать кнопку Clear (Editable Poly – Polygon – Polygon Properties – Smoothing Groups).
Сглаживание архитектурной модели.Для сглаживания модели сложной архитектуры можно применить два варианта действий. Первый – назначить различные группы сглаживания полигонам, образующим резкие переходы формы (например, стены на углах здания, граница между стеной и апсидой). В этом случае получится довольно резкий переход от одной поверхности к другой. Дальнейшее сглаживание, осуществляемое посредством применения модификаторов или соответствующих инструментов комплекса Editable Poly, не уберет этих границ. В некоторых случаях, однако, переход от одной поверхности к другой происходит без образования заметной границы. Тогда можно добиться довольно правдоподобного результата за счет уточнения модели на границах поверхностей (например, с помощью добавления дополнительных рядов ребер).