Переход от двухмерной к трехмерной графике

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

Для начала следует разобраться в общих концепциях двух- и трехмерной графики. При наличии некоторого опыта работы с Adobe Illustrator или какими-либо другими программами для работы с графикой, можно успешно применять уже полученные знания о моделировании к двухмерным формам. Как уже говорилось в главе 1, основное различие между двухмерными и трехмерными объектами — это глубина. Двухмерные изображения характеризуются только высотой и шириной, а вот глубина отсутствует. Хотя двухмерные объекты можно создать и так, чтобы они казались трехмерными. В таком случае, если понадобится изменить перспективу или угол просмотра, объект придется перерисовать заново (рис. 2.1).

Переход от двухмерной к трехмерной графике

Рис. 2.1. а) Для создания изображения, выглядящего трехмерным, можно использовать программы двухмерного моделирования (и хорошие карандаши), б) К сожалению, для поворота объекта под любым углом пользователю придется рисовать его заново. Какая боль!

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

Переход от двухмерной к трехмерной графике

Рис. 2.2. После создания объекту придается цвет и освещение, накладываются текстуры, а затем он визуализируется под любым углом

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

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

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

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

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

Переход от двухмерной к трехмерной графике

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

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

Основы трехмерной графики

В главе 1 для иллюстрации вывода трехмерной графики на двухмерный экран использовалась мнимая видеокамера, посредством которой осуществлялась видеозапись комнаты с некоторыми объектами. Как уже говорилось, понятие "трехмерный объект" было определено как "двухмерное представление трехмерных объектов".

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

Определенное трехмерное пространство

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

Тем не менее, так же, как и реальное пространство, трехмерная вселенная является безграничной. Даже используя современное программное обеспечение, довольно просто запутаться или "потерять" объект где-то в виртуальной бездне. Если она настолько безгранична, как же в ней ориентироваться? К счастью, в трехмерном пространстве используется встроенная система, аналогичная GPS (Global Positioning System — глобальная система навигации), которая называется системой координат.

Определение

Глобальная система навигации (GPS)

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

Координаты

Наименьшая область трехмерного пространства, доступная для определения, называется точкой (point). Каждая точка характеризуется уникальным набором из трех чисел, называемых координатами (рис. 2.4). К примеру, центр киберпростран-ства, также именуемый начальной точкой (point of origin), определяется координатами (0,0,0). Первое число представляет собой значение по оси X, второе — по оси Y, а третье — по оси Z. Координаты начальной точки составляют три нуля. Координаты могут иметь и другие значения, как, например, (12,31,57) или (359,-2315,143).

Переход от двухмерной к трехмерной графике

Рис. 2.4. Каждая точка в трехмерном пространстве определяется тремя координатами. В самом центре киберпространства, представленного в форме куба, находится начальная точка, которой соответствуют координаты (0,0,0)

Координаты можно считать в некотором образе * уличным адресом" каждой точки в виртуальном городе. Эти адреса используются в программах трехмерного моделирования для определения объектов и их местоположения. В трехмерных координатах применяются три числа, а не два или четыре, поскольку эти числа связаны с тремя измерениями: шириной, высотой и глубиной. В терминах киберпространства эти измерения представляют собой направления, а указывающие на них стрелки называются осями (не путайте с осами в улье).

Ось

Ось (axis) — это мнимая линия в виртуальном пространстве, посредством которой определяется направление. В программах трехмерного моделирования применяются три стандартные оси: X, Y и Z (рис. 2.5). По причинам, указанным далее, такие термины, как вверх, влево и вперед не подходят для использования в трехмерном пространстве, однако они пригодятся для описания осей X, Y и Z. При этом важно помнить, что подобное описание годится только с определенной перспективы. Ось "ширины" X располагается горизонтально (слева направо и наоборот). Ось "высоты" Y является вертикальной, направленной сверху вниз и снизу вверх. И наконец, Z — это ось, связанная с "глубиной". Она направлена от передней плоскости куба виртуального пространства до задней плоскости и наоборот (либо "в сторону" пользователя, выходя за пределы его поля зрения).

Переход от двухмерной к трехмерной графике

Рис. 2.5. Ось представляет собой мнимую линию в трехмерном пространстве, посредством которой определяется направление. X, У и 2— это стандартные оси, используемые в программах трехмерного моделирования

Полагаясь на приведенные здесь примеры, представьте себе, что куб киберпространства постоянно находится "внутри" монитора компьютера, а пользователь смотрит на него непосредственно вдоль оси Z. Обратите внимание, что куб киберпространства на всех рисунках в этой главе изображается сверху и слегка развернут влево от пользователя так, чтобы можно было увидеть ось Z.

Разобравшись с осями и координатами, необходимо выяснить, как они взаимодействуют друг с другом при перемещении объекта в киберпространстве. Для начала объединим две системы в одной диаграмме (рис. 2.6).

Переход от двухмерной к трехмерной графике

Кубом определяются границы трехмерного пространства (без масштабирования)

Рис. 2.6. Координаты и оси являются взаимосвязанными. Координаты, расположенные на положительной стороне оси, имеют значение, больше нуля, на отрицательной — меньше нуля

Как следует из рисунка, если центрировать оси X, У и Ъ в пределах трехмерного пространства, координатами пересечения всех трех осей будет начальная точка со значениями (0,0,0). Если указать (то есть нарисовать) точку рядом с началом координат вдоль "правой" стороны оси X, то ее координатами будут значения (1,0,0). Следующая точка в том же направлении имеет значение (2,0,0) и так далее. С другой стороны, если перемещаться вдоль "левой" стороны оси X, координаты точки стали бы иметь отрицательные значения: (-1,0,0), затем (-2,0,0) и тому подобное.

Подобный принцип сохраняется и для оси У: положительные числа используются при перемещении "вверх" по оси, а отрицательные — при перемещении "вниз". Следовательно, точка, расположенная сразу "над" началом координат определяется как (0,1,0), а такая же точка "под" ним имеет значения (0,-1,0). По аналогии с этим положительные и отрицательные направления используются для оси Ъ. В правой сис теме координат положительные значения "направлены" к пользователю, отрицательные — от него, к "задней плоскости" киберпространства. Таким образом точка, расположенная "перед" началом координат имеет значение 0,0,1, а "за" ней — 0,0,-1.

Если, например, попробовать определить точку с координатами (128,-16,25), то можно найти ее на 128 точек "выше" от начала координат (по оси X), на 16 точек "ниже" ее (по оси Y) и на 25 точек "по направлению" к пользователю (по оси Z).

В трехмерном пространстве довольно просто запутаться в вопросе, какое направление является положительным, а какое отрицательным. К счастью, большинство трехмерных систем координат основано на правше правой руки. В этом правиле используется большой, указательный и средний пальцы, с помощью которых можно определить положительное направление оси. Для этого необходимо сжать пальцы правой руки в кулак и разместить его перед лицом так, чтобы часть руки от запястья до локтя располагалась вертикально. Отведите большой палец, чтобы он указывал в правую сторону; это — положительное направление оси X. Выпрямите указательный палец, дабы он указывал в потолок. Это — положительное направление оси Y. И, наконец, с помощью среднего пальца, указывающего в сторону лица, можно определить положительное направление оси Z.

Существует еще одна разновидность правила правой руки, которую можно применять для определения направлений при вращении объекта вокруг оси. Следует собрать пальцы в кулак, а затем выпрямить только большой палец. Направьте его в положительном направлении любой необходимой оси: X, Y или Z. Теперь обратите внимание на направление, в котором загнуты остальные пальцы руки. Они указывают положительное направление вращения объекта.

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

Обычные и ломаные линии, полигоны

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

Соединим некоторые точки киберпространства, нарисовав линию (иногда называемую сегментом между точками с координатами (0,0,0) и (5,5,0) (рис. 2.7). Продолжив линию до (9,3,0), можно получить так называемую ломаную линию (polyline), которая является непрерывной линией, состоящей из нескольких сегментов. И наконец, проведем последнюю прямую линию к началу координат (0,0,0). В результате получается замкнутая форма (closed shape), у которой можно выделить "внутреннюю" и "внешнюю" стороны. В данном случае это простой трехсторонний треугольник (он же полигон) — основа объектов, создаваемых в трехмерной среде.

Переход от двухмерной к трехмерной графике

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

Попробуйте разделить многоугольник на основные компоненты, которыми» можно управлять в программах трехмерного моделирования — а именно, на вершины, ребра и грани (рис. 2.8). Вершина (vertex) представляет собой точку, в которой соединяется любое количество линий. В примере, изображенном на рис. 2.7, каждая из соединяемых точек является одной из вершин полигона. Точно также каждая нарисованная линия становится ребром (edge) или краем полигона. И наконец, при замыкании формы обозначились ее "внутренняя" и "внешняя" стороны. Область, расположенная между ребрами полигона, то есть "внутренняя сторона", называется гранью (face).

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

Переход от двухмерной к трехмерной графике

Трехсторонний полигон (треугольник)

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

Переход от двухмерной к трехмерной графике

Рис. 2.9. Наиболее часто в программах трехмерного моделирования используются следующие полигоны, а) Треугольники, б) Четырехугольники, в) В принципе, количество сторон многоугольника не ограничено

Трехмерные объекты

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

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

Переход от двухмерной к трехмерной графике

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

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

Переход от двухмерной к трехмерной графике

Рис. 2.11. На схеме куба, размещенного в киберпространстве, можно продемонстрировать, как соединение точек координат формирует из многоугольников трехмерный объект

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

(горизонтали), остальные углы можно определить, как (5,5,0) — верхний правый передний и (5,0,0) — нижний правый передний. И наконец, так как куб размещается "за" начальной точкой координат по оси Z (глубина), оставшиеся углы будут иметь координаты (0,0,-5) — левый нижний задний (0,5,-5) — левый верхний задний (5,5,-5) — правый верхний задний и (5,0,-5) — правый нижний задний.

Моделирование

Процесс создания и управления объектами в трехмерном пространстве называется моделированием. Во многом данный процесс подобен лепке из глины либо созданию какой-либо структуры из дерева, бетона или стекла. В программах трехмерного моделирования поддерживаются только базовые объекты (строительный материал, если хотите), из которых можно формировать любые модели. Также имеется набор инструментальных средств для изменения базовых объектов или формирования собственных.

Наложение текстур

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

Точки обзора

Согласитесь, что управлять автомобилем гораздо удобнее при наличии в нем окон, поэтому управление объектами в трехмерном пространстве намного упрощается при определении точки обзора (рис. 2.12). Точка обзора (viewpoint) представляет собой позицию в киберпространстве, соответствующую положению пользователя. В большинстве программ точка обзора определяется по умолчанию, при этом ось X является горизонтальной, ось Y — вертикальной и ось Z соответствует глубине, как было указано ранее. Как правило, подобная точка располагается на удалении вдоль положительного отрезка оси Z ("впереди") в киберпространстве и направлена к началу координат.

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

Переход от двухмерной к трехмерной графике

Рис. 2.12. Точка обзора представляет собой текущую точку зрения пользователя. Предел плоскости видимости пользователя ограничен его полем зрения, и видимыми являются только объекты, расположенные перед этой плоскостью

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

Иногда окна программ, в которых отображается трехмерное пространство, называются полем обзора (viewport). Взгляд пользователя в виртуальное пространство ограничен размером этой области. Чаще всего в заданных по умолчанию трехмерных полях обзора объект отображается в виде ортогональной проекции (orthographic projection), применяемой в черчении. Представьте себе чертеж дома — у него всегда есть верхняя проекция (вид сверху), которая демонстрирует план этажа и две вертикальные проекции (обзор со стороны), отображающие чертеж стен с передней, задней и боковой сторон дома. Сторонний наблюдатель "смотрит" на здание вдоль единой, перпендикулярной оси. Все эти проекции созданы с учетом масштабирования так, чтобы плотники имели четкое представление о размерах всех деталей, а также их пропорциональномсоотношении. Подобная схема используется и в программах трехмерного моделирования для представления объектов в трехмерном пространстве. Кроме трех стандартных ортогональных проекций, существует еще и четвертая проекция — объект с определенной пользователем точки обзора, расположенной вне оси координат. Подобная проекция называется перспективной или аксонометрической. Термин аксонометрическая проекция означает, что пользователь бесконечно отдален от объекта так, что все линии вдоль одной оси являются параллельными (рис. 2.13).

Переход от двухмерной к трехмерной графике

Рис. 2.13. Сравнтше перспективного и аксонометрического представлений для одинаковых наборов объектов, а) В перспективном представлении фигуры отображаются в соответствии с размером фигуры и относительно расстояния до нее; объекты показаны так, как их отображает камера с обычным объективом, б) В аксонометрическом представлении, часто используемом при моделировании, перспектива обзора совершенно не учитывается

Режимы визуального отображения

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

Наиболее удобным и простым форматом отображения является ограничивающий прямоугольник (bounding box) — это прямоугольник с такими же габаритными размерами, как и у объекта. Прямоугольник позволяет быстро указать местоположение объекта и его примерный объем, что часто используется в программах при перемещении объекта по сцене. Основная проблема заключается в том, что все формы (от кубов и сфер до фигур людей) представляются в виде прямоугольников, которые трудно скомпоновать или отредактировать на сцене.

Для отображения объекта в каркасном (wireframe) режиме используются линии, определяющие ребра многоугольников, в результате чего вся конструкция походит на фигуру из проволоки. В этом режиме пользователь видит истинную форму объекта и имеет доступ к отдельным его вершинам для редактирования и модификации. К сожалению, поскольку видимыми являются все стороны объекта (даже на дальнейего стороне), каркасный режим может запутать пользователя. В таких ситуациях следует использовать режим невидимой линии (hidden line), при котором ребра отображаются аналогично каркасному режиму, однако показаны только ребра, которые были бы видимыми в непрозрачном объекте. Подобный режим гораздо более удобный для визуального восприятия.

Переход от двухмерной к трехмерной графике

Рис. 2.14. Сферу с положенной текстурой можно представить различными способами, в зависимости от режима визуального отображения программы трехмерного моделирования, а) Ограничивающий прямоугольник, б) Каркас, в) Невидимая линия, г) Плоскостная затушевка, д) Сглаженная затушевка, е) Сглаженные текстуры

Если требуется более высокий уровень реализма, воспользуйтесь визуальным режимом затушевки или сглаженного наложения текстур. В режиме плоскостной затушевки (flat shading) отображается как поверхность, так и цвет объекта. Объект получается многогранным, причем это первый режим, в котором используются эффекты освещения. Режим сглаженной затушевки (smooth shading), при котором поверхность объекта отображается в цвете со всеми сглаженными ребрами, в настоящее время стал очень популярным, поскольку теперь он поддерживается многими графическими адаптерами. Тем не менее, этот режим остается все еще очень требовательным к скорости обработки данных и, следовательно, его применение в сценах с большим количеством полигонов все еще остается под вопросом. Режим сглаженного наложения текстур (smooth texturing) является максимально близким к завершенному изображению. Режим прекрасно подходит для предварительного просмотра сцены и установки освещения, однако, он весьма требователен к мощности процессора и объему памяти графического адаптера.

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

Альтернативные системы координат

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

Хотя в этом разделе описываются альтернативные системы координат, не забывайте о том, что координаты и оси полностью взаимосвязаны, поэтому системы осей также можно считать альтернативными.

Переход от двухмерной к трехмерной графике

Границы трехмерной области определяютсякубом (без масштабирования)

Рис. 2.15. Основной системой координат в трехмерном прострой стве являются внешние координаты, которые не зависят от из менения точки обзора

В экранных координатах (screen coordinates) поле обзора используется в качестве основания для осей X, Y и Z; эти координаты не меняются при изменении точки наблюдения трехмерной сцены, поэтому их удобно применять для изменения местоположения объектов. Например, при перемещении объекта вправо на сцене с помощью экранных координат пользователь всегда знает, что объект следует переместить в положительном направлении оси X.

Переход от двухмерной к трехмерной графике

• Рис. 2.16. Экранные координаты "привязаны" к полю обзора окна монитора и не меняются при другом размещении точки наблюдения

В локальных координатах (local coordinates) объект принимается в качестве основание осей, то есть каждый объект может иметь собственную систему координат. Существует несколько способов определения локальных осей для объекта, однако в большинстве случаев они зависят от точки обзора, с которой пользователь создает объект. Например, при создании конуса с внеосевой точкой обзора локальные оси будут отличаться от внешних; другими словами, локальная ось X может иметь то же направление, что и внешняя ось Y. Кроме того, после вращения объекта локальные оси больше не совпадают со внешними (рис. 2.17).

Переход от двухмерной к трехмерной графике

Рис. 2.17. Каждый объект может иметь свои собственные локальные оси, которые обычно связаны с точкой обзора, используемой при создании объекта. Локальные оси взаимосвязаны с объектом и, как правило, перемещаются вместе с центром вращения объекта

Локальные оси идеально подходят для вращения объектов, поскольку использование для этого других систем координат может привести к весьма неожиданным результатам. Чтобы в этом разобраться, рассмотрим принципы вращения объектов в виртуальном пространстве.

Системы координат и вращение

Характер вращения объекта зависит от трех факторов:

♦ применяемая система координат (внешняя, экранная, локальная или пользовательская); в? * щ'~ ■-

І местоположение основного центра вращения;

♦ ось, вокруг которой необходимо развернуть объект.

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

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

В последнюю очередь выбирается одна из трех осей, вокруг которой будет повернут объект.

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

Переход от двухмерной к трехмерной графикеПереход от двухмерной к трехмерной графике

Рис. 2.18. Если при создании объекта его локальные оси совпадают с внешними осями, внешние оси можно также использовать для управлении объектом (во всяком случае, сначала)

На представленном рисунке для вращения конуса на 45° вокруг его оси X можно использовать как внешние, так и локальные оси (рис. 2.19). Однако после вращения локальные оси больше не будут совпадать с внешними, поэтому теперь при вращении конуса вокруг локальной оси У (конус будет вращаться вокруг своей вершины) и при вращении вокруг внешней оси У (конус будет качаться) результаты получатся абсолютно разными.

Переход от двухмерной к трехмерной графике

Рис. 2.19. После того, как объект перестанет быть привязанным к внешней системе координат, для его дальнейшего вращения тем же способом необходимо перейти к использованию локальной системы координат

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

Переход от двухмерной к трехмерной графике

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

Пользовательская ось (user axis), как понятно из названия, представляет собой ось, определяемую пользователем. Пользовательская ось может настраиваться независимо от внешних, экранных и локальных осей (рис. 2.20). Она часто используется при моделировании, когда необходимо развернуть объект под особым углом без применения локальной системы координат.

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

Переход от двухмерной к трехмерной графике

Рис. 2.21. На примере маневров самолета можно определить тип используемой оси. На этом рисунке для абстрактного самолета показаны осиХ, Уи2

Переход от двухмерной к трехмерной графике

Рис. 2.22. При вращении вокруг оси X (тангаж) самолет набирает или сбрасывает высоту. При вращении вокруг оси Y (рыскание) он изменяет курс, и, соответственно, ось Z (крен) используется для разворота

Представьте себе летящий самолет. Для того чтобы набрать или сбросить высоту он должен использовать тангаж (pitch), то есть развернуться вокруг оси X (рис. 2.22). Для изменения курса влево или право необходимо повернуть руль на правления и выполнить маневр рыскания (yaw), аналогией чего является вращение вокруг оси Y. И наконец, для прохода по узкой расщелине между скалами пилоту придется выполнить крен (roll), то есть вращение вокруг оси Z. Подобные термины очень наглядны и популярны, поэтому они (или подобные им определения) применяются в некоторых программах трехмерного моделирования вместо терминов вращение/поворот (rotate) вокруг осей X, Y и Z.

Освещение

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

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

♦ Всенаправленный источник света (omni light), или световая точка (point light). Похож на лампочку, освещающую сцену по всем направлениям.

♦ Прожекторный источник света (spotlight). Направленный источник, который часто применяется для освещения отдельного элемента объекта или в качестве основного источника освещения для сцены.

♦ Удаленный (distant) или направленный (direct) источник освещения. Также является направленным, однако используется для моделирования сильно удаленных источников освещения, например, солнца, испускающего лучи, которые отбрасывают параллельные тени.

♦ Обтекающий свет (ambient light) присутствует во всем трехмерном пространстве, освещая в равной степени все поверхности. Он используется для приблизительной эмуляции освещения объектов посредством световых лучей, отраженных от других объектов.

В большинстве программ трехмерного моделирования пользователь может определить любое количество источников света на сцене, однако чем больше источников света на сцене, тем больше и время, затрачиваемое системой на визуализацию. Более подробно характеристики и методы использования освещения описываются в главе 7, "Освещение",

Камеры

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

Для трехмерных камер иногда устанавливаются цели (targets), которые помогают увидеть направление камеры не из ее поля обзора. Пользователь может установить и настроить столько камер, сколько необходимо, хотя в некоторых программах допускается только одна камера. Более подробная информация о камерах представлена в главе 8, "Работа с камерами".

Анимация

Современное программное обеспечение позволяет анимировать практически все, что угодно — можно перемещать и изменять объекты, источники света, камеры и даже текстуры. Хотя компьютерная анимация — это прекрасное средство для создания сложных объектов, как, например, трехмерных персонажей, в большинстве случаев она является довольно упрощенной. Пользователь определяет промежуток времени, за который должно быть выполнено определенное движение, а затем перемещает на новую позицию объект, источник света или камеру. В зависимости от установленных параметров, компьютер сглаживает неровности перемещения объекта из первоначального положения в указанную область. Технологиям компьютерной анимации посвящена глава 9, "Анимация".

Визуализация

Визуализация (rendering) представляет собой процесс, в результате которого компьютер обрабатывает все данные об объекте и освещении, после чего создает законченное изображение в соответствии с выбранной пользователем точкой обзора. Конечный результат может быть отдельным неподвижным изображением либо кадром анимационной последовательности.

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

Как правило, в программах для работы с трехмерной графикой только одна сторона грани полигона имеет нормаль; такой полигон называется односторонним. Односторонние полигоны можно "увидеть" только со стороны с нормалью, что может стать проблемой при визуализации (например, когда камера проходит через внутреннюю область модели). Поэтому в программах трехмерного моделирования поддерживаются и двухсторонние полигоны, которые можно просматривать с любой стороны. Обратите внимание на три куба, изображенные на рис. 2.24.

Переход от двухмерной к трехмерной графике

Рис. 2.23. Нормали — это мнимые линии, направленные в сторону от граней полигонов. Программы используют нормали для вычисления интенсивности и направления источника света относительно граней

Переход от двухмерной к трехмерной графике

Рис. 2.24. Представленные на рисунке кубы демонстрируют различие между односторонними и двусторонними полигонами, а) Обычный куб. б) Куб с перевернутыми полигонами, в) Куб с перевернутыми, но двусторонними полигонами

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

Различные ошибки визуализации, такие как исчезновение полигонов, могут возникать в том случае, если полигон не является плоским. Представьте себе четырехсторонний полигон (четырехугольник), лежащий на плоской поверхности (рис. 2.25, а). Если приподнять правый передний угол, полигон приобретет "изогнутую" форму, то есть станет неплоским (рис. 2.25, б). Хотя он и остается полноценным многоугольником (количество сторон полигонов не ограничено), его отдельные элементы могут не пройти визуализацию должным образом, поскольку соответствующая многоугольнику нормаль не будет находиться в стандартном положении. Единственным решением данной проблемы является преобразование всех объектов в треугольные полигоны (рис. 2.25, в). Поскольку эти многоугольники имеют только три вершины, они не могут быть "изогнутыми" или неплоскими.

Переход от двухмерной к трехмерной графике

Рис. 2.25. Плоские и неплоские полигоны, а) Плоский полигон, б) Плоский четырехугольный полигон, в) Треугольные полигоны не могут быть неплоскими

Кроме направления нормалей, при визуализации сцены принимается во внимание цвет и текстура многоугольника, а также расположение источника света, его интенсивность, цвет и многие другие факторы. Затем компьютер выводит результатысвоих вычислений на экран в виде изображения. Во многих программных пакетах поддерживается несколько различных режимов визуализации, при использовании которых получаются различные изображения (рис. 2.26).

Основным и наиболее быстрым режимом визуализации является каркасный режим (wireframe), аналогичный каркасному режиму визуального отображения, описанному ранее. Как правило, он используется только для пробной анимации или когда изображение должно иметь "компьютерный" вид. Режим невидимой линии также подобен соответствующему режиму визуального отображения и довольно редко применяется для визуализации.

Переход от двухмерной к трехмерной графике

Рис. 2.26. Распространенные методы визуализации, а) Каркас, б) Невидимая линия, в) Плоскостная затушевка, г) Затушевывание по методу Гуро. д) Затушевывание по методу Фонга, е) Трассировка луча

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

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

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

Один из наиболее качественных высоких методов визуализации, доступный в большинстве программ трехмерного моделирования, называется трассировкой луча. Трассировка луча (ray tracing) представляет собой метод, в котором цвет и значение каждого пикселя на экране рассчитываются путем проведения мнимого луча от точки обзора пользователя к модели, что позволяет определить характеристики освещения и поверхности этой модели. Основное различие между трассировкой луча и рассмотренными ранее методами (так называемыми методами построчной визуализации (scanline)) заключается в том, что благодаря трассировке луч может отражаться от поверхностей и преломляться, как в реальной жизни. Точные тени, блики и даже преломление света — все это придает сцене чрезвычайно реалистичный вид.

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

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

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

Дополнительная информация о режимах визуализации и параметрах их настройки представлена в главе 10, "Визуализация и вывод изображений".

Резюме

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

В главе 3, наконец-то, придет время практики. В ней демонстрируются возможности программ трехмерного моделирования, а также приведены основные способы создания разнообразных моделей. В конечном итоге, все эти примеры могут стать частью ваших демонстрационных работ, так что дерзайте!

Основы трехмерного моделирования

Переход от двухмерной к трехмерной графике

Модель кибернетического пса, созданная в программе 3D Studio R4 (DOS) с использованием базовых опорных сечений и измененных трехмерных примитивов. ©1996 Марк Джамбруно (Mark Giambruno).

£Эсе! — с облегчением вздохнул ученик, закончив дневное занятие по изучению книги заклинаний. — Теперь я смогу добавить больше деталей к моему замку". Он встал со стула, потянулся и принялся расхаясивать вокруг Сияющего Бассейна, оценивая свою работу. Перед ним в воздухе парила впечатляющая башня замка, ее стены были усеяны окнами. Взглянув на красивую крышу, которая, наконец-то, увенчала башню, ученик довольно улыбнулся.

"Неплохо, — сказал он сам себе. — А что, если построить внутренние ворота возле... кованных металлических?". С этими словами он принялся за работу. Через пару часов вернулся Учитель и подошел проверить, чем занимается его ученик.

"Очень хорошо, юноша, — сказал Учитель. — Но разве на этих железных прутьях не должно быть витков? Например, вот здесь и здесь?".

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

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

"Ууу! — простонал ученик, поняв в чем дело. — Их нельзя скрутить после того, как они уже быпи искривлены. Все дело в оси...".

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

"Планируй заблаговременно!

Закладываем фундамент

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

Первое, что нужно сделать при планировании любого проекта — это сесть и четко определить, что же конкретно нужно создать. Допустим, проект содержит анимацию воздушного боя двух современных реактивных истребителей. Отсюда следует, что необходимы объемные модели самолетов, а также ряд изображений неба и поверхности земли. Поскольку на данном этапе основное внимание уделяется моделированию, разберемся сперва с самолетом. Пусть это будет, например, F-14 Tomcat вроде того, на котором летал Том Круз (Tom Cruise) в фильме Top Gun. F-14 является общеизвестным боевым штурмовиком, поэтому разработанные на его основе трехмерные модели наверняка можно найти в Internet, приобрести за символическую плату или же отыскать бесплатный вариант. Исходя из личного опыта работы в этой сфере, могу сказать, что, оценивая стоимость проекта, в первую очередь следует прове рять, можно ли купить достоверную модель в библиотеке каркасов (stock mesh) сторонних разработчиков или же имеет смысл найти бесплатный вариант на компакт-диске/в Internet. Как правило, использование сторонней модели обойдется значительно дешевле, поэтому работа пойдет быстрее, чем при попытке создать модель самостоятельно. Единственный недостаток заключается в том, что такие модели зачастую состоят из огромного числа полигонов, которые сложно изменять. Более подробная информация о библиотеке каркасов представлена в главе 4, "Расширенные возможности моделирования".

В любом случае, раз эта глава посвящена моделированию, то предположим, что модель F-14 придется создавать вручную. Определившись с моделью самолета, нужно найти справочные материалы, которые помогут в этом нелегком деле. Начните с поисков рисунков и спецификаций в Internet, библиотеке или книжном магазине; можно даже просмотреть несколько фильмов, изучив поведение самолета в реальной обстановке. В идеальном варианте вам попадется детализированный рисунок самолета, который можно отсканировать, загрузить в программу трехмерного моделирования и затем применять в качестве шаблона. Дополнительные советы по поиску и использованию справочных материалов представлены в приложении Ж, "Планирование и организация".

Переход от двухмерной к трехмерной графике

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

Принципы моделирования

При разработке модели идите по пути наименьшего сопротивления. Принцип KISS (Keep It Simple, Stupid — не будь глупцом и упрощай) прекрасно подходит для работы в сфере трехмерного моделирования, поскольку усложненные модели и операции чрезмерно нагружают систему, вполне вероятно, могут привести к ряду неполадок.

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

ft

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

Кроме того, представьте себе способ, которым модель будет анимирована на экране. Если дальняя сторона объекта так и не появится, то, возможно, не стоит себя утруждать ее моделированием.

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

Организация проекта

Перед созданием модели уделите немного времени созданию каталогов (папок), упорядочивающих сохраняемые файлы. Рекомендуется создать каталог Проекты (Projects) и хранить в нем все исходные разработки, сгруппировав их по имени проекта или модели. В данном случае можно создать подкаталог с именем F14 Jet, в котором заведите папки Каркасы (Mesh) и Карты (Maps). Затем, после начала работы над созданием модели, файлы трехмерных объектов можно сохранять в каталоге

Проекты\П4 Jet\KapKacbi, а карты текстур— в каталоге Проекты\Г14 JetAKapTbi. В результате, все относящиеся к проекту файлы будут находиться в нужных каталогах. Кроме того, упорядоченное хранение файлов облегчает процесс создания резервных копий проектов, так как пользователю не придется рыскать по всему жесткому диску в поисках каркасов и карт.

Переход от двухмерной к трехмерной графике

Закончив с размещением файлов, перейдем к их именам. Используйте для файлов понятные описательные имена с дополнительным номером (с ведущим нулем), который пригодится для сохранения различных версий вашего проекта. В приведенном примере для файла каркасов лучше всего использовать имя Fl 4 Jet__01. ххх, а для файлов текстурных карт, например, следующие имена: Fl4 Canopy Glass.jpg, Fl4 Tire Tread.bmp и т.д.

Корректное присвоение имен сотням объектов, составляющих модель, также является очень важным фактором. По ходу усложнения модели становится все более трудным визуально отличить ее составные элементы. Кроме того, встречаются такие ситуации, когда для выполнения определенных операций объекты приходится выбирать из алфавитного списка. Подобная операция может сбить пользователя с толку, особенно если в список объектов входят такие элементы, как Sphere27, Linel55 и Cube82, то есть имена, возможно, автоматически присвоенные программой в процессе создания объектов. Выбор объектов из списка, содержащего именавроде F14Rudder, F14WheelRight и F14Missile03, будет более простым.

Более подробная информация о присвоении имен объектам и файлам приводится в приложении Ж. Обязательно прочтите это приложение перед началом процесса моделирования.

Разработка моделей

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

Системы моделирования

Переход от двухмерной к трехмерной графике

Существует четыре основных системы моделирования: полигональная, сплайно-вая, кусочная и параметрическая. Во многих программах поддерживаются все четыре вида, поскольку каждый из них имеет свои преимущества и недостатки. Полигональное моделирование — это основной тип моделирования, при котором трехмерные объекты рассматриваются только как группы многоугольников. Сплайновая технология более замысловата, но она предоставляет возможность работать с объектами независимо от их разрешения. Кусочное моделирование прекрасно подходит для создания органических объектов, а параметрическое — для быстрого и удобного изменения параметров объекта в процессе моделирования. Хотя в каждой отдельной программе реализуются различные подходы, в большинстве случаев поддерживаются две или более системы, что делает программу более многофункциональной.

Полигональное моделирование

Полигональное моделирование (polygonal modeling) — это самая первая разновидность трехмерного моделирования, которая появилась в те времена, когда для определения точек в трехмерном пространстве приходилось вводить вручную с клавиатуры координаты X, Y и Z. Как известно, если три или более точек координат заданы в качестве вершин и соединены ребрами, то они формируют многоугольник (полигон), который может иметь цвет и текстуру. Соединение группы таких полигонов позволяет смоделировать практически любой объект. Недостаток полигонального моделирования состоит в том, что все объекты должны состоять из крошечных плоских поверхностей, а полигоны должны иметь очень малый размер, иначе края объекта будут иметь ограненный вид (рис. 3.1). Это означает, что если для объекта на сцене предполагается увеличение, его необходимо моделировать с большим количеством полигонов (плотностью) даже несмотря на то, что большинство из них будут лишними при удалении от объекта.

Все изображения рабочих экранов программ в этой книге взяты из 3ds max 4.2. Подобно большинству программ трехмерного моделирования, в

3ds max 4.2

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

Переход от двухмерной к трехмерной графике

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

Сплайновое моделирование

Пользователи, работавшие с такими программами двухмерного моделирования, как Illustrator или CorelDraw, наверняка знакомы с одним из основных средств, используемых в этих программах — сплайнами. Говоря техническим языком, сплайн (spline) — это, как правило, кривая линия, задаваемая контрольными точками. Одно из главных преимуществ сплайнового моделирования состоит в том, что оно не завы сит от разрешения объекта, то есть теоретически существует возможность приближаться сколь угодно близко к объекту, не опасаясь эффекта ступенчатости (рис. 3.2).

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

Переход от двухмерной к трехмерной графике

Рис. 3.2. В системе сплайнового моделирования, подобно представленной на этом рисунке технологии NURBS, используются независимые от разрешения сплайны. Они позволяют получить более сглаженные поверхности объектов, чем при полигональном моделировании. Кроме того, конечное разрешение сплайновых объектов можно изменять в любой момент времени

Кусочное моделирование

При кусочном моделировании (patch modeling) для задания и изменения формы куска, представляющего собой пространственную решетку из сплайнов или полигонов, применяется сеть контрольных точек (рис. 3.3). Эти точки управления, также известные как контрольные вершины (control vertices — CV) оказывают на гибкую поверхность куска подобное магнитному влияние, при котором поверхность растягивается в том или ином направлении. Кроме того, куски можно и дальше подразделять на элементы для достижения большего разрешения и "сшивать" друг с другом,

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

Переход от двухмерной к трехмерной графике

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

Параметрическое моделирование

Параметрическое моделирование (parametric modeling) применяется с объектами, сохраняющими свою основную геометрическую информацию: стандартную форму, текущий размер и количество сегментов формы. Поскольку эта информация и возможность ее изменения доступны даже после преобразования объектов, пользователь может вносить изменения или отменять модификацию объектов, а также увеличивать или уменьшать их разрешение (рис. 3.4). Как правило, хотя параметрическое моделирование основывается на сплайнах, не все сплайновые модели являются параметрическими.

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

Переход от двухмерной к трехмерной графике

Рис. 3.4. Параметрическое моделирование основано на сплайнах, однако с его помощью можно корректировать и отменять операции даже после завершения нескольких этапов модификации объекта. Кроме всего прочего, это дает возможность изменять разрешение объекта уже после его создания

Переход от двухмерной к трехмерной графике

Если параметрическая модель предназначена для использования вне программы трехмерного моделирования — например, в играх— то ее необходимо преобразовать в полигональную модель. Этот процесс часто называют разрушением (collapsing) каркаса объекта.

Сам факт наличия такого разнообразия систем моделирования является одной из причин, почему так трудно приводить инструкции для создания тестовых моделей (приведенные в конце этой главы), не опираясь на конкретную программу. (Тестовые примеры для 3ds max, Light Wave и Maya представлены на компакт-диске.) Хотя для создания таких круглых органических форм, как гелиевый баллон, больше подходят сплайновое и параметрическое моделирование, можно применять и полигональные модели, не забывая при создании объекта определять разумный показатель плотности каркаса. И все же, независимо от применяемой системы моделирования, все представленные в этой книге тестовые примеры можно опробовать, если не одним способом, так другим.

Работа в мире трехмерной графики

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

Управление

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

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

Большую часть времени, проводимого с программой, пользователь вглядывается в поля обзора, так что внимательно ознакомьтесь с их управляющими элементами. В большинстве программ реализован панорамный вид (pan) — поворот съемочной камеры вокруг поля обзора, который позволяет видеть объекты, расположенные по разным сторонам. Также можно изменять масштаб изображения: крупный план — для работы с деталями или мелкий — для отображения большего числа объектов на сцене. Существует и управляющий элемент "показать все" (zoom all), автоматически меняющий масштаб так, чтобы на сцене поместились все объекты. Это необходимо в тех случаях, когда пользователь пытается найти и переместить "затерявшиеся" объекты, импортируемые в программу или созданные для другого проекта.

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

Единицы измерения и масштаб

В программах трехмерного моделирования для отслеживания размера и местоположения объектов используются координаты, однако это громоздкие и неудобные числа, с которыми довольно тяжело работать. Целесообразнее применять более привычную систему измерения, вроде дюймов или сантиметров. Поэтому в программных продуктах пользователям, как правило, предоставляется возможность выбрать единицы измерения (units): английские (футы и дюймы), метрические (метры и сантиметры) или типовые

(десятичные числа, более короткие, чем координаты). Кроме того, зачастую разрешается выбрать между дробным (1/2) или десятичным (0,5) представлением данных.

Подобно тому, как в чертежах и инженерных проектах используется масштаб (scale) — например, 1/8"=Г-0" или 1 см = 1 м, — так и в программах трехмерного моделирования существует возможность задавать масштабный коэффициент (цену деления шкалы). Перед началом работы над проектом обязательно следует определится с единицами измерения и масштабом для того, чтобы использовать одни и те же значения при создании всех моделей проекта. В подобном случае будет применяться единая система измерения, следовательно, при объединении моделей в один проект соответствующие пропорции объектов будут сохранены.

Сетки и точки привязки

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

Переход от двухмерной к трехмерной графике

Рис. 3.5. Использование сеток и точек привязки, а) Сетки и точки привязки облегчают создание и выравнивание форм и объектов. 6) Поскольку оба объекта выбраны независимо от точки обзора, их можно выравнивать с любой перспективы, в) Для создания форм и объектов произвольных очертаний привязку следует отключить, г) Точки привязки можно задавать независимо от сетки, облегчая выравнивание объектов с меньшим шагом, чем шаг сетки.

Место возникновения объекта можно менять с помощью структурных плоскостей или сеток (construction planes/grids) — дополнительных перемещаемых плоскостей, посредством которых переносится базовое расположение новых объектов по отношению к другим элементам пространства. Структурные плоскости часто используются при работе с отдельными элементами большой сцены или для выравнивания новых объектов относительно определенной плоскости. •

Функция привязки (snap) обычно используется вместе с сеткой и предназначена для быстрого перемещения курсора с одной позиции на другую — как правило, на точки пересечения двух линий сетки. В зависимости от программы также существует привязка к вершинам или граням объектов. Обратите внимание, что настройки точек привязки и точек сетки могут не совпадать, тем самым позволяя создавать и точно перемещать объекты без изменения параметров сетки.

Сетки и точки привязки желательно использовать всегда, когда это возможно, в результате чего формы получаются более аккуратными, а выравнивание осуществляется точнее, не говоря уже о значительном ускорении процесса моделирования.

Сокрытие и отображение

Операция сокрытия (hide) позволяет скрыть форму или объект со сцены, а команда отображения (unhide) — вывести их обратно на сцену. Эта очень ценная пара команд для устранения со сцены каркасных сеток, не нужных в текущий момент времени (а также для предотвращения случайного изменения каркасов), и, кроме того, таким образом ускоряется визуализация сцены. Тем не менее, иногда необходимо, чтобы на сцене присутствовал объект, но его выбор или случайное изменение крайне нежелательны. В таких случаях на помощь приходят фиксация (freeze) или режим-"призрак" (ghost).

Фиксация и режим-"призрак"

Если с формой или объектом используется фиксация (freeze) или режим-призрак" (ghost), то они остаются видимыми на сцене, но, будучи зафиксированными, их выбор невозможен. Поскольку трехмерные сцены имеют тенденцию быстро усложняться, то с выбором нужного объекта можно легко ошибиться. "Замороженные" объекты обычно имеют другой цвет, поэтому пользователь может не ломать голову над тем, почему объекты не выбираются. Для модификации такого объекта следует использовать обратную фиксацию (unfreeze) или отмену режима-призрака" (ungost).

Группирование

Группирование (grouping) — это удобный способ временного объединения нескольких форм или объектов. Данная функция позволяет обрабатывать объекты как единое целое при операциях преобразования, наложения текстур и т.п., позволяя, по мере необходимости, разбивать группу на составляющие элементы.

Создать группу несложно — просто выберите необходимые объекты, сгруппируйте их и присвойте группе имя. Некоторые программы позволяют работать с отдельными объектами в группе без предварительного использования разгруппирования (ungroup).

Двухмерные формы

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

Читатель наверняка уже заполнил пробелы в теории двухмерных полигонов с помощью предыдущей главы, поэтому подведем краткий итог. К двухмерным формам относятся прямые и ломаные линии, полигоны и сплайны. Ломаная (curve) — это прямая линия, содержащая более одного сегмента (то есть имеющая три и более вершин). Полигон (polygon) — это замкнутая форма с тремя или более ребрами. Полигоны имеют грани, отображающиеся при визуализации изображений, а прямые и ломаные линии — обычно нет.

Зачем использовать двухмерные формы

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

Переход от двухмерной к трехмерной графике

Рис. 3.6. Трехмерная модель "Gizmo" для компании Mplayer была создана с помощью программы 3ds max Марком Джамбруно (Mark Giambruno) и Лаурой Хейнке (Laura Hainke). ©1996 Mplayer

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

Великолепным примером использования двухмерных форм для построения трехмерных объектов является модель "Gizmo", созданная автором этой книги для компании Mplayer Interactive, которая занимается поддержкой Internet-игр. "Gizmo" — это устройство, имеющее вид высокотехнологичного портативного телевизора и выполняющее роль пользовательского интерфейса для работы со службой Mplayer (рис. 3.6).

Все началось с импорта в 3D Studio двухмерного чертежа "Gizmo", созданного в программе Illustrator Томом Гуденом (Tom Gooden) из компании Good Dog Design. Затем сложная конструкция была разбита на несколько основных поперечных сечений, которые изображались в качестве двухмерных форм (рис. 3.7). Для формирования скелета объекта использовался модифицированный вариант первоначальных рисунков вместе с дополнительными сечениями. Окончательную форму объект приобрел после "наложения" двухмерных форм на поверхность (более подробно далее в этой главе).

Переход от двухмерной к трехмерной графике

Рис. 3.7. Исходные формы "Gizmo"разработаны из поперечных сечений на основе сплайнов. Базовая форма импортирована из рисунка, созданного в программе Illustrator, а для очертания формы с разным масштабом были определены дополнительные поперечные сечения. ©1996 Mplayer

В данном случае двухмерные сечения являются не полигонами, а сплайнами, наиболее подходящими для создания криволинейных форм.

Сплайны

Как уже говорилось ранее, сплайны — это, как правило, кривые линии, задаваемые контрольными точками. Существует несколько видов сплайнов, наиболее распространенными из которых считаются В-сплайны, сплайны Безье и NURBS (рис. 3.8).

Переход от двухмерной к трехмерной графике

Рис. 3.8. В программах трехмерного моделирования обычно используется три вида сплайнов — В-сплайны, сплайны Безье и NURBS. Каждому из них присущ уникальный метод управления формой сплайна

Общей особенностью всех сплайнов является то, что они состоят из линий или форм, управляемых посредством ломаной линии или полигона. Ломаная линия или полигон (так называемые контрольные линии/полигоны или каркас) невидимы — они служат лишь для задания степени кривизны конечного сплайна. В зависимости от разновидности сплайна основные точки на управляющей линии отмечаются с помощью контрольных точек (control points) или контрольных вершин (control vertices), в то время как касательные точки (tangent point) или точки плотности (weights) действуют подобно небольшим магнитам, притягивающим к себе сплайны. Манипулирование этими точками и позволяет изменять форму сплайна.

♦ Форма В-сплайна (B-spline) редактируется с помощью контрольных точек с одинаковыми точками плотности. В этих сплайнах контрольные точки редко располагаются на результирующей кривой.

♦ В сплайнах Безье (Bezier) контрольные точки всегда находятся на результирующей кривой. Из контрольных точек выходят касательные точки или манипулято ры (handles), позволяющие изменять кривую не затрагивая контрольных точек. С касательными точками можно работать по отдельности, что хотя и уменьшает гладкость кривой, но в тоже время увеличивает возможности редактирования.

♦ В сплайнах NURBS (неравномерные рациональные В-сплайны) контрольные точки также находятся вне кривой, однако, в отличие от касательных точек, для управления кривой используются точки плотности. Кроме того, имеются узловые точки, определяющие количество контрольных точек на избранном отрезке кривой.

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

Редактирование двухмерных форм

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

Переход от двухмерной к трехмерной графике

Рис. 3.9. Виды контрольных точек, а) Стандартные точки Безье. б) Угловые точки Безье. в) Сглаженные точки, г) Угловые точки

Далее описываются разновидности контрольных точек или вершин.

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

♦ Угловые контрольные точки Безье (Bezier corner control points) содержат манипуляторы, которые можно редактировать независимо друг от друга, что позволяет создавать менее гладкие кривые.

♦ Сглаженные контрольные точки (smooth control points) не содержат манипуляторов — они используют определенную формулу для вычисления степени искривления сплайна между контрольными точками.

♦ Угловые контрольные точки (corner control points) лишают сплайн кривизны, делая сегменты между точками прямыми линиями.

Сочетание этих типов контрольных точек позволяет создать практически любую двухмерную форму. Точки и вершины в дальнейшем можно изменять с помощью редактирования.

К основным операциям редактирования линий и полигонов относятся следующие: перемещение, добавление или удаление линий, вершин, ребер (рис. 3.10). Обратите внимание, что для этих операций может не существовать специальных команд, поскольку они, как правило, задаются кнопками мыши или клавишами модификации <Shift>, <Ctrl>, <Alt>.

Переход от двухмерной к трехмерной графике

Рис. 3.10. Основные операции редактирования основных/ломаных линий или полигонов. Операция добавления создает новую вершину, тогда как операции удаления или перемещения непосредственно влияют на существующие вершины

♦ С помощью добавления вершины (add vertex) создается новая вершина — либо на существующем ребре, либо в качестве продолжения последней точки обычной или ломаной линии.

♦ Посредством удаления вершины (delete vertex) удаляется вершина с примыкающими к ней ребрами и создается новое ребро между любыми вершинами, с которыми была связана удаленная вершина.

♦ Операция перемещения вершины (move vertex) позволяет изменять положение выбранной вершины и связанных с нею ребер.

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

Программы трехмерного моделирования, хотя и реже, чем основные команды редактирования линий и вершин, могут поддерживать операции двухмерного обрезания (trim) и закругления (round/fillet) (рис. 3.11). Обрезание зачастую активизируется щелчком на соответствующей кнопке для начала операции, а затем выбором линий в определенном порядке, что, однако, зависит от конкретной программы.

Переход от двухмерной к трехмерной графике

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

♦ Обрезание линий (trim) соединяет перекрывающиеся линии в точке их пересечения и удаляет элементы, выходящие за линию.

♦ Скос линий (bevel) образует новый сегмент, соединяющий выбранные точки. Участки, лежащие за выбранными точками, также удаляются.

♦ Закругление (round/fillet), подобно скосу линий, создает новый сегмент, но в данном случае создается сглаженная кривая.

К основным модификациям сплайнов относятся перемещение, добавление или удаление контрольных точек, корректировка касательных направляющих или точек плотности (рис. 3.12). Для этих операций, как и в случае прямой/ломаной линии и полигона, может не предусматриваться специальных команд, которые выполняются с помощью клавиш мыши или клавиш модификации <8ЫЛ>, <СЫ>, <Ак>.

Переход от двухмерной к трехмерной графике

Рис. 3.12. Основные модификации сплайна Безье. Корректировка контрольной точки (верхний ряд). Настройка касательных направляющих (нижний ряд)

Добавление контрольной точки (add control point) создает новую вершину либо на существующей кривой, либо в качестве продолжения последней точки кривой.

Удаление контрольной точки (delete control point) удаляет вершину с прилегающими к ней кривыми; между вершинами, с которыми была связана удаленная вершина, создается новая кривая.

Перемещение контрольной точки (move control point) позволяет изменять положение выбранной вершины и связанных с ней кривых.

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

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

Переход от двухмерной к трехмерной графике

Рис. 3.13. Некоторые программы предоставляют возможность преобразовывать полигоны в сглаженные сплайны. Это ускоряет и облегчает процесс создания сложных органических форм

Разрешение формы

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

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

Общим значением, отражающим разрешение формы или объекта, является количество содержащихся в них шагов. Шаги (steps) указывают на число дополнительных вершин, создаваемых между контрольными точками сплайна или вершинами полигона. Например, размер шага, равный 0, будет означать, что никаких дополнительных вершин не добавляется, поскольку прямая проходит между исходными контрольными точками или вершинами за один шаг. Если же размер шага равен 3, то будет добавлено три дополнительных вершины, разделяющие прямую между исходными точками на четыре сегмента.

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

Переход от двухмерной к трехмерной графике

Рис. 3.14. Влияние разрешения на объекты и открытые сплайны, а) Высокое разрешение, б) Среднее разрешение, в) Низкое разрешение

Присоединение/отсоединение двухмерных форм

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

Переход от двухмерной к трехмерной графике

Соединение двух ломаных линий не означает, что они должны обязательно составадцъ единую замкнутую форму (closed shape). В некоторых слу-чаях может потребоваться отдельная операция слияния (weld) граничных точек форм.

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

Переход от двухмерной к трехмерной графике

Рис. 3.15. Операции присоединения и отсоединения. Верхний ряд: присоединение и отсоединение отрезков прямой облегчает создание сложных плоских форм или использование элементов одной формы в другом месте. Нижний ряд: присоединение объектов подобно группированию. Впоследствии их можно отделять друг от друга

Булевы операции

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

Формы, выбранные для этих операций, называются операндами (operands), а порядок их выбора влияет на результат некоторых операций, например, на извлечение. К другим булевым операциям относятся добавление, пересечение и разбиение (рис. 3.16). Обратите внимание, что в разных программах имеется тенденция использования различных терминов для обозначения булевых операций, однако сам набор операций остается неизмененным.

Переход от двухмерной к трехмерной графике

сложение вычитание пересечение разбиение

Рис. 3.16. Булевы операции добавления, извлечения, пересечения и разбиения для двухмерных форм. При использовании операции извлечения объект, выбранный вторым, извлекается из первого

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

♦ Операция вычитания (subtract) удаляет из первой формы любые перекрывающие ее части второй формы. Применяйте извлечение для отрезания элементов формы или создания "вырезных профилей" при построении полых объектов.

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

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

Импорт и экспорт форм

Еще одним преимуществом работы с плоскими формами является то, что они без труда переносятся из программ двухмерной графики в программы трехмерного моделирования и наоборот. Это означает, что существует возможность экспортировать (сохранять в совместимом формате) изображение, созданное, например, в программе Adobe Illustrator или CorelDRAW и импортировать его в программу трехмерного моделирования.

Большинство программ поддерживают, по крайней мере, один двухмерный формат экспорта/импорта. Наибольшее распространение получил формат DXF (Drawing exchange Format — формат обмена рисунков), а также AI (Adobe Illustrator) и IGES (Initial Graphics Exchange Specification — базовая спецификация графического обмена). Более подробная информация по этой теме представлена в главе 10, "Визуализация и вывод изображений".

Преобразование двухмерных форм в трехмерные объекты

Мы уже научились создавать и редактировать плоские формы, но каким же образом они превращаются в трехмерные объекты? Фактически, можно использовать несколько различных операций с небольшим количеством форм и получить неожиданно широкий диапазон результатов. Наиболее часто применяются операции выдавливания (extrude), вращения (lathe), развертки (sweep) и наложения (skin). В этих операциях также имеет значение разрешение формы, поскольку программа, как правило, позволяет задавать уровень возрастания (шагов или сегментов), используемый для преобразования формы из плоской в объемную. К слову сказать, чтобы форму можно было использовать в объемных сценах, она не обязательно должна иметь глубину. После того, как двухмерная форма превратится в плоский полигон с поверхностью, на него можно наложить текстурную карту и применять в модели как и любой другой объект.

Переход от двухмерной к трехмерной графике

Выдавливание формы

Наиболее простой способ преобразования двухмерной формы в трехмерную — это ее выдавливание. При выполнении операции выдавливания (extrude) двухмерная форма просто "проталкивается" в третье измерение, получая Z-ось глубины (рис. 3.17). В результате появляется трехмерный объект, обладающий шириной, высотой и глубиной.

Переход от двухмерной к трехмерной графике

Рис. 3.17. Выдавливание формы, а) Двухмерные формы заданы с помощью ломаных линий или сплайнов. 6-г) Выдавливание применяется к двухмерным формам, придавая им необходимую глубину

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

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

Вращение формы

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

Переход от двухмерной к трехмерной графике

Рис. 3.18. Операция вращения, а) Создано плоское поперечное сечение и выбрана ось вращения, б-г) Поперечное сечение объекта вращается вокруг своей оси, постепенно вдавливаясь вовнутрь

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

Для создания кругового объекта с помощью ломаных линий или сплайнов создайте двухмерный объект или объекты, которые будут использоваться в качестве поперечного сечения. Выберите команду вращения (lathe) для определения оси, вокруг которой предполагается вращать поперечное сечение, в результате чего получится радиально симметричный трехмерный объект.

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

Переход от двухмерной к трехмерной графике

в г

Рис. 3.1 9. Виды вращения, а) Замкнутое вращение, б) Незамкнутое вращение, в) Замкнутое частичное врашрние. г) Незамкнутое частичное вращение

Вращение не обязательно должно проводиться на все 360° — это может быть 90°, 180° или 272°, результатом чего будет частичное вращение. Подобное вращение облегчает возможность создания разрезов объектов или же устранения лишних элементов формы, когда, например, часть объекта находится внутри другого объекта.

Развертка формы

Несмотря на широкое распространение, следующие две операции преобразования плоских форм в объемные имеют разные (иногда противоположные) названия в зависимости от программы, в которой они используются. К примеру, в программе 3D Studio эта операция называется лофтингом (lofting) или созданием объектов на основе опорных сечений, а во многих других программах — разверткой (sweep), как и мы будем называть ее далее. Развертка — это одинарное двухмерное поперечное сечение, протягиваемое вдоль определенного пути (рис. 3.20).

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

Переход от двухмерной к трехмерной графике

Рис. 3.20. Развертка формы, а) Определение двухмерного поперечного сечения, б) С помощью ломаных линий или сплайнов создается путь, в) Определяется поперечное сечение для пути (или наоборот), настраивается направление, г) Поперечное сечение протягивается вдоль пути, создавая трехмерный объект

Развертка, в зависимости от пути, бывает трех видов: открытая, замкнутая и спиралевидная (рис. 3.21). Хотя спиралевидная развертка может рассматриваться в качестве разновидности незамкнутой, благодаря частому использованию она заслужила отдельное название.

Незамкнутая развертка (open sweep) создается с помощью пути, имеющего две конечных точки. Такие развертки позволяют выдавливать объекты по криволинейной траектории, что невозможно сделать посредством изначальной операции выдавливания (extrude). Незамкнутая развертка используется для создания моделей проводов, веревок, труб, стволов растений, змей или любых изогнутых промышленных изделий.

♦ Спиралевидная развертка (helical sweep) является разновидностью незамкнутой, путь в которой извивается подобно пружине, для создания которой эта развертка, в основном, и применяется. Кроме того, с ее помощью можно создавать винтовую резьбу. Большинство программ предлагают средства управления, облегчающие формирование спиралевидного пути для такой развертки.

♦ Замкнутая развертка (closed sweep) создается посредством замкнутого пути таким образом, что поперечное сечение по мере продвижения вдоль пути возвращается в исходную точку. С помощью замкнутых разверток удобно создавать повязки футбольных болельщиков, картинные рамки, орнаменты или окантовки объектов.

Переход от двухмерной к трехмерной графикеПереход от двухмерной к трехмерной графике

Рис. 3.21. Виды разверток, а) Незамкнутая, б) Спиралевидная, в) Замкнутая

Наложение текстуры

Последним из распространенных способов превращения плоских форм в объемные является наложение/натяжка текстуры (skinning). Эта операция аналогична развертке (sweep), за исключением того, что здесь можно использовать несколько различных поперечных сечений для одного пути (рис, 3.22). В сущности, программа создает "кожу", охватывающую этот путь-остов подобно тому, как натягивают на металлические спицы ткань или пластик при создании зонтика.

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

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

Переход от двухмерной к трехмерной графике

Рис. 3.22. One рация наложения, а) Определяются двухмерные формы поперечного сечения, б-в) Выбирается путь и расположение поперечных сечений, г) Выполняется наложение, в результате чего появляется поверхность, соединяющая поперечные сечения

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

Переход от двухмерной к трехмерной графике

Рис. 3.23. Неудачный результат наложения, а) Трехмерный объект получился перекрученным, б) Изучение поперечных сечений показало, что первые вершины не выровнены, в) Вращение поперечных сечений улучшило выравнивание, г) Наложение текстуры на откорректированный объект получилось куда менее изогнутым

Трехмерные примитивы

Примитивы (primitives) — основные объемные геометрические формы, строительные блоки программ трехмерной графики. Они по умолчанию уже готовы к участию в моделировании, кроме того, их можно изменять с помощью булевых операций (рис. 3.24). Хотя многие примитивы можно создать путем вращения или выдавливания плоских форм, в большинстве программ они присутствуют уже в завершенном варианте, тем самым облегчая процесс моделирования.

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

Переход от двухмерной к трехмерной графике

Такие примитивы, как конусы или полусферы, имеют плоский раздел, называемый верхушкой (cap). Некоторые программы позволяют задавать определенный вид верхушки или даже совсем ее убирать.

Переход от двухмерной к трехмерной графике

Рис. 3.24. Основные трехмерные примитивы, а) Куб. б) Цилиндр, в) Труба, г) Сфера, д) Тор. е) Конус

Переход от двухмерной к трехмерной графике

Рис. 3.25. Дополнительные трехмерные примитивы, дос-тупные в некоторых программах, имеют скошенные ши закругленные края и сложно моделируемые формы, а) Сглаженный куб. б) Вал. в) Сглаженный цилиндр, г) Торовый узел, д) Капсула, е) Звездообразный многогранник

Чрезмерное, зачастую неуместное использование исходных (неизмененных) примитивов является одной из наиболее распространенных ошибок новичков. По своей природе примитивы обладают геометрически безукоризненной внешностью, которая словно кричит: "Я — настоящий трехмерный объект!". Как рассказывается в главе 5, основой для трехмерных объектов лучше выбрать менее идеальные двухмерные формы. Примитивы быстрее подойдут в качестве строительных блоков для создания сложных форм или на заднем плане сцены, где дополнительные детали так или иначе теряются. Кроме того, примитивы хорошо использовать на переднем плане после трансформации или модификации их внешнего вида.

В некоторых программах можно встретить набор дополнительных, более "изощренных" примитивов, которые, возможно, более уместны на переднем плане, поскольку обладают искривленными или закругленными краями, а не грубо "вытесанными", выдающими их компьютерное происхождение (см. рис. 3.25). Таких примитивов немало, строить их самому — скучно, неинтересно, да и просто будет жаль потраченного времени.

Резюме глава 1 || Оглавление || Трансформация объектов