close

Вход

Забыли?

вход по аккаунту

?

Obukhova

код для вставкиСкачать
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
Федеральное государственное автономное образовательное
учреждение высшего профессионального образования
САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
АЭРОКОСМИЧЕСКОГО ПРИБОРОСТРОЕНИЯ
Н. A. Обухова
ОСНОВЫ ТЕОРИИ И ПРАКТИКА
КОМПЬЮТЕРНОГО СИНТЕЗА
ТРЕХМЕРНЫХ ИЗОБРАЖЕНИЙ
Учебное пособие
Санкт-Петербург
2014
УДК 004
ББК 32.81
О26
Рецензенты:
доктор технических наук, профессор А. П. Ястребов;
доктор технических наук, профессор Н. В. Лысенко
Утверждено
редакционно-издательским советом университета
в качестве учебного пособия
Обухова, Н. А.
О26 Основы теории и практика компьютерного синтеза трехмерных изображений: учеб. пособие / Н. А. Обухова. – СПб.: ГУАП,
2014. – 124 с.: ил.
ISBN 978-5-8088-0888-1
Приведены теоретические материалы по основам синтеза трехмерных
компьютерных изображений. Детально изложен базовый математический аппарат : геометрические преобразования на плоскости (2D-преобразования),
геометрические преобразования в трехмерном пространстве (3D-преобразования), а также механизм проецирования трехмерных объектов. Рассмотрены
наиболее важные алгоритмы, используемые при формировании трехмерных
реалистичных изображений: алгоритмы удаления нелицевых ребер и граней;
алгоритмы определения видимости в сцене, в частности алгоритм сканирующей строки, алгоритм сортировки по глубине и алгоритм z-буфера. Обсуждены основные модели и алгоритмы закраски.
Теоретический материал пособия дополнен развернутым практикумом,
предполагающим самостоятельную работу студентов в современном пакете
трехмерного моделирования и анимации 3D Studio Max. Практикум включает 7 частей и позволяет освоить базовые и дополнительные методы геометрического моделирования объектов, анимацию простых объектов и иерархических цепочек, получить навык по работе в библиотеке материалов пакета.
Пособие предназначено для студентов радиотехнического факультета, обучающихся по направлению «Радиотехника», а также по специальностям
«Аудиовизуальная техника» и «Радиоэлектронные системы».
УДК 004
ББК 32.81
ISBN 978-5-8088-0888-1
© Санкт-Петербургский государственный
университет аэрокосмического
приборостроения (ГУАП), 2014
© Н. А. Обухова, 2014
ПРЕДИСЛОВИЕ
Синтез трехмерных изображений – это отрасль компьютерной
графики, занимающаяся моделированием различных предметов и
явлений. Она возникла в 70-x годах прошлого века и первоначально воспроизводила на экране отдельные предметы, не претендуя
на фотореализм. В настоящее время попытки создать высоко реалистичные изображения становятся все успешнее. Достижения современной компьютерной графики настолько высоки, что при ее
использовании почти невозможно отличить компьютерные модели
от реальных предметов. Это определяет ее широкое использование
в разнообразных областях:
в индустрии развлечений и рекламе,
в медицине,
в промышленности и строительстве,
в бизнесе и научных исследованиях.
Использование 3D-графики в индустрии развлечений охватывает такие направления, как видеоигры и системы виртуальной
реальности, производство полнометражных фильмов и рекламных роликов, создание спецэффектов и парадоксальных объектов.
В строительстве с помощью трехмерной графики визуализируются архитектурные проекты. Это позволяет увидеть еще не существующий
объект, выявить его недостатки и создать более технически совершенную конструкцию. В медицине для повышения качества и надежности диагностики используют трехмерные изображения внутренних
органов по данным компьютерных томографов или на основе двумерных изображений, полученных с помощью видеокамеры. Визуализация информации методами трехмерной графики является сегодня
нормой при проведении деловых совещании и научных семинаров.
Для компьютерной разработки трехмерных объектов и их анимации создано значительное количество пакетов прикладных программ. К наиболее популярным следует отнести:
Autodesk 3D Studio Max;
Autodesk Maya;
Autodesk Softimage;
3
Maxon Cinema 4D;
Blender Foundation Blender;
Side Effects Software Houdini;
Luxology Modo;
NewTek LightWave 3D;
Caligari Truespace.
Пакеты трехмерного моделирования предоставляют громадные
возможности по моделированию и анимации трехмерных объектов.
В них можно разрабатывать объекты практически любой сложности; создавать фигуры людей и животных; моделировать динамику
тела, частей тела, волос, кожи; формировать реалистичные пейзажи, воспроизводя их с фотографической точностью и многое другое.
Синтез трехмерных изображений – это сформировавшееся направление, имеющее свой математический аппарат, а также разнообразные методы и алгоритмы создания изображений. Эти алгоритмы обеспечивают весь широкий спектр возможностей современных
пакетов трехмерного моделирования.
Рассмотрению теоретических основ компьютерного синтеза,
а также практике создания трехмерных изображений посвящено
данное пособие.
Теоретический материал подробно представлен в первой главе.
Структура изложения следующая:
в параграфе 1 рассмотрены основные принципы создания трехмерных реалистичных изображений (3D-конвейер);
в параграфах 2, 3 и 4 рассмотрен базовый математический аппарат, являющийся основой трехмерной компьютерной графики;
в параграфах 5 и 6 изложены наиболее важные алгоритмы, используемые при формировании трехмерных реалистичных изображений.
Практике создания и анимации трехмерных изображений посвящены вторая и третья глава.
Во второй главе пособия изложены концептуальные основы трехмерного моделирования и анимации в пакте 3D Studio Max.
Третья глава построена в форме практикума, состоящего из 7 частей. Самостоятельное выполнение заданий практикума третьей
главы позволяет освоить различные методы геометрического моделирования трехмерных объектов, получить навыки по компоновке
и построению сцен, выбору освещения, научиться работать с материалами и создавать анимационные последовательности.
Книга предназначена студентам специальности «Аудиовизуальная техника», а также всем, кто занят в сфере информационных и
мультимедийных технологий.
4
1. ОСНОВЫ ТЕОРИИ СИНТЕЗА
ТРЕХМЕРНЫХ ИЗОБРАЖЕНИЙ
1.1. Этапы СинтезА трехмерного изображения. 3D-конвейер
Основная цель синтеза трехмерного (3D) изображения – это формирование объектов и визуальных эффектов, создающих ощущение объемности изображения, на основе аналитических расчетов.
Эти эффекты относятся к группе вторичных факторов, определяющих способность человека к объемному восприятию. К группе первичных факторов относят стереозрение. В основе вторичных факторов лежит способность подсознательно анализировать особенности
изображения, определенные пространственным положением наблюдаемых объектов и их частей. Основными факторами вторичной
группы являются:
оценка расстояния до предмета на основе информации о его размерах;
оценка порядка наложения предметов друг на друга;
определение глубины пространства за счет использования эффекта перспективы;
анализ световых эффектов (например, теней и бликов) на предмете.
Cинтез 3D-изображения включает в себя следующие основные
процедуры:
моделирование формы трехмерного объекта;
моделирование поверхности объекта с учетом различных факторов, например, освещения, отражения, рельефа и раскраски объекта;
расчет движения объекта и трансформации его формы;
проецирование рассчитанного объекта на плоскость экрана
с учетом всех визуальных эффектов, обусловленных формой объекта, особенностями освещения, степенью прозрачности среды.
Процесс расчета 3D-изображения выполняется в несколько последовательных этапов и называется 3D-конвейером. Основными
являются следующие этапы.
1. Построение геометрической модели объекта. На этом этапе формируют аналитическое описание формы объекта. Для решения задачи
используют модели различного вида – граничные, поверхностные, а
также модели сплошных тел. Наиболее часто форму объекта описывают с помощью поверхностных моделей, включающих в себя координаты опорных точек и уравнения основных поверхностей, образующих
объект. Такое представление называют каркасом объекта.
5
Рис. 1.1. Результат этапа
тесселяции – представление объекта Рис. 1.2. Результат трансформации
формы объекта
с помощью полигональной сетки
2. Тесселяция. Выполняют разбиение поверхности полученного объекта на плоские элементы прямоугольники или треугольники (рис. 1.1). В результате тесселяции поверхность объекта, обычно
имеющая искривленную форму, становится «граненой»: представляет собой совокупность плоских многоугольников (треугольников или четырехугольников). Полученную совокупность плоских
многоугольников называют полигональной сеткой. Число и размер
многоугольников в полигональной сетке определяют точность воспроизведения поверхности объекта.
3. Трансформация. Моделируют движение объекта, его перемещение, вращение и изменение формы (рис. 1.2). Этап сводится
к преобразованию координат вершин многоугольников полигональной сетки и основан на использовании матричного представления аффинных преобразований в 2D- и 3D-пространстве.
4. Удаление скрытых линий. Этап предполагает удаление нелицевых, с заданной точки обзора, ребер и граней объектов (рис. 1.3). Наиболее часто для решения этой задачи используют алгоритм Робертса.
Дополнительно, выполняют процедуру отсечения. Задают некоторую область пространства при выходе, из
которой объекты или их части далее
не рассматриваются. Основная цель
данного этапа снижение непроизводительных затрат путем удаления частей объекта, которые будут не видны. Особенностью обработки на данном этапе является анализ каждого
объекта отдельно без учета его заслоРис. 1.3. Результат удаления
нелицевых граней и ребер
нения другими объектами сцены.
6
5. Определение видимости объектов в сцене. Реализуют удаление невидимых поверхностей: частей объектов, закрытых другими
объектами. Для определения видимых частей объекта (ребер, граней) необходимо провести лучи через все его точки до пересечения с
картинной плоскостью. Видимыми будут те точки объекта, которые
по направлению луча будут расположены ближе к наблюдателю.
Несмотря на простую формулировку, задача удаления невидимых ребер и граней является достаточно трудоемкой и требует больших объемов вычислений. Это обусловило разработку многочисленных методов и алгоритмов для ее решения. Среди них можно выделить две основные группы: алгоритмы, работающие в пространстве
изображения, и алгоритмы, работающие в пространстве объекта.
Наиболее часто используют алгоритм z-буфера, алгоритм сканирующей строки и алгоритм сортировки по глубине.
6. Расчет освещения и закраска элементарных многоугольников полигональной сетки. Рассчитывают освещенность каждого
элементарного многоугольника полигональной сетки на основании
данных о его удаленности от источника света, угла падения света,
типа поверхности, а также от вида источника света. Основными используемыми алгоритмами являются: алгоритм однотонной закраски, алгоритм Гуро и алгоритм Фонга (см. рис. 1.4).
7. Проецирование полученных объектов на плоскость экрана.
На этом этапе реализуют преобразование трехмерного изображения
в двумерное для вывода на экран. Применение центрального проецирования позволяет, используя информацию о координате z, создать на экране иллюзию глубины – сформировать перспективу. Реализация проецирования в математическом смысле предполагает
а)
б)
Рис. 1.4. Результат закраски объекта
с помощью алгоритма однотонной закраски (a) и алгоритма Гуро (б)
7
перемножение координат вершин многоугольников полигональной
сетки на матрицу соответствующего вида проецирования.
8. Детализация поверхностей. Выполняют наложение на поверхности объектов текстуры, описывающей различные свойства
материалов, такие как цвет, узор, шероховатость (рис. 1.5). Для текстур обычно используют изображения, имитирующие материал,
из которого сделана поверхность моделируемого объекта. Реализуют замену каждого элементарного многоугольника полигональной
сетки частью текстуры. При этом значение цвета каждого пикселя
многоугольника вычисляется по цвету соответствующего пикселя текстуры (тексела). Соответствие между пикселями и текселами обеспечивается путем проецирования текстуры на поверхность
многоугольника. В зависимости от формы объекта и отдельных его
частей используют различные системы проекционных координат:
прямоугольная, сферическая, цилиндрическая и др.
9. Моделирование эффектов прозрачности и полупрозрачности.
На основе данных о взаимной прозрачности объектов и среды выполняют коррекцию цвета пикселей, так называемое альфа смешение (рис. 1.6).
10. Расчет теней. Этап предполагает воспроизведение теней, которые отбрасывает объект. Тени повышают реалистичность и являются дополнительным средством для имитации глубины. Наиболее
простым способом расчета теней является использование алгоритмов удаления невидимых поверхностей этапа 6. В них определяют
поверхности, которые можно увидеть из заданной точки зрения,
а в алгоритме затенения выделяют поверхности, которые можно увидеть из источника света. Максимально реалистичные тени с учетом
Рис. 1.5. Результат наложения
текстуры на объект
8
Рис. 1.6. Результат применения
технологии альфа-смешения
прозрачных и полупрозрачных поверхностей, а также отраженного
света получают с помощью алгоритма трассирования лучей.
11. Коррекция дефектов сформированного изображения. Наиболее часто основным содержанием данного этапа является антиалиайсинг. В частном случае это удаление так называемого ступенчатого эффекта, появляющегося на наклонных линиях. Вариантом
антиалиайсинга является следующий алгоритм: изображение изначально рассчитывают в большем разрешении, чем выводимое на
экран и уменьшают путем вычисления среднего значения цвета для
матрицы из нескольких рядов стоящих пикселей исходного изображения.
12. Пост-обработка. На этом этапе реализуют двумерные эффекты над подготовленным кадром как единым целым.
Этапы 1–7 образуют геометрическую стадию конвейера. На этой
стадии работают с векторным описанием изображения. Этапы 8–12
образуют стадию прорисовки объекта или рендеринга. На этой стадии все действия выполняются, в основном, с растровыми объектами. Эта стадия является наиболее трудоемкой и требует аппаратного ускорения.
Как видно из перечисленных этапов 3D-конвейера и их краткого описания, каждый этап предполагает использование определенных математических моделей, преобразований и специальных алгоритмов.
Контрольные вопросы
1. Что понимают под синтезом трехмерного изображения? Перечислите основные шаги 3D-конвейера.
2. Какие из шагов 3D-конвейера относят к геометрической стадии, а какие к стадии прорисовки объектов?
3. Что происходит на этапе тесселяции?
4. Дайте определение полигональной сетки?
5. Какие задачи решают на этапе определения видимости в сцене?
6. В чем отличие этапа удаления скрытых линий от этапа определения видимости в сцене?
7. Раскройте этап 8 – детализации поверхности.
9
1.2. Геометрические преобразования на плоскости
(2D-преобразования)
Геометрические преобразования на плоскости и в пространстве
(2D- и 3D-преобразования) широко применяют в компьютерной графике. Эти преобразования используют во всех пакетах прикладных
программ для реализации переноса, масштабирования и поворота
объектов создаваемой сцены. Они являются основой математического описания более сложных задач, например операции проецирования трехмерного объекта на экранную плоскость, реализации
функций трансформации объектов и др.
В данном параграфе рассмотрены базовые преобразования на
плоскости, их основные свойства и матричное представление. Параграф 1.3 посвящен преобразованиям в пространстве.
1.2.1. Матричное представление 2D-преобразований
Пусть (x,y) – координаты точки P до 2D-преобразования, (x¢,y¢) –
ее координаты после преобразования. Преобразование будет определено полностью, если заданы уравнения для вычисления координат (x¢,y¢) по координатам (x,y).
Основными видами 2D-преобразований являются: перенос, масштабирование и поворот (рис. 1.7, a, б).
При переносе точки P происходит ее сдвиг параллельно оси X
на Dx единиц и на Dy единиц параллельно оси Y. Это отражают уравнения:
x ¢ = x + Dx ,
y ¢ = y + Dy .
При масштабировании координата x изменяется в Sx раз вдоль
оси X, а координата y в Sy вдоль оси Y:
x ¢ = Sx × x,
y ¢ = Sy × y.
В случае поворота точки на угол ϕ относительно начала координат уравнения пересчета имеют вид
x ¢ = xcosϕ - y sin ϕ,
y ¢ = x sin ϕ + y cos ϕ.
(1.2.1)
Уравнения (1.2.1) легко пояснить с помощью рис. 1.8, на котором точка P переносится в точку P¢ поворотом на угол ϕ. Поворот
10
а)
Y
Y
Sx = S y= 2
P¢(x¢,y¢)
y + Dy
P¢(x¢,y¢)
Syy
y
P( x,y)
x
б)
P¢(x¢,y¢)
P( x,y)
y
x
x + Dx X
Y
ϕ
P( x,y)
Sxx X
Y
X
Y
y¢ )
(x¢,
(x,y)
(x¢,y¢ )
(x¢,y¢ )
(х,y)
(х,y)
X
X
X
Рис. 1.7. Перенос, масштабирование и поворот: а – точки; б – объекта
Y
P¢ ( x¢,y¢ )
y¢
y ¢ = r sin (α + ϕ )
y = r sin α
y
P( x,y )
r
r
ϕ
α
x¢
x
x ¢ = r cos(α + ϕ) x = r cosα
X
Рис.1.8. Пояснение к выводу уравнений поворота
11
производится относительно начала координат, поэтому расстояния
от него до точек P и P¢ равны. На рис. 1.8 они обозначены r. Из тригонометрических соотношений следует
x = rcosα,
y = r sin α.
и
x' = r cos(α + ϕ) = r cos αcosϕ - r sin α sin ϕ,
y' = r sin (α + ϕ) = r cos α sin ϕ + r sin α cos ϕ.
(1.2.2)
(1.2.3)
Подставив в уравнения (1.2.3) уравнения (1.2.2), получим (1.2.1).
Введем следующие матричные обозначения:
P = [ x, y ] , P ¢ = éë x ¢, y ¢ùû – векторы координат точки до и после преобразования;
t = éê Dx , Dy ùú – вектор переноса;
ë
û
é Sx
s = êê
0
ëê
0ù
ú – матрица масштабирования;
Sy úú
û
é cos ϕ sin ϕ ù
ú – матрица поворота.
r=ê
ê-sin ϕ cos ϕú
ë
û
С учетом введенных обозначений уравнения преобразований
в матричной форме имеют вид
P ¢ = P + t, P ¢ = P × s, P ¢ = P × r.
В полученной математической модели поворот и масштабирование выполняется умножением, а перенос – сложением. Для обеспечения компактности описания удобно, чтобы все преобразования
имели одинаковую математическую модель, например, выполнялись только умножением вектора координат на матрицу преобразования.
Для получения единообразной модели используют однородные
координаты. В однородных координатах точка P(x,y) записывается
как P(xW, yW, W) для любого масштабного множителя W ≠ 0. В нашем случае масштабный множитель W = 1, поэтому операция умножения не требуется.
Теперь точка описывается трехэлементными векторами, поэтому матрицы преобразований должны иметь размер 3×3. Соответ12
ственно, матрицы основных 2D-преобразований в однородных координатах имеют вид:
матрица переноса
é 1
0 0ùú
ê
ê
T=ê 0
1 0úú ,
êD
Dy 1úú
ëê x
û
матрица масштабирования
é Sx
ê
S = êê 0
ê0
êë
0
Sy
0
0ù
ú
0úú ,
1úúû
матрица поворота
é cos ϕ sin κ 0ù
ê
ú
R = êê-sin ϕ cos ϕ 0úú .
ê 0
0
1úúû
ëê
Для того чтобы перенести, масштабировать или повернуть точку,
необходимо вектор-строку ее координат умножить на матрицу соответствующего преобразования
[ x', y',1] = [ x, y,1]×[A ] ,
где A = {T,S,R}.
Если объект 2D-преобразований представляет собой замкнутый
многоугольник, то первоначально формируют матрицу, состоящую
из координат его вершин, которую затем умножают на матрицу соответствующего преобразования
[V'] = [V ]×[A ] ,
где V – матрица координат вершин многоугольника, сформированная следующим образом:
é x1 y1 1ù
ê
ú
ê x2 y2 1ú
ê
ú
. . úú ,
V = êê .
ê .
. . úú
ê
êx
ú
ëê n yn 1ûú
где (xi,yi,1) – координаты i-й вершины; n – число вершин.
13
1.2.2. Обратные преобразования
Для каждого 2D-преобразования существует преобразование,
которое восстанавливает исходные координаты точек. Такое преобразование называется обратным. Если прямому преобразованию соответствует матрица A, то обратному преобразованию –
матрица A–1.
Для преобразований, обратных основным, матрицы имеют вид:
матрица переноса
é 1
0
0ùú
ê
ê
T=ê 0
1
0úú ,
ê-D -D 1ú
y
ëê x
ûú
матрица масштабирования
é1 / Sx
0
ê
ê
S= ê 0
1 / Sy
ê 0
0
êë
0ù
ú
0úú ,
1úúû
матрица поворота
é cos ϕ -sin ϕ 0ù
ê
ú
R = êê sin ϕ cos ϕ 0úú .
ê 0
0
1úúû
ëê
1.2.3. Композиция 2D-преобразований
Матричное представление 2D-преобразований обладает важным
свойством – композицией. Если сначала должно быть выполнено
преобразование A = {T,S,R}, а затем преобразование B = {T,S,R}, то
их последовательное выполнение может быть заменено одним результирующим преобразованием, которому соответствует матрица
C = A · B.
Если преобразование является композицией преобразований
A · B · C · … · M, то матрица обратного преобразования имеет вид
M–1 · … · C–1 · B–1 · A–1.
Свойство композиции удобно использовать для построения матрицы произвольного преобразования. Элементы такой матрицы не несут в себе явного геометрического смысла. Поэтому для
ее построения произвольное преобразование разбивается на этапы, каждый из которых представляет собой одно из основных
14
2D-преобразований. Далее путем композиции соответствующих им
матриц находится матрица произвольного преобразования.
Рассмотрим, каким образом можно использовать свойство композиции преобразований для получения матричного представления
произвольного преобразования.
Пример 1
Пусть необходимо найти матричное представление для следующего произвольного преобразования: поворот объекта относительно
произвольной точки P(px,py). Базовая матрица поворота R позволяет выполнить вращение только вокруг центра координат. Для реализации поворота вокруг произвольной точки необходимо совместить точку P с началом координат. Таким образом, требуемое произвольное преобразование включает три шага (рис. 1.9):
перенос, при котором точка P совмещается с началом координат;
поворот относительно центра координат;
перенос, при котором начало координат возвращается в первоначальное положение.
Y
Y
Y
Y
P (Px ,Py )
P (Px , Py )
ϕ
X
Y
P(Px, Py )
X
X
Y
Y
Y
P(Px ,Py )
X
X
P(Px, Py )
P(Px, Py )
X
P (Px ,Py )
X
X
Рис. 1.9. Поворот и масштабирование фигуры вокруг произвольной точки
(в качестве произвольной точки использована одна из вершин фигуры)
15
Таким образом, матрица произвольного преобразования может
быть найдена следующим образом:
é 1
ê
ê 0
ê
ê- p
ëê x
0ùú é cos ϕ -sin ϕ 0ù éê 1
0 0ùú
ê
ú
ú
ê
0ú êê sin ϕ cos ϕ 0úú ê 0
1 0úú =
1úú êêë 0
0
1úúû êê px py 1úú
û
ë
û
é
cos ϕ
sin ϕ
ê
ê
=ê
-sin ϕ
cos ϕ
ê p 1 - cos ϕ + p sin ϕ p 1 - cos ϕ - p sin ϕ
) y
) x
êë x (
y(
0
1
- py
0ùú
0úú .
1úú
û
Пример 2
Используя свойство композиции, требуется получить матричное представление, соответствующее следующему преобразованию:
масштабирование объекта относительно произвольной точки.
Для реализации указанного преобразования необходимо выполнить следующие шаги (рис. 1.9):
совмещение точки P с началом координат;
масштабирование относительно начала координат;
перенос, при котором начало координат возвращается в первоначальное положение.
Матричное представление этого преобразования является результатом произведения матриц базовых преобразований на каждом шаге
é 1
0
0ùú é Sx 0 0ù éê 1
0 0ùú
ê
ê
ú
ê 0
ú
ê
1
0ú êê 0 Sy 0úú ê 0
1 0úú =
ê
ê- p - p 1ú ê 0
0 1úûú êê px py 1úú
y
ëê x
ûú ëê
ë
û
é
ù
Sx
0
0ú
ê
ê
ú
=ê
0
0ú .
Sy
ê
ú
ê p (1 - S ) p 1 - S
ú
x
y(
y ) 1úû
êë x
Контрольные вопросы
1. Назовите основные виды 2D-преобразований и соответствующие им матрицы.
2. Что называется однородными координатами точки? Какие
функции выполняет коэффициент W?
16
3. Что понимают под свойством композиции 2D-преобразований?
4. Используя свойство композиции, выведите матрицу геометрического преобразования, реализующего поворот многоугольника
вокруг его центра тяжести.
5. Используя свойство композиции, выведите матрицу геометрического преобразования, реализующего:
зеркальное отображение многоугольника относительно прямой,
заданной двумя точками (координаты точек известны);
поворот многоугольника вокруг его центра тяжести).
1.3. Геометрические преобразования
в трехмерном пространстве (3D-преобразования)
1.3.1. Матричное представление 3D-преобразований
Трехмерные преобразования, аналогично двумерным, определяются полностью с помощью матричного представления. Точка P,
заданная в трехмерном пространстве координатами (x,y,z), записывается в однородных координатах, как (W · x, W · y, W · z, W), где
W ≠ 0. (В нашем случае масштабный множитель W=1). В соответствии с представлением координат точки в виде четырехкомпонентного вектора, матрицы 3D-преобразований будут иметь размерность 4×4.
Основными видами 3D-преобразований являются перенос, масштабирование и поворот на заданный угол вокруг одной из координатных осей.
Трехмерный перенос и масштабирование являются расширениями соответствующих двухмерных преобразований. Им соответствуют матрицы:
é 1
é Sx 0
0
0 0ù
0 0ù
ê
ú
ê
ú
ê 0
ú
ê 0 Sy 0 0ú
1
0 0ú
ê
ê
ú.
T=ê
ú ; S= ê 0
ú
0
0
1
0
0
S
0
z
ê
ú
ê
ú
êD
ú
ê0
0
0 1úúû
êë
êë x Dy Dz 1úû
При выполнении поворотов вокруг координатных осей следует учитывать тип системы координат. Различают правостороннюю
и левостороннюю системы координат, взаиморасположение осей
в каждой из систем показано на рис. 1.10. Далее будет использоваться правосторонняя система координат. В правосторонней системе координат за положительное направление поворота принято
17
Y
Y
Правосторонняя
0
Z
X
Левосторонняя
0
Z
X
Рис. 1.10. Системы координат
считать движение против часовой стрелки (от X к Y, от Y к Z, от Z
к X,), а в левосторонней по часовой (от Y к Z, от Z к X, от X к Y) .
С учетом принятых соглашений матрицы поворота вокруг координатных осей будут иметь вид:
матрица поворота вокруг оси X на угол α
é1
0
0
0ù
ê
ú
ê0 cos α sin α 0ú
ê
ú,
Rx = ê
ú
sin
cos
0
α
α
0
ê
ú
ê0
0
0
1úúû
ëê
матрица поворота вокруг оси Y на угол α
é cos α
ê
ê 0
R y = êê
ê sin α
ê 0
ëê
0 -sin α
1
0
0 cos α
0
0
0ù
ú
0ú
ú,
0úú
1úûú
матрица поворота вокруг оси Z на угол α
é cos α sin α 0 0ù
ê
ú
ê-sin α cos α 0 0ú
ê
ú.
Rz = ê
ú
0
0
1
0
ê
ú
ê 0
0
0 1úúû
ëê
Для каждого 3D-преобразования существует обратное преобразование, которое восстанавливает исходные координаты точек. Если прямому преобразованию соответствует матрица A, то обратному преобразованию – матрица A–1. Для формирования матри18
цы, обратной матрице переноса T, необходимо взять все смещения
Dx,Dy,Dz с противоположным знаком; матрица, обратная матрице
масштабирования S, получается заменой Sx,Sy,Sz на обратные им
величины, а матрицы, обратные для матриц поворота Rx,Ry,Rz –
выбором отрицательного направления вращения.
1.3.2. Композиция 3D-преобразований
Аналогично двухмерному случаю трехмерные преобразования,
представленные в матричной форме, обладают свойством композиции.
Если сначала должно быть выполнено преобразование
A = {T, S, Rx, Ry, Rz}, а затем преобразование B = {T, S, Rx, Ry, Rz},
то их последовательное выполнение может быть заменено одним результирующим преобразованием, которому соответствует матрица
C = A · B. Согласно этому свойству, любое произвольное преобразование может быть представлено как последовательность поворотов,
переносов и масштабирований, а матрица произвольного преобразования будет являться результатом перемножения соответствующих
им матриц.
Рассмотрим, каким образом можно использовать свойство композиции преобразований для получения матричного представления
произвольного преобразования.
Пример 1
Пусть необходимо получить матричное представление следующего преобразования: поворот относительно оси заданной точками
P(px,py,pz,1) и Q(qx,qy,qz,1).
Разобьем задачу на шаги, каждый из которых может быть выполнен с помощью базового преобразования.
1. Совмещение точки P с началом координат (рис. 1.11, a, б).
é 1
0
0
0ù
ê
ú
ê 0
1
0
0úú
ê
T (- px ,- py ,- pz ) = ê
.
0
1
0úú
ê 0
ê- p - p - p 1ú
y
z
êë x
úû
2. Поворот вокруг оси Z до совмещения отрезка PQ с плоскостью
XZ (поворот на угол ϕ) (рис. 1.11, б).
é cos ϕ sin ϕ 0 0ù
ê
ú
ê-sin ϕ cos ϕ 0 0ú
ê
ú,
R z (ϕ ) = ê
ú
0
0
1
0
ê
ú
ê 0
0
0 1úúû
ëê
19
Q
Y
а)
P
0
Z
p
qy
py
q
pz
sin ϕ =
X
Q
2
2
q1x
+ q1y
ϕ
q1 y
P
q1 z
q1
Z
X
Y
P
Z
qz
Y
б)
в)
cos ϕ =
2 + q2 + q 2
q2x
2y
2z
θ
2
2
q2x
+ q2y
q2 z
X
Q
Рис. 1.11. Преобразование
системы координат
для реализации поворота вокруг
оси, заданной отрезком PQ
q1y
q12y + q12x
q1x
q12y
+ q12x
,
,
где Q(q1x,q1y,q1z,1) – координаты точки Q после преобразования шага 1.
3. Поворот вокруг оси Y
до совмещения отрезка PQ
c осью Z (поворот на угол θ)
(рис. 1.11, в).
é cos θ 0 -sin θ 0ù
ê
ú
ê 0
1
0
0ú
ê
ú,
R y (θ) = ê
ú
θ
θ
sin
0
cos
0
ê
ú
ê 0
0
0
1úúû
êë
cos θ =
sin θ =
q22y + q22x
q22y + q22x + q22z
q22z
q22y + q22x + q22z
,
,
где Q(q2x,q2y,q2z,1) – координаты точки Q после преобразования
шага 2.
4. Поворот вокруг оси Z.
é cos α sin α 0 0ù
ê
ú
ê-sin α cos α 0 0ú
ê
ú.
R z (α ) = ê
ú
0
0
1
0
ê
ú
ê 0
0
0 1úûú
ëê
5. Обратные преобразования: поворот вокруг оси Y на угол –θ
c помощью матрицы Ry(–θ) ; поворот вокруг оси Z на угол –φ с помощью матрицы Rz(–ϕ) и обратный перенос точки P с помощью матрицы T(px,py,pz).
20
Шаги 1–3 реализуют преобразование системы координат, при
котором начало координат переносится в точку P и координатная
ось Z совмещается с осью, заданной отрезком PQ, шаг 4 – собственно поворот на некоторый произвольный угол α и шаг 5 – обратное
преобразование системы координат.
Матрица произвольного преобразования M может быть получена перемножением матриц базовых преобразований каждого шага:
M = T (- px ,- py ,- pz )× Rz (ϕ)× R y (θ)× Rz (α )× R y (-θ)× Rz (-ϕ)× T ( px , py , pz ).
Контрольные вопросы
1. Назовите основные виды 3D-преобразований и соответствующие им матрицы. Напишите обратные матрицы для основных видов 3D-преобразований.
2. Поясните разницу между правосторонней и левосторонней системой координат. Определите положительное направление поворота в каждой из систем.
3. Что понимают под свойством композиции 3D-преобразований?
4. Используя свойство композиции, выведите матрицу геометрического преобразования, реализующего масштабирование многогранника относительно его центра тяжести.
5. Используя свойство композиции, выведите матрицу геометрического преобразования, реализующего вращение многогранника
вокруг прямой, проходящей через центр координат и одну из его
вершин.
1.4. Проецирование трехмерных объектов
При выводе трехмерной графической информации на экран возникает сложность, обусловленная плоскостью экрана: отсутствует третье измерение. Несоответствие между трехмерными объектами и необходимостью представить их в виде двумерных изображений решают
путем введения проекций. Операция проецирования позволяет отобразить трехмерные объекты на плоскости, называемой картинной.
Проецирование – базовый механизм компьютерной графики.
Его главной особенностью при таком применении является получение координат точек проекции аналитическим путем: матрицу координат вершин исходного трехмерного объекта умножают на матрицу соответствующего вида проецирования.
21
Данный параграф посвящен основным видам проецирования,
используемым в компьютерной графике, их характеристикам и математическим способам описания.
1.4.1. Основные виды проецирования
В общем случае проекции объекта строят при помощи специальных лучей, называемых проекторами. Проекторы выходят из центра проекции, проходят через каждую точку объекта и, пересекая
картинную (проекционную) плоскость, образуют на ней проекцию
объекта.
В зависимости от положения центра проекции относительно
картинной плоскости различают центральные и параллельные проекции (рис. 1.12).
При центральном проецировании расстояние между картинной
плоскостью и центром конечно и явно задано. Проекторы выходят
из одной точки – центра проекции.
Центральные проекции делят на одноточечные, двухточечные
и трехточечные в зависимости от положения картинной плоскости относительно координатных осей. Если картинная плоскость
перпендикулярна одной из координатных осей, то такой вид про-
Виды проецирования
Аксонометрические
триметрия
диметрия
изометрия
вид сверху
вид спереди
вид сбоку
кабине
кавалье
Топологические
Рис. 1.12. Классификация видов проецирования
22
трехточечная
Ортографические
двухточечная
Косоугольные
Центральные
одноточечная
Параллельные
ецирования называется одноточечным. Если картинная плоскость
параллельна одной координатной оси, то проекция двухточечная.
Если картинная плоскость расположена произвольно и не является параллельной ни одной из координатных осей, то проекция трехточечная.
Основные свойства центральных проекций:
1) отражают все стороны объекта;
2) реализуют эффект перспективного укорачивания. Размер проекции объекта изменяется обратно пропорционально расстоянию от
центра проекции до него, это позволяет передавать объект с большой степенью реалистичности в перспективе;
3) искажают расстояния и углы объекта, нарушают параллельность прямых, поэтому проводить измерения по полученным проекциям нельзя.
В параллельных проекциях центр проецирования бесконечно
удален от картинной плоскости, проекторы параллельны. Параллельные проекции делят на ортографические (ортогональные, перпендикулярные) и косоугольные. Если проекторы и нормаль к картинной плоскости совпадают, то такие проекции называют ортографическими, если они образуют угол – косоугольными.
Ортографические проекции включают в себя: топологические (вид спереди, сбоку, сверху и т.п. ) и аксонометрии ( триметрия, диметрия, изометрия). В случае вида спереди, сверху и сбоку картинная плоскость перпендикулярна одной из координатных
осей.
Основные свойства топологических проекций:
1) отражают только одну сторону объекта, что затрудняет формирование пространственного представления об объекте;
2) фиксируют истинные размеры объекта (с точностью до скалярного множителя), сохраняют углы и параллельность прямых.
Это позволяет использовать их для выполнения любых измерений.
При аксонометрическом проецировании используется картинная плоскость, нормаль к которой образует углы с координатными
осями (картинная плоскость не является параллельной ни одной из
координатных плоскостей) .
Выделяют три вида аксонометрического проецирования: изометрию, диметрию и триметрию. При изометрии нормаль образует
равные углы с каждой из координатных осей. При диметрии равными будут два из трех углов. При триметрии все углы между нормалью и координатными осями разные.
23
Основные свойства аксонометрических проекций:
1) отражают все стороны объекта;
2) сохраняют параллельность прямых, но нарушают углы;
3) позволяют измерять расстояния параллельно координатным
осям. В общем случае (триметрии) измерения проводятся с разными
масштабными коэффициентами.
При косоугольном проецировании картинная плоскость перпендикулярна одной из координатных осей, а проекторы образуют угол с нормалью к картинной плоскости. Косоугольное проецирование сочетает в себе свойства топологических видов и аксонометрии:
1) отражает все стороны объекта;
2) позволяет проводить измерения расстояний для сторон объекта, параллельных картинной плоскости.
Наиболее часто используемыми видами косоугольных проекций являются Кавалье (Cavalier) и кабине (cabinet). В случае проекции Кавалье проекторы образуют с нормалью угол, равный
45 град. Это обеспечивает сохранение расстояний у сторон объекта,
перпендикулярных картинной плоскости. В случае проекции кабине угол равен 63,4 град, при этом расстояния у перпендикулярных
картинной плоскости сторон уменьшаются после проецирования
в два раза.
1.4.2. Математическое описание основных видов проекций
Используя матричное представление 3D-преобразований, можно получить матрицы для каждого вида проецирования, умножение на которые позволит находить координаты точек объекта
в проекции.
Топологическое проецирование
При ортографическом проецировании на плоскость X0Y (вид
спереди) координаты x и y не изменяются, а координата z у всех точек объекта будет равна 0 (рис. 1.13). Матрица, отражающая подобное преобразование, имеет вид
PXOY
24
é1
ê
ê0
= êê
ê0
ê0
êë
0
1
0
0
0
0
0
0
0ù
ú
0ú
ú.
0úú
1úúû
Y
у
ок
сб
д
Ви
Вид спереди
0
X
Z
Вид сверху
Рис. 1.13. Построение трех топологических проекций
В общем случае картинная плоскость может не совпадать с плоскостью XOY, а быть ей параллельна. Тогда координата z у всех точек объекта после проецирования будет равна ν. Соответственно,
матрица проецирования имеет вид
é1
ê
ê0
PÂ.ÑÏÅÐÅÄÈ = êê
ê0
ê0
ëê
0
1
0
0
0
0
0
0
0ù
ú
0ú
ú.
0úú
1úûú
Аналогичным образом сформированы матрицы для получения
вида сбоку и сверху:
é0
ê
ê0
PÂ.ÑÁÎÊÓ = êê
ê0
êλ
ëê
0
1
0
0
0
0
1
0
é1
0ù
ú
ê
ú
ê0
0
ú; P
ê
=
Â.ÑÂÅÐÕÓ
ê0
0úú
ê
ú
ê0
1ûú
ëê
0
0
0
µ
0
0
1
0
0ù
ú
0ú
ú.
0úú
1úûú
25
Аксонометрическое проецирование
Матрица аксонометрического проецирования представляет собой произведение трех матриц:
матрицы поворота на угол ψ вокруг оси OY (рис. 1.14)
écos ψ
ê
ê 0
ê
ê sin ψ
ê
ê 0
ëê
0 -sin ψ
1
0
0 cos ψ
0
0
0ù
ú
0ú
ú,
0úú
1úûú
матрицы поворота на угол φ вокруг оси OX (рис.1.14)
é1
0
0
0ù
ê
ú
ê0 cos ϕ sin ϕ 0ú
ê
ú,
ê
ú
ê0 -sin ϕ cos ϕ 0ú
ê0
ú
0
0
1úû
ëê
и матрицы получения вида спереди (см. стр. ??)
é cos ψ sin ϕ * sin ψ
ê
ê 0
cos ϕ
PÀÊÑ = êê
ê sin ψ -sin ϕ * cos ψ
ê 0
0
ëê
0
0
0
0
0ù
ú
0ú
ú.
0úú
1úûú
и имеет вид.
ос
пл
Y
ин
рт
Ка
я
на
ть
с
ко
ϕ
N
X
ψ
Z
Рис. 1.14. Взаиморасположение нормали к картинной плоскости
и осей координат при аксонометрическом проецировании
26
Углы ϕ и ψ могут быть найдены исходя из свойства аксонометрической проекции: вызывать равное изменение размеров по
всем трем осям в случае изометрии и по двум осям в случае диметрии.
Пусть отложены три единичных вектора на каждой координатной оси:
Vx = (1,0,0,1); Vó = (0,1,0,1); Vz = (0,0,1,1).
Определим вектора после операции аксонометрического проецирования:
Vk¢ = Vk × PÀÊÑ , k = x, y, z;
Vx¢ = (cos ψ,sin ϕ × sin ψ,0,1); Vó¢ = (0,cos ϕ,0,1);
Vz¢ = (sin ψ,-sin ϕ × cos ψ,0,1).
(1.4.1)
Если в качестве вида аксонометрического проецирования использовалась диметрия, то длины двух из трех векторов после проецирования должны быть равны. Это положение отражает равенство
Vx¢ = Vy¢ .
Раскроем равенство, используя найденные проекции векторов
(1.4.1):
cos ψ 2 + sin ϕ2 × sin ψ 2 + 1 = cos ϕ2 + 1.
Путем несложных тригонометрических преобразований определим условие для углов ϕ и ψ , обеспечивающее диметрию:
1 - sin ψ 2 + sin ϕ2 × sin ψ 2 = cos ϕ2 ;
sin ψ 2 × (sin ϕ2 -1) = cos ϕ2 -1;
sin ψ 2 × cos ϕ2 = sin ϕ2 ;
tg2ϕ = sin2 ψ.
Таким образом, для реализации диметрии углы ϕ и ψ должны
удовлетворять условию
tg2ϕ = sin2 ψ.
27
В случае изометрии после операции проецирования должны
быть равны длины всех трех единичных векторов:
Vx¢ = Vy¢
Vx¢ = Vz¢ .
Эти равенства формируют систему тригонометрических уравнений, решение которой определяет значения углов ϕ и ψ для реализации изометрии:
ìïcos ψ 2 + sin ϕ2 × sin ψ 2 = cos ϕ2 ,
ïï
í
ïïcos ψ 2 + sin ϕ2 × sin ψ 2 = sin ψ 2 + sin ϕ2 × cos ψ 2 .
ïî
Решением системы будут
sin2 ϕ = 1 / 3, sin2 ψ = 1 / 2.
Таким образом, для реализации изометрии углы ϕ и ψ соответственно равны
ϕ = arcsin( 1 / 3), ψ = arcsin( 1 / 2 ).
Косоугольное проецирование
Матрица косоугольного проецирования может быть получена
следующим образом. Спроецируем на картинную плоскость точку P
с координатами (0,0,1,1). Координаты точки проекции P¢ могут быть
найдены на основе значении α и l: (l · cos α, l · cos α,0,1) (рис. 1.15).
Рассмотрим точку Q с произвольными координатами (x,y,z,1). Ей
соответствует точка проекции Q¢(xп,yп,zп,1).
Из прямоугольных треугольников A и B ( рис. 1.15) следует:
(y - yq ) = z × tgγ âåð ;
yï = y + z × tgγ âåð ;
tgγ âåð = l × sin α;
yï = y + z × l × sin α.
Аналогично может быть получено уравнение для координаты xп
Соответственно
õï = õ + z × l × cos α.
ìïïxï = x + z × l × cos α,
í
ïïîóï = y + z × l × sin α.
28
Таким образом, матрица, описывающая косоугольное проецирование на картинную плоскость, перпендикулярную оси Z, имеет вид
é 1
0
ê
ê 0
1
PÊÎÑ = êê
ê l * cos α l * sin α
ê 0
0
êë
0
0
0
0
0ù
ú
0ú
ú.
0úú
1úúû
Y
Q¢(x , y , z ,1)
Q (x, y, z ,1)
l · sin α
P¢
(l · cos α , l · sin α ,0,1)
β
γвер
l
α
P(0,0,1,1)
γ
Z
l · cos α
X
Y
yп
l · sin α
А
y
В
γвер
y
γ вер
z
P(0,0,1,1)
Z
Рис. 1.15. Косоугольное параллельное проецирование
29
Параметр l задается и определяет вид косоугольной проекции.
Для проекции Кавалье l = 1, для проекции кабине l = 1/2. Угол α
обычно принимается равным 30 или 45 град.
Центральное проецирование
Существует несколько схем центрального проецирования, определяемых положением центра проекции и ориентацией картинной
плоскости относительно координатных осей.
Наиболее соответствующей задачам компьютерной графики является одноточечная центральная проекция, при которой
картинная плоскость совпадает с плоскостью XOY, а центр проецирования расположен на оси Z и имеет координаты O(0,0,–d)
(рис. 1.16).
P′ (xП, yП,0 )
Y
P(x,y,z)
–d
Z
–d
Y
P(x,y,z)
y
П
плоскость
Проекционная
X
Вид сбоку
вдоль оси Х
0
Рис. 1.16. Схема 1 центрального проецирования
30
Z
Для схемы центрального проецирования, показанной на рис. 1.16,
уравнения координат проекции точек имеют вид:
x
õÏ =
,
(1 + z / d)
yÏ =
y
,
(1 + z / d)
zÏ = 0.
Соотношения получены на основании свойств подобных треугольников. Матрица центрального проецирования в этом случае имеет вид
é1 0 0
0 ù
ê
ú
0 ú
ê0 1 0
PÖÅÍÒÐ = ê
ú.
ê0 0 0 1 / d ú
ê0 0 0
1 úû
ë
Особенностью применения этой матрицы для получения координат точки после центрального проецирования является необходимость приведения координат, полученных в результате умножения,
к однородным с коэффициентом W = 1:
[ x, y, x,1]× PÖÅÍÒÐ = [ x, y,0,z / d + 1] Þ
é x
ù
y
,
,0,1ú .
Þê
ê1 + z / d 1 + z / d
ú
ë
û
В компьютерной графике может также применяться схема центрального проецирования, при которой центр проекции находится
в начале координат, а картинная плоскость параллельна плоскости
X0Y и имеет координату z = d (рис. 1.17).
В этом случае координаты проекции точки на картинной плоскости определяются следующими соотношениями:
x
õÏ =
,
(z / d )
y
yÏ =
,
(z / d )
zÏ = d.
Как и в предыдущем случае, уравнения получены на основании
свойств подобных треугольников. Матрица проецирования имеет вид:
é1 0 0
0 ù
ê
ú
0
1
0
0
ê
ú
PÖÅÍÒÐ = ê
ú.
(1.4.2)
ê0 0 1 1 / d ú ê0 0 0
ú
0
ë
û
31
Y
P(xП, yП, d )
P(x,y,z)
Z
d
X
Y
Проекционная
плоскость
P(x,y,z)
y
d
Z
Рис.1.17. Схема 2 центрального проецирования
Для получения координат точки после центрального проецирования необходимо умножить вектор координат точки на матрицу
центрального проецирования, а затем полученный вектор привести
к однородным с коэффициентом W = 1:
[ x, y,z,1]× PÖÅÍÒÐ = [ x, y,z,z / d ] Þ éë x / (z / d), y / (z / d ),d,1ùû .
Центральные проекции любой совокупности параллельных прямых, которые не параллельны картинной плоскости, будут сходиться в точке. Эта точка называется точкой схода.
32
Если совокупность прямых параллельна одной из координатных
осей, то их точка схода называется главной точкой схода. Определим точку схода пучка прямых, параллельных оси OZ. Прямые, параллельные оси 0Z, описывают уравнения вида:
ïìïx = n,
ïï
íy = m,
ïï
ïïîz = t; t ® ¥.
Выполним центральное проецирование, воспользовавшись матрицей (1.4.2).
Координаты точки схода:
é1
ê
ê0
[n,m,t,1]× êê
ê0
ê0
ëê
0
1
0
0
0
0 ù
ú
é
ù
0
0 ú
ú = [n,m,t,t / d ] Þ ê n , m , t ,1ú .
ú
ê
ú
1 1 / dú
ët / d t / d t / d û
ú
0
0 úû
(1.4.3)
Для определения координат точки схода зададим t → ∞ и найдем
предел выражения (4.3):
é n
ù
m
t
,
,
,1ú =
lim êê
t®¥ ë t / d t / d t / d úû
é
æ n ö÷
æ m ö÷
æ t ö÷ ù
÷÷, lim çç
÷÷, lim çç
÷÷,1úú = [0,0,d,1].
= êê lim ççç
ç
ç
÷
÷
÷
ëêt®¥è t / d ø t®¥è t / d ø t®¥è t / d ø úû
Таким образом, пучок прямых, параллельных оси OZ, сходится
в точке (0,0, d,1).
Центральные проекции классифицируются в зависимости от
числа главных точек схода, которыми они обладают. Существуют
одноточечные, двухточечные и трехточечные проекции. Если картинная плоскость перпендикулярна одной из координатных осей,
то возможен только один пучок прямых, параллельных координатной оси, такой вид проецирования называется одноточечным. Если
картинная плоскость параллельна одной координатной оси, то проекция двухточечная. Если картинная плоскость расположена произвольно и не является параллельной ни одной из координатных
осей, то проекция трехточечная.
В компьютерной графике наиболее часто используются одноточечные проекции.
33
Контрольные вопросы
1. Где расположен центр проекций при параллельном проецировании?
2. Перечислите основные виды параллельного проецирования.
В чем отличие ортографических видов проецирования от косоугольных?
3. К какому виду проецирования относится аксонометрическое
проецирование (центральное/параллельное), (ортографическое/косоугольное)?
4. Перечислите основные характеристики топологических видов
проецирования.
5. Раскройте понятие точка схода. При каких условиях центральная проекция является одноточечной, при каких двухточечной и при каких трехточечной?
6. В чем отличие диметрии, изометрии и триметрии? Какими
свойствами обладают эти виды проецирования?
7. Какие виды проецирования сохраняют углы, расстояния и параллельность прямых?
8. Что такое свойство перспективного укорачивания? Какой вид
проецирования им обладает?
1.5. Алгоритмы удаления невидимых ребер и граней
Одной из наиболее важных задач при синтезе трехмерных реалистичных изображений является анализ видимости объектов в сцене. Решение этой задачи предполагает определение ребер и граней,
которые видимы или невидимы для наблюдателя, находящегося
в заданной точке пространства.
Если объект является единственным объектом сцены, задача определения видимости значительно упрощается и сводится к определению лицевых и нелицевых по отношению к наблюдателю граней и ребер. При наличии в сцене нескольких объектов сперва решают задачу
определения лицевых и нелицевых граней, а затем анализируют видимость объектов в сцене, исходя их взаимного расположения относительно наблюдателя. Определение лицевых и нелицевых граней перед
применением алгоритмов анализа видимости реализуют для снижения вычислительной емкости задачи. В этом случае при анализе видимости будут рассматриваться только лицевые грани и ребра.
Алгоритмам определения нелицевых граней и ребер, а также
наиболее популярным методам анализа видимости в сцене посвящен данный параграф.
34
1.5.1. Алгоритмы удаления нелицевых ребер и граней
Пусть задан объект, представляющий собой одиночный выпуклый многогранник, описанный полигониальной сеткой. Необходимо определить, какие из его граней являются нелицевыми.
Первый алгоритм для решения поставленной задачи был предложен Робертсом. Основой алгоритма Робертса является оценка величины угла α между внешней нормалью к грани N и вектором R,
направленным на наблюдателя. Если угол между векторами R и N
острый, то грань является видимой (лицевой). В противном случае
грань – нелицевая.
Основные шаги алгоритма:
определить внешнюю нормаль N к грани;
определить вектор R, направленный на наблюдателя;
определить и оценить угол между вектором R и нормалью N.
Нормаль к грани находится как векторное произведение векторов P0P1 и P1P2, где P0(p0x,p0y,p0z), P1(p1x,p1y,p1z), P2(p2x,p2y,p2z) –
три произвольные точки, принадле жащие грани (например, три ее
вершины).
P0 P1 = ( p1x - p0x , p1y - p0y , p1z - p0z );
P1 P2 = ( p2x - p1x , p2y - p1y , p2z - p1z );
N = P0 P1 Ä P1 P2 =
= (( p1y - p0y )( p2z - p1z ) - ( p2y - p1y )( p1z - p0z ),
( p1z - p0z )( p2x - p1x ) - ( p2z - p1z )( p1x - p0x ),
( p1x - p0x )( p2y - p1y ) - ( p2x - p1x )( p1y - p0y )).
Вектор R представляет собой разность между вектором, направленным из центра координат на любую точку грани, и вектором, направленным из центра координат на наблюдателя (центр проекции).
Оценку величины угла удобно производить по результату скалярного произведения вектора R и нормали N.
< R,N >= R × N × cos α,
где R , N –длины векторов, α – угол между ними.
Знак скалярного произведения определяется знаком cos α, следовательно, если <R,N> больше 0, то угол α острый и грань лицевая, а если <R,N> меньше 0, то угол тупой и грань нелицевая.
Другой простейший алгоритм определения нелицевых граней
у тел, являющихся одиночными выпуклыми многогранниками,
35
основан на анализе положения точки PO(POx,POy,POz), находящейся внутри объекта, и точки PN(PNx,PNy,PNz), где находится наблюдатель, относительно исследуемой грани. Если точка PO и точка PN
находятся по разные стороны грани, то грань является лицевой, если по одну, то грань нелицевая.
Основные шаги алгоритма:
выбрать точку PO, априорно находящуюся внутри тела ( например, центр тяжести тела);
найти коэффициенты A, B, C, D-уравнения плоскости Ax + By +
+ Cz + D = 0, содержащей исследуемую грань;
определить знаки скалярного произведения точки PO и точки
PN на плоскость (подставить координаты точек в уравнение плоскости). Если знаки совпали, то обе точки находятся с одной стороны плоскости, содержащей исследуемую грань и, следовательно,
грань наблюдателю не видна. Если результаты имеют разный знак,
то точка PO и точка PN находятся по разные стороны грани и, следовательно, грань является лицевой.
Для определения уравнения плоскости выбираются три произвольные точки этой грани P1,P2,P3 не лежащие на одной прямой,
и рассчитываются коэффициенты A,B,C,D:
ép
ê 1y
A = det êê p2y
êp
êë 3y
ép
ê 1x
C = det êê p2x
êp
ëê 3x
é p1x
p1z 1ùú
ê
ú
p2z 1ú , B = -det êê p2x
êp
p3z 1úú
ëê 3x
û
ép
p1y 1ùú
ê 1x
ú
p2y 1ú , D = -det êê p2x
êp
p3y 1úú
û
ëê 3x
p1z 1ù
ú
p2z 1úú ,
p3z 1úûú
p1y
p2y
p3y
p1z ùú
p2z úú .
p3z úú
û
(1.5.1)
Задача определения невидимых ребер для выпуклого многогранника, являющегося единственным в сцене, решается тривиально:
если обе грани, образующие ребро, нелицевые, то ребро нелицевое
(невидимое.)
В общем случае при наличии в сцене множества тел удаление нелицевых ребер и граней не решает полностью задачу определения
видимости, но снижает количество вычислений, требуемых для ее
решения, приблизительно в два раза.
36
1.5.2. Алгоритмы определения видимости в сцене
Для определения видимых частей объекта (ребер, граней) при заданном виде проецирования необходимо провести лучи через каждую точку объекта до пересечения с картинной плоскостью. Видимыми будут те точки объекта, которые по направлению луча будут
расположены ближе к наблюдателю (в случае левосторонней системы координат ближе к картинной плоскости).
Несмотря на простую формулировку, задача удаления невидимых ребер и граней является достаточно трудоемкой и требует больших объемов вычислений. Это обусловило разработку многочисленных методов и алгоритмов для ее решения. Среди них можно выделить две основные группы: алгоритмы, работающие в пространстве
изображения, и алгоритмы, работающие в пространстве объекта.
В первом случае для каждого пикселя экрана определяется видимая в нем грань, во-втором, анализируется видимость объектов
в сцене по отношению друг к другу. Существует большое количество
методов, комбинирующих оба указанных подхода.
Рассмотрим по одному алгоритму из каждой группы.
Алгоритм сортировки по глубине
Этот алгоритм относится к алгоритмам, работающим в пространстве объектов. Основная идея алгоритма заключается в упорядочении многоугольников в соответствии с их удаленностью от
наблюдателя: ближайшие многоугольники преобразуются в растровую форму последними и закрывают более отдаленные многоугольники.
Для изложения основных шагов алгоритма необходимо ввести
понятие оболочки многоугольника. Под одномерной оболочкой понимают интервал [kmin,kmax], где k = x,y,z в который попадают координаты всех точек многоугольника (грани) по одной оси. Соответственно, по оси X формируют x-оболочку [Xmin,Xmax], по оси Y –
y-оболочку [Ymin,Ymax] и по оси Z – z-оболочку [Zmin,Zmax] (рис. 1.18).
Оболочка называется двумерной, если она включает себя одновременно интервалы по двум координатным осям.
Алгоритм сортировки по глубине состоит из следующих основных шагов:
формирование z-оболочек для всех многоугольников, образующих объекты в сцене;
упорядочивание всех многоугольников в соответствии с наибольшими координатами их z-оболочек;
37
Z
Zmax M1
M1
Zmin M1
Zmax M2
M2
Zmin M2
X
Рис. 1.18. z-оболочки, сформированные для многоугольников P и Q
[Zmin M1; ZmaxM1] [Zmin M2; ZmaxM2]
разрешение всех неопределенностей, которые возникают при перекрытии z-оболочек;
вывод многоугольников на экран (преобразование многоугольников в растровую форму), производимое в порядке уменьшения
наибольшей координаты Zmax их z-оболочек.
Главным шагом алгоритма является второй шаг, предполагающий разрешение неопределенностей при перекрытии z-оболочек.
Основная неопределенность, которая может возникнуть, следующая. Пусть P – многоугольник, находящийся в конце упорядоченного списка многоугольников, имеет перекрытие z-оболочки
с z-оболочкой многоугольника Q (рис. 1.19). Эта неопределенность
должна быть разрешена: необходимо выяснить, действительно ли
многоугольник P должен быть выведен на экран до многоугольника Q.
Проверка складывается из пяти тестов, которые выполняются
в порядке возрастания сложности. Как только в одном из тестов
получают утвердительный ответ, проверки прекращают, и многоугольник P выводится на экран. Этими пятью тестами являются
следующие:
x-оболочки многоугольников P и Q не перекрываются, поэтому
сами многоугольники тоже не перекрываются;
38
Y
X
P
Zmin P
Zmin Q
Zmax P
Zmax Q
Q
Z
Рис. 1.19. Неопределенность, возникающая при перекрытие z-оболочек
многоугольников P и Q
Y
X
ZminP
ZminQ
ZmaxP
Zmax Q
P
Q
Z
Рис. 1.20. Утвердительный ответ в тесте 3
y-оболочки многоугольников P и Q не перекрываются, поэтому
сами многоугольники тоже не перекрываются;
многоугольник P относительно плоскости, проведенной через
многоугольник Q, полностью лежит с той стороны, которая дальше
от наблюдателя (рис. 1.20);
39
Y
X
ZminP
ZminQ
ZmaxP
P
Q
ZmaxQ
Z
Рис. 1.21. Утвердительный ответ в тесте 4,
но отрицательный ответ в тесте 5
P2
P1
Q
Рис. 1.22. Многоугольник P проходит сквозь многоугольник Q
40
многоугольник Q относительно плоскости, проведенной через
многоугольник P, полностью лежит с той стороны, которая ближе к
наблюдателю (рис. 1.21);
проекции многоугольников P и Q на плоскость хy (плоскость
экрана) не перекрываются.
Если во всех пяти тестах получен отрицательный ответ, то предполагают, что многоугольник P действительно перекрывает многоугольник Q и поэтому многоугольники меняют в списке местами.
Алгоритм не работает в том случае, если один многоугольник
проходит через другой (рис. 1.22). В этом случае многоугольник P
или Q разделяют на две части, так чтобы исключить прохождение
одной грани через другую. Первоначальный многоугольник отбрасывается, а две его части включаются в соответствующие места упорядоченного списка.
С помощью описанного алгоритма многоугольники, находящиеся с задней стороны объекта, отображаются первыми, но затем они
могут быть закрыты. Это помогает понять наблюдателю пространственную структуру объекта. К недостатку алгоритма следует отнести, что на экран будут выводиться все многоугольники, включая
невидимые в данной сцене.
Алгоритм, использующий z-буфер
Для своей работы алгоритм использует два массива. Размерность
массивов соответствует пространственному разрешению формируемого растрового изображения. Первый массив COLOUR предназначен для хранения координат цвета каждого элемента изображения.
Второй массив, называемый Z-BUFFER, заполняют информацией о
координате z каждого элемента изображения.
При инициализации алгоритма максимально возможные значения координаты z заносят в Z-BUFFER, а массив COLOUR заполняют координатами цвета фона.
Далее последовательно обрабатываются все многоугольники, составляющие объекты в сцене. Для каждой точки анализируемого
многоугольника выполняют следующие действия:
1) по координатам (x,y) точки вычисляют ее третью координату z
(используют уравнение плоскости);
2) если найденное значение координаты z меньше, чем ранее записанное значение элемента [x,y] массива Z-BUFFER, то в элемент
[x,y] массива Z-BUFFER заносят найденное значение z. Дополнительно, координаты цвета, которые имеет многоугольник в рассматриваемой точке, помещают в массив COLOUR .
41
Шаг два предполагает, что если условие z<ZBUFFER[x,y] выполняется, то точка многоугольника (x,y) находится ближе к наблюдателю, чем ранее записанная точка. Поэтому записываются новые
значения координаты z в массив Z-BUFFER
ZBUFFER [ x, y ] = z
и новые координаты цвета в массив COLOUR
ìïCOLOUR [ x, y,1] = r ,
ïï
ïCOLOUR [ x, y,2] = g,
í
ïï
ïïCOLOUR [ x, y,3] = b.
î
Реализация алгоритма очень проста. Пусть обрабатывается некоторый многоугольник Q. Вычисление координаты z для каждой
точки многоугольника можно упростить, воспользовавшись тем,
что многоугольник Q плоский. Рассмотрим вычисление z координаты при движении вдоль строки при постоянной координате y.
Для определения координаты z используют уравнение плоскости, в которой лежит многоугольник Q.
Ax + By + Cz + D = 0,
где A,B,C,D – коэффициенты плоскости, которые могут быть вычислены в соответствии с (1.5.1).
Соответственно, в точке с координатами (x,y) третья координата
определена соотношением
-D - Ax - By
z=
.
C
Если для точки с координатами (x,y) получено значение z = z1, то
в точке с координатами (x + Δx,y)
A
z = z1 - ( Δx).
C
Отношение A/C является постоянным, Δx = 1, поэтому если определена координата z = z1 в точке (x,y), то для определения координаты z в точке (x + Δx,y), необходимо выполнить только одно вычитание:
A
z = z1 - .
C
Полученные соотношения справедливы при определении координаты z для точек одной строки.
42
В рассматриваемом алгоритме очередность появления объектов
на экране определяется последовательностью, с которой обрабатываются многоугольники: они могут отображаться необязательно
в направлении от переднего к заднему или от заднего к переднему.
Алгоритм z-буфера широко использован в различных прикладных
пакетах 3D-моделирования, в частности в пакете 3D Studio MAX.
Алгоритм построчного сканирования
Для работы алгоритма требуется три таблицы: таблица ребер, таблица многоугольников и таблица активных ребер.
Таблица ребер (ТР) содержит все негоризонтальные ребра многоугольников. Элементы ТР отсортированы по группам на основе
меньшей y-координаты каждого ребра, а внутри групп – в зависимости от величины тангенса угла наклона. Для каждого ребра в ТР
содержится следующая информация (рис. 1.23, 1.24):
x-координата крайней точки ребра, имеющей наименьшую
y-координату xmin;
y-координата другой крайней точки ребра ymin;
Y
16
14
E3
12
E4
Сканирующая
строка
10
E1
8
E5
Q
6
4
E2
2
2
4
6
E6
8 10 12 14 16 18 20
X
При визуализации первой строки
цветом многоугольника Q закрашивается
только одна точка
Рис. 1.23. Многоугольник Q и сканирующая строка
43
y- координата
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
E4
E3
14 8
14 4
-1 1
E1
0
1
14
8 2
1
E5
14 20 0 1
E2
E6
12 -2 1
6 12 2 1
xmin ymin
∆x
, при ∆y = 1
∆y
Идентификатор
многоугольника
6
Рис. 1.24. Таблица ребер, сформированная для многоугольника Q
величину, обратную тангенсу наклона ребра – приращение Δx
координаты х при приращении координаты y, равном одной строке;
идентификатор многоугольника, указывающий, какому многоугольнику принадлежит данное ребро.
Таблица многоугольников (ТМ) содержит следующую информацию о каждом многоугольнике:
коэффициенты плоскости, в которой лежит многоугольник;
информацию о цвете многоугольника;
логическую (Boolean) переменную-flag, определяющую положение внутри/вне многоугольника. (Она используется при обработке
текущей строки, вначале ей присваивается значение false – вне многоугольника).
Основой работы алгоритма является таблица активных ребер
(ТАР). В начале работы в ТАР переписывают информацию о ребрах,
которые начинаются в первой строке ТР. По информации, содержащейся в ТАР, формируют изображение сцены на экране, последовательно прорисовывая (визуализируя) все его строки.
Алгоритм начинает работу с визуализации первой строки. Для
каждого элемента строки сравнивают значение текущей координаты xt с координатами xmin крайних точек ребер, записанных в
ТАР. Если совпадения координат нет (ни одно ребро не начинает44
ся в этом элементе строки), то элементу присваивают цвет фона.
Если получено равенство xt = xk,min (xk,min – координата крайней
точки ребра k), то элементу присваивается цвет многоугольника Q, которому принадлежит ребро k . Одновременно переменная
flag многоугольника Q получает значение true: flagQ = true. Это
означает, что дальнейшая часть строки соответствует многоугольнику Q и должна иметь его цвет. Если при дальнейшем увеличение xt выполняется условие xt = xl,min (xl,min – координата крайней точки ребра l, которое тоже принадлежит многоугольнику Q), то переменная flag многоугольника Q получает значение
false. Это означает, что произошел выход за пределы многоугольника Q и далее элементы строки должны визуализироваться цветом фона. Рассмотрим визуализацию первой строки многоугольника Q (см. рис. 1.23). При xt = 12 выполняется условие xt = x2,min,
следовательно, следующая часть строки должна визуализироваться цветом многоугольника Q. Одновременно выполняется условие
xt = x6,min, это означает выход за пределы многоугольника (рис.
1.23). Таким образом, для первой строки цветом многоугольника Q была закрашена только одна точка. При увеличении номера
анализируемой строки цветом многоугольника Q будет закрашиваться m пикселей, так как начала ребер l и k не будут совпадать
(рис. 1.23).
После прорисовки строки выполняют обновление TAР. Эта процедура включает следующие шаги:
исключение из ТАР ребер, у которых ymax < yt;
модификацию значений xmin у оставшихся ребер xmin = xmin + Δx;
добавление в ТАР ребер с ymin=yt: начинающихся в строке, которая будет визуализироваться.
После обновления ТАР визуализируют следующую строку изображения аналогично описанию приведенному выше.
Рассмотрим особенности алгоритма сканирующей строки при
визуализации перекрывающихся многоугольников, когда решается задача определения видимости.
Пусть yt = γ (рис. 1.25) при xt = xk,min начинается визуализация части строки внутри многоугольника Q flagQ = true.
Для прорисовки строки используют цвет многоугольника Q.
При x1t = xt + Δx выполняется условие x1t = xn,min, это означает,
что следующая часть строки принадлежит многоугольнику P,
flagP = true. Значение true одновременно у двух переменных flagQ
и flagP показывает, что многоугольники P и Q перекрылись (см.
рис. 1.25). Необходимо определить, каким цветом визуализировать
45
Y
Q
yt = γ
P
flag Q = true
flag Q = true
(x , γ )
flag P = true
1
t
flag P = true
D
xt3 = x p ,min
xt = xk ,min xt1 = xn ,min xt2 = xm ,min
X
Рис. 1.25. Анализ видимости в алгоритме сканирующей строки
эту часть строки. Для этого в точке (x1t ,γ) рассчитывают координату zQ и zp.
zQ =
zP =
-DQ - AQ xt1 - BQ γ
CQ
;
-DP - AP xt1 - BP γ
,
CP
где AQ,BQ,CQ,DQ,A P,BP,CP,DP – коэффициенты плоскостей, содержащих многоугольники P и Q, соответственно.
Если zQ < zp, то многоугольник Q ближе к наблюдателю, чем P и далее строка будет визуализироваться цветом многоугольника Q. Если
неравенство zQ < zp ложно, то будет использован цвет многоугольника
P. В рассматриваемом примере примем неравенство zQ < zp истинно.
При достижении элемента строки с координатой xt2, в которой
выполняется условие xt2 = xm,min, анализируемая строка выходит за
пределы многоугольника Q, и далее будет визуализироваться цветом
многоугольника P, до выполнения условия xt3 = xp,min (см. рис. 1.25).
Алгоритм сканирующей строки не эффективен при обработке многоугольников, проходящих сквозь друг друга. Эту проблему решают аналогично подходу, изложенному в алгоритме сортировки по глубине.
46
Контрольные вопросы
1. Что понимается под нелицевыми ребрами и гранями? В чем
разница между понятиями нелицевая грань и невидимая грань?
2. Перечислите основные шаги алгоритма определения нелицевых граней выпуклых тел.
3. На чем основано определение свойств грани в алгоритме Робертса?
3. Приведите примеры алгоритмов определения видимости в сцене. Поясните, какие из них работают в пространстве изображения ,
какие в пространстве объектов.
4. Что называют оболочкой многоугольника. Какие типы оболочек бывают? В каком алгоритме определения видимости в сцене используют оболочки?
5. Перечислите основные тесты для исключения неопределенности в алгоритме сортировки по глубине.
6. Назовите основные массивы алгоритма z-буфера и поясните,
как их модифицируют в процессе работы алгоритма.
7. Каким образом решают задачу выявления перекрытия многоугольников в алгоритме сканирующей строки?
1.6. Основные модели и алгоритмы закраски
Для формирования реалистичного трехмерного изображения все
видимые поверхности необходимо закрасить. При закраске должны
быть учтены свойства источников света, характеристики поверхностей, а также взаимное расположение и ориентация поверхности
и источников света. Для учета перечисленных факторов и определения на их основе интенсивности закраски в компьютерной графике
используют специальные аналитические выражения – модели закраски. Они позволяют определить интенсивность закраски только
для одной точки грани, для того чтобы закрасить всю грань используют алгоритмы закраски.
В данном параграфе рассмотрены модель закраски по Фонгу
и наиболее часто используемые алгоритмы закраски граней.
1.6.1. Модели закраски
Световая энергия, падающая на поверхность, может быть поглощена, отражена и пропущена. Объект можно увидеть только, если он отражает или пропускает свет. (Если объект поглощает весь
падающий свет, то он невидим и называется абсолютно черным
47
телом). Свойства отраженного света в простейшем случае зависят от
типа источника света: рассеянный свет, точечный, направленный,
прожекторный (рис. 1.26), от вида поверхности и ее ориентации относительно источника света.
Основными видами поверхности являются матовые (диффузные
или ортотропные поверхности) и зеркальные.
Матовые поверхности отражают свет равномерно по всем направлениям, т.е. обладают диффузным отражением. При таком отражении поверхность визуально имеет одинаковую освещенность
независимо от угла обзора. Для диффузных поверхностей при освещении их точечным источником света справедлив закон косинусов
Ламберта: интенсивность отраженного света пропорциональна косинусу угла между направлением на источник света L и нормалью
к поверхности N (рис 1.27):
Id = I p kd cos θ,
где Id – интенсивность отраженного света; Ip – интенсивность точечного источника; kd – коэффициент диффузного отражения, зависящий от материала; θ – угол между направлением на источник света
и нормалью к поверхности.
Рис. 1.26. Типы источников света: a – точечный; б – направленный;
в – прожекторный
N
L
θ
Рис. 1.27. Диффузное отражение
48
В большинстве сцен наряду со светом от точечных источников
присутствует рассеянный свет – свет постоянной яркости, созданный многочисленными отражениями от различных поверхностей.
С учетом рассеянного света модель закраски имеет вид
I = Ia ka + I p kd cos θ, (1.6.1)
где Ia – интенсивность рассеянного света; ka – коэффициент диффузного отражения рассеянного света, зависящий от материала.
Модель (1.6.1) не учитывает расстояние между поверхностью и
точечным источником света. Следовательно, при закраске поверхностей на ее основе одинаково ориентированные поверхности будут
иметь одинаковую освещенность независимо от их удаленности от
источника света, хотя известно, что интенсивность света обратно
пропорциональна расстоянию от источника до объекта. С учетом
удаленности объекта модель освещения примет вид
I = Ia · ka + (Ip · kd cos θ)/(d + K),
где d – расстояние до объекта; K – произвольная константа.
Применение модели не с квадратичным, а линейным затуханием
интенсивности от расстояния обеспечивает получение более реалистичных изображений.
Зеркальные поверхности обладают направленным отражением
света. Угол отражения от идеальной зеркальной поверхности равен
углу падения, в любом другом положении наблюдатель не видит
зеркально отраженный свет. Это означает, что вектор наблюдения
R совпадает с вектором отражения S, а угол α равен 0. Если поверхность неидеальна, то количество света, достигающее наблюдателя,
резко падает с ростом угла α (рис. 1.28).
N
L
R
θ
θ
α
S
Рис. 1.28. Зеркальное отражение
49
В простых моделях освещения обычно используют эмпирическую модель зеркального отражения, предложенную Фонгом.
В этой модели быстрое убывание интенсивности с ростом угла α описывается функцией cosnα, где n лежит в диапазоне 1–200 в зависимости от свойств среды. Модель Фонга для определения интесивности зеркальной составляющей имеет вид
Is = I pw(i, λ)cosn α,
где w(i,λ) – кривая отражения, представляющая отношение зеркально отраженного света к падающему как функцию угла падения
и длины волны. Часто в качестве w(i,λ) служит константа kз, которая выбирается так, чтобы получающиеся результаты были приемлемы с точки зрения реалистичности формируемого изображения
зеркальной поверхности.
Интенсивность зеркального отражения зависит от угла падения,
но даже при перпендикулярном падении зеркально отражается
только часть света, а остальной свет либо поглощается, либо отражается диффузно. Эти соотношения определяются свойствами вещества и длиной волны. Таким образом, модель, учитывающая зеркальное и диффузное отражение, имеет вид
I = Ia ka +
Ip
(d + K)
(kd cos θ + ks cosn α).
Для записи модели в более простом для практического использования виде выразим косинусы углов через скалярное произведение
образующих их векторов:
cos θ =
< N,L >
ˆ ,L
ˆ >,
=< N
N×L
(1.6.2)
< R,S >
ˆ ,S
ˆ >, =< R
R×S
(1.6.3)
ˆ ,L
ˆ – единичные векторы нормали к поверхности и направлегде N
ния на источник света соответственно.
cos α =
ˆ ,S
ˆ – единичные векторы направления отраженного луча и нагде R
правления на наблюдателя соответственно.
С учетом приведенных выражений модель освещения имеет вид
50
I = Ia ka +
Ip
(d + K)
ˆ ,L
ˆ >+k <R
ˆ ,S
ˆ >). (kd < N
s
(1.6.4)
Для представления отражения от цветных поверхностей модель
(1.6.4) записывается отдельно для голубого, пурпурного и желтого
света, при этом константы диффузного отражения задаются тройкой
чисел kdc, kdm, kdy, константа kз не зависит от цвета поверхности.
1.6.2. Алгоритмы закраски
Модель (1.6.4) позволяет определить интенсивность освещения
для одной точки грани, чтобы выполнить закраску всей грани, существует ряд специальных алгоритмов. Основными среди них являются:
однотонная закраска;
закраска, основанная на интерполяции интенсивностей (метод
Гуро);
закраска, основанная на интерполяции нормалей (метод Фонга).
Алгоритмы перечислены в порядке возрастания сложности.
Однотонная закраска является простейшим алгоритмом и применяется в основном при эскизном проектировании. В данном алгоритме вычисляют один уровень интенсивности, который используется для закраски всего многоугольника. При этом предполагают,
что источник света и наблюдатель расположены достаточно далеко
в сравнении с размерами объекта. При таких двух допущениях про^ L>
^ и <R,
^ S>
^ постоянно для всех точек грани. Следоизведение <N,
вательно, достаточно вычислить уровень интенсивности для одной
точки и применить его для всей грани.
Третьим условием для применения однотонной закраски является следующее: многоугольник должен представлять собой самостоятельную грань, а не является аппроксимацией криволинейной
поверхности.
Выполнение последнего условия оказывает существенно большее влияние на получаемое изображение, чем два других. Влияние
состоит в том, что каждая из видимых граней аппроксимированной
поверхности будет явно видна как отдельный многоугольник, потому что интенсивность каждой из граней отличается от интенсивности соседних граней. Различие в интенсивности соседних граней
подчеркнуто вследствие эффекта Маха. Это приводит к тому, что
элементарные многоугольники, составляющие полигональную сетку, аппроксимирующую криволинейную поверхность, будут хорошо заметны.
Устранить дискретность изменения интенсивностей позволяет
алгоритм Гуро, основанный на интерполяции интенсивностей.
51
Алгоритм Гуро включает следующие шаги:
вычисляют нормали к граням (многоугольникам полигональной
сетки);
определяют нормали к вершинам путем усреднения нормалей по
всем граням, которым принадлежит вершина (рис. 1.29);
используя нормали в вершинах и произвольную модель тонирования, например модель Фонга, для диффузного и зеркального отражения вычисляют значения интенсивности в вершинах;
закрашивают каждый многоугольник путем линейной интерполяции значений интенсивности в вершинах сначала вдоль каждого
ребра, а затем вдоль каждой строки.
Интерполяцию интенсивности вдоль ребра выполняют в соответствии с выражением
Ia = I1
ys - y2
y - ys
+ I2 1
,
y1 - y2
y1 - y2
где I1, I2 – значения интенсивностей в вершинах, образующих ребро; y1, y2 – координаты вершин, образующих ребро; ys – текущее
значение координаты y при движении вдоль ребра (рис. 1.30).
Интерполяцию вдоль строки выполняют аналогичным образом:
Ia = Ia
xb - x p
xb - xa
+ Ib
x p - xa
xb - xa
,
Nv2
V2
N2
N4
N1
V3
V1
N3
V4
Рис. 1.29. Определение нормали к вершине V2: Nv2 = N1 + N2 + N3
52
до
ль
р
еб
ра
где Ia, Ib – значения интенсивностей в начальной и конечной точке
обрабатываемого отрезка строки; xa, xb – координаты вершин, образующих строку; xp – текущее значение координаты x при движении
вдоль строки (см. рис. 1.30).
Для цветных объектов отдельно интерполируется каждая из
компонент цвета.
Наиболее сложным, но реализующим наиболее близкий к реальности эффект закраски является алгоритм Фонга. Этот метод основан на интерполяции нормалей. Алгоритм Фонга включает следующие шаги:
вычисляют нормали к граням (многоугольникам полигональной
сетки) и определяют нормали к вершинам путем усреднения нормалей по всем граням, которым принадлежит вершина;
используя нормали в вершинах, выполняют интерполяцию
нормалей вдоль ребра, определяя таким образом, нормаль к каждой точке ребра. Далее выполняют интерполяцию нормалей вдоль
строки:
зная проекции нормали в каждой точке строки и, используя произвольную модель закраски, выполняют закраску грани.
ос
те
йв
Y
I1
y2
Ин
те
рп
ол
яц
ия
ys
ин
те
н
си
вн
y1
Ia
Ib
Интерполяция интенсивностей вдоль строки
I2
I3
xa
xp
xb
X
Рис. 1.30. Интерполяция интенсивностей вдоль ребра многоугольника
и вдоль строки
53
Контрольные вопросы
1. Раскройте отличия между диффузными и зеркальными поверхностями.
2. Какой закон положен в основу модели диффузного отражения?
3. От каких величин зависит интенсивность зеркального отражения в модели Фонга?
4. В чем разница между моделью закраски и алгоритмом закраски?
5. При каких условиях возможно применение алгоритма однотонной (фасетной) закраски?
6. Объясните разницу между алгоритмами закраски по Фонгу и
по Гуро.
7. Как в алгоритме Гуро реализуют интерполяцию интенсивностей по ребру и по строке?
54
2. СИНТЕЗ И АНИМАЦИЯ ТРЕХМЕРНЫХ ОБЪЕКТОВ
В ПРОРАММЕ 3D STUDIO MAX
2.1. Основные сведения о программе 3D Studio MAX
Программа 3D Studio MAX (фирмы Autodesk) предназначена для
создания и анимации трехмерных объектов высокого уровня сложности. Это мощное средство трехмерного моделирования и анимации, используемое в профессиональном кино и видеопроизводстве.
Создание и анимация трехмерной сцены с помощью программ
3D Studio MAX включает в себя следующие основные этапы:
моделирование геометрической формы объекта;
построение композиции сцены – размещение объектов сцены,
добавление и расстановка источников света и камер;
детализация поверхностей объектов сцены путем присвоения им
материала – набора свойств, описывающих поверхность (цвет, текстура, отражательная способность, прозрачность и др.);
визуализация – получение итогового изображения по всей совокупности математических моделей, описывающих геометрические
и энергетические свойства объектов в сцене; это итоговое изображение может представлять собой отдельный снимок или кадр анимационной последовательности;
анимация;
видеомонтаж – применение специальных визуальных эффектов
к уже сформированному изображению.
В табл. 1 приведен краткий перечень основных возможностей,
поддерживаемых программой, на каждом из перечисленных этапов.
Таблица 1
Этап
Методы геометрического
моделирования
3D-объектов
Возможности
Создание объектов на основе трехмерных примитивов (куб, сфера, тор и т.д. ) с помощью булевских
операций и операции распределения, а также путем
различных модификаций каркаса и др.
Создание объектов на основе сечений, заданных
сплайнами или NURBS-кривыми, с помощью методов выдавливания, лофтинга, экструзии и др.
Создание объектов на основе поверхностей Безье
и NURBS-поверхностей.
Создание объектов с помощью систем частиц.
Наряду с основными пакет обладает разнообразными дополнительными возможностями геометрического моделирования, обеспечиваемыми применением различных модификаторов.
55
Продолжение табл. 1
Этап
Возможности
Возможности детализации вида
поверхностей
(работа с материалами)
Для работы с материалами предусмотрен специальный программный модуль Material Editor
(редактор материалов ). Он имеет свое окно диалога,
которое позволяет создавать, модифицировать и
применять к объектам различные материалы.
Редактор материалов поддерживает:
различные типы материалов: стандартный, смесь,
двустроний, многокомпонентный, материал верх/
низ, матовый/затеняемый, трассируемый и др.;
возможность модификации таких параметров
материала, как диффузное отражение, подсветка,
зеркальное отражение, сила блеска, глянцевитость,
самосвечение, прозрачность, рельефность, светофильтр, отражение, преломление;
закраску в соответствии с различными моделями
тонирования: однотонной, по Фонгу, по Блинну, по
металлу и др;
применение карт текстур для моделирования всех
параметров материала;
визуализацию до 24 образцов при работе над
материалом;
возможность использования и создания собственных библиотек материалов
Методы создания композиции
сцены
Предусмотрены возможности:
использования источников света различного
типа: точечных, удаленных, нацеленных, подсветки и др.;
настройки свойств источников света (интенсивность, цвет , свойства теней и др.);
управления плотностью распределения света в
пределах пятна, являющегося следом пучка лучей
источника для прожекторных и направленных источников света;
создания световых спецэффектов.
Реализованы модели виртуальных съемочных
камер с возможностью варьирования фокусного
расстояния и поля зрения и объектива, резкости
и размера диафрагмы, поддерживается движение
камеры (панорамирование, сопровождение и наезд)
Визуализация
Основным алгоритмом визуализации (используемым по умолчанию) является алгоритм z-буфера,
который в случае необходимости может быть дополнен алгоритмом трассирования лучей. В процессе визуализации сцены возможно использование
эффектов окружающей среды: объемного тумана,
тумана, горения, фона окружающей среды
56
Окончание табл. 1
Этап
Возможности
Анимация
Поддерживается:
анимация на основе ключевых, процедурных и
комбинированных контроллеров;
прямая и инверсная кинематика;
морфинг, деформации скелета и объемные деформации;
анимация с учетом динамических свойств объектов
Видеомонтаж
Для выполнения базовых операций нелинейного монтажа кадров и фильтрации изображений
предусмотрен специальный программный модуль
Видеомонтаж.
Модуль Видеомонтаж позволяет:
объединить два изображения в одну композицию;
добавить к изображению сцены оптические
эффекты (линзовые эффекты, размытия контуров,
эффекты сияния);
выполнить коррекцию контраста и др.
3D MAX позволяет сохранять полученное изображение или
клип в разнообразных форматах. Наиболее часто используемыми
форматами являются AVI, JPEG, Targa, возможно также сохранение в форматах BMP, TIF, PNG, RLA и др.
2.2. Обзор основных элементов интерфейса
программы 3D Studio MAX
2.2.1. Работа с файлами
Все файлы, содержащие описание сцены, созданной в 3D MAX,
сохраняются и загружаются с расширением MAX. Для открытия
или сохранения файла следует выбрать команду File > Open (Файл >
Открыть) или File > Save (Файл > Сохранить) и воспользоваться одним
из стандартных окон Windows Open File (Открытие Файла) или Save
File (Сохранение Файла).
Дополнительными возможностями пакета по работе с файлами
являются присоединение или замена объектов сцены.
Команда File > Merge (Файл > Присоединение) обеспечивает возможность добавить к разрабатываемой сцене содержимое указанного файла.
57
Команда File > Replace (Файл >Заменить) позволяет выполнить
не полное, как в предыдущем случае присоединение всей сцены из
другого файла, а замену тех объектов сцены, чьи имена совпадают
с именами объектов в указанном файле.
3D MAX поддерживает также функции импорта и экспорта файлов, соответствующие команды File > Import (Файл > Импортировать)
и File > Export (Файл > Экспортировать).
Благодаря встроенным программным средствам возможен импорт файлов в форматах программ 3D Studio ( 3DS, PRJ, SHP), Adobe
Illustrator, StereoLithography (STL) , AutoCAD (DXF), а экспорт –
в форматах 3D Studio , ASE, DXF, STL, WRL. Дополнительные
форматы импорта/экспорта поддерживаются за счет модулей расширения.
2.2.2. Работа с окнами проекций
Основным элементом интерфейса 3D MAX являются окна проекций, которые появляются на экране непосредственно после загрузки программы. С их помощью можно работать с объектами сцены
и рассматривать сцену в разных ракурсах. Обычная конфигурация
окон проекций Top (Вид сверху), Left (Вид слева), Right (Вид справа)
и Perspective (Перспектива).
3D MAX позволяет выполнять настройку всех параметров и режимов, поддерживаемых окнами проекций. Можно настраивать такие характеристики окон, как тип отображаемой проекции, компоновку окон проекций в пределах экрана, качество отображения и
множество других. Существует несколько способов, позволяющих
выполнить настройку параметров окон (конфигурирование окон).
Самым простым является вызов контекстного меню с помощью
щелчка правой кнопкой мыши на имени, располагающемся в левом верхнем углу каждого окна. Появившееся меню окна проекций
содержит команды настройки наиболее часто используемых параметров и режимов отображения. Второй способ предполагает использование окна диалога Viewport Configuration (Конфигурация окон
проекций), которое может быть вызвано командой Configure (Конфигурировать) из контекстного меню окна проекций или по команде Customize > Viewport Configuration (Настройка > Конфигурация окон
проекций) основного меню. В окне диалога Viewport Configuration (Конфигурация окон проекций) содержится гораздо больше параметров
настройки, чем в контекстном меню. Параметры разбиты на пять
групп: Rendering Method (Метод визуализации), Layout (Компоновка),
58
Safe frames (Области сохранения), Adaptive degradation (Адаптивная
деградация), Regious (Области визуализации). Каждая группа пред-
ставлена на отдельной вкладке.
Вкладка Layout (Компоновка) содержит варианты разбиения экрана на окна проекций. Выбрав нужную компоновку, можно изменить
тип проекции, отображаемой в каждом из входящих в нее окон,
щелкнув на значке соответствующего окна, для вызова контекстного меню.
Дополнительно существует специальный набор инструментов
управления окнами проекции. Они позволяют осуществить такие
операции, как масштабирование, прокрутка и др. Командная панель с инструментами расположена в правом нижнем углу экрана,
ее вид и расшифровка пиктограмм показаны на рис. 2.1.
2.2.3. Доступ к командам
3D MAX предоставляет несколько методов выбора команд.
Основное меню. Строка основного меню содержит 16 пунктов,
таких как File (Файл) или Rendering (Визуализация), при выборе каждого из которых раскрывается меню с набором соответствующих команд. При работе с командами основного меню используются те же
приемы, что и при работе с любыми меню Windows.
Панели инструментов. В верхней и нижней частях экрана размещаются соответственно стандартная и дополнительная панели
инструментов, обеспечивающие доступ к различным командам.
Масштаб
всех окон
Масштаб
Масштаб
области
Сцена
целиком
Сцена целиком
во всех окнах
Развернуть/
Восстановить
Прокрутка Повернуть
Рис. 2.1. Инструменты управления окнами проекций
59
60
Ползунок
таймера
анимации
Поле отсчета
координат
Окна проекций
Отразить
Область
свитков
команд
Фиксация осей
Рис. 2.2. Общий вид интерфейса программы 3D Studio Max
Выделить и двигать
Выделить и вращать
Выделить и масштабировать
Инструменты
преобразований
Управление
Выбор центров
выделением
преобразования
объектов
Геометрия
Формы
Источники света
Камеры
Командные панели
Общий вид экрана с расшифровкой пиктограмм основных инструментов приведен на рис. 2.2.
Командные панели. Это наиболее мощное и часто используемое
средство доступа к командам в пакете. 3D MAX имеет 6 командных панелей: Create (Создать), Modify (Изменить), Hierarchy (Иерархия), Motion (Движение), Display (Дисплей), Utility (Сервис), каждая обладает собственным набором команд и возможностей. Командные
панели реализованы в виде закладок с выступающими корешками
(рис. 2.3). Для переключения между командными панелями следует щелкнуть на корешке нужной панели и панель расположится поверх остальных. Переключение командных панелей прерывает действие текущей команды. В общем случае командная панель включает в себя кнопки выбора команд, расположенные в верхней части
панели, и свитки параметров. Более подробно знакомство с командными панелями дано в рамках практикума (глава 3).
Плавающие командные панели. Это дублирующие наборы команд соответствующих командных панелей. Панели не привязаны
к определенному месту экрана, то есть доступ к ним возможен в любой момент без необходимости прерывать действие других команд.
Примером рассматриваемого элемента интерфейса является панель
Display Floater (Плавающая палитра Дисплей). Она вызывается на
экран выбором команды меню Tools> Display Floater (Сервис > Плавающая панель Дисплей). Display Floater (Плавающая панель Дисплей) служит просто иным способом доступа к командной панели Display (Дисплей), позволяющим не покидать любую другую панель, с которой
в данный момент ведется работа, например панель Modify (Изменить).
Клавиатурные комбинации. Наиболее быстрый способ доступа
к командам 3D MAX – использование клавиатурных комбинаций.
Общепринятые клавиатурные комбинации обычно указываются
рядом с командой при вызове ее из основного меню.
Иерархия Движение
Изменить
Создать
Дисплей
Сервис
Рис. 2.3. Командные панели
61
2.3. Методы геометрического моделирования
трехмерных объектов в программе 3D Studio MAX
Основными методами геометрического моделирования для создания трехмерных объектов в 3D MAX являются:
моделирование на основе геометрических примитивов;
моделирование на основе сечений, созданных с помощью сплайнов или NURBS-кривых (неоднородных рациональных В-сплайнов);
моделирование на основе поверхностей Безье и NURBS-поверхностей;
моделирование с использованием системы частиц.
2.3.1. Моделирование объектов
на основе геометрических примитивов
Моделирование на основе трехмерных примитивов позволяет
создавать разнообразные объекты простой формы на основе имеющихся в программе наборов трехмерных тел и многогранников.
В 3D MAX существует два набора примитивов: стандартный и расширенный. К стандартным примитивам относятся: параллелепипед (box), сфера (sphere), геосфера (geosphere), конус (cone), цилиндр
(cylinder), труба (tube), тор (torus), пирамида (pyramid), призма (prism)
и чайник (teapot). К расширенным – многогранник (hedra), тороидальный узел (torus knot), параллелепипед с фаской (chamfer box),
цилиндр с фаской (chamfer cylinder), цистерна (oil tank), капсула (capsule),
веретено (spindle), тело L-экструзии (L extrusion) и тело O-экструзии
(O extrusion).
Все примитивы в 3D MAX являются параметрическими. Это означает, что их размеры и другие свойства можно изменять после того, как объект создан. Например, при рисовании примитивов трудно
точно выдержать заданные размеры. Чтобы упростить задачу, при
рисовании примитива следует развернуть свиток Parameters (Параметры). В полях этого свитка отображаются размеры объекта. После
создания примитива, вы можете ввести в поля требуемые значения.
Объекты достаточно сложной формы могут быть созданы путем объединения и модификации трехмерных примитивов. Наиболее часто примитивы объединяются с помощью булевых операций:
объединение (union), пересечение (intersection), вычитание (subtraction)
или с помощью операции распределение (scatter).
В случае использования операции объединения результирую-
щий объект, содержит все точки двух исходных объектов. Объект,
полученный в результате операции пересечения, содержит только
62
те точки, которые являются общими для двух исходных объектов.
Объект, который получен в результате логической операции вычитания, содержит только точки первого объекта, за исключением точек, которые являются общими для двух исходных объектов. Объект, созданный с помощью операции распределения, представляет
собой результат распределения одного трехмерного тела по поверхности другого.
Дополнительные возможности геометрического моделирования
обеспечивает применение к примитиву модификатора Editable Mesh
(Редактируемая сетка). После применения этого модификатора примитив можно править на уровне подобъектов, например на уровне
вершин. Удаление или перемещение вершин приводит к существенному изменению формы исходного примитива (рис. 2.4).
2.3.2. Моделирование объектов на основе сечений
Моделирование на основе сечений позволяет получать объекты
сложной геометрической формы. Создание объекта реализуют в два
этапа: на первом этапе создают двумерное сечение (плоскую форму),
далее ему придают объем. Для создания сечения используют сплайны или NURBS-кривые.
В общем случае сплайн – это метод описания параметрической
кубической кривой.
Строго говоря, изложенное ниже описание параметрической кубической кривой является описанием в форме Безье, а не в форме
сплайна, как оно названо в 3D Max. Для соответствия излагаемого
а)
б)
Рис. 2.4. Объект, созданный на основе сферы путем перемещения вершин:
a – вид спереди; б – результат визуализации
63
материала инструментам пакета автором далее сохранено название
сплайн для кривой в форме Безье.
Сплайн, созданный в 3D MAX, состоит из сегментов, узловых точек, управляющих точек и касательных линий (векторов) (рис. 2.5).
Форму кривой изменяют:
перемещая узловые и управляющие точки;
изменяя свойства узлов;
добавляя или удаляя новые узлы.
При выделении узловой точки криволинейного сегмента у нее
появляются одна или две управляющие точки, соединенные с узловой точкой касательными линиями (векторами) (рис. 2.5). Расположение касательных точек и управляющих точек определяет длину
и кривизну криволинейного сегмента, а их перемещение приводит к
изменению формы контура.
Вид касательных линий и методы управления кривизной сегмента определяются типом узловой точки. В 3D Max различают три
типа узловых точек:
симметричный узел (Smooth mode);
гладкий узел (Bezier mode);
острый узел (Corner mode).
У симметричного узла оба отрезка касательных по обе стороны
точки привязки имеют одинаковую длину и лежат на одной прямой, которая показывает направление касательной к контуру в данной узловой точке. Это означает, что кривизна сегмента с обеих сторон точки привязки одинакова (рис. 2.6).
Выделенная узловая точка
Касательная линия (вектор)
Управляющая точка
Начальная точка
Невыделенные узловые точки
Рис. 2.5. Представление кривой в виде сплайна
64
Модификация длины касательной линии с одной стороны точки привязки путем перемещения управляющей точки приводит
к соответствующему изменению и второй касательной линии, что
трансформирует радиус кривизны в точке привязки.
У гладкой точки оба отрезка касательных линий по обе стороны
точки привязки лежат на одной прямой, которая показывает направление касательной к кривой в данной точке, но длина управляющих линий разная (рис. 2.7). Это говорит о том, что кривизна
криволинейных участков, прилегающих к этой точке, различна
с разных ее сторон.
Изменение длины касательной линии с одной стороны точки
привязки путем перемещения управляющей точки приводит к соответствующему изменению радиуса кривизны этого криволинейного сегмента с одной стороны узловой точки. При этом длина второго отрезка касательной линии не изменяется.
У острого узла касательные линии с разных сторон узловой точки не лежат на одной прямой (рис. 2.8). Поэтому два криволинейных сегмента, прилегающих к опорной точке, имеют различную
Рис 2.6. Симметричный узел
Рис. 2.7. Гладкий узел
Рис. 2.8. Острый узел
65
кривизну с разных сторон узловой точки, и контур в этой точке образует резкий излом. Радиус кривизны и угол наклона касательной
для каждого криволинейного сегмента можно регулировать независимо друг от друга соответствующим изменением длины и угла
наклона касательной линии для каждого прилегающего к опорной
точке криволинейного сегмента в отдельности.
В 3D MAX сплайн может быть создан с помощью инструмента
Line (Линия). Для модификации формы сплайна необходимо перейти
на командную панель Modify (Изменить) и раскрыть дерево Line (Линия) в списке использованных модификаторов. В раскрывшемся дереве Line (Линия) может быть выбран уровень редактирования Vertex
(Вершина), Segment (Сегмент) или Spline (Сплайн). Редактирование на
уровне вершин позволяет определять их тип (Smooth, Bezier, Corner)
и регулировать форму кривой с помощью касательных векторов.
Дополнительно, в 3D MAX предусмотрена возможность создавать следующие плоские формы: Donut (Кольцо), Circle (Окружность),
Arc (Дуга), Helix (Спираль), Ngon (Правильный многоугольник), Rectangle (Прямоугольник), Ellipse (Эллипс), Star(Звезда), Text (Текст).
NURBS-кривые близки по своим свойствам к сплайнам. Они
имеют другое аналитическое представление, которое обеспечивает
возможность создания с их помощью очень плавных кривых, воспроизводящих форму любых природных объектов.
В 3D MAX реализовано два типа NURBS-кривых: Point Curve (Точечная кривая) и CV Curve (СV-кривая). Точечные кривые проходят
через все контрольные точки, обозначенные в пространстве сцены. Для кривых типа CV обозначенные точки играют роль управляющих вершин между которыми проходит плавный изгиб кривой
(рис. 2.9).
Кривые типа NURBS более удобны для моделирования сложных
плоских форм, чем классические сплайны.
После создания двумерного сечения ему необходимо придать
объем.
Основными методами создания трехмерных объектов на основе
сечений являются:
экструзия или выдавливание (extrusion);
вращение (lathing);
выдавливание со скосом боковых граней (beveling);
лофтинг или расстановка сечений вдоль заданного пути (lofting).
В случае применения метода выдавливания трехмерный объект
формируется следующим образом: создается копия сплайна, описывающего сечение, которая помещается точно над оригиналом
66
на некотором расстоянии от него. Полученные в результате верхнее
и нижнее основания объекта достраиваются боковой поверхностью
по периметру оснований. Метод выдавливания наиболее подходит
при создании объектов, имеющих один характерный профиль во
всех сечениях по высоте.
При использовании метода вращения трехмерный объект образуется как результат поворота сечения вокруг заданной оси, проходящей через одну из его точек, обычно через центр, левый или правый край. Этот метод позволяет создавать объекты, которые по своей природе являются телами вращения.
Метод выдавливания со скосом боковых граней очень похож на
обычное выдавливание. Отличие состоит в возможности задания
масштаба сечения на любом уровне по координате выдавливания.
Например, если уменьшить масштаб верхнего основания до 0,9
а)
б)
Рис. 2.9. NURBS-кривые: a – Point Curve (Точечная кривая);
б – CV Curve (CV-кривая)
67
от исходного, то объект после выдавливания будет иметь скошенные к верху боковые грани. 3D MAX имеет еще один вариант этого метода – скос по профилю (bevel profile), позволяющий применить
сплайн в качестве траектории, по которой будет выполняться скос
боковых граней при выдавливании сплайна сечения.
При использовании лофтинга сформированное сечение используется в качестве опорных сечений, расставляемых вдоль заданного
пути. Создание объекта таким методом напоминает выдавливание,
но имеет три главных отличия:
выдавливание производится по прямолинейной траектории на
заданную высоту, а при лофтинге поперечные сечения расставляются вдоль произвольного пути, заданного сплайном;
при расстановке сечений вдоль пути они могут быть деформированы с помощью различных видов деформации: масштаб (scale),
скрутка (twist), качка (teeter) и др.;
существует дополнительная возможность задавать форму продольных сечений создаваемого объекта – многоуровневый лофтинг.
2.3.3. Моделирование объектов на основе поверхностей Безье
и NURBS-поверхностей
Моделирование основано на использовании имеющейся у каждой поверхности решетки деформации.
В случае применения поверхностей Безье объект создают путем
объединения нескольких кусков Безье с их последующей модификацией на уровне вершин или ребер решетки деформации, а также
на уровне всей поверхности в целом. Наиболее часто используется
модификация на уровне вершин решетки деформации, называемых управляющими. Перемещая всего одну управляющую вершину решетки деформации, можно воздействовать на целый участок
поверхности, состоящей из нескольких кусков Безье. Когда поверхность Безье корректируется путем перемещения управляющей точки, сечения деформируемой поверхности вдоль координатных осей
представляют собой сплайны. Это значит, что деформация поверхности происходит плавно, без изломов. Подобно вершинам сплайна, имеющим тип Bezier (Безье), управляющие точки решетки деформации также имеют касательные векторы с маркерами на концах, которые можно перемещать, придавая поверхности различную
кривизну.
Процесс создания и редактирования поверхностей Безье достаточно прост. Сперва создают кусок Безье используя инструмент
Quad Patch (Четырехугольный кусок) или Tri Patch (Треугольный кусок).
68
Затем к созданному объекту применяют модификатор Edit Patch
(Правка куска), который позволяет приступить к правке куска, добавить дополнительные куски и решить иные задачи моделирования.
NURBS-поверхности по своим свойствам очень близки к NURBSкривым. Подобно кривым, NURBS-поверхности делят на два типа:
поверхности на основе контрольных точек, или точечные (Point) и
поверхности на основе управляющих вершин CV.
Поверхности типа NURBS более мощное средство геометрического моделирования, чем поверхности Безье.
Моделирование на основе поверхностей Безье и NURBSповерхностей позволяет создавать объекты, имеющие сложные криволинейные поверхности, например природные объекты.
2.3.4. Моделирование с помощью систем частиц
Система частиц – это совокупность достаточно мелких объектов
с заданными динамическими свойствами (брызги, снег и др.). Существуют шесть основных типов частиц Spray (Брызги), Snow (Снег),
PCloud (Облако частиц), PArray (Массив частиц), Super Spray (Супер
брызги), Bizzard (Метель).
Spray (Брызги) создает базовый эффект водяных брызг, похожий
на струи фонтана или дождя.
Super Spray (Супер брызги) – система для создания водяных эффектов. Это существенно усовершенствованный вариант системы
Spray (Брызги).
Snow (Снег) создает простой эффект падающего снега, имеет мно-
го параметров для настройки формы частиц, их размера и характера падения.
Bizzard (Метель) – усовершенствованный вариант системы Snow
(Снег).
PCloud (Облако частиц) создает статичное облако частиц, кото-
рым можно придавать форму различных объектов. С помощью этой
системы могут быть созданы трехмерные звездные поля или стаи
птиц.
PArray (Массив частиц) позволяет моделировать частицы, испускаемые различными объектами, а также подходит для усовершенствования эффектов имитации взрывов.
Широкие возможности программы по геометрическому моделированию обеспечиваются применением различных модификаторов.
Модификатор – это программное средство для выполнения специальных типов преобразований и внесения изменений в структуру объекта. Рассмотренные методы построения объектов на основе
69
сечений (выдавливание, лофтинг и др.) представляют собой встроенные модификаторы 3D MAX. Помимо значительного набора
встроенных модификаторов 3D MAX позволяет применять дополнительные модификаторы, используя модули расширения. Модификаторы MAX являются параметрическими: каждый имеет свой
набор параметров, которые можно изменять в любой момент. Параметры модификаторов допускают анимацию.
При применении модификаторов к объекту формируется стек
модификаторов – протокол всех использованных при моделировании объекта модификаторов. Стек позволяет на любом шаге моделирования исключить действие любого из предыдущих модификаторов или перенастроить его параметры.
2.4. Методы анимации объектов
в программе 3D Studio MAX
В 3D MAX анимации могут быть подвергнуты все преобразования объектов, а также большая часть параметров объектов, модификаторов, материалов и атмосферных эффектов. В процессе выполнения анимации каждому изменяемому параметру объекта назначается контроллер анимации, который хранит информацию
о характере изменений параметра. Существует четыре базовых типа контроллеров анимации, используемых в 3D MAX:
контроллер, основанный на ключах анимации;
процедурный контроллер;
комбинированный контроллер;
системный контроллер.
2.4.1. Анимация с помощью ключевых
и процедурных контроллеров
Наиболее простым является контроллер, основанный на ключах
анимации (ключевой контроллер). Объекты сцены вручную устанавливаются в требуемое положение в моменты времени, соответствующие опорным (ключевым) кадрам, затем контроллер автоматически просчитывает и строит все недостающие кадры, изображая
объекты на промежуточных стадиях движения. В зависимости от
способа расчета параметров в интервалах между опорными кадрами различают несколько видов ключевых контроллеров. Наиболее
часто используемыми видами являются контроллер управления по
Безье (Bezier), ННС (TCB) контроллер и контроллер Включен/Выключен (ON/OFF).
70
Контроллер управления по Безье (Bezier) – изменения параметров объекта, описывается сплайном, проходящим через ключевые
точки.
ННС (TCB) контроллер (Tension, Continity, Bias – Натяжение, Непрерывность, Смещение) – изменения параметров объекта интерполируются на основе пяти характеристик: натяжение, непрерывность,
смещение, плавный вход и плавный выход.
В случае процедурных или параметрических контроллеров
определение промежуточных значений изменяющихся параметров
выполняется по их начальным значениям и заданной функции изменения. Основными видами процедурных контроллеров являются
контроллер управления по пути (Path), контроллер случайного управления (Noise), контроллер циклического управления (Waveform) и контроллер прикрепление (Attachment).
Контроллер управления по пути (Path) позволяет задать траекторию объекта в виде созданного пользователем сплайна. Положение
объекта на траектории в кадрах анимации определяется длиной
или числом вершин сплайна и специальной процентной мерой.
Контроллер случайного управления (Noise) используется для имитации случайного отклонения параметра анимации от его среднего
значения.
Контроллер циклического управления (Waveform) используется для
моделирования регулярных периодических движений объектов.
Контроллер прикрепления (Attachment) используется для «связи»
одного объекта с поверхностью другого, который будет подвергаться
анимации.
Комбинированные контроллеры выполняют функцию объединения результатов действия нескольких контроллеров. Примерами
комбинированных контроллеров являются контроллер управления
по списку (List) и контроллер XYZ.
Контроллер управления по списку (List), позволяет создать список
контроллеров, чьи выходные управляющие воздействия объединяются вместе.
Многие параметры в 3D MAX представляют собой не скалярные
величины, а векторные, описываемые тройкой чисел. Например,
цвет тройка чисел – R G B , положение объекта X Y Z. Комбинированные контроллеры используют для объединения выходных значений нескольких контроллеров, каждый из которых осуществляет
управление одним из параметров.
Ключевые, процедурные и рассмотренные комбинированные
контроллеры управляют параметрами только одного объекта.
71
2.4.2. Анимация иерархических цепочек
(системные контроллеры)
При моделировании механических устройств и персонажей необходимо реализовать анимацию объекта и сделать так, чтобы другие объекты повторяли это преобразование. Например, при повороте плечевой части руки персонажа нужно, чтобы предплечье, кисть
и пальцы перемещались вслед за плечом, как это и бывает в реальной жизни. Можно управлять сменой ключевых положений движения каждого элемента вручную, но этот процесс имеет сложный
и утомительный характер.
Для решения изложенной задачи объекты связывают между собой, формируя так называемые иерархические цепочки. Объект,
связанный с другим, становится дочерним или объектом-потомком,
а объект, с которым ведется связывание, становится родительским
объектом-предком. Это позволяет построить длинные цепочки связанных объектов с единственным ограничением: у каждого дочернего объекта должен быть только один родительский объект. Связывание объектов выполняется с помощью инструмента Select and
Link (Выделить и связать).
Для анимации иерархических цепочек используют системные
контроллеры. Системный контроллер следит за тем, чтобы изменение параметров объединенных объектов не выходило за пределы
ограничений, накладываемых на них системой в целом.
Существуют два основных метода анимации иерархических цепочек: прямая кинематика (forward kinematics) и обратная кинематика
(inverse kinematics).
При прямой кинематике преобразование любого объекта-предка приводит к преобразованию положения всех объектов-потомков.
Если перемещается родительский объект, то дочерний объект будет
перемещаться, не изменяя своего положения относительно объекта-предка. Если родительский объект поворачивается, то дочерний
перемещается и поворачивается таким образом, что его положение
и ориентация по отношению к родительскому объекту остается неизменной.
При использовании обратной кинематики преобразование применяется к младшему из дочерних объектов, а 3D MAX рассчитывает новые положения всех родительских объектов цепочки. Помимо
того, что движение передается не вниз, а вверх по цепочке связей,
другим важным отличием обратной кинематики от прямой является следующее: применение прямой кинематики приводит к един72
ственному возможному результату, а обратная кинематика может
давать множество различных результатов. Итоговое положение родительских объектов носит название IK-решения (IK-solution). Это решение базируется на перемещении преобразуемого дочернего объекта и на ограничениях, которые накладываются на перемещения
объектов-потомков в местах их сочленений с родительскими объектами.
Дополнительными средствами анимации объектов в 3D MAX являются морфинг (morphing) и объемные деформации (space warps).
Морфинг(morphing) – это метод анимации, реализующий постепенное преобразование одного объекта в другой на протяжении некоторого интервала времени. Для выполнения морфинга указывают два или несколько целевых объектов и ключевые кадры, в которых задают степень влияния целевых объектов на преобразуемый
объект в данный момент времени. Морфинг – удобное средство детальной и гладкой анимации объектов. Обычно его применяют для
анимации мимики лиц персонажей.
Объемные деформации (space warps) – это средства имитации результата внешнего воздействия на объект. В зависимости от типа
выбранной деформации объект можно имитировать действие силы
тяжести (Gravity (Гравитация)), испытывать волнообразные искривления (Ripple (Рябь) или Wave (Волна) или распадаться на мелкие
части (Bomb (Бомба)).
73
3. ПРАКТИКУМ В ПРОГРАММЕ 3D STUDIO MAX
3.1. Основы работы в программе
3.1.1. Настройка рабочей поверхности
1. Установите шаг сетки, равным 20. Для этого выберите команду главного меню Tools>Grid and Snaps>Grid and Snap Settings .
В открывшемся диалоговом окне перейдите на закладку Home Grid
и установите счетчик Grid Spacing, равным 20. Установите флаг
Dynamic Update в положение All Viewports. Закройте диалоговое
окно.
2. С помощью инструмента Масштаб всех окон измените масштаб
изображения так, чтобы видеть участок сетки ±200 единиц.
3.1.2. Создание параллелепипеда, тора и сферы
1. На командой панели Create (Создать) раскройте список разновидностей объектов категории Geometry (Геометрия) и выберите в открывающемся списке Standard Primitives (Стандартные примитивы)
(см. рис. 2.2). Выберите объект Box (Параллелепипед).
2. В окне проекций Top (Верх) помесите курсор в районе точки
(–150,–150) и нажмите левую кнопку мыши. Перемещайте мышь
вправо до тех пор, пока курсор не попадет в точку (150,150), после
чего отпустите кнопку мыши. Перемещая курсор вниз, получите
число –15 в счетчике Height (Высота) свитка Parameters (Параметры),
после чего щелкните кнопкой мыши, зафиксировав высоту
объекта.
3. Выберите объект Tours (Top). В окне проекций Top (Верх) установите курсор в районе точки (0,0). Нажмите кнопку мыши, перемещайте курсор до тех пор, пока в счетчике Radius 1 (Радиус 1) свитка Parameters (Параметры) не появится число 100. Отпустите кнопку
мыши и перемещайте курсор дальше до получения желаемой толщины тора Radius 2 (Радиус 2). Для завершения построения еще раз
щелкните кнопкой мыши.
4. Создайте сферу с центром (–150,150).
3.1.3. Создание многогранника
1. Разверните список разновидностей объектов категории Geometry (Геометрия) и выберите Extended Primitives (Сложные примитивы).
2. Выберите Hedra (Многогранник). В окне проекций Top (Верх) поместите курсор вблизи точки с координатами (0,0), нажмите левую
74
кнопку мыши и перемещайте курсор, пока радиус не окажется равным приблизительно 40 единицам. Отпустите кнопку мыши.
3. В свитке Parameters (Параметры) установите переключатель
Family (Семейство) в положение Star1(Многогранник 1).
3.1.4. Компоновка сцены
1. Выберите инструмент Select and Rotate (Выделить и вращать)
(см. рис. 2.2). Установите ось вращения X, нажав одноименную
кнопку Фиксации осей. В окне проекций Perspective (Перспектива)
выделите параллелограмм и, не отпуская кнопку мыши, разверните его на 90 градусов.
2. Выберите инструмент Select and Move (Выделить и переместить)
(см. рис. 2.2) основной панели инструментов. Установите ось движения Y, нажав одноименную кнопку Фиксации осей, и передвиньте
параллелограмм вглубь сцены.
3. Выберите инструмент Select and Uniform Scale (Выделить и масштабировать) (см. рис. 2.2). Выделите объект Hedra 01 и измените
его масштаб по собственному желанию.
3.1.5. Создание источника света
1. На командой панели Create (Создать) раскройте список разновидностей объектов категории Light (Источники света) (см. рис. 2.3)
и выберите Standard (Стандартные источники света). Далее выберите
объект Target Spot (Нацеленный прожектор).
2. Измените масштаб до ±400. Поместите курсор в точке окна проекций Top (Верх), где вы хотите расположить источник света, и нажмите
левую кнопку мыши. Не отпуская кнопку мыши, перетащите курсор
по направлению к объектам. Отпустите кнопку мыши. Источник света
будет представлен точкой нацеливания и собственно прожектором.
3. Выберите инструмент Select and Move (Выделить и переместить), меняйте положение точки нацеливания и собственно прожектора для получения оптимального освещения.
3.1.6. Создание камеры
1. На командой панели Create (Создать) раскройте список разновидностей объектов категории Cameras (Камеры) (см. рис. 2.3) и выберите объект Target (Нацеленная).
2. Установите курсор в точке окна проекций Top (Верх), где вы хотите поместить камеру. Нажмите кнопку мыши, перетащите курсор по направлению к объектам. Отпустите кнопку мыши. Камера
будет представлена точкой нацеливания и собственно камерой.
75
3. Выберите пункт меню Customize > Viewport Configuration (Конфигурация окон проекций). Перейдите на закладку Layout (Компоновка). Поместите курсор на изображение окна проекций и однократно нажмите правую кнопку мыши. В открывшемся списке выберите имя Камера 01. Закройте окно, нажав кнопку ОК.
4. Выберите инструмент Select and Move (Выделить и переместить), меняйте положение точки нацеливания и камеры для получения оптимального вида в окне Камера 01.
При необходимости изменяйте масштаб с помощью кнопки Zoom
(Масштаб).
Сохраните файл, выбрав команду меню File > Save (Файл >
Сохранить).
3.1.7. Получение материала из библиотеки
1. Откройте окно Material Editor (Редактор материалов) (рис. 3.1),
выбрав пункт меню Rendering>Material Editor>Compact Material Editor.
2. Активизируйте первую ячейку с образцом материала, для этого
переместите на нее курсор и однократно нажмите левую кнопку мыши.
3. Выберите тип материала Стандарт. В диалоговом окне Browse
mtl/maps (Просмотр материалов/Карты) установите флаг Browse from
(Просмотр) в положение Mtl Library (Библиотека материалов). Выберите понравившийся вам материал, переместите на него курсор и однократно нажмите левую кнопку мыши. Закройте диалоговое окно
с помощью кнопки ОК.
3.1.8. Создание материалов со свойствами пластика,
окрашенной поверхности, стекла и металла
1. Активизируйте вторую ячейку материала. В раскрывающемся
списке имен материалов введите имя White Plastic (Белый пластик).
2. Выберите модель по Phong (Фонгу) в раскрывающемся списке
Shader Basic Parameters (Основные параметры тонирования).
3. Щелкните два раза на образце цвета Diffuse (Диффузный), что-
бы вызвать окно Выбор цвета: Диффузный цвет. Переместите ползунок Blackness (Чернота) к черному краю цветового поля. Затем
установите положение ползунка Whiteness (Белизна) так, чтобы
в счетчиках RGB были значения 250, 250, 250. Нажмите кнопку ОК. Аналогичным образом установите RGB параметры цвета
Ambient (Подсветка), равными 230, 230, 230.
4. Задайте параметр Specular Level (Глянцевитость) равным 50,
а Glossiness (Сила блеска) – 75. Это обеспечит получение гладкой
блестящей поверхности, похожей на поверхность пластмассы.
76
77
Перейти к компоненту
Перейти к составному материалу
Показать конечный материал
Рис. 3.1. Окно редактора материалов
Копировать
материал
Показать текстуру в окне проекций
Установить
Назначить
Канал
эффектов монтажа
исходный
материал выделению
матер иал / Поместить
карту текстур
в библилтеку
Получить
материал
Поместить
материал на сцену
Путеводитель по
материалам/картам
текстур
Выделить по материалу
Параметры
Создать эскиз анимации
Фон
Плитки образцов
в плоскости UV
Контроль цветности
Подсветка сзади
Тип образца
5. Активизируйте следующую ячейку образца материала и назовите его Flat Paint (Краска). Измените RGB-компоненты цвета
Diffuse (Диффузный), чтобы получить желаемый цвет. Установите
RGB-компонентов цвета Ambient (Подсветка) величины 100, 100, 100.
6. Установите параметры Specular Level (Глянцевитость) и Glossiness (Сила блеска), равными 0, чтобы материал имел однородную
окраску.
7. Активизируйте другую ячейку образца материала. Назовите
материал Стекло (Glass).
8. Задайте RGB-компоненты цвета Diffuse (Диффузный), равными
64, 49, 179, создав темно-синий цвет. Установите в качестве RGBкомпонентов цвета Ambient (Подсветка) величины 16, 182, 243, получив более светлый оттенок синего.
9. Активизируйте кнопку Background (Фон) (см. рис. 3.1), чтобы
в ячейке образца появился фон в виде цветных клеток.
10. Установите параметр Specular Level (Глянцевитость), равным
60, а Glossiness (Сила блеска) – 75, чтобы материал имел блеск, как
у стекла.
11. Установите параметр Opacity (Непрозрачность), равным 50,
чтобы материал напоминал полупрозрачное синее стекло.
12. Активизируйте другую ячейку образца материала. Назовите
материал Red Metal (Красный металл). Выберите в качестве модели
закраски вариант Metal (Металл).
13. Задайте RGB-компоненты цвета Diffuse (Диффузный), равными 167, 57, 49, чтобы получить темно-красный цвет. Установите
в качестве RGB-компонентов цвета Ambient (Подсветка) величины 71, 18, 16, получив более темный оттенок красного цвета.
14. Установите параметр Specular Level (Глянцевитость), равным
60, а Glossiness (Сила блеска) – 70. В результате получится металлическая поверхность темно-вишневого цвета.
3.1.9. Занесение материала в библиотеку
1. Для создания копии текущего материала и помещения этой
копии в текущую открытую библиотеку нажмите кнопку Put to
Library (Поместить в библиотеку) (см. рис.1).
3.1.10. Назначение материалов объектам
1. Поместите окно Material Editor (Редактор материалов) так, чтобы
было видно окно Perspective (Перспектива).
2. Поместите курсор на ячейке образца материала, нажмите левую кнопку мыши. Не отпуская кнопку мыши, перемещайте курсор на объект. Отпустите кнопку мыши.
78
3.1.11. Визуализация
1. Однократно нажмите левую кнопку мыши, поместив курсор
в окне проекций, которое будет визуализироваться.
2. Выберите пункт меню Rendering > Render (Визуализация).
3. Выберите пункт меню Rendering > Environment. В разделе Background (Фон) выделите опцию Color (Цвет) и в открывшемся диалоговом окне установите желаемый цвет фона. Повторите визуализацию сцены.
3.1.12. Анимация
1. Нажмите кнопку Time Configuration (рис. 3.2) для настройки
временных интервалов. В открывшемся диалоговом окне установите флаг NTSC переключателя Frame Rate (Частота Кадров). Типовые
значения соответствуют стандартам частоты кадров, принятым на
телевидении и в кино. Положение Custom (Специальная ) обеспечивает возможность произвольного задания частоты кадров с помощью счетчика FPS (Frame Per Second).
2. В качестве текущего способа отображения времени выберите режим Frame (Кадры). Установите величину параметра End Time,
равной 100.
3. Нажмите кнопку Toggle Set key Mode (Переключатель Режима
Установки Ключей) (см. рис. 3.2) и установите ползунок, расположенный под окнами проекций, в крайнее левое положение. В окне счетчика кадров должен появиться 0.
4. Перемещая ползунок, сделайте текущим 10-й кадр. Выберите инструмент Select and Uniform Scale (Выделить и масштабировать).
Увеличьте масштаб сферы приблизительно на 30%. Величина
Set key
(Установить ключ)
Воспроизведение /Стоп
Следующий кадр/ ключ
Предыдущий кадр /ключ
Перейти в начало
Toggle Set Key Mode
(Переключатель режима установки ключей)
Перейти в конец
Настройка
временных интервалов
Текущий кадр
Рис. 3.2. Инструменты управления анимацией
79
изменения отображается в информационной строке под окнами
проекций. Зафиксируйте ключевой кадр, нажав кнопку Set Key
(Установить ключ). Выполните изменение масштаба сферы и зафиксируйте ключевые кадры с интервалом 10 кадров.
5. Вернитесь к 10-му кадру. Выберите инструмент Select and Rotate (Выделить и Вращать). Поверните многогранник приблизительно на 15 градусов. Выполняйте поворот многогранника каждые
10 кадров. Фиксируйте ключевые кадры с помощью кнопки Set Key
(Установить ключ).
6. Вернитесь к 10-му кадру. Удерживайте кнопку Select and Uniform Scale (Выделить и масштабировать) до появления меню ее дополнительных функций и выберите Select and Non-uniform Scale
(Выделить и непропорционально масштабировать). При непропорциональном масштабировании происходит изменение размеров
только по одной координатной оси. Выполняйте непропорциональное масштабирование тора каждые 10 градусов, меняя оси. Фиксируйте ключевые кадры с помощью кнопки Set Key (Установить
ключ).
7. Выполните анимацию параллелепипеда, используя инструмент Select and Move (Выделить и переместить).
8. Для просмотра анимации сделайте активным окно Камера 01
и нажмите кнопку Play Animation. Для остановки движения используйте ту же кнопку.
3.2. Базовые методы геометрического моделирования:
создание объектов на основе сечений
и геометрических примитивов
3.2.1. Настройка рабочей поверхности
1. Разверните проекцию Left (Вид слева) на весь экран, для этого сперва переместите на нее курсор и однократно нажмите левую
кнопку мыши, затем нажмите кнопку Развернуть в нижней части
экрана. Для этого поместите курсор на ее изображении и щелкните
левой кнопкой мыши.
2. Включите трехмерную привязку, нажав кнопку 3D snap toggle (Трехмерная привязка) в строке инструментов, расположенной в верхней части экрана. Это обеспечит большую точность рисования.
80
3.2.2. Создание объекта на основе сечения методом вращения
(создание стола)
1. На командой панели Create (Создать) раскройте список разновидностей объектов категории Shapes (Формы) и выберите в открывающемся списке Spline (Сплайны). Выберите объект Line (Линия).
2. Переместите курсор в точку (0,100) и однократно нажмите левую кнопку мыши. Переместите курсор в точку (–160,100) и еще раз
однократно нажмите левую кнопку мыши. Проделайте аналогичные
действия в точках (–160, 90), (–140, 90), (–140,70), (–20,70), (–20,–100),
(0,–100), (0,100). На появившийся запрос о необходимости замыкания сплайна ответьте «Да». В результате выполнения пункта вы
должны получить сечение круглого стола на одной опоре (рис. 3.3).
3. Перейдите на командную панель Modify (Изменить). В списке
использованных модификаторов выберите позицию Line (Линия) .
Поместите курсор на квадрат со знаком плюс, расположенный в начале позиции и нажмите левую кнопку мыши. В раскрывшемся дереве Line (Линия) выберите уровень редактирования Vertex (Вершина).
4. Поместите курсор на вершину (–160,100) и нажмите правую
кнопку мыши. В открывшемся меню установите тип вершины Безье. В отображении вершины появятся касательные вектора. Аналогичным образом измените тип вершины (–160,90).
5. С помощью инструмента Select and Move перемещайте концы
касательных векторов вершин так, чтобы добиться округлого края
столешницы.
1
2
Рис. 3.3. Сечение стола 1 и кривая,
для создания ножки 2
Рис. 3.4. Объект стол
81
6. В дереве Line (Линия) перейдите с уровня Vertex (Вершина) на
уровень Line (Линия). В свитке Modificaters (Модификаторы) выберите модификатор Lathe (Тело вращения). Используя кнопку Min (Минимум) в свитке Align (Расположение), измените положение оси, относительно которой происходит вращение и добейтесь формирования
объемного стола (рис 3.4).
3.2.3. Создание объекта с помощью лофтинга
(создание изогнутых ножек стола)
1. На командой панели Create (Создать) раскройте список разновидностей объектов категории Shapes (Формы) и выберите в открывающемся списке Spline (Сплайны). Выберите объект Line (Линия).
2. Создайте кривую, проходящую через точки (–20,–40), (–80,– 60),
(–120,–90), (–120,–100).
3. Перейдите на командную панель Modify и придайте кривой плавную форму. Последовательность действий при создании и редактировании кривой описана в пп. 2.2.3, 2.2.4, 2.2.5, 2.2.6 создания стола.
4. На командной панели Create (Создать) раскройте список разновидностей объектов категории Shapes (Формы) и выберите в открывающемся списке Spline (Сплайны). Выберите объект Circle (Круг).
Создайте круг радиусом приблизительно 5 единиц.
5. Верните на экран все 4 окна проекции, нажав кнопку Развернуть.
6. На командной панели Create (Создать) раскройте список разновидностей объектов категории Geometry (Геометрия) и выберите
в открывающемся списке Compound objects (Сложные объекты) объект Loft (Объект на основании сечений).
7. В свитке Creation Method (Методы создания) нажмите кнопку
Get path (Взять путь). Затем подведите курсор к созданной вами кривой (траектории, по которой будут располагаться сечения) и однократно нажмите левую кнопку мыши.
8. С помощью инструментов преобразований Select and Move (Выделить и двигать), Select and Rotate (Выделить и вращать) присоедините ножку к опоре стола (рис. 3.4).
3.2.4. Дублирование объектов,
равномерно распределенных в пространстве (ножек стола)
1. Измените положение центра преобразования. Удерживайте
кнопку Use Pivot Point Center до появления меню ее дополнительных
функций и выберите Use Transform Coordinate Center (Использовать
начало координат).
82
2. Выберите пункт меню Tools>Array (Инструменты>Орнамент).
В открывшемся диалоговом окне установите: переключатель Type
object (Тип объекта) в положение Copy (Копировать); размерность массива 1D равной 4; вращение вокруг оси Y в пределах 360 градусов
(раздел Total). Закройте окно, нажав кнопку ОК.
3.2.5. Объединение объектов в группу
1. С помощью инструмента Указатель выделите столешницу.
Нажмите клавишу Ctrl и, не отпуская ее, последовательно выделите все четыре ножки. Все объекты должны окраситься в белый
цвет. Выберите пункт меню Group > Group (Группа > Группа) и в открывшемся диалоговом окне задайте имя созданной группы объектов.
2. Сохраните созданный вами стол в файле (например, Table)
и откройте новый файл.
3.2.6. Создание объектов на основе двухмерных
и трехмерных примитивов по принципам булевой алгебры –
алгебры логики (создание шляпы)
1. Создайте сферу с центром в координатах (0,0) на проекции Top
(Верх) и радиусом 80 – 100 единиц. Добейтесь гладкости сферы, увеличивая число сегментов в свитке параметров.
2. Создайте цилиндр с центром в координатах (0,0) на проекции
Top (Верх) и радиусом около 50 единиц и высотой 100 единиц.
3. На командной панели Create (Создать) раскройте список разновидностей объектов категории Геометрия (Geometry) и выберите
в открывающемся списке Compound objects (Сложные объекты). Выберите объект Boolean (Булеан).
4. Прокрутите список до переключателя Operation (Операции).
Установите переключатель в положение Intersection (Пересечение –
умножение). Установите переключатель Display (Отображать) в положение Result (Результат).
5. Прокрутите список обратно
и нажмите кнопку Pick Operand B.
Поместите курсор на сферу и однократно нажмите левую кнопку мыши. Вы получили тулью шляпы.
6. Создайте цилиндр на проекции Top (Верх) с центром в координатах (0,0) и радиусом около 80 единиц
Рис. 3.5. Объект шляпа
83
и высотой 3 единицы. Переместите его так, чтобы поля шляпы оказались под тульей.
7. Не отменяя выделения цилиндра, выберите в открывающемся
списке Compound objects (Сложные объекты). Выберите объект Boolean (Булеан). Установите тип операции Union (Объединение). Проведите операцию объединения, выбрав в качестве второго операнда
тулью шляпы.
8. Создайте цилиндр с центром в координатах (0,0) на проекции
Top (Верх) и радиусом чуть меньше радиуса тульи шляпы (см. п.
2.6.2) и высотой больше 30 единиц. Поместите цилиндр таким образом, чтобы с его помощью можно было вырезать полость внутри
шляпы.
9. Снова выберите команду создания булевого объекта и проведите операцию Subtraction (Вычитание ) (B-A).
10. Переверните шляпу полями вверх. Сохраните созданную вами шляпу в файле (например, Hat) и откройте новый файл.
3.2.7. Создание объекта на основе сечениия методом выдавливания
(кресло из четырех подушек)
1. Разверните окно проекций Left (Вид слева) и включите режим трехмерной привязки. (Последовательность действий указана
в пп. 1 и 2 создания стола).
2. Создайте сплайн с вершинами в точках (45,0), (45,100), (95,100),
(75,0), (45,0).
3. Придайте профилю подушки кресла более гладкую форму, выбрав в качестве управляющих вершин две правые. Действия аналогичны приведенным в пп. 4, 5, 6 создания стола (рис. 3.6).
4. Верните на экран все 4 окна
проекции, нажав кнопку Развернуть.
Рис. 3.6. Сечение подушки кресла
84
5. Не отменяя выделения подушки, перейдите на командную
панель Modify (Изменить). В свитке Modificaters (Модификаторы) выберите модификатор Extrude (Вытянуть). В счетчике Amount (Высота)
свитка Parameters (Параметры) установите 100. Вы получили подушку кресла.
6. Создайте вторую подушку
кресла (подлокотник). Для этого
измените положение центра преобразования. Удерживайте кнопку Use Pivot
Point Center до появления меню ее дополнительных функций и выберите Use
Transform Coordinate Center (Использовать
начало координат).
7. Выберите инструмент Mirror (0тразить). В открывшемся диалоговом окне установите переключатель Mirror axis
(Ось отражения) в положение Y, переключатель Clone Selection (Клонирование)
в положение Copy (Копия). Закройте ок-
Рис. 3.7. Объект «кресло»
но, нажав кнопку ОК.
8. Создайте спинку и сидение кресла. Для этого, не отменяя выделения подушки, выберите в меню Edit – Clone (Правка – Клонировать).
В открывшемся диалоговом окне Clone Option (Опции клонирования)
установите переключатель Object (Объект) в положение Copy (Копия).
Закройте окно с помощью кнопки OK.
9. Перемещая и разворачивая подушку, поместите сиденье между подлокотниками кресла. Аналогичным образом создайте спинку
кресла (рис. 3.7).
10. Выбрав команду создания булевского объекта, проведите
операцию объединения подушек в один объект-кресло. (После однократного проведения булевской операции необходимо указывать
следующий операнд с помощью инструмента Указатель.)
11. Сохраните созданное вами кресло в файле (например, Chair)
и откройте новый файл.
3.2.8. Создание объекта
на основе сечения методом выдавливания со скосом
(создание зеркала)
1. На виде Front (Перед) создайте эллипс с размерами главных
осей 100 и 200.
2. Перейдите на командную панель Modify (Изменить). В свитке
Modifiers (Модификаторы) выберите элемент списка Bevel (Скос).
3. Прокрутите свитки до свитка Bevel Values (Скос значения). Установите флажки Level (Уровень) 2,3 и задайте их параметры:
для уровня 1: Height (Высота) 5, Outline (Контур) 4;
для уровня 2: Height (Высота) 10, Outline (Контур) 0;
для уровня 3: Height (Высота) 5, Outline (Контур) –4.
4. Сохраните созданный вами объект в файле.
85
3.2.9. Компоновка сцены
1. Выберите команду меню File –
Merge (Файл > Присоединение). В открывшемся диалоговом окне выберите ваш файл, содержащий стол.
2. В появившемся диалоговом окне Merge (Присоединение) можно выделить объекты, которые вы хотели
бы присоединить к сцене. Нажмите
кнопку All (Все). Закройте диалоговое окно с помощью кнопки ОК. Ваш
стол появится в сцене.
Рис. 3.8. Общий вид сцены
3. Получите аналогичным образом остальные созданные вами объекты.
4. Скомпонуйте сцену так, чтобы зеркало было над столом, шляпа на столе, кресло рядом со столом.
3.2.10. Использование материалов
с растровыми текстурами
1. Откройте окно Material Editor (Редактор материалов).
2. Активизируйте на первую ячейку с образцом материала.
3. В свитке Blinn Basic Parameters (Основные параметры). Поместите курсор на кнопке, расположенной в строке параметра Diffuse
(Диффузное) и однократно нажмите левую кнопку мыши.
4. В открывшемся диалоговом окне Material/Map Browser (Просмотр материала/Карты) установите переключатель Browse from
(Просмотр из) в положение Mtl. library (Мтл. библиотек). Выберите понравившуюся вам текстуру. Закройте диалоговое окно с помощью
кнопки ОК.
6. Нажмите кнопку Go to parent (Идти к составному материалу).
Установите Specular Level (Глянцевитость) и Glossiness (Силу Блеска),
равными 0.
7. Назначьте материал креслу.
8. Проведите назначение материалов другим объектам сцены.
9. Сохраните созданную вами сцену.
10. Проведите визуализацию сцены.
86
3.3. Дополнительные методы геометрического моделирования:
создание объектов на основе поверхностей безье
и с помощью систем частиц
3.3.1. Создание объекта на основе поверхностей Безье
(имитация рельефа острова)
1. Выберите на командной панели Create (Создать) в категории
Geometry (Геометрия) раскрывающийся список Patch Grids (Сетки кусков). Используя инструмент Quad Patch, создайте четырехугольный
кусок поверхности Безье на виде Top (Вид сверху).
2. Перейдите на командную панель Modify (Изменить) и в свитке
модификаторов выберите модификатор Edit Patch (Правка куска).
3. Установите уровень Edge (Ребро) правки куска (рис. 3.9).
4. Выберите инструмент Select Object (Выделить объект) и выделите правое ребро куска. Щелкните на кнопке Add Quard (Добавить
четырехугольный кусок) в свитке Geometry (Геометрия) (рис. 3.10).
5. Повторяйте добавление кусков, пока не создадите сетку размером 2 на 2 куска Безье (рис. 3.11).
6. Добавив нужное число кусков, следует выполнить слияние
вершин. Выберите уровень Vertex (Вершина) правки куска. Вершины сетки обозначатся крестиками.
Рис. 3.9. Развернутое дерево
модификатора Edit Patch
(Правка куска)
Рис. 3.10. Кнопка Add Quad в свитке
Geometry (Геометрия) модификатор
Edit Patch (Правка куска)
87
7. Если Вы добавляли куски по часовой стрелки, то следует слить
вершины первого и четвертого куска (рис. 3.11). Используйте рамку для выделения группы перекрывающихся внутренних вершин,
затем в списке модификаторов выберите модификатор Vertex Weld
(Слить Вершины).
1
Вершины,
которые надо слить
4
Рис. 3.11. Вид сетки из четырех кусков Безье
Рис. 3.12. Вид сетки из кусков Безье
после перемещения управляющих вершин
88
8. Выделяйте по очереди вершины по краям сетки и, перемещая
их и корректируя положение касательных векторов, создайте имитацию случайным образом изрезанного побережья острова (рис. 3.12).
9. Выделите центральную вершину сетки и переместите ее по оси
Z примерно на 100 единиц.
10. Откорректируйте положение вершин, располагающихся
между центром сетки и ее краями. Применяя инструмент Select and
Move (Выделить и переместить), переместите эти вершины в точки с
произвольными координатами по высоте и положению, имитируя
случайный рельеф оставшейся части острова (рис. 3.13).
3.3.2. Работа с системами частиц (создание фонтана)
1. Выберите вариант Particle Systems (Система частиц) в раскрывающемся списке разновидностей объектов категории Geometry (Геометрия) на командной панели Create (Создать) и щелкните на кнопке
Super Spray (Супербрызги)
2. В окне проекций Top (Вид сверху) щелкните в центре фонтана и
перетащите курсор, чтобы создать источник частиц.
3. В окне проекций Front (Вид спереди) или Left(Вид слева) воспользуйтесь инструментом Select and Move (Выделить и переместить), чтобы разместить источник в верхней части фонтана.
4. Чтобы фонтан выглядел правдоподобно, необходимо использовать объемную деформацию Gravity (Гравитация), которая будет имитировать эффект действующей на брызги силы тяжести.
Рис. 3.13. Объект остров
89
На командной панели Create (Создать) выберите категорию объектов Space Wraps (Объемные деформации). Выберите тип объекта
Gravity (Гравитация)
5. Щелкните и перетащите курсор в окне проекции Top (Вид
сверху), чтобы создать источник объемной деформации. Затем воспользуйтесь инструментом Select and Move (Выделить и переместить),
чтобы разместить источник деформации в центре фонтана. Перейдите в окно проекции Front (Вид спереди) или Left (Вид слева), переместите источник на 40–50 единиц выше фонтана.
6. Выберите инструмент Bind to Space Wrap (Связать с воздействием) на стандартной панели инструментов. Щелкните на значке источника объемной деформации и перетащите курсор к источнику
брызг. Отпустите кнопку мыши, когда увидите, что курсор изменил
свой вид. Тем самым вы свяжите частицы с источником силы тяжести и активируете этот эффект.
7. Перейдите на командную панель Modify(Изменить), не отменяя
выделения источника объемной деформации.
8. Задайте величину параметра Strength (Сила) равной 0,25.
9. Выделите источник частиц.
10. Установите ползунок таймера анимации на отметку 50. В результате текущее время будет соответствовать кадру номер 50, в котором вам будет лучше виден эффект испускания частиц.
11. На командной панели Modify(Изменить) выберите строку Super
Spray (Супербрызги) в раскрывающемся списке свитка Modifier Stack
(Стек модификаторов). Установите следующие значения параметров.
Рис. 3.14. Объект «остров» и объект «фонтан»
90
12. В свитке Basic Parameters (Базовые параметры): в первом счетчике Spread (Ширина пучка) установите 20; во втором счетчике Spread
(Ширина пучка) 30.
13. В свитке Particle Generation (Генерация частиц): в счетчике под
переключателем Use Rate (Темп генерации) укажите 20; в счетчике
Speed (Скорость) установите 5; в счетчике Emit Stop (Конец генерации)
100, в счетчике Life (Время жизни) – 50.
14. В свитке Particle Type (Тип частиц) установите переключатель
Sphere (Сфера).
15. Щелкните на кнопке Play Animation (Воспроизведение анимации), чтобы увидеть эффект водных брызг (рис. 3.14).
3.4. Дополнительные методы геометрического моделирования:
деформация ЛОФТ_объектов и работа с модификаторами
3.4.1. Создание объектов с помощью модификаторов
(создание «рожка для мороженого»)
1. На командой панели Create (Создать) раскройте список разновидностей объектов категории Shapes (Формы) и выберите в открывающемся списке Splines (Сплайны). Выберите объект Line (Линия).
На проекции Left (Вид слева) создайте сечение, соответствующее
рожку мороженного (рис. 3.15).
Рис. 3.15. Сечение объекта «рожок для мороженого»
91
2. Перейдите на командную панель Modify (Изменить). В списке
использованных модификаторов выберите позицию Line (Линия). Поместите курсор на квадрат со знаком плюс, расположенный в начале позиции и нажмите левую кнопку мыши. В раскрывшемся списке выберите уровень редактирования Vertex (Вершина).
3. Поместите курсор на одну из вершин и нажмите правую кнопку мыши. В открывшемся меню установите тип вершины Безье.
В отображении вершины появятся касательные вектора. Аналогичным образом измените тип остальных вершин.
4. С помощью инструмента Select and Move (Выделить и переместить) перемещайте концы касательных векторов вершин так, чтобы добиться округлой формы сечения (рис. 3.16).
5. В дереве Line (Линия) перейдите с уровня Vertex (Вершина) на
уровень Line (Линия). В свитке Modificaters (Модификаторы) выберите модификатор Lathe (Тело вращения). Используя инструмент Select
and Move (Выделить и переместить), а также кнопку Min (Минимум)
в свитке Align (Расположение), измените положение оси, относительно которой происходит вращение. В результате вы должны получить трехмерный «рожок для мороженого».
6. Создайте параллелепипед (заготовка в виде прямоугольного
брикета) и разместите его на рожке.
Рис. 3.16. Сглаженное сечение объекта «рожок для мороженого»
92
7. Выберите инструмент Select Object (Выделить объект) и выделите прямоугольный брикет, лежащий в рожке.
8. Щелкните на командной панели Modify (Изменить).
9. Выберите модификатор Taper (Заострение). Когда свитки его
параметров появятся на командной панели, установите в счетчике
Amount (Величина) значение 0.5.
10. Теперь выберите модификатор Twist (Скрутка). Когда появятся
свитки этого модификатора, установите в счетчике Angle (Угол) величину 360 градусов.
На данный момент пирамидка мороженого не из изменилась –
скрутка не оказала никакого действия. Причиной этого является
недостаточная детальность прямоугольного объекта, не позволяющая должным образом проявиться модификатору скрутки. Сейчас вам потребуется вернуться в начало стека и откорректировать
степень детальности блока, чтобы он мог корректно деформироваться.
11. Раскройте список стека в свитке Modifier Stack (Стек
модификаторов) и выберите строку Box (Параллелепипед). Установите в счетчиках Length Segs (Сегменты по длине), Width Segs (Сегменты
по ширине) и Height Segs (Сегменты по высоте) значения 20. В результате проблема немедленно будет решена, хотя конус мороженого
еще не будет выглядеть должным образом.
12. Снова раскройте список модификаторов и выберите строку
Taper (Заострение).
Установите в счетчике Amount (Величина) значение 0.75.
13. Откорректируйте размеры горки мороженого так, чтобы она
удачнее вписывалась в рожок. Для этого откройте список модификаторов и выберите строку Box (Параллелепипед). Установите в счетчиках Width (Ширина) и Length (Длина) нужные значения.
3.4.2. Создание объемной надписи
1. На командой панели Create (Создать) раскройте список разновидностей объектов категории Shapes (Формы) и в открывающемся
списке Spline (Сплайны) выберите объект Text (Текст). В свитке Parameters (Параметры) найдите окно Text (Текст) и введите в него необходимый текст. Разместите объект в сцене. Целесообразно использовать вид Front (Вид спереди).
2. Создайте линию (дугу) по которой ваш текст должен быть размещен. Для этого на командной панели Create (Создать) в списке
разновидностей объектов категории Shapes (Формы) выберите в открывающемся списке Spline (Сплайны) объект Arc (Дуга).
93
Рис. 3.17. Текст, размещенный по дуге
и трехмерный объект «рожок для мороженого» (вид спереди)
Рис. 3.18. Сцена, полученная в результате визуализации
94
3. Выберите инструмент Select Object (Выделить объект) и выделите созданный вами текстовый объект.
4. Перейдите на командную панель Modify (Изменить) и выберите
в списке модификаторов разделе World Space Modifiers (Модификаторы глобального пространства) модификатор PathDeform (Деформация
вдоль пути).
5. Щелкните по кнопке Pick Path (Указать путь) в свитке Parameters (Параметры) и выделите созданную вами изогнутую линию.
6. Установите переключатель Path Deform Axis (Ось деформации
по пути) в положение X, укажите в счетчике Percent (Масштаб) величину 50 и щелкните по кнопке Move to Path (Переместиться на путь).
Установите флаг Flip в положение on выбран. Введенный вами текст
разместится на дуге (рис. 3.17).
7. Пока текстовый объект еще выделен, вернитесь в список модификаторов и выберите модификатор Bevel. Придайте объекту объем.
8. Вид полученной сцены приведен на рис. 3.18.
3.4.3. Модифицирование и деформация лофт-объектов (создание
керосиновой лампы)
1. Создайте исходный лофт-объект. Для этого на командной панели Create (Создать) в открывающемся списке Spline (Сплайны) выберите объект Donut (Кольцо). На виде Top (Вид сверху) создайте кольцо со следующими параметрами Radius1=65, Radius2=67.
2. Создайте линию, примерно вдвое превышающую внешний диаметр кольца.
3. Выполните прямой лофтинг. Выделите созданное вами кольцо. На командной панели Create (Создать) раскройте список разновидностей объектов категории Geometry (Геометрия) и выберите в открывающемся списке Compound objects (Сложные объекты) объект
Loft (Объект на основании сечений).
4. В свитке Creation Method (Методы создания) нажмите кнопку Get path (Взять путь). Затем подведите курсор к созданной вами
линии.
5. Перейдите на командную панель Modify (Изменить). На вкладке
Deformations (Деформации) нажмите кнопку Scale (Масштаб).
Появится диалоговое окно для изменеия размера сечения. В начальный момент линия расположена на уровне 100. Это означает,
что пока деформации не проводились и все сечения имеют свой
исходный размер. С помощью кнопки Insert Corner Point (Вставьте
угловую вершину) или с помощью кнопки Insert Bezier Point (Вставьте
95
Рис. 3.19. График деформации Scale при моделирование объекта «лампа»
Рис. 3.20. График деформации Scale при моделирование объекта «лампа»,
полученный с использованием вершин Bezier
Рис. 3.21. Сцена, полученная в результате визуализации
96
сглаженную вершину) вставьте в линию семь дополнительных управляющих вершин. Используя инструмент Move Control Point (Переместить вершину), разместите вершины так, чтобы получить сечение
лампы (рис. 3.19).
Щелкните по каждой из управляющих вершин правой кнопкой
мыши, из появившегося контекстного меню выберите тип вершины
Bezier Smooth (Сглаживание по Безье) или Bezier Corner (Сглаживание
по Безье с перегибом). Теперь при нажатии на кнопку Move Control
Point (Переместить вершину) будут видны манипуляторы кривизны
для данной вершины. С их помощью можно настроить кривизну
кривой около каждой вершины.
6. Изменяя положение управляющих вершин и регулируя кривизну кривой с помощью манипуляторов кривизны, создайте керосиновую лампу. В качестве подсказки используйте приведенный на
рисунке график деформаций (рис. 3.20).
7. Создайте самостоятельно ручку лампы и объемную надпись
(рис. 3.21).
3.5. Базовые методы анимации: анимация простых объектов
с помощью ключевых и процедурных контроллеров
3.5.1. Использование ключевого контроллера
управления по Безье
1. Откройте файл m_anim.max или создайте самостоятельно
сцену, изображенную на рис. 3.22. Выделите объект «Геосфера 01»,
перейдите к кадру 5. Нажмите кнопку Toggle Set Key Mode (Переключатель Режима Установки Ключей), для этого поместите курсор на ее
изображении и щелкните левой кнопкой мыши. Далее зафиксируйте ключевой кадр 5,
нажав кнопку Set keys (Установить ключи).
2. Перейдите к кадру 20.
Переместите объект «Геосфера 01» так, чтобы он опустился на одну ступень и оказался
посередине этой ступени. Зафиксируйте ключевой кадр
20, нажав кнопку Set keys
(Установить ключи). Перейдите
Рис. 3.22. Вид сцены для анимации
97
98
Окно треков
Рис. 3.23. Вид диалогового окна Track View Dope Sheet (Просмотр треков)
Окно дерева иерархии Ключи
Edit range
(Правка диапазонов действия)
Paste time
Move keys
(Вставить время)
(Двигать ключи)
Copy time
Add keys
(Добавление ключей) (Копировать время)
Select time
(Выделить время)
в кадр 12 и переместите мяч по вертикали так, чтобы его нижняя
точка оказалась примерно на высоте одной ступени над верхней
площадкой. Зафиксируйте ключевой кадр 20, нажав кнопку Set
keys (Установить ключи).
3. Не отменяя выделения объекта, нажмите правую кнопку мыши и выберите в контекстном меню команду Properties (Свойства).
Установите в появившемся диалоговом окне флаг Trajectories (Траектория) в разделе Display Properties (Свойства отображения).
4. Откройте окно просмотра треков, выбрав в меню Graph Editors >
Track View > Dope Sheet (Графические редакторы > Просмотр треков). Разверните дерево иерархии так, чтобы были видны треки поддерева объекта «Геосфера 01» (рис. 3.23). Выделите трек Положение (Position).
5. Нажмите кнопку Select Time (Выделение временных интервалов) и перетащите курсор в окне правки треков от кадра 5 к кадру
20. Нажмите кнопку Copy Time (Копировать время) (см. рис. 3.23).
6. Выделите точку трека, соответствующую кадру 20, чтобы обозначить место вставки. Нажмите кнопку Past Time (Вставить Время)
(см. рис. 3.23). В окне диалога Paste Track (Вставка трека) выберите
вариант Paste Relative (Относительная вставка).
7. Повторите операцию копирования для кадра 40 и обратите
внимание на траекторию движения объекта.
8. «Геосфера 01» после падения должна сталкиваться с «Геосферой 03», заполним промежуток между ними движением объекта 01. Для этого добавим еще один ключ на треке. Нажмите кнопку
Add keys (Добавление ключей) (см. рис. 3.23), затем поместите курсор
в 60-м кадре и однократно нажмите левую кнопку мыши. Появится
еще один ключ.
9. Выберите пункт меню Modes>Curve Editor (Режимы> Редактирование кривых), появятся графики изменения координат (рис. 3.24).
Поместите курсор на ключе анимации кадра 60 кривой, соответству-
Рис. 3.24. Кривые изменения координат объекта 1
до и после правки ключей в 60 кадре
99
ющей координате x. Перемещая маркер, соответствующий ключевому кадру 60, с помощью инструмента Move keys (Двигать ключи)
(см. рис. 3.23) добейтесь столкновения объектов 1 и 3.
3.5.2. Использование ключевого контроллера TCB (ННС)
1. Выделите объект «кувалда». Перейдите к 5-му кадру. Поверните объект на 180 градусов относительно оси Y. Нажмите кнопку Set
Keys (Установить ключи). Перейдите к кадру 100. Верните объект в
исходное положение. Нажмите кнопку Set Keys (Установить ключи).
Запустите анимацию и понаблюдайте за вращением объекта. При
анимации вращения автоматически назначается TCB-контроллер,
который позволяет корректировать характер вращения. Заставим
кувалду замедлять вращение в верхнем положении.
2. Выделите объект «Кувалда» и перейдите на командную панель Motion (Движение). Нажмите кнопку Rotation (Вращение), расположенную в нижней части свитка PRS Parameters (Параметры ПВМ).
Прокрутите панель, чтобы свиток Key Info (Параметры) ключа был
полностью виден (рис. 3.25).
3. Для первого ключа установите Tension (Натяжение) 50, Ease from
(Замедление после ключа) – 50. С помощью управляющих стрелок перейдите к ключу 2. Установите Ease
from (Замедление до ключа ) – 50.
Запустите анимацию и посмотрите,
как изменился характер вращения.
3.5.3. Использование процедурного
контроллера управления
по линии пути
Заставим объект «Геосфера 03»
перемещаться по сцене по траектории, которую выберем сами.
Пусть он сталкивается с другими
объектами и изменяет направление движения.
Выключите режим анимации,
для этого нажмите на кнопку Toggle Set key Mode (Переключатель
Режима Установки Ключей).
Рис. 3.25. Свиток PRS Parameters
контроллера TCB
100
1. Создайте сплайн, описывающий желаемую траекторию движения шара «Геосфера 03».
Кнопка назначить
контроллер
Рис. 3.26. Командная панель Motion (Движение),
свиток и кнопка Assign Controller (Назначить контроллер)
2. Выделите объект «Геосфера 03». На командной панели Motion
(Движение) в свитке Assign Controller (Назначить контроллер) выберите строку преобразования Position (Положение). Нажмите кнопку Assign Controller (Назначить контроллер) (рис. 3.26). Выберите строку
Path Constraint (Управление по линии пути) в окне диалога Assign Position Controller (Назначение контроллера положения).
3. Прокрутите свиток и нажмите кнопку Add Path (Добавить путь)
и выделите в качестве пути созданную траекторию. Шар переместится в начало траектории. Установите флаг Constant Velocity (Постоянная скорость).
4. Откройте окно просмотра треков. Разверните дерево иерархии
так, чтобы были видны треки поддерева объекта «Геосфера 03». Выделите трек Position (Положение).
5. Вам надо изменить диапазон действия контроллера так, чтобы движение объекта «Геосфера 03» начиналось после столкновения с объектом «Геосфера 01». Определите номер кадра, в котором
происходит столкновение «Геосферы 01» и «Геосферы 03», пошагово перемещая ползунок. В этом кадре установите маркер начала действия контроллера. (Этот кадр будет помечен вертикальным
101
102
б)
а)
Рис. 3.27. Диапазоны действия ключей до и после правки
пунктиром). Начало и конец действия контроллера отмечаются белыми квадратными маркерами, расположенными на концах диапазона Range (Действия), обозначенного утолщенной черной линией
(в данном случае на треке Position (Положение)) (рис. 3.27). Нажмите
кнопку Edit Ranges (Правка диапазонов действия) (см. рис. 3.23), выделите маркер начала с помощью мыши и переместите его.
3.5.4. Использование процедурного контроллера
случайного управления
Заставим объект «Геосфера 04» изменять свою форму по случайному закону после удара объекта «Геосфера 03».
1. Выделите объект «Геосфера 04». Перейдите на командную
панель Motion (Движение), в свитке Assign Controller (Назначить контроллер) выберите строку преобразования Scale (Масштаб). Нажмите кнопку Назначение контроллера, и в открывшемся окне выберите контроллер Noise Scale (Случайное управление масштабом).
В открывшемся диалоговом окне контроллера Noise Controller (Случайное управление) задайте частоту 0,1 и размахи по осям от 50 до 300.
Флаги размахов поставьте в положение on (выбран) (рис. 3.28). Поэкспериментируйте с параметрами контроллера.
2. Откройте окно просмотра треков. Разверните дерево иерархии так, чтобы были видны треки поддерева объекта «Геосфера 04».
Рис. 3.28. Вид диалогового окна для настройки параметров
контроллера Noise (Случайное управление)
103
Выделите трек Scale (Масштаб), на нем вам надо отметить ключем
момент начала колебаний шара.
3. Определите номер кадра, в котором происходит столкновение
«Геосферы 04» и «Геосферы 03», пошагово перемещая ползунок (момент излома траектории объекта «Геосферы 03»). В этом кадре установите маркер начала действия контроллера. (Этот кадр будет помечен вертикальным пунктиром.) Окончание колебаний установите
в последнем кадре.
3.5.5. Использование
ключевого контроллера Вкл/Выкл
Заставим объект «Геосфера 05» исчезать после столкновения
с объектом «Геосфера 03»
1. Откройте окно просмотра треков. Разверните дерево иерархии
так, чтобы были видны треки поддерева объекта «Геосфера 03». Выделите объект «Геосфера 03».
2. Выберите пункт меню Tracks > Visibility track > Add (Треки > Трек
видимости > Добавить) (рис. 3.29), будет добавлен трек Visibility (Видимость) (рис. 3.30). Выделите трек Visibility и нажмите правую кнопку мыши, в контекстном меню выберите пункт Assign controller
(Назначение контроллера). В открывшемся диалоговом окне выберите контроллер On/Off (Bкл/Выкл).
Параметр, управляемый этим контроллером, в исходном состоянии включен.
3. Определите номер кадра, в котором происходит столкновение
«Геосферы 05» и «Геосферы 03», пошагово перемещая ползунок.
В этом кадре установите ключ, с помощью кнопки Add Keys (Добавить ключи) (см. рис. 3.23).
Рис. 3.29. Добавлени трека видимости
104
105
Рис. 3.30. Трек видимости
3.5.6. Использование процедурного контроллера
циклического управления
Заставим объект «Прямоугольник 01» изменять свою форму по
синусоидальному закону.
1. Откройте окно просмотра треков. Разверните дерево иерархии
так, чтобы были видны треки поддерева объекта « Прямоугольник
01». Выделите трек Length (Длина) и нажмите правую кнопку мыши,
в контекстном меню выберите пункт Assign controller(Назначение
контроллера). В открывшемся окне выберите контроллер Waveform
float (Циклическое управление).
2. В открывшемся диалоговом окне контроллера Waveform float
(Циклическое управление) установите Амплитуду 300, Период 200
(рис. 3.31).
3.5.7. Использование ключевого контроллера управления
по Безье для анимации параметров материала
Назначьте материал «Геосфере 03». Откройте окно просмотра
треков. Разверните дерево иерархии так, чтобы были видны треки
свойств материала. Выполните анимацию диффузного отражения
по алгоритму RGB.
Рис. 3.31. Вид диалогового окна для настройки параметров контроллера
Waveform (Циклическое управление)
106
3.6. Дополнительные методы анимации:
объемные деформации и анимация иерархических цепочек
3.6.1.Создание и использование объемной деформации
типа Ripple (Рябь)
1. В окне проекции Top (Вид сверху) создайте параллелепипед
размером приблизительно 100 на 100 единиц и высотой в 1 единицу.
Установите значения параметров Length Segs (Сегментов по длине) и
Width Segs (Сегментов по ширине) равными 20.
2. На командной панели Create (Создать) раскройте список разновидностей объектов категории Space Warps (Объемные деформации) и выберите в открывающемся списке Geometric/Deformable (Геометрия/Деформации) объемную деформацию типа Ripple (Рябь).
3. В окне проекции Top (Вид сверху) создайте источник объемной деформации, щелкнув по краю параллелепипеда и растягивая
значок источника, пока параметр Wave Length (Длина волны) не окажется примерно равным 30. Отпустите кнопку мыши и слегка переместите курсор вверх, чтобы параметры Amplitude 1 (Амплитуда 1)
и Amplitude 2 (Амплитуда 2) оказались равными 10.
4. Выберите инструмент Bind to Space Warp (Связать с воздействием) и перетащите курсор от значка источника объемной деформации к параллелепипеду (рис. 3.32).
Рис. 3.32. Объемная деформация типа Ripple (Рябь)
107
5. Выполните анимацию изменений свойств объемной деформации во времени. Для этого включите режим анимации (нажмите кнопку Auto Key) и откорректируйте любой параметр объемной
деформации типа Ripple (Рябь), перейдя в произвольный кадр, выбранный по вашему усмотрению. Изменения параметров деформации проводятся на командной панели Modify (Изменить) в свитке
Parameters (Параметры).
6. Выделите параллелепипед и щелкните на командной панели
Modify (Изменить). Попробуйте увеличивать и уменьшать значение
параметра Flexibility (Гибкость), наблюдая действие этих изменений
на объект-параллелепипед. Этот параметр также можно подвергнуть анимации.
7. Переместите параллелепипед в одном из окон проекций. По
мере изменения расстояния между параллелепипедом и источником объемной деформации эффект воздействия будет меняться.
3.6.2. Создание и использование объемной деформации
типа Bomb (Бомба)
1. Создайте любой объект, например сферу или чайник.
2. Создайте в окне проекции Top (Вид сверху) значок источника
объемной деформации типа Bomb (Бомба), расположив его центр на
объекте. Для этого на командной панели Create (Создать) раскройте список разновидностей объектов категории Space Warps (Объем-
Рис. 3.33. Объемная деформация типа Bomb (Бомба)
108
ные деформации) и выберите в открывающемся списке Geometric/
Deformable (Геометрия/Деформации) объемную деформацию типа
Bomb (Бомба).
3. Воспользуйтесь инструментом Bind to Space Wrap (Связать с воздействием) и свяжите объект с источником объемной деформации.
4. При выделенном значке объемной деформации типа Bomb
(Бомба) перейдите на командную панель Modify (Изменить) и в свитке Bomb Parameters установите в счетчике Detonation (Детонация) зна-
чение 50.
5. Перейдите в кадр 51, чтобы увидеть первый кадр после взрыва
объекта. Осколки разлетаются слишком быстро. Установите величину параметра Strength (Мощность) 10. Чтобы ограничить высоту
подъема осколков установите параметр Gravity (Гравитация) равным
4. Чтобы увеличить размеры фрагментов, задайте параметр Min (Минимум) равным 5, а Мах (Максимум) равным 20. Для придания осколкам некоторого вращения установите в счетчике Spin (Закрутка) величину 1. Придайте движению осколков некоторую случайность,
установив параметр Chaos (Хаос) равным 0,5 (рис. 3.33).
3.6.3. Анимация объектов, созданных на основе лофтинга
Создание ствола пистолета
1. На командной панели Create (Создать) выберите разновидность объектов Shapes (Плоские формы) и создайте Ngon (многоугольник) с параметрами Radius=70, Sides=40. Установите флажок Circular
(Скругленный).
2. Чтобы получить сечение для трубы, скопируйте многоугольник «внутрь себя» при помощи инструмента Array (Круговое копирование). Инструмент находится в группе Tools (Инструменты) основного меню. В открывшемся диалоговом окне во всех полях группы
Move (Перемещение) и Rotate (Вращение) должны стоять нулевые
значения, а в группе Scale (Масштабирование) должен быть поставлен флаг Uniform. При этом в группе Scale (Масштабирование)
останется активным только поле Х, установите в нем значение 60.
В счетчике Array Dimensions 1D Count укажите значение 2. Переключатель Type of object (Тип объекта) поставьте в положение Copy (Копировать). Нажмите кнопку OK.
3. Выделите обе окружности и опять инициализируйте инструмент Array (Круговое копирование). В поле X группы Move (Перемещение) поставьте значение 300, все остальные поля групп Rotate
109
(Вращение) обнулите, а в поля группы Scale (Масштабирование) поставьте 100. Параметр Array Dimensions 1D Count оставьте равным 2.
В результате получилось два сечения, которые состоят из вложенных окружностей. Теперь нужно добавить прицел.
4. Отметьте внешний контур любого из сечений, затем перейдите на командную панель Modify (Изменить). В списке модификаторов
Modifiers (Модификаторы) выберите модификатор Edit Spline (Редактировать сплайн). Раскройте список модификатора Edit Spline и выберите уровень Vertex (Вершина).
5. Выделите четыре верхних вершины и щелкните на одной из
них правой кнопкой мыши. В открывшемся контекстом меню выберите тип вершины Corner (Угол).
6. В списке модификатора Edit Spline (Редактировать сплайн) выберите уровень Segments (Сегменты), выделите средний сегмент и
с помощью инструмента Select and Move (Выделить и Переместить)
сместите его вверх (рис. 3.34).
7. В списке модификатора Edit Spline (Редактировать сплайн) выберите уровень Spline (Сплайн), отметьте контур сечения с прицелом
и, нажав кнопку Attach (Прикрепить) в свитке Geometry (Геометрия),
щелкните на внутреннем контуре.
8. Примените модификатор Edit Spline (Редактировать сплайн) для
второго сечения, затем повторите для него п. 7.
9. Создайте линию, равную предполагаемой длине ствола.
10. Выполните лофтинг. Для этого выделите созданную линию,
перейдите на командную панель Create (Создать), выберите катего-
Рис. 3.34. Вид полученных сечений
110
рию Geometry (Геометрия), выберите в ниспадающем списке тип
Loft objects(Лофтинг объектов) и в
ветви Object type (Тип объекта) нажмите кнопку Loft (Лофтинг).
11. В открывшейся вкладке нажмите кнопку Get shape (Задать
форму) и щелкните на сечении без
прицела.
12. В свитке Path Parameters
Рис. 3.35. Объект «ствол»
(Параметры траектории) в поле
Path (Траектория) установите значение 11. Снова нажмите кнопку Get shape (Задать форму) и отметьте сечение с прицелом. Установите в поле Path (Траектория) значение
32 и отметьте сечение без прицела (рис. 3.35).
Анимация ствола
1. Перейдите в нулевой кадр. Выделите ствол и перейдите на командную панель Modify (Изменить). В свитке Deformations (Деформации) нажмите кнопку Scale (Масштаб). В открывшемся диалоговом
окне вставьте на график две дополнительные вершины. (Последовательность действий аналогична предыдущей лабораторной работе.)
Выделите их и щелкните на любой правой кнопкой мыши. В появившемся окне выберите Bezier Corner.
2. Не выходя из окна деформации, перейдите в 30 кадр и нажмите кнопку Auto key (Авто ключи). Измените положение вершин графика так, как показано на рис. 3.36. Ствол тоже изменится. Этот ключ
имитирует потерю формы ствола при вздутии корпуса. Нажмите
кнопку Set Keys (Установить ключи).
3. Перейдите в 40 кадр и снова измените положение вершин графика (рис 3.36). Нажмите кнопку Set Keys (Установить ключи).
4. Перейдите в 45-й кадр и снова измените положение вершин
графика (см. рис 3.36). Нажмите кнопку Set Keys (Установить ключи).
5. Просмотрите анимацию.
3.6.4. Анимация иерархических цепочек
Прямая кинематика
1. Создайте механическую руку из набора цилиндров и сфер как
показано на рис. 3.37.
111
Рис. 3.36. Графики деформации для анимации объекта ствол
в 30-, 40- и 45-м кадрах, соответственно
2. Выберите инструмент Select and Link (Выделить и связать) (рис.
3.38) и щелкните на шаре 1, прикрепленном к концу последнего рычага устройства (рис. 3.39). После щелчка перетащите курсор к последнему рычагу и отпустите кнопку мыши. Шар и рычаг на мгновение выделятся, указывая на состоявшееся соединение.
112
Рис. 3.38. Инструмент Select and
Link (Выделить и связать)
Рис. 3.37. Механическая рука
3
1
2
Рис. 3.39. Механическая рука (вид сбоку)
Рис. 3.40. Вид командной
панели Hierarchy
(Иерархия)
113
3. Свяжите последний рычаг с шаром 2, затем шар 2 со вторым
рычагом.
5. Перемещаясь от свободного конца механической руки к ее основанию, продолжайте связывать объекты друг с другом.
6. В окне проекций Front (Вид спереди) выделите первый от свободного конца круговой шарнир и поверните его на 45 градусов. Обратите внимание на то, каким образом на это реагируют остальные
части руки.
8. Поверните второй шарнир. Обратите внимание на то, что концевая часть руки движется, а те части, которые ближе к основанию
остаются неподвижными. Таким образом, работает прямая кинематика.
Инверсная кинематика
1. Перейдите на командную панель Hierarchy (Иерархия) (рис
3.40), нажмите кнопку IK (Инверсная кинематика).
2. Выделите всю руку целиком и нажмите кнопку Interactive IK
(Интерактивная инверсная кинематика).
3. Перемещая части руки аналогично предыдущему разделу, посмотрите на результат.
3.7. Работа с материалами
3.7.1. Создание материала
с использованием растровой карты.
1. Создайте сферу, параллелепипед, цилиндр и чайник.
2. Запустите редактор материалов, выбрав команду меню Ren-
dering/ Material Editor/ Compact Material Editor (Визуализация/Редактор
материалов/ Компактный редактор материалов). Сделайте активным
первый образец материала. В свитке Shader Basic Parameters (Основные параметры тонирования) в открывающемся списке выберите модель тонирования Phong (модель Фонга). В свитке Phong Basic
Parameters (Основные параметры тонирования по Фонгу) щелкните
по пустой кнопке справа от параметра Diffuse (Диффузное отражение) (рис. 3.41) Откроется диалоговое окно Material/Map Browser (Просмотр карт и материалов).
3. В открывшемся списке текстур дважды щелкните на типе
Bitmap. В открывшемся диалоговом окне выберите понравившееся
вам растровое изображение, которое будет использовано в качестве
текстуры. Нажмите кнопку Open.
114
Рис. 3.41. Вид редактора материалов с раскрытыми свитками
Shader Basic Parameters (Основные параметры тонирования)
и Phong Basic Parameters (Основные параметры тонирования по Фонгу)
4. В окне редактора материалов нажмите на кнопку Go to parent
(Перейти к основному материалу) (рис. 3.42). Присвойте созданный
материал объекту «чайник».
5. Перейдите на командную панель Modify (Изменить). В списке модификаторов выберите модификатор UVW- map (UVW- координаты).
6. Выполните визуализацию фигур при различных типах проекционных систем координат (UV-координат). Для изменения типа
координат используйте переключатель в Mapping в свитке Parameters (Параметры) (рис. 3.43).
7. Поэкспериментируйте с параметрами свитка Alignment (Выравнивание).
115
Рис. 3.42. Кнопка Go to parent
(Перейти к основному материалу)
Рис. 3.43. Вид
свитка Parameters
(Параметры)
модификатора UVWmap (UVW-координаты)
3.7.2. Создание прозрачного материала
1. Активизируйте ячейку материала в редакторе материалов. Откройте свиток Map (Карты) и щелкните на карте параметра Diffuse
(Диффузное отражение). Откроется диалоговое окно Material/Map
Browser (Просмотр карт и материалов). Выберите карту типа Noise
и нажмите кнопку OK.
2. Настройте параметры выбранной карты в свитке Noise Parameters. Установите тип шума Turbulence (Турбулентный); верхний цвет –
белый; нижний цвет – черный. В поле Size (Размер шумовых структур) укажите 50.
3. Вернитесь к редактированию основного материала, нажав на
кнопку Go to parent (Перейти к основному материалу), и скопируйте полученную карту в строку Opacity (Непрозрачность). Для этого нажмите на кнопку рядом со свойством Diffuse (Диффузное отражение) и, не
отпуская кнопки мыши, переместитесь на кнопку рядом со свойством
116
Рис. 3.44. Копирование текстурной карты Noise
в свойства материала Opacity (Непрозрачность)
Рис. 3.45. Вид свитка Parameters (Параметры) карты Noise
117
Opacity (Непрозрачность). В открывшемся диалоговом окне выберите позицию Copy (Копировать) (рис. 3.44). При настройке карты в этом
случае нажмите кнопку Swap (Поменять) в свитке Parameters (Параметры) (рис. 3.45) и цветовые составляющие карты поменяются местами.
4. Вернитесь в общее меню редактирования материала, нажав на
кнопку Go to parent (Перейти к основному материалу), и в свитке Specular Highlights (Зеркальное отражение) установите Specular level (Уровень зеркальности) 100 и Glossiness (Глянцевитость) 50.
5. Щелкните на кнопке BackGround (Использовать задний фон) .
Измените свойство Opacity (Непрозрачность) до 60%.
6. Назначьте материал объекту «цилиндр». Подберите необходимые UV- координаты.
7. Визуализируйте сцену.
3.7.3. Создание двухстороннего материала
1. Создайте сферу. При выделенном объекте-сфере перейдите на
командную панель Modify(Изменить) и выберите модификатор Edit
Mesh (Правка сетки).
2. Выберите уровень правки Vertex (Вершина) в раскрывающемся
списке Selection Level. С помощью инструмента Select Object (Выделить
объект) последовательно выделите 5–10 вершин и удалите их.
3. Откройте библиотеку материалов. Активизируйте следующий образец, Нажмите кнопку Standard. Откроется диалоговое окно
Material/Map Browser (Просмотр карт и материалов) Выберите материал Double Side (Двухсторонний). Закройте диалоговое окно.
4. В окне библиотеки материалов кликируйте по кнопке Facing
Material (Внешний материал) в свитке Double Side Basic Parameters
(Базовые параметры двухстороннего материала) (рис. 3.46). Создайте
материал, который может быть присвоен внешней стороне сферы.
Вы можете изменить его цвет, блеск и другие параметры.
5. Нажмите кнопку Go to Parent (Перейти к основному материалу),
чтобы вернуться к редактированию материала в целом. Нажмите
кнопку Back Material (Внутренний материал).
6. Раскройте свиток Maps (Карты). Назначьте диффузным свойствам материала текстуру Checker, выбрав ее в окне Material/Map
Browser (Просмотр карт и материалов).
7. В окне библиотеки материалов в свитке Coordinates (Координаты) установите в окне Tiling значение 8 по обеим координатам
(рис. 3.47). Нажмите кнопку Go to Parent (Перейти к основному материалу), чтобы вернуться к редактированию материала в целом.
8. Присвойте материал сфере и проведите визуализацию (рис. 3.48).
118
Рис. 3.46. Свиток Double Side Basic Parameters
(Базовые параметры двухстороннего материала)
Рис. 3.47. Свиток Coordinates (Координаты) текстуры Checker
Рис. 3.48. Пример использования двустороннего материала
119
Библиографический список
1. Фоли Дж., вэн Дэм А. Основы интерактивной машинной графики: в 2-х т. М.: Мир, 1985. Т. 1. 367 с.; Т. 2. 368 с.
2. Роджерс Д. Алгоритмические основы машинной графики. М.:
Мир, 1989. 512 с.
3. Шикин Е. В., Боресков А. В. Компьютерная графика. М.: Диалог МИФИ,1995. 288 с.
4. Шикин Е. В., Боресков А. В., Зайцев А. А. Начала компьютерной графики. М.: Диалог МИФИ, 1993. 138 с.
5. Иванов В. П., Батраков А. С. Трехмерная компьютерная графика. М.: Радио и связь, 1995. 224 с.
6. Мартинес Ф. Синтез изображений: Принципы, аппаратное
и программное обеспечение. М.: Радио и связь, 1993. 392 с.
7. Эгрон Ж. Синтез изображений. Базовые алгоритмы. М.: Радио
и связь, 1993. 216 с.
8. Краснов М. Open GL. Графика в проектах Delphi. СПб.: BHV,
2000. 352 с.
9. Петерсон М. Эффективная работа с 3D Studio MAX 2. СПб.:
Питер, 1999. 656 с.
10. Келли М. Autodesk 3ds Max 2013. Библия пользователя. СПб.:
Диалектика, 2013. 816 с.
11. Харьковский А. B. 3ds Max 2012. СПб.: ACT, 2011. 64 с.
120
СОДЕРЖАНИЕ
Предисловие................................................................... 3
1. Основы теории синтеза трехмерных изображений............. 1.1. Этапы СинтезА трехмерного изображения.
3D-конвейер.......................................................... 1.2. Геометрические преобразования на плоскости
(2D-преобразования).............................................. 1.2.1. Матричное представление 2D-преобразований.. 1.2.2. Обратные преобразования.............................. 1.2.3. Композиция 2D-преобразований..................... 1.3. Геометрические преобразования в трехмерном
пространстве (3D-преобразования)........................... 1.3.1. Матричное представление 3D-преобразований.. 1.3.2. Композиция 3D-преобразований..................... 1.4. Проецирование трехмерных объектов....................... 1.4.1. Основные виды проецирования....................... 1.4.2. Математическое описание основных видов
проекций.................................................... 1.5. Алгоритмы удаления невидимых ребер и граней........ 1.5.1. Алгоритмы удаления нелицевых ребер
и граней...................................................... 1.5.2. Алгоритмы определения видимости в сцене...... 1.6. Основные модели и алгоритмы закраски................... 1.6.1. Модели закраски.......................................... 1.6.2. Алгоритмы закраски..................................... 5
2. Синтез и анимация трехмерных объектов
в прорамме 3D Studio Max................................................ 2.1. Основные сведения о программе 3D Studio MAX ........ 2.2. Обзор основных элементов интерфейса
программы 3D Studio MAX .................................... 2.2.1. Работа с файлами.......................................... 2.2.2. Работа с окнами проекций............................. 2.2.3. Доступ к командам....................................... 2.3. Методы геометрического моделирования
трехмерных объектов в программе 3D Studio MAX....... 2.3.1. Моделирование объектов на основе
геометрических примитивов.......................... 2.3.2. Моделирование объектов на основе сечений...... 2.3.3. Моделирование объектов на основе
поверхностей Безье и NURBS-поверхностей .... 2.3.4. Моделирование с помощью систем частиц........ 5
10
10
14
14
17
17
19
21
22
24
34
35
37
47
47
51
55
55
57
57
58
59
62
62
63
68
69
121
2.4. Методы анимации объектов в программе 3D Studio MAX. 2.4.1. Анимация с помощью ключевых
и процедурных контроллеров......................... 2.4.2. Анимация иерархических цепочек
(системные контроллеры).............................. 3. Практикум в программе 3D Studio MAX.......................... 3.1. Основы работы в программе..................................... 3.1.1. Настройка рабочей поверхности..................... 3.1.2. Создание параллелепипеда, тора и сферы......... 3.1.3. Создание многогранника............................... 3.1.4. Компоновка сцены........................................ 3.1.5. Создание источника света.............................. 3.1.6. Создание камеры.......................................... 3.1.7. Получение материала из библиотеки............... 3.1.8. Создание материалов со свойствами пластика,
окрашенной поверхности, стекла и металла..... 3.1.9. Занесение материала в библиотеку.................. 3.1.11. Визуализация. ........................................... 3.1.12. Анимация.................................................. 3.2. Базовые методы геометрического моделирования:
создание объектов на основе сечений
и геометрических примитивов................................. 3.2.1. Настройка рабочей поверхности..................... 3.2.2. Создание объекта на основе сечения методом
вращения (создание стола)............................ 3.2.3. Создание объекта с помощью лофтинга
(создание изогнутых ножек стола).................. 3.2.4. Дублирование объектов,
равномерно распределенных в пространстве
(ножек стола).............................................. 3.2.5. Объединение объектов в группу...................... 3.2.6. Создание объектов на основе двухмерных
и трехмерных примитивов по принципам
булевой алгебры – алгебры логики
(создание шляпы)......................................... 3.2.7. Создание объекта на основе сечениия методом
выдавливания (кресло из четырех подушек).... 3.2.8. Создание объекта на основе сечения методом
выдавливания со скосом (создание зеркала)..... 3.2.9. Компоновка сцены........................................ 3.2.10. Использование материалов
с растровыми текстурами.............................. 3.3. Дополнительные методы геометрического
моделирования: создание объектов на основе
поверхностей безье и с помощью систем частиц.......... 122
70
70
72
74
74
74
74
74
75
75
75
76
76
78
79
79
80
80
81
82
82
83
83
84
85
86
86
87
3.3.1. Создание объекта на основе поверхностей
Безье (имитация рельефа острова).................. 3.3.2. Работа с системами частиц (создание фонтана).. 3.4.1. Создание объектов с помощью модификаторов
(создание «рожка для мороженого»)............... 3.4.2. Создание объемной надписи........................... 3.4.3. Модифицирование и деформация
лофт-объектов (создание керосиновой лампы).. 3.5. Базовые методы анимации: анимация простых
объектов с помощью ключевых и процедурных
контроллеров........................................................ 3.5.1. Использование ключевого контроллера
управления по Безье..................................... 3.5.2. Использование ключевого контроллера TCB
(ННС)......................................................... 3.5.3. Использование процедурного контроллера
управления по линии пути............................ 3.5.4. Использование процедурного контроллера
случайного управления................................. 3.5.5. Использование
ключевого контроллера Вкл/Выкл................. 3.5.6. Использование процедурного контроллера
циклического управления............................. 3.5.7. Использование ключевого контроллера
управления по Безье для анимации параметров
материала................................................... 3.6. Дополнительные методы анимации: объемные
деформации и анимация иерархических цепочек....... 3.6.1.Создание и использование объемной
деформации типа Ripple (Рябь)...................... 3.6.2. Создание и использование объемной
деформации типа Bomb (Бомба)...................... 3.6.3. Анимация объектов, созданных на основе
лофтинга.................................................... 3.7. Работа с материалами............................................. 3.7.1. Создание материала с использованием
растровой карты.......................................... 3.7.2. Создание прозрачного материала.................... 3.7.3. Создание двухстороннего материала................ Библиографический список............................................... 87
89
91
93
95
97
97
100
100
103
104
106
106
107
107
108
109
114
114
116
118
120
123
Учебное издание
Обухова Наталия Александровна
ОСНОВЫ ТЕОРИИ И ПРАКТИКА
КОМПЬЮТЕРНОГО СИНТЕЗА
ТРЕХМЕРНЫХ ИЗОБРАЖЕНИЙ
Учебное пособие
Редактор А. Н. Подчепаева
Компьютерная верстка Н. Н. Караваевой
Сдано в набор 20.12.13. Подписано к печати 21.02.14.
Формат 60×84 1/16. Бумага офсетная. Усл. печ. л. 7,21.
Уч.-изд. л. 7,75. Тираж 100 экз. Заказ № 32.
Редакционно-издательский центр ГУАП
190000, Санкт-Петербург, Б. Морская ул., 67
124
Документ
Категория
Без категории
Просмотров
0
Размер файла
7 332 Кб
Теги
obukhov
1/--страниц
Пожаловаться на содержимое документа