close

Вход

Забыли?

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

?

617 Zabelin L.JU. Osnovy komp'juternoj grafiki

код для вставкиСкачать
ФЕДЕРАЛЬНОЕ АГЕНТСТВО СВЯЗИ
Федеральное государственное бюджетное образовательное
учреждение высшего образования
«Сибирский государственный университет
телекоммуникаций и информатики»
(СибГУТИ)
Л.Ю. Забелин
О.Л. Конюкова
О.В. Диль
Основы компьютерной графики и
технологии трехмерного моделирования
Учебное пособие
Новосибирск
2015
УДК 62.744
Забелин Л.Ю., Конюкова О.Л., Диль О.В.
Основы компьютерной графики и технологии трехмерного моделирования:
Учеб. пособие / Сибирский гос. университет телекоммуникаций и
информатики. – Новосибирск, 2015. – 264 с.
Настоящее учебное пособие разработано для оказания помощи студентам
в освоении компьютерной графики и трехмерного моделирования.
Приведены основные теоретические положения компьютерной графики и
трехмерного моделирования: растровая и векторная графика, цветовые модели,
координатные и аффинные преобразования объектов, рассмотрены модели
освещения, трассировки и закраски, подробно описана технология визуализации объектов. Практическая реализация теоретических положений показана на
примере широко используемой программы 3D MAX. Приведено много задач с
примерами решений и методическими рекомендациями к самостоятельной работе по методам моделирования и анимации.
Материал иллюстрирован, содержит примеры по всем темам рассматриваемого раздела.
Рекомендовано УМО по образованию в области телекоммуникаций в качестве
учебного пособия для студентов высших учебных заведений, обучающихся по
направлениям подготовки 09.03.02 «Информационные системы и технологии»,
11.03.03 «Конструирование и технология радиоэлектронных средств», 11.03.01
«Радиотехника» профиль «Аудиовизуальная техника», 09.03.01 «Информатика
и вычислительная техника» – (степени) бакалавр
Кафедра систем автоматизированного проектирования.
Количество иллюстраций – 62.
Рецензенты: д-р тех. наук, проф. Ю.А. Пальчун
д-р тех. наук, проф. В.Д. Фроловский
Утверждено редакционно-издательским советом
ФГОБУ ВПО «СибГУТИ» в качестве учебного пособия.
© Сибирский государственный университет
телекоммуникаций и информатики, 2015
2
Содержание
1. Введение
2. Компьютерная графика ........................................................................................... 6
2.1 История развития компьютерной графики ..................................................... 6
2.2 Виды компьютерной графики .......................................................................... 9
2.3 Основы и понятия компьютерной графики................................................... 10
2.4 Приложения компьютерной графики ............................................................ 11
3. Растровые и векторные изображения .................................................................. 12
3.1 Растровые изображения .................................................................................. 12
3.2 Векторные изображения.................................................................................. 13
3.3 Недостатки и достоинства растровых и векторных изображений ............. 17
4. Свет и цвет ............................................................................................................. 19
4.1 Восприятие света и цвета глазом человека ................................................... 20
4.2 Цветовые модели компьютерной графики ................................................... 23
4.3 Кодирование цвета (основные определения) ................................................ 29
5. Форматы графических файлов ............................................................................. 29
5.1 Растровые графические форматы:.................................................................. 29
5.2 Векторные графические форматы: ................................................................. 31
6. Методы компрессии и сжатия изображений ...................................................... 34
7. Методы улучшения растровых изображений ..................................................... 38
7.1 Устранение ступенчатого эффекта ................................................................ 38
7.2 Дизеринг............................................................................................................ 40
7.3 Реализация метода «дизеринга» в графической системе............................. 44
8. Трехмерная графика .............................................................................................. 46
9. Координатные преобразования объектов ........................................................... 59
9.1 Общие вопросы преобразования .................................................................... 59
9.2 Преобразование координат и преобразование объектов ............................. 60
9.3 Аффинные преобразования объектов на плоскости (2D) ............................ 65
10. Проективные преобразования (проекции) ........................................................ 69
10.1 Общие сведения ............................................................................................. 69
10.2 Мировые и экранные координаты ................................................................ 69
10.3 Виды проекций ............................................................................................... 70
11. ВИЗУАЛИЗАЦИЯ ОБЪЕМНЫХ ИЗОБРАЖЕНИЙ ....................................... 72
11.1 Каркасная визуализация ................................................................................ 72
11.2 Показ с удалением невидимых точек .......................................................... 73
11.3 Сортировка граней по глубине ..................................................................... 74
11.4 Метод плавающего горизонта ...................................................................... 75
11.5 Метод построчного сканирования ............................................................... 75
11.6 Метод Z-буфера.............................................................................................. 75
11.7 Алгоритм разбиения области Варнака......................................................... 76
11.8 Алгоритм трассировки лучей ....................................................................... 80
12. МОДЕЛИ ОСВЕЩЕНИЯ И МЕХАНИЗМЫ ОТРАЖЕНИЯ СВЕТА ........... 82
12.1 Классификация источников и поверхностей ............................................. 82
12.2 Модели отражения света ............................................................................... 82
13. Модели освещения .............................................................................................. 86
13.1 Источники света и их действие .................................................................... 86
3
13.2 Точечные (всенаправленные) источники .................................................... 87
13.3Линейные источники ...................................................................................... 87
13.4 Плоские источники ........................................................................................ 88
13.5 Направленные источники света ................................................................... 88
13.6 Целевой источник света ................................................................................ 88
13.7 Возникновение теней ..................................................................................... 89
13.8 Естественное освещение ............................................................................... 90
14. Модели закраски.................................................................................................. 91
14.1 Общие сведения ............................................................................................. 91
14.2 Метод Гуро (закраска с интерполяцией интенсивности) .......................... 91
14.3 Недостатки метода Гуро................................................................................ 93
14.4 Метод Фонга (закраска с интерполяцией нормали) ................................... 93
14.5 Недостатки метода Фонга ............................................................................. 95
14.6 Текстурирование ............................................................................................ 96
14.7 Пирамидальное фильтрование (Mip-mapping)............................................ 98
15. ТРАССИРОВКА ЛУЧЕЙ ................................................................................... 99
15.1 методы трассировки....................................................................................... 99
15.2 Метод прямой трассировки лучей .............................................................. 101
15.3 Метод обратной трассировки лучей .......................................................... 102
15.4 Алгоритм обратной трассировки лучей для расчета освещения сцены. 104
16. РАБОТА В 3D MAX ......................................................................................... 105
16.1 Interface (Пользовательская Среда) ............................................................ 105
16.2 Выделение и трансформация объектов ..................................................... 113
16.3 Выравнивание объектов и создание массива ............................................ 117
16.4 Применение модификаторов ..................................................................... 122
16.5 Работа со сплайнами .................................................................................... 124
16.6 Геометрические фигуры .............................................................................. 126
16.8 Создание поверхностей с помощью модификаторов сплайнов .............. 134
16.9 Составные объекты Boolean ....................................................................... 136
16.10 Лофтинговые составные объекты ............................................................ 154
16.11 Редактирование loft-объектов ................................................................... 160
16.12. Каркасное моделирование ....................................................................... 167
16.13 Лоскутное (патчевое) моделирование ..................................................... 170
16.14 Работа с материалами ................................................................................ 175
16.15 Типы источников света ............................................................................. 196
16.16. Создание освещения в сцене с помощью источника Skylight .............. 205
17. Анимация............................................................................................................ 207
17.1 Создание простой анимации ...................................................................... 209
17.2 Изменение продолжительности анимации................................................ 213
17.3 Изменение характера протекания анимации............................................. 215
17.4 Создание более сложной анимации .......................................................... 217
17.5 Виртуальные камеры ................................................................................... 220
17.6 Создание пульсирующего взрывающегося многогранника .................... 223
17.7 Анимация падающей сферы на вращающуюся поставку ........................ 236
18. Заключение......................................................................................................... 256
4
1. Введение
Развитие компьютерной и рекламной индустрии, дало толчок созданию
новой индустрии, которая помогает дизайнерам и киномотографистам всего
мира, и по сей день.
А началось все с того, что вполне мирная беседа в одной из клубных конференций о методах реализации некоего графического эффекта обернулась
жаркой дискуссией о рациональности применения техник трехмерного моделирования и использования продуктов такого творчества в WWW. Спор показал,
что различных мнений на этой почве существует не меньше, чем предрассудков, ясно, однако, было одно: тема не должна остаться в тени.
Мы предлагаем рассмотреть среду 3DStudio MAX. Одним из главных
преимуществ
3DStudio
MAX
является
возможность
объектноориентированного моделирования, т.е. исходная геометрическая форма, равно
как и последовательно применяемые к ней модификаторы, являются объектами,
параметры которых могут в любой момент быть изменены. Это позволяет сделать процесс моделирования предельно структурированным, а заодно и избавляет от страха перед возможными ошибками.
Пристрастие к тому или иному типу графической оболочки – безусловно,
дело индивидуальное, но качество интерфейса 3DStudio MAX может быть оценено как удовлетворительное. Присутствует элемент эксплоративности, хотя
«ткнуть и посмотреть, что получится» не всегда приводит к видимым результатам. Нам кажется, что авторы этого пакета нашли разумный баланс между пиктографической и текстовой формой представления активных и информационных элементов.
Благодаря уже упомянутой объектной ориентированности возможно
практически безграничное модулярное расширение возможностей пакета, в результате чего каждый способен сам составить себе набор любимых инструментов или попробовать что-то новое, просто подключив дополнительный plugin
(надо заметить, что базовой подборки, приходящей со стандартной инсталляцией пакета, на первых порах более чем достаточно).
Работать с 3Dstudio MAX вполне можно уже на P100 c 32MB RAM под
Windows95/98 и WindowsNT4.0, в последнем случае можно рассчитывать на
гораздо более стабильное функционирование. Особых по разумным меркам
претензий к графическим возможностям не предъявляется, использование
OpenGL-способной карты рекомендуемо. Пакет – в зависимости от инсталляции – занимает от 60 до 200 MB на жестком диске, стоит учитывать возможность дальнейшего «разбухания», связанного с добавлением подключаемых
модулей. Особых проблем при инсталляции MAXа до настоящего момента не
встречалось, стоит упомянуть лишь о необходимости установки Sentinel
Hardlock Drivers для работы программы.
5
2. Компьютерная графика
2.1. История развития компьютерной графики
Область применения компьютерной графики не ограничивается одними
художественными эффектами. Во всех отраслях науки, техники, медицины, в
коммерческой и управленческой деятельности используются построенные с
помощью компьютера схемы, графики, диаграммы, предназначенные для
наглядного отображения разнообразной информации. Конструкторы, разрабатывая новые модели автомобилей и самолетов, используют трехмерные графические объекты, чтобы представить окончательный вид изделия. Архитекторы
создают на экране монитора объемное изображение здания, и это позволяет им
увидеть, как оно впишется в ландшафт [18].
Можно рассмотреть следующие области применения компьютерной графики:
Научная графика. Первые компьютеры использовались лишь для решения научных и производственных задач. Чтобы лучше понять полученные результаты, производили их графическую обработку, строили графики, диаграммы, чертежи рассчитанных конструкций. Первые графики на машине получали
в режиме символьной печати. Затем появились специальные устройства – графопостроители (плоттеры) для вычерчивания чертежей и графиков чернильным
пером на бумаге. Современная научная компьютерная графика дает возможность проводить вычислительные эксперименты с наглядным представлением
их результатов.
Деловая графика – область компьютерной графики, предназначенная для
наглядного представления различных показателей работы учреждений. Плановые показатели, отчетная документация, статистические сводки – вот объекты,
для которых с помощью деловой графики создаются иллюстративные материалы. Программные средства деловой графики включаются в состав электронных
таблиц.
Конструкторская графика используется в работе инженеровконструкторов, архитекторов, изобретателей новой техники. Этот вид компьютерной графики является обязательным элементом САПР (систем автоматизации проектирования). Средствами конструкторской графики можно получать
как плоские изображения (проекции, сечения), так и пространственные трехмерные изображения.
Иллюстративная графика – это произвольное рисование и черчение на
экране компьютера. Пакеты иллюстративной графики относятся к прикладному
программному обеспечению общего назначения. Простейшие программные
средства иллюстративной графики называются графическими редакторами.
Художественная и рекламная графика – ставшая популярной во многом
благодаря телевидению. С помощью компьютера создаются рекламные ролики,
мультфильмы, компьютерные игры, видеоуроки и видеопрезентации. Графические пакеты для этих целей требуют больших ресурсов компьютера по быстродействию и памяти. Отличительной особенностью этих графических пакетов
является возможность создания реалистических изображений и «движущихся
6
картинок». Получение рисунков трехмерных объектов, их повороты, приближения, удаления, деформации связано с большим объемом вычислений. Передача освещенности объекта в зависимости от положения источника света, от
расположения теней, от фактуры поверхности, требует расчетов, учитывающих
законы оптики.
Одним из первых известных фильмов был фильм «Звездные войны». Он
был создан с помощью суперкомпьютера «Сгау». Этапы дальнейшего развития
компьютерного кинематографа можно проследить по таким фильмам, как
«Терминатор-2», «Вавилон 5», «Аватар», и др. До недавнего времени технологии компьютерной графики использовались для спецэффектов, создания изображений экзотических чудовищ, имитации стихийных бедствий и других элементов, которые являлись лишь фоном для игры живых актеров. В 2001 году
вышел на экраны полнометражный кинофильм «Финальная фантазия», в котором все, включая изображения людей, синтезировано компьютером – живые
актеры только озвучили роли за кадром.
Компьютерная анимация – это получение движущихся изображений на
экране дисплее. Художник создает на экране рисунке начального и конечного
положения движущихся объектов, все промежуточные состояния рассчитывает
и изображает компьютер, выполняя расчеты, опирающиеся на математическое
описание данного вида движения. Полученные рисунки, выводимые последовательно на экран с определенной частотой, создают иллюзию движения. Мультимедиа – это объединение высококачественного изображения на экране компьютера со звуковым сопровождением. Наибольшее распространение системы
мультимедиа получили в области обучения, рекламы, развлечений.
Графика для Интернета. Появление глобальной сети Интернет привело к
тому, что компьютерная графика стала занимать важное место в ней. Все больше совершенствуются способы передачи визуальной информации, разрабатываются более совершенные графические форматы, ощутимо желание использовать трехмерную графику, анимацию, весь спектр мультимедиа.
Основные этапы развития компьютерной графики:
1956 – первые эксперименты Бена Лапоски “oscillons” (США, с 1950г) и Герберта Франка (Германия). Эта дата была определена Jasia Reichardt как начало
Компьютерного Искусства
1957 – получено первое цифровое изображение в Национальном Бюро Стандартов (США)
1958 – сэр Джон Уитни использует аналоговый компьютер для создания анимации (США)
1959 – выставка “Экспериментальная эстетика” в музее Angewandte Kunst
(Вена, Австрия), показ “oscillons” и т.д.
1963 – проводится первое соревнование по компьютерному искусству, спонсором которого выступил американский журнал Computers and Automation. В
1965 г. его выигрывает Майкл Нолл (США) и в 1966 Фрайдер Нейк (Германия). Выходит в свет первый созданный на компьютере фильм Эдварда Зайека (Bell labs, США). Чарльз Ксури создает свои первые компьютерные работы
7
(США). Иван Сазерленд представляет Sketchpad – программу для интерактивной работы с компьютерной графикой на конференции Fall Joint Computer
Conference. Работа была начата в 1961 г. В Массачусетском технологическом
институте. Написана первая научная работа и получена первая степень «Доктора философии в области компьютерной графики».
1965 – первая выставка цифрового искусства в Technische Hochschule в Штутгарте организованная Фрайдером Нейком, Майклом Ноллом и Джорджем Нисом (Германия) Первая выставка цифрового искусства в США в галерее
Howard Wise в Нью Йорке. Были выставлены компьютерные работы Бела
Джулса и Майкла Нолла (США). Три первые общественные выставки компьютерного искусства: 5–19 февраля, Generative Computergrafik. Georg Nees.
Studien-Galerie des Studium Generale, TH Stuttgart. Открыта Максом Бенсом
(Германия). 6–24 апреля, изображения созданные с помощью компьютера.
Майкл Нолл, Бела Джулс, Howard Wise Gallery, Нью-Йорк (США). 5–26 ноября, Computergrafik. Фрайдер Нейк, Джордж Нис. Галерея Wendelin Niedlich,
Штутгарт. Открыта Максом Бенсом (Германия).
1966 – IBM присуждает звание Artist-in-Residence Сэру Джону Уитни.
1967 – эксперименты в искусстве и технологии начаты в Нью-Йорке группой
художников и техников, включая художника Robert Rauschenberg и инженера
Billy Kluver (США).
1968 – Cybernetic Serendipity: выставка компьютерных технологий и искусства, в институте современного искусства, Лондон. Курирует Джеша Ричард
(директор ICA и автор Компьютер в Искусстве). Музей современного искусства приобретает работу Ксури “Hummingbird”. Джон Лэнсдаун (архитектор)
и Алан Сатклиф (пионер компьютерной музыки) создают Общество Компьютерного Искусства как подразделение Британского Компьютерного Общества.
1966 – IBM присуждает звание Artist-in-Residence – Сэру Джону Уитни.
1967 – эксперименты в искусстве и технологии начаты в Нью Йорке группой
художников и техников, включая художника Robert Rauschenberg и инженера
Billy Kluver (США).
1968 – Cybernetic Serendipity: Выставка компьютерных технологий и искусства, в институте современного искусства, Лондон. Курирует Джеша Ричард
(директор ICA и автор Компьютер в Искусстве). Музей современного искусства приобретает работу Ксури “Hummingbird”. Джон Лэнсдаун (архитектор)
и Алан Сатклиф (пионер компьютерной музыки) создают «Общество Компьютерного Искусства» как подразделение Британского Компьютерного Общества.
1969 – SIGGRAPH, Special Interest Group on Computer Graphics сформировано
с помощью ACM (the Association for Computing Machinery).
1971 – впервые в мире проводится персональная выставка работ по компьютерному искусству; Манфред Мор, Музей современного искусства, Франция,
Париж. Герберт Фрэнк публикует 'Computer Graphics - Computer Art' (Германия).
8
1972 – Ричард Шуп создает SuperPaint, 8ми битную графическую программу в
исследовательском центре Xerox Palo Alto (США).
1974 – фильм “Голод” Питера Фолдса получает Приз Жюри на Каннском фестивале кино за лучшую анимацию (Канада).
1975 – фракталы - Бенуа Мандельбро (IBM, США).
1976 – Руфь Левитт публикует “Художник и компьютер” (США)
.
1979 – «Sunstone» анимация Эда Эмшвиллера (NYIT, США).
1980 – фирма “Quantel” представляет Paintbox (Великобритания).
1983 – Гарольд Коэн выставляет работу AARON в Tate gallery (Лондон, Великобритания)
Дэвид Эм работает в лаборатории Jet Propulsion в Калифорнийском Технологическом институте
1984 – Питер Перлштайн использует графическую систему в Нью-йоркском
Технологическом институте
Продан первый компьютер Macintosh. Так
же рекламный ролик получает награду международного фестиваля рекламы
фестиваля Clio.
1986 – рисование светом – Дэвид Хокни, Говард Ходгкинс, Сэр Сидни Нолан
и Ларри Риверс приглашены на BBС для использования Qantel Paintbox на телевидении (Великобритания). Энди Вархол использует Amiga для создания
своего автопортрета и портрета певицы Деборы Харри (США). Фильм “Luxo
Jr” Джона Лассетера (фирма PIXAR) показан на конференции Siggraph
(США). Томасс и Джон Нолл, работая на Lucasfilm, пишут 24 битную графическую программу Photoshop
1988 – первый международный симпозиум по электронному искусству в г.
Утрехт (Германия). Кливлендская галерея, выставка Искусство и Компьютер,
г. Мидлсбороу (Великобритания) .
1989 – выставка “Electronic Print” в музее Arnolfini в г. Бристоль. Под руководством Мартина Райзера. (Великобритания). Релиз Photoshop для Macintosh
(США).
1992 – первый Digital Salon в Нью-Йорке (США)
1995 – первая конференция по CADE, Брайтон (Великобритания).
1997 – в Лондоне открыта Collville Place Gallery (Великобритания).
1998 – Вольфганг Лайзер основывает Музей Цифрового Искусства.
2.2. Виды компьютерной графики
Различают три вида компьютерной графики. Это растровая графика, векторная графика и фрактальная графика. Они отличаются принципами формирования изображения при отображении на экране монитора или при печати на
бумаге [17].
Растровый метод – изображение представляется в виде набора окрашенных точек. Растровую графику применяют при разработке электронных (мультимедийных) и полиграфических изданий. Иллюстрации, выполненные средствами растровой графики, редко создают вручную с помощью компьютерных
программ. Чаще всего для этой цели используют отсканированные иллюстрации, подготовленные художниками, или фотографии. В последнее время для
9
ввода растровых изображений в компьютер нашли широкое применение цифровые фото- и видеокамеры.
Большинство графических редакторов, предназначенных для работы с
растровыми иллюстрациями, ориентированы не столько на создание изображений, сколько на их обработку. В Интернете пока применяются только растровые иллюстрации.
Векторный метод – это метод представления изображения в виде совокупности отрезков и дуг и т. д. В данном случае вектор – это набор данных, характеризующих какой-либо объект.
Наиболее удобно, когда способ описания графического изображения соответствует способу визуализации. Иначе нужна конвертация. Например, изображение может храниться в растровом виде, а его необходимо вывести (визуализировать) на векторном устройстве. Для этого нужна предварительная векторизация – преобразование из растрового в векторное описание. Или наоборот, описание изображения может быть в векторном виде, а нужно визуализировать на растровом устройстве – необходима растеризация.
Программные средства для работы с векторной графикой предназначены
в первую очередь для создания иллюстраций и в меньшей степени для их обработки. Такие средства широко используют в рекламных агентствах, дизайнерских бюро, редакциях и издательствах. Оформительские работы, основанные на
применении шрифтов и простейших геометрических элементов, решаются
средствами векторной графики много проще.
Программные средства для работы с фрактальной графикой предназначены для автоматической генерации изображений путем математических расчетов. Создание фрактальной художественной композиции состоит не в рисовании или оформлении, а в программировании.
Фрактальная графика, как и векторная – вычисляемая, но отличается от
неё тем, что никакие объекты в памяти компьютера не хранятся. Изображение
строится по уравнению (или по системе уравнений), поэтому ничего, кроме
формулы, хранить не надо.
Изменив коэффициенты в уравнении, можно получить совершенно другую картину. Способность фрактальной графики моделировать образы живой
природы вычислительным путем часто используют для автоматической генерации необычных иллюстраций.
2.3. Основы и понятия компьютерной графики
Направления компьютерной графики (принято разделять компьютерную
графику на следующие направления) [18]:
 изобразительная компьютерная графика,
 обработка и анализ изображений,
 анализ сцен (перцептивная компьютерная графика),
 компьютерная графика для научных абстракций (когнитивная компьютерная графика – графика, способствующая познанию).
10
Изобразительная компьютерная графика:
а) объекты: синтезированные изображения;
б) задачи:
· построение модели объекта и генерация изображения,
· преобразование модели и изображения,
· идентификация объекта и получение требуемой информации.
Обработка и анализ изображений:
а) объекты: дискретное, числовое представление фотографий;
б) задачи:
· повышение качества изображения,
· оценка изображения – определение формы, местоположения, размеров и
других параметров требуемых объектов,
· распознавание образов – выделение и классификация свойств объектов
(обработка аэрокосмических снимков, ввод чертежей, системы навигации, обнаружения и наведения).
Итак, в основе обработки и анализа изображений лежат методы представления, обработки и анализа изображений плюс, естественно, изобразительная
компьютерная графика хотя бы для того, чтобы представить результаты.
Анализ сцен:
а) предмет: исследование абстрактных моделей графических объектов и
взаимосвязей между ними. Объекты могут быть как синтезированными, так и
выделенными на фотоснимках.
Первый шаг в анализе сцены – выделение характерных особенностей,
формирующих графический объект(ы).
б) примеры: машинное зрение (роботы), анализ рентгеновских снимков с
выделением и отслеживанием интересующего объекта, например, сердца.
Итак, в основе анализа сцен (перцептивной компьютерной графики)
находятся: изобразительная графика + анализ изображений + специализированные средства.
Когнитивная компьютерная графика – только формирующееся новое
направление.
Это компьютерная графика для научных абстракций, способствующая
рождению нового научного знания. База – мощные ЭВМ и высокопроизводительные средства визуализации.
Общая последовательность познания заключается в, возможно циклическом, продвижении от гипотезы к модели (объекта, явления) и решению, результатом которого является знание.
2.4. Приложения компьютерной графики
Как уже отмечалось, компьютерная графика стала основным средством
взаимодействия человека с ЭВМ. Важнейшими сформировавшимися областями
приложений являются [17]:
· компьютерное моделирование, которое явилось исторически первым
широким приложением компьютерной графики,
11
· системы автоматизации научных исследований, системы автоматизации
проектирования, системы автоматизации конструирования, системы автоматизации производства, автоматизированные системы управления технологическими процессами,
 бизнес,
 искусство,
 средства массовой информации,
 досуг.
В настоящее время появилось новое, очень интересное приложение компьютерной графики – виртуальная реальность.
3. Растровые и векторные изображения
Как говорилось ранее, все изображения, с которыми работают программы
машинной графики, подразделяются на два класса: растровые (точечные) и векторные.
3.1. Растровые изображения
Растровым изображением принято называть массив пикселов – одинаковых по размеру и форме плоских геометрических фигур (чаще всего квадратов
или кругов), расположенных в узлах регулярной сетки. Цвет обычно кодируется числами фиксированной разрядности [15].
Растровое изображение в памяти компьютера – это массив сведений о
цвете всех пикселов, упорядоченный тем или иным образом.
Наиболее близким аналогом такого явления виртуального мира, как точечное изображение, в реальном мире является мозаика.
Для описания расположения пикселей используют разнообразные системы координат. Общим для всех таких систем является то, что координаты пикселей образуют дискретный ряд значений (необязательно целые числа). Часто
используется система целых координат – номеров пикселей с (0,0) в левом
верхнем углу. Такую систему мы будем использовать и в дальнейшем, ибо она
удобна для рассмотрения алгоритмов графического вывода.
Основные характеристики растровых изображений:
Разрешающая способность. Она характеризует расстояние между соседними пикселями. Разрешающую способность измеряют количеством пикселей
на единицу длины. Наиболее популярной единицей измерения является dpi
(dots per inch) – количество пикселей в одном дюйме длины (2.54 см). Не следует отождествлять шаг с размерами пикселей – размер пикселей может быть равен шагу, а может быть как меньше, так и больше, чем шаг.
Размер растра обычно измеряется количеством пикселей по горизонтали
и вертикали. Можно сказать, что для компьютерной графики зачастую наиболее удобен растр с одинаковым шагом для обеих осей, то есть dpiX = dpiY. Это
удобно для многих алгоритмов вывода графических объектов.
12
X
0 1
Xmax
0
1
1 / dpiY
Y
Ymax
1 / dpiX
Рисунок 3.1.1. – Растр
Форма пикселей растра определяется особенностями устройства графического вывода. Например, пиксели могут иметь форму прямоугольника или
квадрата, которые по размерам равны шагу растра (дисплей на жидких кристаллах); пиксели круглой формы, которые по размерам могут и не равняться
шагу растра (принтеры).
Количество цветов (глубина цвета) – также одна из важнейших характеристик растра, количество цветов является важной характеристикой для любого
изображения, а не только растрового. Согласно психофизиологическим исследованиям глаз человека способен различать 350 000 цветов.
3.2. Векторные изображения
Векторным изображением принято называть совокупность более сложных и разнообразных геометрических объектов, в нее включаются простейшие
геометрические фигуры (круги, эллипсы, прямоугольники, многоугольники,
отрезки прямых и дуги кривых линий). В векторной графики для каждого
класса объектов определяются управляющие параметры, конкретизирующие
его внешний вид, которые могут быть представлены в виде формул. Например,
для окружности такими управляющими параметрами являются диаметр, цвет,
тип и толщина линии, а также цвет внутренней области. Окончание линии (то
есть ее форма в конечном узле) также выступает одним из свойств с изменяемыми параметрами [15].
Представление векторного изображения в памяти компьютера сложнее,
чем точечного. Несколько упрощая, можно считать, что оно представляет собой
перечень всех объектов, из которых составлено изображение, причем для каждого объекта указано, к какому классу объектов он принадлежит, и приведены
значения всех управляющих параметров. Подобрать аналог векторному изображению в реальном мире не так-то просто. Впрочем, на эту роль вполне может
претендовать тот человечек, которого в детстве все рисовали, приговаривая:
13
"Точка, точка, запятая, минус, рожица кривая, палка, палка, огуречик...". Последняя фраза, по сути дела, представляет собой перечисление объектов векторного изображения.
Основные характеристики векторных изображений:
Если в растровой графике базовым элементом изображения является
точка, то в векторной графике – линия, которая математически описывается как
единый объект. Линия обладает свойствами: формой (прямая, кривая), толщиной, цветом, начертанием (сплошная, пунктирная). Окончание линии (то
есть ее форма в конечном узле) также выступает одним из свойств с изменяемыми параметрами.
Простейшая незамкнутая линия ограничена двумя точками, именуемыми узлами. Узлы имеют ряд свойств, параметры которых влияют на форму
конца линии и характер сопряжения с другими объектами. Все прочие объекты
векторной графики, в том числе самые сложные, составляют из линий.
Замкнутые линии приобретают свойство заполнения. Охватываемое ими
пространство может быть заполнено другими объектами (текстуры, карты) или
выбранным цветом. Заполнение может быть и растровым и векторным. В последнем случае иногда используют элементы фрактальной графики, являющейся частным случаем векторной. Основные языки программирования при выводе
графических примитивов также используют понятия векторной графики.
Эффекты, применяемые к объектам векторной графики, воздействуют на
свойства линии, заполнения и узлов. По сути дела, в программах векторной
графики все эффекты являются модификаторами. Этот термин хорошо знаком
пользователям трехмерных графических приложений. Модификатор описывает
математическими методами параметры изменения свойств исходного объекта,
не затрагивая его основ. Именно на этом базируется возможность многоуровневого «отката», то есть возврата к исходному состоянию объекта.
Рассмотрим подробнее способы представления различных объектов в
векторной графике.
Таблица 3.2.1. – Математические основы векторной графики
Точка. Этот объект на плоскости представляется двумя числами (х, у), указывающими
его положение относительно начала координат.
14
Прямая линия. Ей соответствует уравнение
у = kx + b. Указав параметры k и b, всегда
можно отобразить бесконечную прямую линию в известной системе координат, то есть
для задания прямой достаточно двух параметров.
Отрезок прямой. Он отличается тем, что
требует для описания еще двух параметров,
например, координат xl и хг начала и конца
отрезка.
Продолжение таблицы 3.2.1.
Кривая второго порядка. К этому классу
кривых относятся параболы, гиперболы, эллипсы, окружности, то есть все линии, уравнения которых содержат степени не выше
второй. Кривая второго порядка не имеет
точек перегиба. Прямые линии являются
всего лишь частным случаем кривых второго
порядка. Формула кривой второго порядка в
общем виде может выглядеть, например, так:
x 2  a1 y 2  a2 xy  a3 x  a4 y  a3  0
Таким образом, для описания бесконечной
кривой второго порядка достаточно пяти параметров. Если требуется построить отрезок
кривой, понадобятся еще два параметра.
Кривая третьего порядка. Отличие этих
кривых от кривых второго порядка состоит в
возможном наличии точки перегиба. Например, график функции у = х3 имеет точку перегиба в начале координат. Именно эта особенность позволяет сделать кривые третьего
порядка основой отображения природных
объектов в векторной графике. Линии изгиба
человеческого тела, контуры пересеченной
местности, очертания растений весьма близки к кривым третьего порядка. Все кривые
второго порядка, в том числе прямые линии,
15
являются частными случаями кривых третьего порядка.
В общем случае уравнение кривой третьего
порядка можно записать так:
x 3  a1 y 3  a2 x 2 y  a3 xy 2  a4 x 2  a5 y 2  a6 xy 
 a7 x  a8 y  a9  0
Таким образом, кривая третьего порядка
описывается девятью параметрами. Описание ее отрезка потребует на два параметра
больше.
Несмотря на кажущуюся сложность описания кривой третьего порядка,
ее код занимает в файле несравнимо меньше места, чем код аналогичной кривой, но созданной из точек (растровой), потому что для растровой линии дается
описание положения и цвета каждой точки.
Кривая Безье – эта кривая встретится вам практически в любом редакторе векторной графики. Сегмент кривой Безье (Bezier) третьего порядка описывается положением четырех точек.
· Две из них являются опорными (узлами кривой): начальная точка Р0
(х0, у0) и конечная точка Р3 (х3, у3).
· Точки Pl (x1 y1) и Р2 (х2, у2), определяющие положение касательных
относительно отрезка, называют управляющими.
Метод построения кривой Безье в графическом редакторе основан на использовании пары касательных (управляющих линий), проведенных к сегменту
кривой в его окончаниях. На форму кривой влияют угол наклона касательной и
длина ее отрезка.
Рисунок 3.2.1. – Кривая Безье
Параметрическое уравнение Безье описывает положение точек и, тем самым, форму кривой. Уравнение решают относительно параметра t, принимающего значения от 0 (в начальной точке) до 1 (в конечной точке).
16
R(t )  P0 (1  t )3  P1t (1  t ) 2  P2t 2 (1  t )  P3t 3 , где0  t  1
П
ри построении сегмента кривой Безье на плоскости рассчитываются координаты х и у для четырех точек, из них двух управляющих: значение t определяет степень влияния точек на форму кривой.
Например, при t = 0,333 наибольший «вес» приобретает точка Р1, при t =
0,666 – точка Р2.
Кривая может проходить лишь через начальную и конечную опорные
точки сегмента (Р0, Р3), чем достигаются простота описания и стабильность
кривой Безье.
Кривые Безье обладают рядом свойств, определяющих возможность их
использования в векторной графике. С геометрической точки зрения, производной кривой Безье будет другая кривая Безье, векторы управляющих точек
которой определяются вычислением разностей векторов управляющих точек
исходной кривой.
Основные свойства кривой Безье:
 непрерывность заполнения сегмента между начальной и конечной точками;
 кривая всегда располагается внутри фигуры, образованной линиями, соединяющими контрольные точки;
 при наличии только двух контрольных точек сегмент представляет собой
прямую линию;
 прямая линия образуется при коллинеарном (на одной прямой) размещении
управляющих точек;
 кривая Безье симметрична, то есть обмен местами между начальной и конечной точками (изменение направления траектории) не влияет на форму
кривой;
 масштабирование и изменение пропорций кривой Безье не нарушает ее стабильности, так как она с математической точки зрения «аффинно инвариантна»;
 изменение координат хотя бы одной из точек ведет к изменению формы
всей кривой Безье;
 степень кривой всегда на одну ступень ниже числа контрольных точек.
Например, при трех контрольных точках форма кривой – парабола;
 окружность не может быть описана параметрическим уравнением кривой
Безье;
 невозможно создать параллельные кривые Безье, за исключением тривиальных случаев (прямые линии и совпадающие кривые).
3.3 Недостатки и достоинства растровых и векторных изображений
Растровое изображение:
Первый недостаток растрового изображения состоит в фиксированном
размере пикселов. Из-за этого при увеличении или уменьшении возникают
крайне нежелательные эффекты. При увеличении растровое изображение приобретает отчетливо видимую зернистую структуру. А это хорошо только при
создании специфических художественных эффектов. При уменьшении растро17
вого изображения с сохранением прежнего размера пикселей неизбежно приходится выбрасывать некоторые пиксели, что приводит к потере части содержащейся в изображении информации, в результате чего детали изображения
становятся плохо различимыми [15].
Размеры растрового изображения при сохранении исходного размера
пикселей можно увеличивать лишь кратно – в два, три и т. д. раз. Если это
условие не соблюдается, на изображении возникают волнообразные полосы,
точки или клетки.
Второй недостаток растровых изображений состоит и отсутствии внутренней структуры, соответствующей структуре изображенных объектов. Для
отдельных объектов трудно найти и изолировать соответствующие этим объектам пиксели. Например, на растровом изображении мы видим мужчину в
галстуке-бабочке и со значком на лацкане. Допустим при работе над изображением необходимо удалить значок, то придется как-то заполнять образовавшуюся после удаления пикселей значка «дыру» в изображении – фактически, дорисовывать его. Плюс много работы возникает при необходимости слегка поправить покосившийся галстук.
Третий недостаток растровых изображений – большой объем памяти,
требующейся для их хранения. Растровыми изображениями высокой четкости и
большого размера превышают десятки мегабайт.
Достоинство – высокая художественная реалистичность.
Растровые изображения обеспечивают максимальную реалистичность, поскольку в цифровую форму переводится каждый мельчайший фрагмент оригинала.
Растровое изображение получить гораздо легче, чем векторное. Существуют устройства их получения непосредственно в цифровой форме (сканеры,
цифровые камеры, платы видеозахвата).
Векторное изображение:
Достоинство – преобразование векторного изображения осуществляется более просто и с сохранением исходного качества. Для увеличения или
уменьшения требуется всего лишь изменить один управляющий параметр
изображения в целом – масштаб. При этом размер файла с векторным изображением не увеличится ни на один байт и четкость изображения не пострадает.
Удаление и перемещение объектов не составляет никакого труда, так как
степень структуризации векторного изображения может быть произвольной.
Она определяется художником, строящим векторное изображение. Удаление
значка, не приведет к возникновению «дыры» на пиджаке – ведь изображение
пиджака составлено из других объектов, которые просто станут видны в том
месте, где раньше был значок. Не составляет проблемы «поправить галстук» –
достаточно изменить значение угла поворота группы объектов, из которых составлено его изображение.
Размеры файлов с векторными изображениями в большинстве случаев
намного меньше размеров файлов с изображениями точечными.
18
Преобразование векторного изображения в точечное (растрирование)
представляет собой достаточно простой и абсолютно формальный процесс, выполняющийся в большинстве программ машинной графики без вмешательства
пользователя.
Преобразование же растрового изображения в векторное (в подавляющем большинстве случаев) требует не просто вмешательства, а творческого
участия пользователя. Векторные же изображения требуют ручного ввода (построения или рисования).
4. Свет и цвет
Цвет – это один из факторов нашего восприятия светового излучения.
Светом и цветом исследователи интересовались давно. Одним из первых выдающихся достижений в этой области являются опыты Исаака Ньютона в 1666 г.
по разложению белого света на составляющие. Ранее считалось, что белый свет
является простейшим. Ньютон опроверг это. Суть его опытов такова. Белый
луч света (использовался солнечный свет) направлялся на стеклянную треугольную призму. Пройдя сквозь призму, луч преломлялся и, будучи направленный на экран, давал в результате цветную полосу – спектр. В спектре присутствовали все цвета радуги, плавно переходящие друг в друга. Эти цвета уже
не раскладывались на составляющие. Ньютон разбил весь спектр на семь
участков, соответствующих ярко выраженным различным цветам. Он считал
эти семь цветов основными – красный, оранжевый, желтый, зеленый, голубой,
синий и фиолетовый. Почему именно семь? Некоторые объясняют это убежденностью Ньютона в мистических свойствах семерки [5].
Вторая часть опытов Ньютона такова. Лучи, прошедшие сквозь призму,
направлялись на вторую призму, с помощью которой удалось вновь получить
белый свет. Таким образом, было доказано, что белый цвет является смесью
множества различных цветов. Семь основных цветов Ньютон расположил по
кругу.
красный
оранжевый
фиолетовый
желтый
оранжевый
синий
голубой
Рисунок 4.1 – Цветовой круг Ньютона
Ньютон предположил, что некоторый цвет образуется путем смешивания
основных цветов, взятых в определенной пропорции. Если в точках на границе
цветового круга, расположить соответствующие основным цвета, то суммар19
ный белый цвет будет соответствовать точке центра тяжести, то есть центру
цветового круга.
Последующие исследования цвета выполняли Томас Юнг, Джемс Максвелл и другие ученые. Исследования человеческого световосприятия являлись
достаточно важной задачей, но основные усилия были направлены на изучение
объективных свойств света. В настоящее время физики полагают, что свет имеет двойственный характер. С одной стороны, свет представляется в виде потока
частиц (еще Ньютон выдвинул так называемую корпускулярную теорию). С
другой стороны, свету присущи волновые свойства. С помощью волновой теории, выдвинутой Христианом Гюйгенсом в 1678 году, были объяснены многие
свойства света, в частности законы отражения и преломления.
4.1 Восприятие света и цвета глазом человека
Особенности цветового зрения человека:
Сетчатка человеческого глаза представляет собой разветвления по дну
глаза нервных волокон, которые затем сплетаются в зрительный нерв. Традиционно различают два вида окончаний нервных волокон: палочки и колбочки.
Колбочки отвечают за ощущение цвета человеком и работают при высокой общей освещённости. Существует три вида колбочек, каждый из которых имеет
максимум чувствительности в своём спектральном диапазоне (рисунок 4.1.1).
Палочки ответственны за восприятие интенсивности падающего света и могут
работать при низкой освещённости (рисунок 4.1.2). вот почему в сумерках мы
видим мир практически бесцветным. В наиболее чувствительном к свету месте
сетчатки против зрачка расположены почти одни колбочки, вследствие чего
глаз обладает способностью различать мельчайшие детали только в центре поля
зрения под углом в 1.3 градуса. Периферическая часть сетчатки образована палочками и служит для общей зрительной ориентировки в пространстве, при
этом палочковый механизм работает гораздо быстрее, нежели колбочковый.
Рисунок 4.1.1. – Колбочковый аппарат цветового зрения
20
Поступающая от палочек и колбочек информация преобразуется в импульсные разряды и до передачи в мозг кодируется в сетчатке. Эта закодированная информация посылается в виде сигнала о яркости из всех трех типов
колбочек, а также в виде разностных сигналов каждых двух цветов. Сюда подключается также и второй яркостной канал, берущий начало, от независимой
палочковой системы.
Рисунок 4.1.2. – Чувствительность палочек (ночное зрение)
и колбочек (дневное зрение).
Устройство аппарата цветового зрения человека таково, что глаз видит
гораздо больше цветов, чем их есть в спектре, так как в определённых случаях
смесь нескольких спектрально чистых цветов воспринимается мозгом как естественный цвет (например, розовый, который на самом деле является смесью
красного и фиолетового). Экспериментально установлено, что среди излучений
равной мощности наибольшее световое ощущение вызывает монохроматическое желто-зеленое излучение с длиной волны 555 нм. Относительная спектральная световая эффективность (обозначаемая буквой «v») этого излучения
принята за единицу.
Любопытная иллюзия (явление Фехнера) хорошо демонстрирует тот
факт, что цвет является внутренней способностью мозга отражать информацию
о внешнем мире. Суть явления такова: если диск, одна половина которого зачернена, а на другой – белой – нанесен ряд черных дуг, привести во вращение
со скоростью 5...10 об/с, то глаз будет воспринимать не серый фон, а довольно
хорошо выраженные цветные кольца, цвет которых меняется в зависимости от
радиуса дуг. Конструкции подобных дисков весьма разнообразны, но принципиально эффект остается одним и тем же – черно-белая картинка воспринимается цветной [16].
21
Основные определения:
Назначение цветовой модели – дать средства описания цвета в пределах
некоторого цветового охвата, в том числе и для выполнения интерполяции цветов. В компьютерной графике обычно используются модели RGB, CMY(K),
YCbCr, HSV, HLS и CIE L*a*b*.
Яркость – часть светового потока, который отражается от предмета и попадает на сетчатку глаза. Численно равна отношению силы света источника в
рассматриваемом направлении к площади проекции светящейся или отражающей свет поверхности на плоскость, перпендикулярную этому направлению.
Освещённость – мощность светового потока, падающего на единицу
площади поверхности. Измеряется в люксах (лк).
Светлота – субъективное ощущение, которое вызывают предметы, сильнее или слабее отражающие свет. Ощущения светлоты при просмотре изображения обычно имеют три ступени: света, полутона, тени.
Цветовой тон – преобладающая длина волны в спектре излучения.
Насыщенность (чистота тона) – доля присутствия белого цвета. В спектрально чистом цвете примесь белого отсутствует.
Ахроматические цвета – неокрашенные: белый, серый, черный. Они (в
отличие от хроматических) характеризуются только одной величиной – светлотой. Насыщенность равна нулю, цветовой тон белый. Эти цвета оказывают
одинаковое действие на все три приемника глаза. Степень "серости" может зависеть или не зависеть от источника света.
Цвет можно синтезировать двумя принципиально разными методами –
аддитивным и субтрактивным (рисунок 4.1.3). Аддитивный синтез цвета предполагает получение цвета смешением излучений. Аддитивный синтез применяется и при измерении цвета специальными приборами – колориметрами. В аддитивном синтезе под белым цветом мы понимаем смешение основных излучений в максимальном количестве, а чёрный цвет – полное отсутствие излучений.
При субтрактивном синтезе компоненты излучения попадают в глаз не напрямую, а преобразуясь оптической средой – окрашенной поверхностью. Ее окраска выполняет функцию преобразователя энергии излучения источника света.
Отражаясь от нее или проходя насквозь, одни лучи ослабляются сильнее, другие слабее. В результате баланс попавших на сетчатку глаза излучений изменяется, что вызывает ощущение цвета.
Рисунок 4.1.3. – Аддитивный и субтрактивный синтез цвета.
22
Трехмерное пространство для геометрического изображения цвета принято называть цветовым пространством. В цветовой системе координат каждый
цвет выражается через основные цвета этой системы, причем они должны быть
линейно независимы (то есть ни один из них не должен получаться сложением
двух других).
Рисунок 4.1.4. – Локус в координатах стандартной
колориметрической системы XYZ
Линия в плоскости, являющаяся геометрическим местом точек цветности
монохроматических излучений, и замкнутая линией пурпурных, называется локусом (от лат. locus – место) (рисунок 4.1.4.).
Внутри локуса находятся все реальные цвета. Вне локуса лежат воображаемые цвета, более насыщенные, чем спектральные, выраженные в данной
колориметрической системе (базовые цвета в системе XYZ нереальные). Площадь, ограниченная локусом и замыкающей его линией пурпурных цветов,
называется полем реальных цветов. Точка белого (x=0.33, y=0.33)
4.2. Цветовые модели компьютерной графики
Назначение цветовой модели – дать средства описания цвета в пределах
некоторого цветового охвата, в том числе и для выполнения интерполяции цветов. Цветовые модели можно разбить на три группы: перцепционные (по восприятию), аддитивные (слагательные) и субтрактивные (вычитательные) [1].
Стандарт RGB – стандарт для синтеза цветов и название соответствующей цветовой палитры. Это первая стандартная колориметрическая система.
Она была принята в 1931 году на VIII сессии Международной комиссии по
освещению – МКО (или CIE – от французского названия Commission
Internationale de L'Eclairage). В качестве трёх линейно независимых цветов выбраны монохроматические красный (red (λ=700 нм) – легко выделяемый красным светофильтром из спектра лампы накаливания), зелёный (green (λ=546,
23
1 нм) – линия «е» в спектре ртутной лампы) и синий (blue, (λ =435,8 нм) – линия «g» в спектре ртутной лампы). Палитра применяется для аддитивного смешивания цветов. Впервые систему, похожую на RGB, применил для смешивания цветов Томас Юнг (1773–1829 г.). Для того чтобы смешиванием компонент
R, G и B получить белый цвет, яркости соответствующих источников не должны быть равны друг другу, а находиться в пропорции:
LR : LG : LB = 1 : 4.5907 : 0.0601
(4.2.1)
Цветовой куб стандарта RGB показан на рисунке 4.2.1. Система RGB
имеет неполный цветовой охват – многие цвета от зелёного до синего, включая
все оттенки голубого, не могут быть представлены в этой модели. Стандарт
RGB в настоящее время принят практических для всех излучающих устройств
графического вывода (телевизоры, мониторы, плазменные панели и др.)
Рисунок 4.2.1. – Трёхмерное представление синтезированных
цветов в модели RGB
Стандарт CMY – субтрактивная цветовая модель, где в качестве основных приняты голубой (cyan), пурпурный (magenta), и жёлтый (yellow). Комбинирование этих красителей, наносимых на белую поверхность, позволяет получить цвета в диапазоне, указанном на рисунке 7.2.2. Модель в основном используется в полиграфических печатающих устройствах. На практике добиться
чёрного цвета с помощью смешивания сложно, поэтому в принтерах используют ещё и чёрный краситель (black), такую модель называют CMYK. Модель
CMY с добавлением черного цвета носит название CMYK (черный компонент
сокращается до буквы К, поскольку эта краска является главной, ключевой
(Key) в процессе цветной печати).
Цвета модели CMY являются дополнительными к цветам RGB. Дополнительный цвет – цвет, дополняющий данный до белого. Так, дополнительный
для красного – голубой, для зеленого – пурпурный, для синего – желтый (рису24
нок 4.2.2.). Тем не менее, по цветовому охвату эти модели различаются (рисунок 4.2.4.), так что при переходе из одной модели в другую возможны потери
цвета.
Дополнительный цвет – цвет, дополняющий данный до белого. Дополнительный для красного – голубой (зеленый+синий), дополнительный для зеленого – пурпурный (красный+синий), дополнительный для синего – желтый (красный+зеленый) и т.д.
Преобразования между пространствами RGB и CMY определяются следующим образом:
[RGB] = [111] – [CMY]
(4.2.2.)
Причем единичный вектор-строка в модели RGB – представление белого
цвета, а в модели CMY – черного.
Рисунок 4.2.2. – Трёхмерное представление синтезированных цветов
в модели CMY
Цветовая модель Grayscale представляет собой ту же индексированную
палитру, где вместо цвета пикселам назначена одна из 256 градаций серого. На
основе Grayscale легко можно понять строение RGB- и CMYK-файлов.
В RGB для описания цвета используются 24 бита, которые делятся на три
группы по 8 бит (то, что называется в Photoshop каналами). Одна группа используется для хранения в пикселе величины красного цвета, две другие – зеленого и синего. Они могут дать до 16 700 тыс. комбинаций оттенков. Аналогичным образом в CMYK существуют 4 группы, для описания цвета используются 32 bpp. Alpha-каналы, быстрая маска, маски слоев в Photoshop'е имеют совершенно сходную 8-битовую природу, но носят вспомогательный характер и
не влияют на цвет. Обратите внимание, что если RGB имеет стандартные 256
градаций яркости, то в CMYK яркость измеряется в процентах (то есть до 100).
25
Несмотря на большую, чем в RGB цветовую глубину в 32 бита на пиксел, диапазон оттенков CMYK значительно меньше, чем в RGB, так как CMYK является не более, чем имитацией на экране печатных цветов.
YCbCr – аппаратно-ориентированная модель, используемая в телевидении и служащая для сокращения передаваемой полосы частот за счет использования психофизиологических особенностей зрения. В этой модели Y – интенсивность цвета, а Cb и Сr – синяя и красная цветоразностные компоненты. Как
будет показано в дальнейшем, кодирование изображений в этой палитре существенно уменьшает количество информации, требуемой для воспроизведения
изображения без существенной потери его качества. Для преобразования палитры RGB в YCbCr пользуются следующими соотношениями:
Y = 0.299 R + 0.587 G + 0.114 B
Cb = 0.1678 R – 0.3313 G + 0.5 B
Cr = 0.5 R – 0.4187 G + 0.0813 B
(4.2.3.)
(4.2.4.)
(4.2.5.)
Перцепционные цветовые модели. Модели CIE. Модель RGB и модель
CMYK являются аппаратно-зависимыми. Если речь идет об RGB, то значения
базовых цветов (а также точка белого) определяются качеством примененного в
вашем мониторе люминофора. В результате на разных мониторах одно и то же
изображение выглядит неодинаково. Если обратиться к CMYK, то здесь различие еще более очевидно, поскольку речь идет о реальных красках, особенностях печатного процесса и носителя [15].
Поэтому не удивительно, что в конце концов встала задача описания цветов, не зависящего от аппаратуры, на которой эти цвета получены. К сожалению, дать полностью объективное определение цвета не представляется возможным. Цвет – это воспринимаемая характеристика, зависящая от наблюдателя и окружающих условий. Разные люди видят цвета по-разному (например,
художник – иначе, чем непрофессионал). Даже у одного человека зрительная
реакция на цвет меняется с возрастом.
Если восприятие цвета зависит от наблюдателя и условий наблюдения,
то, по крайней мере, можно стандартизировать эти условия. Именно таким путем пошли ученые из Международной Комиссии по Освещению (CIE). В 1931
г. они стандартизировали условия наблюдения цветов и исследовали восприятие цвета у большой группы людей. В результате были экспериментально
определены базовые компоненты новой цветовой модели XYZ. Эта модель аппаратно независима, поскольку описывает цвета так, как они воспринимаются
человеком, при стандартных условиях для наблюдателя.
Цветовая модель L*a*b*, использующаяся в компьютерной графике, является производной от цветовой модели XYZ. Название она получила от своих
базовых компонентов "L", "a" и "b".Компонент "L" несет информацию об яркостях изображения, а компоненты "а" и "b" – о его цветах (т. е. "а" и "b" – хроматические компоненты). Компонент "а" изменяется от зеленого, до красного, а
"b" – от синего, до желтого.
26
Двухмерная диаграмма цветности CIE – цветовой тон и насыщенность
[22].
Смешивая два любых цвета спектра в разной пропорции, мы можем создать любой из цветов, находящийся на прямой линии между ними. Например,
можно получить серый смешиванием сине-зелёного и красного или жёлтозелёного и сине-фиолетового. Дело в том, что глаз не выделяет отдельные световые длины волн, и в то же время различные их комбинации могут выглядеть
как воспринимаемый глазом цвет.
Хотя цветовая модель CIE охватывает весь видимый спектр, она не является основой для задания цвета в цифровом виде. Перцепционные цветовые
модели, которые наиболее известны художникам и дизайнерам, - HLS, HSV.
HSV (Hue – цветовой тон, Saturation – насыщенность, Value – количество света) – модель, ориентированная на человека и обеспечивающая возможность явного задания требуемого оттенка цвета. Подпространство, определяемое данной моделью – цветовой конус (рисунок 4.2.3.), который также часто
рисуют как шестигранный конус.
Рисунок 4.2.3. – Подпространство, определяемое моделью HSV.
По вертикальной оси конуса задается V – светлота, меняющаяся от 0 до 1.
Значению V = 0 соответствует вершина конуса, значению V = 1 – основание
конуса; цвета при этом наиболее интенсивны. Цветовой тон H задается углом,
отсчитываемым вокруг вертикальной оси. В частности, 00 – красный, 600 – желтый, 1200 – зеленый, 1800 – голубой, 2400 – синий, 3000 – пурпурный, т.е. дополнительные цвета расположены друг против друга (отличаются на 180 0).
Насыщенность S определяет насколько близок цвет к "чистому" пигменту и
меняется от 0 на вертикальной оси V до 1 на боковых гранях шестигранного
конуса.
27
Точка V = 0, в которой находится вершина конуса, соответствует черному
цвету. Значение S при этом может быть любым в диапазоне от 0 до 1. Точка с
координатами V = 1, S = 0 – центр основания конуса соответствует белому цвету. Промежуточные значения координаты V при S=0, т.е. на оси конуса, соответствуют серым цветам. Если S = 0, то значение оттенка H считается неопределенным.
Модель HLS: (Hue – цветовой тон, Lightness – светлота, Saturation – насыщенность) – модель, построенная аналогично HSV, в общем, систему HLS
можно представить как полученную из HSV "вытягиванием" точки V=1, S=0,
задающей белый цвет, вверх для образования верхнего конуса, но здесь максимально интенсивные цветовые тона соответствуют значению L=0.5 при S=1.
При L=1 имеем белый цвет, а при L=0 – чёрный.
Рисунок 4.2.4 – Подпространство, определяемое моделью HLS
Большое практическое применение в настоящее время находит система
CIE L*a*b*.
Здесь L – канал яркости, a* и b* – хроматические. Она была рекомендована для расчета цветовых различий Международной организацией по стандартизации (ISO) в 1976 году. Именно это цветовое пространство является "родным" для такого программного пакета, как Adobe Photoshop. Цветовой охват
модели включает цвета RGB и CMYK. Поэтому перевод в модель Lab и из неё
производится без потерь цвета.
Модель RYB – данная субтрактивная модель с первичными цветами redyellow-blue не применяется в компьютерной графике, однако в течение многих
28
веков её использовали художники для смешивания красок. Это интуитивная
модель и по цветовому охвату уступает вышеперечисленным.
4.3. Кодирование цвета (основные определения)
Количество цветов (глубина цвета) – одна из основных характеристик
изображения или устройства графического вывода [18]. Согласно психофизиологическим исследованиям глаз человека способен различать 350 000 цветов.
Однако в компьютерной графике в настоящее время используются изображения
с формально гораздо большей глубиной цвета (16,7 миллиона цветов), тем не
менее, следует учитывать, что для синтезированных цветов на каждый из компонентов цвета в этом случае отводится только 256 градаций, которые достаточно хорошо различимы глазом человека. Классифицируем изображения следующим образом:
1.
бинарные – 1 бит на пиксель – обычно чёрно-белые изображения
2.
полутоновые – 1 байт на пиксель – изображение в градациях серого
3.
Hi Color – 16 бит на пиксель – 65536 цветов
4.
True Color – 24 бита на пиксель – 16,7 млн. цветов
5.
иные: 32, 48 и др. бит на пиксель.
Палитра (palette) – набор цветов, используемых в изображении или при
отображении видеоданных. Палитру можно воспринимать как таблицу кодов
цветов (обычно в виде RGB – троек байтов). Палитра устанавливает взаимосвязь между кодом цвета и его компонентами в выбранной цветовой модели.
Палитра может принадлежать изображению, части изображения, операционной
системе или видеокарте.
5. Форматы графических файлов
5.1. Растровые графические форматы
BMP – самый простой растровый формат. Является родным форматом
Windows, он поддерживается всеми графическими редакторами, работающими
под ее управлением [11].
В BMP данные о цвете хранятся только в модели RGB, поддерживаются
как индексированные цвета (до 256 цветов), так и полноцветные изображения,
причем в режиме индексированных цветов возможна простейшая компрессия
RLE (Run Length Encoding – кодирование с переменной длиной строки).
Примерно такими же возможностями, как BMP, обладает и формат PCX,
разработанный еще на заре компьютерной эпохи фирмой Z-Soft специально для
своего графического редактора PC PaintBrush под операционную систему MSDOS. Изображения в формате PCX можно посмотреть большинством программ
под DOS, в том числе и внутренним просмотрщиком Norton Commander
Формат GIF, предложенный фирмой CompuServe в далеком 1987 году.
Отличительной его особенностью является использование режима индексированных цветов (не более 256). Формат GIF часто используется в веб-дизайне,
29
для сохранения многочисленных элементов оформления страничек. Небольшие размеры файлов изображений обусловлены применением алгоритма сжатия без потерь качества LZW, благодаря чему изображения в этом формате
наиболее удобны для пересылки по все еще узким каналам связи глобальной
сети. К числу его самых заметных отличий относятся возможность использования режима постепенного проявления изображения (interleaved), в этом режиме
строки изображения выводятся на экран не подряд, а в определенном порядке:
сначала каждая 8-я, затем – 4-я и т.д. Таким образом, полностью изображение
показывается в четыре прохода, что позволяет еще до полной загрузки изображения понять его суть, и, в случае необходимости, прервать его закачку.
Основное ограничение формата GIF состоит в том, что цветное изображение может быть записано только в режиме 256 цветов. Для полиграфии этого
явно недостаточно.
Формат PNG сжимает графическую информацию без потерь качества,
используя алгоритм Deflate, в отличие от GIF или TIFF сжимает растровые
изображения и по горизонтали, и по вертикали, что обеспечивает более высокую степень сжатия и поддерживает цветные фотографические изображения
вплоть до 48-битных включительно. Формат PNG позволяет создавать изображения с 256 уровнями прозрачности за счет применения дополнительного альфа-канала с 256 градациями серого. ОН имеет двумерную чересстрочную развертку и встроенную гамма-коррекцию, позволяющую сохранять изображения,
яркость которых будет неизменна на любых машинах PC. Он хорош для публикации высококачественной растровой графики в интернете. Но уступает в
мелких элементах оформления веб-страниц, таких, как кнопки, рамки ит.п.
Объем описания палитры цветов сопоставим с размером самого изображения.
Формат JPEG – самый популярный для хранения фотографических
изображений . Данный формат является общепризнанным стандартом в интернете. JPEG может хранить только 24-битовые полноцветные изображения. Одноименный с форматом, достаточно сложный алгоритм сжатия основан на особенностях человеческого зрения (используется представление блока пикселей
8х8 одним цветом с сохранением информации о яркости плюс метод Хаффмана
и, в зависимости от степени компрессии, некоторые другие ухищрения).
Хотя JPEG отлично сжимает фотографии, но это сжатие происходит с потерями и портит качество, тем не менее, он может быть легко настроен на минимальные, практически незаметные для человеческого глаза, потери. Кстати,
усилить сжатие и минимизировать потери качества можно, предварительно
размыв изображение (например, применив фильтр blur). Однако не стоит использовать формат JPEG для хранения изображений, подлежащих последующей обработке, так как при каждом сохранении документа в этом формате процесс ухудшения качества изображения носит лавинообразный характер. Наиболее целесообразно будет корректировать изображение в каком-нибудь другом
подходящем формате, например TIFF, и лишь по завершению всех работ окончательная версия может быть сохранена в JPEG. Таким образом, можно сохра30
нить вполне приемлемое качество изображения при минимальном размере итогового файла.
Формат JPEG пригоден в подавляющем большинстве случаев только для
публикации полноцветных изображений, типа фотографических, в интернете.
Формат TIFF был разработан компанией Aldus как универсальный формат для хранения растровых изображений, TIFF достаточно широко используется в издательских системах, требующих изображения наилучшего качества.
Возможность записи изображений в формате TIFF является одним из признаков
высокого класса современных цифровых фотокамер.
Формат PSD является стандартным форматом пакета Adobe Photoshop и
отличается от большинства обычных растровых форматов возможностью хранения слоев (layers). Он содержит много дополнительных переменных и сжимает изображения, используя алгоритм сжатия без потерь RLE Packbits, иногда
даже сильнее, чем PNG (только в тех случаях, когда размеры файла измеряются
не в килобайтах, а в десятках или даже сотнях мегабайт). Формат поддерживает
глубины цвета, вплоть до 16 бит на канал (48-битные цветные и 16-битные черно-белые), а также альфа-каналы, слои, контуры, прозрачность, векторные
надписи и т. п. Прекрасно подойдет для переноса или хранения изображений,
содержащих специфические, свойственные только Adobe Photoshop, элементы.
Файлы PSD свободно читаются большинством популярных просмотрщиков.
5.2. Векторные графические форматы
Стандартом стали файловые форматы двух наиболее популярных профессиональных графических пакетов – Adobe Illustrator и CorelDRAW [14].
Первый из них, AI, поддерживают практически все программы, связанные с векторной графикой. Этот формат является наилучшим посредником при
передаче изображений из одной программы в другую. Он отличается наибольшей стабильностью и совместимостью с языком PostScript, на который ориентируются практически все издательско-полиграфические приложения.
Формат CDR, основной рабочий формат популярного пакета
CorelDRAW, являющимся лидером в классе векторных графических редакторов на платформе РС. В этом формате применяется раздельная компрессия для
векторных и растровых изображений, в нем внедрятся шрифты, файлы CDR
имеют огромное рабочее поле 45х45 метров, поддерживается многостраничность.
Adobe PostScript – язык описания страниц (язык управления лазерными
принтерами) фирмы Adobe. Был создан в 80-х годах для реализации принципа
WYSIWYG (What You See is What You Get). Файлы этого формата фактически
представляют собой программу с командами на выполнение для выводного
устройства. Они имеют расширение .ps или, реже, .prn и получаются с помощью функции Print to File графических программ при использовании драйвера
PostScript-принтера. Такие файлы содержат в себе сам документ (только то, что
располагалось на страницах), все связанные файлы (как растровые, так и векторные), использованные шрифты, а так же другую информацию: цветоделе31
ние, дополнительные платы, линиатуру растра и форму растровой точки для
каждой платы, и другие данные для выводного устройства. Если файл закрыт
правильно, не имеет значения, на какой платформе он делался, были использованы шрифты True Type или Adobe Type 1 – все равно.
Растровые данные, как правило, записываются в двоичной кодировке
(Binary). Бинарный код занимает вдвое меньше места, чем ASCII. Кодировка
ASCII иногда требуется для передачи файлов через сети, для кроссплатформенного обмена, для печати через последовательные кабели. В приведенных случаях двоичная кодировка может исказиться (что сделает файл нечитаемым) или
вызвать "странное" поведение файл-сервера. Эти проблемы давно изжиты в современных системах, но старые компьютеры и серверы бывают им подвержены. Сказанное относится ко всем форматам, основанным на языке PostScript:
EPS и PDF, которые описываются ниже.
Формат Encapsulated PostScript можно назвать самым надежным и универсальным способом сохранения данных. Он использует упрощенную версию
PostScript: не может содержать в одном файле более одной страницы и не сохраняет ряд установок для принтера. Как и в файлы печати PostScript, в EPS записывают конечный вариант работы, хотя такие программы, как Adobe
Illustrator и Adobe Photoshop могут использовать его как рабочий. Формат EPS
предназначен для передачи векторов и растра в издательские системы, создается почти всеми программами, работающими с графикой. Использовать его имеет смысл только тогда, когда вывод осуществляется на PostScript-устройстве.
EPS поддерживает все необходимые для печати цветовые модели, например
Duotone или RGB, обтравочный контур, информацию и треппинге и растрах,
внедренные шрифты. В формате EPS сохраняют данные в буфере обмена
(Clipboard) программы Adobe для обмена между собой.
Вместе с файлом можно сохранить эскиз (image header, preview). Это копия низкого разрешения в формате PICT, TIFF, JPEG или WMF, которая сохраняется вместе с файлом EPS и позволяет увидеть, что внутри, поскольку открыть файл на редакцию могут только Photoshop и Illustrator. Все остальные
импортируют эскиз, подменяя его при печати на PostScript-принтере оригинальной информацией. На принтере, не поддерживающем PostScript, выводится
на печать сам эскиз. Если вы работаете на Photoshop для Макинтош, сохраняйте
эскизы в формате JPEG, остальные маковские программы сохраняют эскизы в
формате PICT. Эти и JPEG-эскизы не могут использовать Windowsприложения. Если вы работаете на PC или не знаете, где будет использоваться
файл, сохраняйте эскиз в формате TIFF (когда предоставляется выбор).
CorelDRAW так же предлагает для эскиза векторный формат WMF, стоит очень
осторожно пользоваться этим детищем Microsoft – до добра не доведет.
Изначально EPS разрабатывался как векторный формат, позднее появилась его растровая разновидность – Photoshop EPS. Кроме типа эскиза (TIFF,
PICT, JPEG) Photoshop дает возможность выбрать способ кодирования данных.
ASCII, Binery и JPEG. Первые два описывались выше, на JPEG стоит остановиться.
32
EPS имеет много разновидностей, что зависит от программы-создателя.
Самые надежные EPS создают программы производства Adobe Systems:
Photoshop, Illustrator, InDesign. С 1996 года программы Adobe имеют встроенный интерпретатор PostScript, поэтому могут открывать EPS и редактировать
их. Эта возможность представляется мне очень важной. Остальные графические редакторы открывать EPS не могут, мало того, создаваемые ими EPSфайлы иногда оказываются, мягко говоря, особенными. Среди самых проблемных Quark EPS, создаваемый функцией Save Page As EPS и FreeHand editable
EPS, создаваемый функцией Save As. Не стоит особенно доверять Corel’овским
EPS версии 6 и ниже и EPS из CorelXARA. У EPS-файлов из CorelDRAW 7 и
выше сохраняется проблема добавления полей к Bounding Box (условный прямоугольник в PostScript, описывающий все объекты на странице). Прежде, чем
экспортировать из CorelDRAW, CorelXARA и, в меньшей степени, из
FreeHand'а EPS-файлы стоит конвертировать многие эффекты программ (полупрозрачные заливки, например) в растровые или простые векторные объекты.
Толстые контуры (более 2 pt), возможно, имеет смысл конвертировать в так же
объекты, когда программа дает такую возможность. Проверить EPS-файл можно Adobe Illustrator'ом, если он открывает – значит все в порядке [11].
Формат PDF предложен фирмой Adobe как независимый от платформы
формат для создания электронной документации, презентаций, передачи верстки и графики через сети.
PDF-файлы создаются путем конвертации из PostScript-файлов или функцией экспорта ряда программ. Photoshop и Illustrator могут создавать одностраничные файлы PDF. Illustrator 8, как это ни странно для программы Adobe, имеет проблему со встраиванием шрифтов. Photoshop же выпускает PDF отличного
качества. Многостраничные PDF могут создавать InDesign, FreeHand 7–9,
PDFWriter и Acrobat Distiller некоторые другие программы. PDFWriter работает
как виртуальный принтер. Он не основан на PostScript и не может корректно
обрабатывать графику, PDFWriter предназначен для быстрого изготовления
простых текстовых документов. У него наблюдается та же проблема со встраиванием шрифтов, что и у Illustrator'а. FreeHand, так же, не может внедрять
шрифты. Самые надежные и максимально близкие к оригиналу PDF создает из
PostScript и EPS-файлов программа Acrobat Distiller, поставляемая в пакете
Adobe Acrobat и вместе и PageMaker'ом.
PDF первоначально проектировался как компактный формат электронной
документации. Поэтому все данные в нем могут сжиматься, причем к разным
типам информации применяются разные, наиболее подходящие для них типы
сжатия: JPEG, RLE, CCITT, ZIP (похожее на LZW и известное еще как Deflate).
Программа Acrobat Exchange 3 (которая в 4-й версии стала называться просто
Acrobat 4.0) позволяет расставлять гиперссылки, заполняемые поля, включать в
файл PDF видео и звук, другие действия.
PDF все больше используется для передачи по сетям в компактном виде
графики и верстки. Он может сохранять всю информацию для выводного
33
устройства, которая была в исходном PostScript-файле. Это касается PDF версий 3 и 4.
Текстовый формат RTF (Microsoft Rich Text Format) попал сюда за свои
неординарные способности к переносу текстов из одной программы в другую.
Он позволяет передавать форматированный текст из программ оптического
распознавания символов или текстовых редакторов в графические программы
или в любых других направлениях. RTF может оказаться хорошим решением
(а, иногда, и единственным выходом) при переброске из программы в программу нелатинского, например, ивритского текста или русского в Windows 95/98
Hebrew Edition.
6. Методы компрессии и сжатия изображений
В самом начале разделим существующие методы сжатия изображений на
две условные категории – на архивацию (сжатие), и на компрессию (конвертирование). Разница между этими способами в том, что второй не подразумевает
полного восстановления исходного сохраненного изображения в полном качестве [20].
Вначале рассмотрим несколько алгоритмов сжатия данных, которые не
вносят изменения в исходные файлы и гарантируют полное восстановление
данных.
RLE (Run – length encoding) – метод сжатия данных, при котором одинаковые последовательности одних и тех же байт заменяются однократным упоминанием повторяющегося байта (или целой цепочки байтов), и числа его повторений в исходных данных. Например, строка типа 0100 0100 0100 0100 0100
0100 0100 0100, описывающая некую группу пикселов будет заменена на запись типа 0100 х 8, и т.д. Применяется этот тип сжатия в тех случаях, когда
изображение имеет большие участки одинакового цвета, цифровое представление которых идентично. В основном, этот тип сжатия применим для монохромных изображений, сохраненных в цветовой модели Bitmap, где при сжатии данных с его использованием можно добиться наилучших результатов. Для сжатия
других типов данных (в том числе, и не графических) алгоритм применим, но
малоэффективен, так как сжимаемые данные должны иметь простую повторяющуюся структуру). Этот алгоритм имеет еще одно важное преимущество, заключающееся в его относительной простоте, что позволяет быстро производить
распаковку из этого формата и упаковку в этот формат (как вы помните, все
графические данные для их обработки должны быть предварительно распакованы, а любая компрессия или архивация применяется, в основном, для временного или постоянного хранения файла). В принципе, на основе этого несложного алгоритма, работают более совершенные и более сложные (а также,
менее быстрые) методы упаковки графических данных, которые мы рассмотрим ниже. Этот метод сжатия графических данных используется в файлах формата PSD, BMP и других.
CCITT Group 3, CCITT Group 4 – Два похожих метода упаковки графических данных, работающие с однобитными изображениями, сохраненными в
34
цветовой модели Bitmap. Основаны на поиске и исключении из исходного
изображения дублирующихся последовательностей данных (как в предыдущем
типе сжатия, RLE). Различием является лишь то, что эти алгоритмы ориентированы на упаковку именно растровой графической информации, так как работают с отдельными рядами пикселов в изображении. Изначально алгоритм был
разработан для сжатия данных, передаваемых через факсимильные системы
связи (CCITT Group 3), а более совершенная разновидность этого метода архивации данных (CCITT Group 4) подходит для записи монохромных изображений с высокой степенью сжатия. Как и предыдущий алгоритм, он, в основном,
подходит для сжатия изображений с большими одноцветными областями. Его
достоинством является скорость выполнения, а недостатком – ограниченность
применения для компрессии графических данных (не все данные удается, таким
образом, эффективно упаковать). Этот метод сжатия графических фанных испольуется в файлах формата PDF, PostScript и других.
LZW (Lemple-Zif-Welch) – алгоритм архивации, основанный на поиске и
замене в исходном файле одинаковых последовательностей данных, для их исключения, и уменьшения размера архива. В отличие от предыдущих рассмотреных методов сжатия, в данном случае производится более интеллектуальный
просмотр сжимаемого одержимого, для большей степени сжатия данных. Данный тип компрессии не вносит искажений в исходный графический файл, и
подходит для сжатия растровых данных любого типа – монохромных, черно белых, или полноцветных. Наилучшие результаты получаются при компрессии
изображений с большими областями одинакового цвета или изображений с повторяющимися одинаковыми структурами. Этот метод позволяет достичь одну
из наилучших степеней сжатия среди других существующих методов сжатия
графических данных, при полном отсутствии потерь или искажений в исходных
файлах. Этот метод сжатия графических фанных испольуется в файлах формата
TIFF, PDF, GIF, PostScript и других.
ZIP – метод сжатия данных, аналогичный методу, использованному в популярном алгоритме архивации PKZip. В основу метода сжатия положен метод,
аналогичный LZW. Как и предыдущий метод сжатия данных, этот способ не
вносит искажений в исходный файл, и лучше всего подходит для компрессии
графических данных с одинаковыми одноцветными или повторяющимися областями. Этот метод сжатия графических фанных испольуется в файлах формата PDF, TIFF и некоторых других.
А теперь рассмотрим алгоритмы и методы сжатия данных, которые вносят изменения в исходные файлы, показывая при этом более высокую степень
упаковки графических изображений.
JPEG (Joint Photographic Experts Group) – метод, используемый для хранения полутоновых и полноцветных изображений, позволяющий добиться
наивысшей степени сжатия и минимальный размер выходного файла. Основан
алгоритм на особенностях восприятия человеческим глазом различных цветов,
и достаточно громоздок с вычислительной точки зрения, так как занимает много процессорного времени. Происходит кодирование файла в несколько этапов.
35
Во-первых, изображение условно разбивается на несколько цветовых каналов,
для дальнейшего анализа. Затем, изображение разбивается на группы, по 64
пиксела в каждой группе, которые представляют собой квадратные участки
изображения размером 8х8 пикселов, для дальнейшей обработки. Затем, цвет
пикселов специальным образом кодируется, исключается дублирующая и избыточная информация, причем при описании цвета большее внимание уделяется скорее яркостной, чем цветовой составляющей, так как человеческий глаз
воспринимает больше изменения яркости, чем конкретного цветового тона. Полученные данные сжимаются по RLE или LZW – алгоритму, для получения еще
большей компрессии. В результате, на выходе мы получаем файл, иногда в десятки раз меньший, чем его несжатый аналог. Однако, чем меньше размер выходного файла, тем меньше степень аккуратности при работе программы - конвертора, и, соответственно, ниже качество выходного изображения. Обычно, в
программах, позволяющих сохранять растровые данные, возможно задание некоего компромисса между объемом выходного файла и качеством изображения.
При наивысшем качестве, объем выходного файла в 3-5 раз меньше исходного
незапакованного. При наименьшем – меньше исходника в десятки раз, при этом
качество изображения не позволяет его где-либо использовать. Как правило,
для сохранения достойного уровня качества, используют наивысшую из возможных степеней качества. Данный формат предназначен для хранения, в основном, фотографических изображений с большим количеством оттенков и
цветовых переходов, и практически не подходит для хранения однотонных
изображений типа кадров из мультфильмов (сжатие будет слишком низким,
или качество картинки окажется просто неприлично низким). Этот метод сжатия графических данных испольуется в файлах формата PDF, PostScript, собственно, JPEG и других.
Метод сжатия Хаффмана (Huffman) разработан в 1952 году и используется как составная часть в ряде других схем сжатия, таких как LZW, Дефляция,
JPEG. В методе Хаффмана берется набор символов, который анализируется,
чтобы определить частоту каждого символа. Затем для наиболее часто встречающихся символов используется представление в виде минимально возможного количества битов. Например, буква "е" чаще всего встречается в английских текстах. Используя кодировку Хаффмана, вы можете представить "е" всего лишь двумя битами (1 и 0), вместо восьми битов, необходимых для представления буквы "е" в кодировке ASCII.
Изменение разрешения растрового файла. Файл с разрешением 600 точек
на дюйм больше своего аналога разрешением в 300 точек в четыре раза, а качество печати при повышенном разрешении не всегда будет выше, нем при номинальном его значении. Так что если разрешение избыточно, можете его понизить. Понижение разрешения растрового файла – необратимый процесс, и никакя интерполяция потом потерянные пикселы не восстановит. Так что при задании необходимого разрешения также будьте внимательны и рациональны.
Следует учесть, что параметр разрешения контуров применительно к векторной
графике не имеет отношения к объему выходного файла (это уже несколько
36
другое разрешение и несколько другое понятие), а влияет на аккуратность
"прорисовки" вектора при его растеризации в устройстве, где производится печать. Так что уменьшение этого параметра для векторной графики не уменьшит
объем ваших файлов, а только ухудшит качество печати.
Ресемплирование (изменение глубины цвета растрового изображения) –
это изменение начальной глубины цвета файла. Некоторые оцифровывающие
устройства выдают растровую информацию с глубиной цвета, превышающую
достаточное для печати значение 8 бит на канал. Это иногда оправдано, так как
большее значение бит на канал позволяет задавать большее число градаций
цвета, что требуется, например, при сильной, "кардинальной" цветокоррекции –
сильном осветлении или затенении отдельных участков. Однако, в большинстве случаев для хранения растровых данных в различных цветовых моделях с
лихвой достаточно глубины цвета 8 бит на канал. Кроме того, один из стандартов JPEG - сжатия для RGB изображений подразумевает использование разного
количества бит для разных цветовых составляющих (наименьшее количество
бит используется для зеленого канала, так как человеческий глаз различает в
нем минимальное число оттенков). Также большинство фильтров Adobe
Photoshop рассчитано на работу с изображениями с глубиной цвета именно 8
бит (с изображением, использующим нестандартную глубину цвета, становится
практически невозможно работать, так как большинство фильтров рассчитаны
на значение глубины цвета в 8 бит).
Для различных типов изображений, которые могут быть составляющими
частями файла PostScript – полноцветные (color bitmap), полутоновые чернобелые (grayscale) и для штриховых объектов (bitmap, 1 bit per pixel) указаны
различные установки параметров сжатия, являющиеся оптимальными для создания PDF - документа, оптимизированного для печати и сжатого с минимальными потерями качества. В качестве параметра сжатия изображения выбрана
альтернатива JPEG с максимально возможным качеством. Выходное разрешение растровых полноцветных изображений выбрано не более 300 точек на
дюйм. И в случае превышения указанного предельного разрешения к изображению будет применен алгоритм бикубической интерполяции с понижением
разрешения (bicubic downsampling) – это наиболее медленный, но и наиболее
качественный алгоритм интерполяции, т. е. получения пиксела на основе цветов окружающих этот пиксел участков. Кроме этого алгоритма, возможно указать алгоритмы Average downsampling (усреднение значения цвета пикселов) и
Subsampling (полное отсутствие интерполяции, берется один из пикселов, и его
цвет устанавливается как увет всего участка изображения). Естественно, последний вариант работает быстрее всех, но и с наименьшим качеством выходного изображения. Для черно – белых полутоновых изображений (grayscale)
установки интерполояции, предельного разрешения и метода сжатия аналогичны предыдущему примеру. Для монохромных изображений, заданных в цветовой модели Bitmap с глубиной цвета 1 бит на пиксел параметры несколько другие.
37
7. Методы улучшения растровых изображений
Рассмотрим некоторые из существующих методов улучшения качества
изображений, которые основываются на субъективном восприятии разрешающей способности и количества цветов. При одних и тех же значениях технических параметров устройства графического вывода можно создать иллюзию увеличения разрешающей способности или количества цветов. Причем субъективное улучшение одной характеристики происходит за счет ухудшения другой.
7.1 Устранение ступенчатого эффекта
В растровых системах при невысокой разрешающей способности (меньше 300 dpi) существует проблема ступенчатого эффекта (aliasing). Этот эффект
особенно заметен на наклонных линиях – при большом шаге сетки растра пиксели образуют как бы ступени лестницы [21].
Рисунок 7.1.1. – Ступенчатый эффект aliasing
Рассмотрим это на примере отрезка прямой линии. Вообще говоря, растровое изображение объекта определяется алгоритмом закрашивания пикселей,
соответствующих площади изображаемого объекта. Различные алгоритмы могут дать существенно отличающиеся варианты растрового изображения одного
и того же объекта. Можно сформулировать условие корректного закрашивания
следующим образом – если в контур изображаемого объекта попадает больше
половины площади ячейки сетки растра, то соответствующий пиксель закрашивается цветом объекта (С), иначе – пиксель сохраняет цвет фона (Сф).
На рисунке 7.1.2. показано растровое изображение толстой прямой линии,
на которое для сравнения наложен идеальный контур исходной линии.
Рисунок 7.1.2. – Растровое изображение толстой прямой линии
Устранение ступенчатого эффекта называется по-английски antialiasing.
Для того чтобы растровое изображение линии выглядело более гладким, можно
38
цвет угловых пикселей «ступенек лестницы» заменить на некоторый оттенок,
промежуточный между цветом объекта и цветом фона. Будем вычислять цвет
пропорционально части площади ячейки растра, покрываемой идеальным контуром объекта. Если площадь всей ячейки обозначить как S, а часть площади,
покрываемой контуром, – Sx, то искомый цвет равен
Cx 
C  S x  Cф  ( S  S x )
S
(7.1.1.)
На рисунке 7.1.3 показано сглаженное растровое изображение, построенное указанным выше методом.
Рисунок 7.1.3. – Сглаженное растровое изображение
Методы получения сглаженных растровых изображений можно разделить
на две группы. Первую группу составляют алгоритмы генерации сглаженных
изображений отдельных простейших объектов – линий, фигур, а другую группу
методов сглаживания составляют методы обработки уже нарисованного изображения.
Для сглаживания растровых изображений часто используют алгоритмы
цифровой фильтрации. Один из таких алгоритмов – локальная фильтрация. Она
осуществляется путем взвешенного суммирования яркостей пикселей, расположенных в некоторой окрестности текущего обрабатываемого пикселя. Можно представить себе, что в ходе обработки по растру скользит прямоугольное
окно, которое выхватывает пиксели, используемые для вычисления цвета некоторого текущего пикселя. Если окрестность симметрична, то текущий пиксель
находится в центре окна.
Рисунок 7.1.4. – Локальная фильтрация
39
Базовую операцию такого фильтра можно представить так:
Fx , y
1 imax


K i  imin
j max
P
j  j min
x  j, y i
 M i imin , j  j max
(7.1.2.)
где Р – значение цвета текущего пикселя;
F – новое значение цвета пикселя;
К – нормирующий коэффициент;
М – двумерный массив коэффициентов, который определяет свойства
фильтра (обычно этот массив называют маской).
Размеры окна фильтра: ( ( jmax  jmin  1) по горизонтали и (imax  imin  1) по
вертикали. При imin , jmin  1 и imax , jmax  1 имеем фильтр с окном 3x3, который
часто используется на практике.
Для обработки всего растра необходимо произвести указанные выше вычисления для каждого пикселя. Если в ходе обработки новые значения цвета
пикселей записываются в исходный растр и вовлекаются в вычисления для очередных пикселей, то такую фильтрацию называют рекурсивной. При нерекурсивной фильтрации в вычисления вовлекаются только прежние значения цвета
пикселей. Нерекурсивность можно обеспечить, если новые значения записывать в отдельный массив.
При сглаживании цветных изображений можно использовать модель
RGB и производить фильтрацию по каждой компоненте.
С помощью локальной цифровой фильтрации можно выполнять достаточно разнообразную обработку изображений – повышение резкости, выделение контуров и многое другое.
7.2. Дизеринг
Хорошо, когда растровое устройство отображения может прямо воссоздавать тысячи цветов для каждого пикселя [21]. Не так давно это было проблемой даже для компьютерных дисплеев (а точнее – для видеоадаптеров). Современные растровые дисплеи достаточно качественно отображают миллионы
цветов, благодаря чему без проблем можно отображать цветные фотографии.
Но для растровых устройств, которые печатают на бумаге, положение совсем
другое. Устройства печати обычно имеют высокую разрешающую способность
(dpi), часто на порядок большую, чем дисплеи. Однако нельзя непосредственно
воссоздать даже сотню градаций серого для пикселей черно-белых фотографий,
не говоря уже о миллионах цветов. Вы можете возразить, что в любой газете
или журнале мы видим иллюстрации. Возьмите лупу и посмотрите, например,
на изображение любой напечатанной фотографии. В большинстве случаев
можно увидеть, что оттенки цветов (для цветных изображений) или полутоновые градации (для черно-белых) имитируются комбинированием, смесью точек.
Чем качественнее полиграфическое оборудование, тем меньше отдельные точки и расстояние между ними.
40
Иногда отдельные точки на фотографии нельзя различить даже с помощью лупы, что может быть в таких случаях – или нам посчастливилось увидеть
печать многими сотнями красок, или разрешающая способность устройства печати очень высокая. Оба варианта пока что не встречаются. Однако, безусловно, с течением времени будут изобретены способы печати если не многими тысячами красок (что маловероятно), то хотя бы красками, которые плавно изменяют свой цвет, или будет изобретена бумага с соответствующими свойствами.
Для устройств печати на бумаге проблема количества красок достаточно
важна. В полиграфии для цветных изображений обычно используют три цветных краски и одну черную, что в смеси дает восемь цветов (включая черный и
белый цвет бумаги). Встречаются образцы печати большим количеством красок
– например, карты, напечатанные с использованием восьми красок, однако такая технология печати намного сложнее. Состояние дел с цветной печатью
можно оценить также на примере относительно простых офисных принтеров.
Недавно появились струйные принтеры с шестью цветными красками вместо
трех. В таких принтерах в состав обычных CMYK-красок добавлены бледноголубая, бледно-пурпурная и бледно-желтая краски (семицветные принтеры). В
шестицветных принтерах отсутствует бледно-желтая краска. Увеличение количества красок значительно улучшило качество печати, однако и этого пока явно
мало.
Если графическое устройство не способно воссоздавать достаточное количество цветов, тогда используют растрирование – независимо от того, растровое это устройство или не растровое. В полиграфии растрирование известно
давно, оно использовалось несколько столетий тому назад для печати гравюр. В
гравюрах изображение создается многими штрихами, причем полутоновые градации реализованы или штрихами различной толщины на одинаковом расстоянии, или штрихами одинаковой толщины с переменной густотою расположения. Такие способы используют особенности человеческого зрения и в первую
очередь – пространственную интеграцию. Если достаточно близко расположить
маленькие точки различных цветов, то они будут восприниматься как одна точка с некоторым усредненным цветом. Если на плоскости густо расположить
много маленьких разноцветных точек, то будет создана визуальная иллюзия закрашивания плоскости некоторым усредненным цветом. Однако если увеличивать размеры точек и (или) расстояние между ними, то иллюзия сплошного закрашивания исчезает – включается другая система человеческого зрения, обеспечивающая нашу способность различать отдельные объекты, подчеркивать
контуры.
В компьютерных графических системах часто используют эти методы.
Они позволяют увеличить количество оттенков цветов за счет снижения пространственного разрешения растрового изображения. Иначе говоря – это обмен
разрешающей способности на количество цветов. В литературе по компьютерной графике такие методы растрирования получили название dithering (дрожание, разрежение).
41
Простейшим вариантом дизеринга можно считать создание оттенка цвета
парами соседних пикселей. Если рассмотреть ячейки из двух пикселей, то ячейка номер 1 дает оттенок цвета:
C
C1  C2
,
2
(7.2.1.)
где С1 и C2 – цвета, которые графическое устройство способно непосредственно воспроизвести для каждого пикселя. Числовые значения С, С1 и C2
можно рассчитать в полутоновых градациях или в модели RGB – отдельно для
каждой компоненты.
Рисунок 7.2.1. – Ячейки из двух пикселей
Рисунок 7.2.2. – Простейший дизеринг
Пример растра с использованием ячеек из двух пикселей приведен выше.
Как видно, для создания промежуточного оттенка «С» ячейки образовывают
вертикальные линии, которые очень заметны. Для того чтобы человек воспринял это как сплошной оттенок, необходимо, чтобы угловой размер ячеек был
меньше одной угловой минуты. Можно изменять положения таких ячеек в растре, располагая их, например, по диагонали. Это несколько лучше, но не намного.
Чаще используют квадратные ячейки больших размеров. Дадим пример
ячеек размером 2х2. Такие ячейки дают 5 градаций, из них три комбинации (1,
2, 3) образуют новые оттенки.
42
Рисунок 7.2.3. – Квадратные ячейки
Расчет цвета, соответствующего одной из комбинаций пикселей в ячейке,
можно выполнить таким образом. Если пиксели ячейки могут быть только двух
цветов С1 и C2, то необходимо подсчитать часть площади ячейки для пикселей
каждого цвета. Цвет ячейки С можно оценить соотношением:
C
C1  S1  C2  ( S  S1 ) S1C1  S 2C2

S
S'
(7.2.2.)
где S – общая площадь ячейки;
S1 и S2 – части площади, занятых пикселями цветов C1 и С2 соответственно, причем S1 + S2 = S.
Проще всего, когда пиксели квадратные, а их размер равен шагу размещения пикселей. Примем площадь одного пикселя за единицу. В этом случае
площадь, занимаемая пикселями в ячейке, равна их количеству.
Рисунок 7.2.4 – Квадратные пиксели по размеру равные шагу размещения
пикселей
S  25, S1  20, S 2  5
C
20C1  5C 2
25
(7.2.3.)
Для такой ячейки 5x5, дадим расчет цвета С для некоторых цветов С1 и
С2.
Пример расчета: пусть С1 – белый цвет (R1G1B1) = (255, 255, 255), а С2 –
черный (R2G2B2) = (0, 0, 0), тогда
 R   ( S 1R1  S 2 R2 ) / S   204 
 
  

C   G    ( S1G1  S 2 G2 ) / S    204 
 B   ( S B  S B ) / S   204 
2 2
   1 1

 
то есть мы получили светло-серый цвет.
43
(7.2.4.)
Самостоятельно определить цвет С: Если С1 – желтый цвет (R1G1B1) =
(255, 255, 0), а С2 – красный (R2G2B2) = (255, 0, 0), C – ?
Ответ: оттенок оранжевого цвета.
Следовательно, если в ячейке размерами (п х п) использованы два цвета,
то с помощью этой ячейки можно получить п2+1 различных цветовых градаций. Две комбинации пикселей – когда все пиксели ячейки имеют цвет С1 или
С2 – дают цвет ячейки соответственно С1, или С2. Все иные комбинации дают
оттенки, промежуточные между С1 и С2. Можно считать, что ячейки размером
(п х п) образовывают растр с разрешающей способностью в п раз меньшей, чем
у исходного растра, а глубина цвета возрастает пропорционально п2.
7.3. Реализация метода «дизеринга» в графической системе
Рассмотрим примеры преобразования растрового изображения размером
p*q с определенной глубиной цвета в другой растр, предназначенный для отображения с помощью графического устройства, в котором используется ограниченное количество основных цветов. В таком случае нужно выбрать размеры
ячейки т*п, которые обеспечивают достаточное количество цветовых градаций. Затем каждый пиксель растра превращается в пиксель растра отображения.
Это можно осуществить двумя способами [21].
Первый способ. Каждый пиксель заменяется ячейкой из т*п пикселей.
Это самое точное преобразование по цветам, но размер растра увеличивается и
равен (тр х nq) пикселей.
Второй способ. Размер растра в пикселях не изменяется, если пиксель
растра отображения образовывается следующим образом:
1. Определяем координаты пикселя (х, у) для преобразуемого растра.
2. Находим цвет пикселя (х, у).
3. По цвету пикселя находим номер (k) ячейки, наиболее адекватно представляющей этот цвет.
4. По координатам (х,у) вычисляем координаты пикселя внутри ячейки:
xk = x mod т; уk = у mod п.
5. Находим цвет (С) пикселя ячейки с координатами (xk , уk).
6. Записываем в растр отображения пиксель (х,у) с цветом С.
Такой способ можно использовать не для любых вариантов расположения
пикселей в ячейках. Конфигурации пикселей должны быть специально разработаны для таких преобразований. Одно из требований можно сформулировать так. Если ячейки разработаны на основе двух цветов, например, белого и
черного, а градации изменяются пропорционально номеру ячейки, то необходимо, чтобы ячейка с номером (i) для более темной градации серого содержала
бы все черные пиксели ячейки номер (i – 1).
Рассмотрим пример изображения, созданного на основе ячеек 5х5. Выбрана небольшая разрешающая способность, чтобы подчеркнуть структуру
изображения. Ячейки образовывают достаточно заметный квадратный растр.
44
Рисунок 7.3.1. – Изображение на основе ячеек 5х5.
Квадратный растр
Для улучшения восприятия изображения можно использовать иное расположение ячеек, например, диагональное, которое можно получить, если
сдвигать четные строки ячеек. Координаты пикселей в этом случае вычисляются следующим образом:
 y 
m
s     mod 2 
 n 
2
xk  ( x  s ) mod m
(7.3.1.)
y k  y mod n
Рисунок 7.3.2 – Изображение на основе
диагонального расположения ячеек
Вы, наверное, уже заметили, что для всех приведенных выше примеров
дизеринга ячейки образовывают точки переменного размера с постоянным шагом. Однако часто используется иной подход – переменная густота расположения точек постоянного размера. Такой способ получил название частотной
модуляции (ЧМ).
Положительная черта способа ЧМ – меньшая заметность структуры растра. Однако его использование затруднено в случае, когда размер пикселей
больше, чем их шаг. Начиная с определенной густоты, пиксели смыкаются.
Кроме того, на дискретном растре невозможно обеспечить плавное изменение
густоты (частоты), в особенности для ячеек небольшого размера. Рассмотрим
пример ячеек 5х5, реализующих ЧМ-дизеринг.
Для изображений, созданных методом ЧМ-дизеринга, наблюдается
меньшая заметность растровой структуры.
45
Рисунок 7.3.3. – Изображения, созданные
методом ЧМ-дизеринга
Однако при регулярном расположении одинаковых ячеек всегда образовывается текстура, муар, лишние контуры. Одна из важных задач – разработка
таких вариантов ячеек, которые предопределяют наименее заметную растровую
структуру (кроме тех случаев, когда, наоборот, такую структуру нужно подчеркнуть для создания изображения в стиле гравюры). Это довольно сложная
задача.
Один из способов создания достаточно качественных изображений – это
диффузный дизеринг (diffused dithering). Суть его в том, что ячейки создаются
случайно (или псевдослучайно). Если для каждой градации создавать случайные ячейки, то даже для фрагмента растра пикселей с постоянным цветом
не будут образовываться регулярные структуры. Это соответствует диффузному отражению света от матовой поверхности.
8. Трехмерная графика
Будем считать, что необходимо смоделировать 3D-объект на 2D плоскости [8].
Упрощенно схему этого процесса можно представить следующей последовательностью действий, указанных на рисунке 8.1.
Локальное пространство
Мировое
пространство
Пространство глаза
Пространство
экрана
Моделирование,
Композиция
составных ча-
Сцена,
Освещение,
Материалы поверхностей.
Удаление невидимых частей картинки.
Отсечение
(clipping),
Растровое преобразование закраски.
Рисунок 8.1. – Схема процесса моделирования
3D-объект на 2D плоскости
Рассмотрим понятие модель – абстрактное представление сущности реального мира, представление некоторых (необязательно всех) свойств объекта,
либо конкретно существующего, либо абстрактного, его особенностей.
46
Задача моделирования – поиск вида (представления) модели, наилучшим образом отвечающего решаемой задаче.
Нам будут более всего интересны геометрические модели, которые естественны для графического представления. Геометрическое моделирование –
моделирование объектов различной природы с помощью геометрических типов
данных.
Моделируются:
· объекты реального мира,
· синтетические объекты (например, научная визуализация).
Компоненты геометрической модели:
· Пространственное расположение и форма – геометрия объекта и некоторые
атрибуты цвет, текстура;
· Топология (связность с другим объектом).
Выбор представления:
· максимизирование возможностей графической подсистемы,
· алгоритмы обработки данных,
· алгоритмы редактирования данных.
Создание моделей:
А) Автоматическое:
· устройства ввода трехмерной информации (например, 3d сканеры),
· реконструкция из изображений (машинное зрение),
· результаты вычислений.
Б) Ручное:
·
системы для моделирования (3D studio MAX, Maya, т.д.)
Рисунок 8.2. – Пример системы моделирования
Система координат. Будем использовать декартову систему координат,
как наиболее распространенную.
47
Рисунок 8.3. – «Правило руки»
Аналитической моделью будем называть описание поверхности математическими формулами. В компьютерной графике можно использовать много разновидностей такого описания. Например, в виде функции двух аргументов z = f (x,
у). Можно использовать уравнение F (х, у, z) = 0.
Зачастую используется параметрическая форма описания поверхности.
Формулы для трехмерной декартовой системы координат (х, у, z):
х =Fx(s, f),
(8.1.)
y = Fy(s,t)
(8.2.)
z = Fz(s,t),
(8.3.)
где s и t – параметры, которые изменяются в определенном диапазоне, а функции Fx, Fy и Fz будут определять форму поверхности.
Преимущества параметрического описания – легко описывать поверхности, которые отвечают неоднозначным функциям, замкнутые поверхности.
Описание можно сделать таким образом, что формула не будет существенно
изменяться при поворотах поверхности, масштабировании [9].
Пример. Рассмотрим аналитическое описание поверхности шара. Сначала как
функцию двух аргументов:
z   R2  x2  y2
(8.4.)
48
Затем в виде уравнения:
х2 + у2 + z2 - R2 = 0.
(8.5.)
А также в параметрической форме:
x  R sin s cos t
y  sin s sin t
z  R cos s
(8.6.)
Для описания сложных поверхностей часто используют сплайны.
Сплайн – специальная функция, более всего пригодная для аппроксимации отдельных фрагментов поверхности. Несколько сплайнов образовывают модель
сложной поверхности. Сплайн – тоже поверхность, но такая, для которой можно достаточно просто вычислять координаты ее точек. Обычно используют кубические сплайны, так как третья степень – наименьшая из степеней, позволяющих описывать любую форму, и при стыковке сплайнов можно обеспечить
непрерывную первую производную – такая поверхность будет без изломов в
местах стыка. Сплайны часто задают параметрически. Запишем формулу для
компоненты x(s,t) кубического сплайна в виде многочлена третьей степени параметров s и t:
x(s,t) = а11 s3t3 + а12 s3t2 + a13 s3t + a14 s3 + a21 s2t3 + a22 s2t2 + а23 s2t + a24 s2 +
+ a31 s t3 + a32 s t2 + а33 s t + a34 s + a41 t3 + a42 t2 + a43 t + a44.
(8.7.)
Cо способами определения коэффициентов aij, для сплайнов, которые
имеют заданные свойства, можно ознакомиться в математической литературе.
Одна из разновидностей сплайнов – кривая Безье.
Рисунок 8.4. – Сплайны
Характеризуя аналитическую модель в целом, можно сказать, что эта модель наиболее пригодна для многих операций анализа поверхностей. С позиций
компьютерной графики можно указать такие положительные черты модели:
49
легкая процедура расчета координат каждой точки поверхности, нормали; небольшой объем информации для описания достаточно сложных форм.
К недостаткам относятся следующие: сложные формулы описания с использованием функций, которые медленно вычисляются на компьютере, снижают скорость выполнения операций отображения; невозможность в большинстве случаев применения данной формы описания непосредственно для построения изображения поверхности. В таких случаях поверхность отображают как
многогранник, используя формулы аналитического описания для расчета координат вершин граней в процессе отображения, что уменьшает скорость сравнительно с полигональной моделью описания.
Рассмотрим векторную полигональную модель. Для описания пространственных объектов в векторной полигональной модели используются такие
элементы: вершины, отрезки прямых (векторы); полилинии, полигоны; полигональные поверхности [8].
Элемент «вершина» (vertex) – главный элемент описания, все другие являются производными. При использовании трехмерной декартовой системы
координаты вершин определяются как (хi, уi, zi). Каждый объект однозначно
определяется координатами собственных вершин.
Точка
Полигон
Вектор
Полилиния
Полигональная поверхность
Рисунок 8.5. – Векторная полигональная модель
Вершина может моделировать отдельный точечный объект, размер которого не имеет значения, а также может использоваться в качестве конечных точек для линейных объектов и полигонов. Двумя вершинами задается вектор.
Несколько векторов составляют полилинию. Полилиния может моделировать
отдельный линейный объект, толщина которого не учитывается, а также может
представлять контур полигона. Полигон моделирует площадный объект. Один
полигон может описывать плоскую грань объемного объекта. Несколько граней
составляют объемный объект в виде полигональной поверхности – многогранник или незамкнутую поверхность (полигональная сетка).
Векторную полигональную модель можно считать наиболее распространенной в современных системах трехмерной компьютерной графики. Ее используют в системах автоматизированного проектирования, в компьютерных
играх и тренажерах, геоинформационных системах и т. д.
50
Пример. Чтобы понять структуры данных, которые используются в векторной полигональной модели, возьмем куб и рассмотрим, как можно организовать описание такого объекта в структурах данных.
Можно использовать несколько способов. Первый способ показан на рисунках 8.6. и 8.7.
ГраньA  ( x A0 , y A0 , z A0 ), ( x A1 , y A1 , z A1 ), ( x A2 , y A 2 , z A2 ), ( x A3 , y A3 , z A3 )
ГраньB  ( xB 0 , yB 0 , z B 0 ), ( xB1 , yB1 , z B1 ), ( xB 2 , yB 2 , z B 2 ), ( xB 3 , yB 3 , z B 3 )
ГраньC  ( xC 0 , yC 0 , zC 0 ), ( xC1 , yC1 , zC1 ), ( xC 2 , yC 2 , zC 2 ), ( xC 3 , yC 3 , zC 3 )
ГраньD  ( xD 0 , yD 0 , zD 0 ), ( xD1 , yD1 , z D1 ), ( xD 2 , yD 2 , z D 2 ), ( xD 3 , yD 3 , z D 3 )
ГраньE  ( xE 0 , yE 0 , z E 0 ), ( xE1 , yE1 , zE1 ), ( xE 2 , yE 2 , z E 2 ), ( xE 3 , yE 3 , z E 3 )
ГраньF  ( xF 0 , yF 0 , z F 0 ), ( xF 1 , yF 1 , z F 1 ), ( xF 2 , yF 2 , z F 2 ), ( xF 3 , yF 3 , z F 3 )
Рисунок 8.6. – Первый способ. Сохраняем все грани в отдельности
Рисунок 8.7. –Схематичное изображение первого способа
В компьютерной программе такой способ описания объекта можно реализовать весьма разнообразно, но принципиально это мало что изменяет – так
или иначе в памяти необходимо сохранять координаты вершин граней плюс некоторую информацию в качестве накладных затрат. Объем памяти, необходимый для описания куба можно рассчитать следующим образом:
П1  6  4  3  Рв
(8.8.)
где Рв – разрядность чисел, необходимая для представления координат.
Шесть граней здесь описываются 24 вершинами. Такое представление избыточно – каждая вершина записана трижды. Не учитывается то, что у граней
есть общие вершины.
51
Для второго способа, варианта координаты восьми вершин сохраняются
без повторов. Вершины пронумерованы, а каждая грань дается в виде списка
индексов вершин (указателей на вершины).
Рисунок 8.8. – Второй способ
В этом случае затраты памяти составят:
П2  8  3  Рв  6  4  Pиндекс
(8.9.)
где Рв – разрядность координат вершин, Риндекс – разрядность индексов.
Третий способ основывается на иерархии: вершины-ребра-грани (в литературе его иногда называют линейно-узловой моделью).
Затраты памяти:
П3  8  3  Рв  12  2  Pинд.вершин  6  4  Ринд. ребер (8.10.)
где Рв – разрядность координат, Ринд
вершин и ребер соответственно.
вершин
и Ринд.ребер – разрядность индексов
Рисунок 8.9. – Третий способ
52
Сравним три способа описания полигональной модели по следующим параметрам:
А) Объем памяти. Для сравнения объемов памяти этих трех вариантов
необходимо определиться с разрядностью данных. Когда разрядность для координат больше, чем для индексов, то ощутимо преимущество второго и третьего
вариантов. Наиболее экономичным можно считать второй вариант. Необходимо заметить, что такой вывод мы сделали для куба. Для других типов объектов
соотношение вариантов может быть иным.
Б) Скорость вывода полигонов. Если для полигонов необходимо рисовать
линию контура и точки заполнения, то первый и второй варианты близки по
быстродействию – и контуры, и заполнения рисуются одинаково. Отличия в
том, что для второго варианта сначала надо выбирать индекс вершины, что замедляет процесс вывода. В обоих случаях для смежных граней повторно рисуется общая часть контура. Для третьего варианта можно предусмотреть более
совершенный способ рисования контура – каждая линия будет рисоваться
только один раз, если в массивах описания ребер предусмотреть бит, означающий, что это ребро уже нарисовано. Это обуславливает преимущества третьего
варианта по быстродействию. Блокирование повторного рисования линий контуров смежных граней позволяет решить также проблему искажения стиля линий, если линии контуров не сплошные, а, например, пунктирные.
В) Топологический аспект. Представим, что имеется несколько смежных
граней. Что будет, если изменить координаты одной вершины в структурах данных? Результат приведен на рисунке 8.10.
Рисунок 8.10. – Топологический аспект
Поскольку для второго и третьего вариантов каждая вершина сохраняется
в одном экземпляре, то изменение ее координат автоматически приводит к изменению всех граней, в описании которых сохраняется индекс этой вершины.
Это полезно, например, в геоинформационных системах при описании соседних земельных участков или других смежных объектов. Следует заметить, что
подобного результата можно достичь и при структуре данных, соответствующей первому варианту. Можно предусмотреть поиск других вершин, координаты которых совпадают с координатами точки А. Иначе говоря, поддержка такой
операции может быть обеспечена как структурами данных, так и алгоритмически. Однако когда нужно разъединить смежные грани, то для второго и третье53
го вариантов это сложнее, чем для первого – необходимо записать в массивы
новую вершину, новые ребра и определить индексы в массивах граней.
Положительные черты векторной полигональной модели:
· удобство масштабирования объектов. При увеличении или уменьшении
объекты выглядят более качественно, чем при растровых моделях описания. Диапазон масштабирования определяется точностью аппроксимации
и разрядностью чисел для представления координат вершин;
· небольшой объем данных для описания простых поверхностей, которые
адекватно аппроксимируются плоскими гранями;
· необходимость вычислять только координаты вершин при преобразованиях систем координат или перемещении объектов;
· аппаратная поддержка многих операций в современных графических видеосистемах, которая обуславливает достаточную скорость для анимации.
Недостатки полигональной модели:
· сложные алгоритмы визуализации для создания реалистичных изображений; сложные алгоритмы выполнения топологических операций, таких,
например, как разрезы;
аппроксимация плоскими гранями приводит к погрешности моделирования.
При моделировании поверхностей, которые имеют сложную фрактальную
форму, обычно невозможно увеличивать количество граней из-за ограничений
по быстродействию и объему памяти компьютера.
Рассмотрим воксельное представление.
Смысл воксельного представления – дискретизация пространства на равномерной сетке.
Воксельная модель – это трехмерный растр. Подобно тому, как пиксели
располагаются на плоскости 2В-изображения, так и вокселы образовывают
трехмерные объекты в определенном объеме. Воксел – это элемент объема
(voxel – volume element).
Каждый пиксель должен иметь свой цвет. Каждый воксел также имеет
свой цвет, а, кроме того, прозрачность. Полная прозрачность воксела означает
пустоту соответствующей точки объема. При моделировании объема каждый
воксел представляет элемент объема определенного размера. Чем больше вокселов в определенном объеме и меньше размер вокселов, тем точнее моделируются трехмерные объекты – увеличивается разрешающая способность.
Для современной компьютерной графики воксельный метод считается
одним из перспективных. Его используют в компьютерных системах для медицины (например, при сканировании томографом) Вокселы используются для
графических устройств отображения, которые создают действительно объемные изображения [9].
54
Рисунок 8.11. – Воксельная модель
Положительные черты воксельной модели:
 позволяет достаточно просто описывать сложные объекты и сцены; простая процедура отображения объемных сцен;
 простое выполнение топологических операций над отдельными объектами и сценой в целом. Например, просто выполняется показ разреза – для
этого соответствующие вокселы можно сделать прозрачными.
 Недостатки воксельной модели:
 большое количество информации, необходимой для представления объемных данных. Например, объем 256x256x256 имеет небольшую разрешающую способность, но требует свыше 16 миллионов вокселов;
 значительные затраты памяти ограничивают разрешающую способность,
точность моделирования; большое количество вокселов обусловливает
малую скорость создания изображений объемных сцен;
 как и для любого растра, возникают проблемы при увеличении или
уменьшении изображения. Например, при увеличении ухудшается разрешающая способность изображения.
Существуют способы, которые оптимизируют воксельное представление.
Например, октарные деревья, которые позволяют хранить только части пространства, занятые объектом.
Рассмотрим конструктивную геометрию (Представление CSG моделей).
Объект задается набором примитивов и операций над ними.
55
Примитивы – «строительные блоки» объекта. Чаще всего это куб, сфера,
цилиндр и т.п. Операции – теоретико-множественные операции (объединение,
пересечение, разность) и т.п. Геометрические преобразования – смещение, поворот, изменение размеров и т.п.
Если у нас в трёхмерном пространстве есть тело, то мы это пространство
можем разбить на кубики (boxels). Для каждого кубика (i, j, k) мы можем указать, пересекается ли он с телом: то есть лежит ли он внутри, на границе или
вне тела. Например, при моделировании головного мозга мы можем представить маленькими кубиками наполнение нашей черепной коробки, соответственно можно представить уплотнения и пустоты, чего нельзя сделать в других моделях.
С таким подразбиением можно проводить набор операций:
· пересечение;
· объединение;
· вычитание.
Соответственно в результате можем получить более сложное тело.
Рисунок 8.12 – Примеры образования тел
Рассмотрим равномерную сетку. Эта модель описывает координаты отдельных точек поверхности следующим способом: каждому узлу сетки с индексами (i, j) приписывается значение высоты zij. Индексам (i, j) отвечают определенные значения координат (х, у). Расстояние между узлами одинаковое – dx
по оси х и dy по оси y.
56
Рисунок 8.13. – Равномерная сетка
Фактически, такая модель – двумерный массив, растр, матрица, каждый
элемент которой сохраняет значение высоты.
Не каждая поверхность может быть представлена этой моделью. Если в
каждом узле записывается только одно значение высоты, то это означает, что
поверхность описывается однозначной функцией z = f (х, у). Иначе говоря, это
такая поверхность, которую любая вертикаль пересекает только один раз. Не
могут моделироваться также вертикальные грани. Необходимо заметить, что
для сетки не обязательно использовать только декартовые координаты. Например, для того чтобы описать поверхность шара однозначной функцией, можно
использовать полярные координаты. Равномерная сетка часто используется для
описания рельефа земной поверхности.
Положительные черты равномерной сетки:
 простота описания поверхностей;
 возможность быстро узнать высоту любой точки поверхности простой
интерполяцией.
Недостатки равномерной сетки:
 поверхности, которые соответствуют неоднозначной функции высоты в
узлах сетки, не могут моделироваться;
 для описания сложных поверхностей необходимо большое количество
узлов, которое может быть ограничено объемом памяти компьютера;
 описание отдельных типов поверхностей может быть сложнее, чем в других моделях. Например, многогранная поверхность требует избыточный
объем данных для описания по сравнению с полигональной моделью.
Рассмотрим неравномерную сетку, изолинии. Неравномерной сеткой
назовем модель описания поверхности в виде множества отдельных точек
( x0 , y0 , z0 ), ( x1 , y1 , z1 ),..., ( xn1 , yn1 , zn1 ), принадлежащих поверхности. Эти точки мо57
гут быть получены, например, в результате измерений поверхности какогонибудь объекта с помощью определенного оборудования.
Эту модель можно считать обобщением для некоторых рассмотренных
нами моделей. Например, векторная полигональная модель и равномерная сетка могут считаться разновидностями неравномерной сетки.
Рассмотрим модель поверхности в виде множества точечных значений,
логически никак не связанных между собой. Неравномерность задания опорных точек усложняет определение координат для других точек поверхности,
которые не совпадают с опорными точками. Нужны специальные методы пространственной интерполяции. Так, например, можно поставить такую задачу –
по известным координатам (х, у) вычислить значения координаты z. Для этого
необходимо найти несколько самых близких точек, а потом вычислить искомое
значение z, исходя из взаимного расположения этих точек в проекции (х, у). Для
равномерной сетки это намного проще – поиска фактически нет, мы сразу рассчитываем индексы самых близких опорных точек. Еще одна задача – отобразить поверхность. Эту задачу можно решать несколькими способами, в том
числе триангуляцией. Процесс триангуляции можно представить себе так: сначала находим первые три самые близкие друг другу точки и получаем одну
плоскую треугольную грань. Потом находим точку, ближайшую к этой грани, и
образовываем смежную грань. И так далее, пока не останется ни одной отдельной точки.
Рисунок 8.14. – Метод триангуляции
Это общая схема, в литературе описано много разных способов триангуляции.
Рассмотрим еще один из вариантов описания поверхности – изолинии высоты. Любая изолиния состоит из точек, представляющих одно числовое значение какого-то показателя, в данном случае – значение высоты. Изолинии высоты также можно вообразить себе как контуры разреза поверхности горизонтальными плоскостями (поэтому для изолиний высоты часто применяется
название "горизонтали").
58
Рисунок 8.15. – Изолинии высоты
Описание поверхности изолиниями высоты часто используется, например, в картографии. По бумажной карте можно с определенной точностью рассчитать высоты в точках местности, углы наклона и прочие параметры рельефа.
Положительные черты неравномерной сетки: использование отдельных
опорных точек, наиболее важных для заданной формы поверхности, обуславливает меньший объем информации по сравнению с другими моделями, например, с равномерной сеткой; наглядность показа рельефа поверхности изолиниями на картах, планах.
Недостатки: невозможность или сложность выполнения многих операций над поверхностями; сложные алгоритмы преобразования в другие формы
описания поверхностей.
9. Координатные преобразования объектов
9.1. Общие вопросы преобразования
В компьютерной графике часто применяются различные геометрические
преобразования над объектами: вращение, сжатие, параллельный перенос и др.
С помощью них, однократно описав топологию объекта, мы можем получить
много различных его экземпляров. Обычно принято разделять преобразования
первого рода (собственные движения, сохраняющие ориентацию углов) и преобразования второго рода (зеркальные движения, меняющие ее). К первым относят параллельный перенос, поворот и др., ко вторым – симметрии (относительно точки, прямой, окружности). Математически эти преобразования описываются матрицами преобразований [21].
В качестве модели здесь выступает описание поверхности трехмерного
объекта, в виде некоторого подмножества точек декартова пространства. Поэтому рассматриваемые преобразования тесно связанны с системой координат.
Координатный метод был введен в XVII веке французскими математиками Де59
картом и Ферма. В современной компьютерной графике широко используется
координатный метод. Этому есть несколько причин:
 Каждая точка на экране (или на бумаге при печати на принтере) задается
координатами (например, пиксельными).
 Координаты используются для описания объектов, которые будут отображаться как пространственные. Например, объекты микромира, объекты на поверхности Земли, объекты космического пространства и тому
подобное.
 При выполнении многих промежуточных действий отображения используют разные системы координат и преобразования из одной системы в
другую.
9.2. Преобразование координат и преобразование объектов
Сначала рассмотрим общие вопросы преобразования координат. Пусть
задана n-мерная система координат в базисе (k1, k2, ..., kn), описывающая положение точки в пространстве с помощью числовых значений ki. В компьютерной
графике чаще всего используется двумерная (n=2) и трехмерная (n=3) системы
координат [21]. Если задать другую, N-мерную, систему координат в базисе (m1,
т2, .... mN) и поставить задачу определения координат в новой системе, зная координаты в старой, то решение (если оно существует), можно записать в таком
виде:
m1  f1 (k1 , k 2 ,..., k n ),
m  f (k , k ,..., k ),
 2
2
1
2
n

...

m N  f N (k1 , k 2 ,..., k n )
(9.2.1.)
где fi – функция пересчета i-й координаты.
Можно поставить и обратную задачу – по известным координатам (m1,
т2, .... mN) определить координаты (k1, k2, ..., kn) . Решение обратной задачи запишем так:
k1  F1 (m1 , m2 ,..., m N ),
k  F (m , m ,..., m ),
 2
2
1
2
N

...

k n  FN (m1 , m2 ,..., m N )
(9.2.2.)
где Fi – функции обратного преобразования.
В случае, когда размерности систем координат не совпадают (п  N),
осуществить однозначное преобразование координат зачастую не удается.
Например, по двумерным экранным координатам нельзя без дополнительных
условий однозначно определить трехмерные координаты отображаемых объектов.
Преобразование объектов можно описать так. Пусть любая точка, которая принадлежит определенному объекту, имеет координаты (k1, k2, ..., kn) в
60
n-мерной системе координат. Тогда преобразование объекта можно определить
как изменение положения точек объекта. Новое положение точки пространства
отвечает новым значениям координат (т1, т2 .... тn).
Соотношение между старыми и новыми координатами для всех точек
объекта:
(т1, т2 .... тn) = F(k1, k2, ..., kn) и будет определять преобразование объекта, где F – функция преобразования.
Например, преобразование объектов на плоскости можно определить так:
X  Fx ( x, y ),
(9.2.3.)
Y  F y ( x, y )
В трехмерном пространстве:
X  Fx ( x, y, z ),
Y  F y ( x, y, z ),
(9.2.4.)
Z  Fz ( x, y, z )
Преобразования классифицируют:
 по системам координат (например, преобразование из полярной системы
в прямоугольную);
 по виду функций преобразования fi.
По виду функций преобразования различают линейные и нелинейные преобразования.
Если при всех i = 1, 2, .... N, функции fi – линейные относительно аргументов (k1, k2, ..., kn), то есть f i  ai1k1  ai 2 k 2  ...ain k n  ain1 , где aij – константы,
то такие преобразования называются линейными, а при п = N – аффинными.
Если хотя бы для одного i функция fi – нелинейная относительно (k1, k2,
..., kn), тогда преобразование координат в целом не линейно.
Например, преобразование:
X  3x  5 y,
Y  4 xy  10 y
– нелинейное, так как в выражении для Y присутствует ху.
Примеры линейных и нелинейных преобразований:
А) Линейные преобразования (прямые переходят в прямые):
 Линейное преобразование применяется к каждой точке (вершине) модели;
 Не изменяет топологию модели.
61
Можно описать уравнением:
X  Ax  By  Cz  D
Y  Ex  Fy  Gz  H
Z  Ix  Jy  Kz  L
(9.2.5.)
Таблица 9.2.1. – Линейные преобразования
Перенос
Параллельный перенос есть перемещение каждой точки в одном и
том же направлении на фиксированное расстояние. Преобразование параллельного переноса задается следующими формулами:
x
X  x  x
Y  y  y
Z  z  z
y
Поворот (2D)
Поворот – это преобразование
плоскости, при котором расстояние
от центра поворота до точки сохраняется и каждая точка повернута на
определенный
ориентированный
угол, т.е. движение с единственной
неподвижной точкой.
X  x cos   y sin 
Y  x sin   y cos 
Масштабирование
Преобразование подобия есть
преобразование плоскости, при котором расстояния изменяются в некоторое фиксированное число раз (k).
X  ax
Y  by
Z  cz
62
Сдвиг (2D)
X  x  ay
Y  y  bx
Б) Нелинейные преобразования: произвольное преобразование точек модели.
Рисунок 9.2.1. – произвольное преобразование точек модели.
Алгебра матриц (повторение). Линейные преобразования наглядно записываются в матричной форме, поэтому часто используются операции над матрицами. Необходимо сделать небольшой экскурс в матричную алгебру.
Сложение и разность матриц. Пусть А и В – матрицы размеров тп.
Мы можем сопоставить им третью матрицу С размеров тп, элементы
которой сij, связаны с элементами аij и bij матриц А и В равенствами:
cij  aij  bij (i = 1, .... т, j= 1, ..., n).
Сумма матриц В и -А называется разностью матриц В и А и обозначается
(В – А).
Умножение матриц:
· на число: Матрица С – элементы которой равны произведениям
элементов аij матрицы А на число α – называется произведением A
на α и обозначается αA. Мы имеем cij  aij (i = 1, ..., т, j= 1.....n).
· двух матриц: Для двух матриц А размером (тn) и В размером
(nр):
(9.2.6.)
63
произведением матриц является матрица С = А В размером (тр)
(9.2.7.)
для которой элементы Сij вычисляются по формуле: cij 
n
a
k 1
b .
ik kj
Правило вычисления элементов матрицы С можно легко запомнить по
названию "строка на столбец". И действительно, для вычисления любого элемента Сij необходимо умножить элементы i-й строки матрицы А на элементы jго столбца матрицы В.
(9.2.8.)
Произведение матриц определено только для случая, когда количество
столбцов матрицы А равно количеству строк матрицы В.
Обратная матрица. Матрица X называется обратной для. матрицы А,
если ХА = АХ = Е, где Е – единичная матрица. Две матрицы могут быть перестановочны только в том случае, если они обе – квадратные матрицы одного и
того же порядка. Поэтому иметь обратную форму может только квадратная
матрица.
Преобразования в матричной форме. Итак, преобразование можно описать следующими уравнениями:
X  Ax  By  Cz  D
Y  Ex  Fy  Gz  H
Z  Ix  Jy  Kz  L
где А, В, ..., L – константы;
х, у, z – координаты до преобразования;
X , Y , Z – новые координаты точек объектов.
В матричном виде
64
(9.2.9)
A
X 
  E
Y   
Z  I
  0

B C D  x
  
F G H   y

J K L  z 
  
0 0 1  1 
(9.2.10.)
Нижняя строка – результат того, что мы переходим к однородным координатам, чтобы учесть коэффициенты D, H и L (без этого невозможно совершить, например, операцию переноса).
9.3. Аффинные преобразования объектов на плоскости (2D)
Аффинные преобразования объектов на плоскости описываются так:
X  Ax  By  C
Y  Dx  Ey  F
(9.3.1.)
где А, В, ..., F – константы;
х, у – координаты до преобразования;
X, Y – новые координаты точек объектов.
Рассмотрим частные случаи аффинного преобразования:
А) Сдвиг (параллельный перенос)
 X  x  dx,

Y  y  dx
 1 0 dx 


в матричной форме выглядит:  0 1 dy  (9.3.2.)
0 0 1 


Рисунок 9.3.1. – Сдвиг
Обратное преобразование позволяет рассчитать старые координаты точек
объектов по известным новым координатам:
65
 x  X  dx,

 y  Y  dx
 1 0  dx 


 0 1  dy 
0 0
1 

(9.3.3.)
Б) Растяжение-сжатие (масштабирование)
Необходимо отметить, что это, вероятно не очень удачное название, так
как для некоторых типов объектов размеры и форма не изменяются, например,
для точечных объектов. По-другому это преобразование можно назвать масштабированием.
Рисунок 9.3.2 – Растяжение-сжатие
 X  k x x,

Y  k y y,
 kx

в матричной форме выглядит:  0
0

Обратное преобразование:
x  X / k x
в матричной форме выглядит:

y  Y / ky
0
ky
0
0

0
1 
0
1 / k x

 0 1/ k y
 0
0

(9.3.4.)
0

0
1 
(9.3.5.)
В) Поворот вокруг центра координат (0, 0)
Рисунок 9.3.3. – Поворот вокруг центра координат
 X  x cos   y sin  ,

Y  x sin   y cos  ,
 cos 
в матричной форме выглядит:  sin 
 0

66
 sin 
cos 
0
0

0
1 
(9.3.6.)
Формулы для обратного преобразования можно получить, если представить себе поворот точки с координатами (X, Y) на угол (-α ):
 x  X cos   Y sin  ,
в

 y   X sin   Y cos  ,
матричной форме выглядит:
 cos 

  sin 
 0

sin 
cos 
0
0

0
1 
(9.3.7.)
Аффинные преобразования в пространстве. Рассмотрим частные случаи
трехмерного аффинного преобразования объектов.
А) Сдвиг на dx, dy, dz
 X  x  dx,

Y  y  dx
в матричной форме выглядит:
Z  z  dz

1

0
0

0

0
1
0
0
1 dx 

0 dy 
(9.3.8.)
1 dz 

0 1 
Б) Растяжение-сжатие на kx, ky, kz
 X  k x x,

Y  k y y,

Z  k z z
 kx

0
в матричной форме выглядит: 
0

0

0
ky
0
0
0
0
kz
0
0

0
(9.3.9.)
0

1 
В) Повороты:
· Поворот вокруг оси х на угол 
Рисунок 9.3.4. – Поворот вокруг оси х на угол 
0
0
0
1
 X  x,



0 cos   sin  0 

Y

y
cos


z
sin

,

--> 
(9.3.10)
0 sin  cos  0 
Z  y sin   z cos 





0
67
0
0
1
· Поворот вокруг оси у на угол 
Рисунок 9.3.5. – Поворот вокруг оси у на угол 
 cos  0  sin  0 
 X  x cos  z sin ,



1
0
0
 0
Y  y,
--> 
(9.3.11)
sin  0 cos  0 
Z  x sin  z cos





 0
0
1
0
· Поворот вокруг оси z на угол 
Рисунок 9.3.6. – Поворот вокруг оси z на угол 
 cos   sin  0 0 
 X  x cos   z sin  ,



sin  cos  0 0 

Y

x
sin


z
cos

,

--> 
0
0
1 0
Z  z





 0
0
(9.3.12)
0 1
Матрица композиции нескольких преобразований может быть получена
путем перемножения матриц, соответствующих этим преобразованиям, справа
налево. Любое движение плоскости является либо поворотом, либо параллельным переносом.
68
10. Проективные преобразования (проекции)
10.1. Общие сведения
В настоящее время наиболее распространены устройства отображения,
которые синтезируют изображения на плоскости – экране дисплея или бумаге.
При использовании любых графических устройств обычно используют проекции. Проекция задает способ отображения объектов на графическом устройстве. Для выполнения таких преобразований применяются проективные
преобразования, которые описываются матрицей 4x4 (линейным преобразованием) [18].
Рисунок 10.1.1. – Матрица проективного преобразования
10.2. Мировые и экранные координаты
При отображении пространственных объектов на экране или на листе
бумаги с помощью принтера необходимо знать координаты объектов. Мы рассмотрим две системы координат [18].
Первая – мировые координаты, которые описывают истинное положение
объектов в пространстве с заданной точностью.
Вторая – система координат устройства изображения, в котором осуществляется вывод изображения объектов в заданной проекции.
Считаем, что мировые координаты будут трехмерными декартовыми координатами. Где должен размещаться центр координат и какими будут единицы измерения вдоль каждой оси, пока для нас не очень важно. Важно то, что
для отображения мы будем знать какие-то числовые значения координат отображаемых объектов.
69
Для получения изображения в определенной проекции необходимо рассчитать координаты проекции. Из них можно получить координаты для графического устройства (экранные координаты). Для синтеза изображения на плоскости достаточно двумерной системы координат. Однако в некоторых алгоритмах визуализации используются трехмерные экранные координаты, например,
в алгоритме Z-буфера.
10.3. Виды проекций
Итак, сложность при выводе изображений объемных тел заключается в
том, что трехмерные объекты должны быть отображены на плоскость. Такое
отображение выполняется с помощью проектирования. Плоскость, на которую
осуществляется проектирование, называется проекционной или картинной
плоскостью [19].
Часть пространства со всеми находящимися внутри нее объектами, подлежащая изображению, назовем сценой. Для вывода графической информации
требуется задать видимый объем в мировом пространстве, получить проекцию
части сцены внутри видимого объема на картинную плоскость, затем отобразить проекцию в поле вывода. В общем случае объекты сцены отсекаются по
границам видимого объема, а затем проецируются. Проекции трехмерных объектов строят при помощи проецирующих лучей. Проекторы выходят из одной
точки, называемой центром проектирования, и проходят через каждую точку
объекта. Такая проекция называется плоской геометрической проекцией.
Рисунок 10.3.1. – Виды проекций
70
10.4. Основные типы проекций
В компьютерной графике наиболее распространены параллельная и центральная (также называемая перспективной) проекции. Они различаются местом
расположения центра проецирования. При центральном проецировании центром является собственная точка пространства и лучи проецирования исходят
из одной точки. При параллельном центр  бесконечно удаленная точка и лучи
проецирования параллельны. Центральные проекции выглядят более реалистичными по сравнению с параллельными, но не пригодны для определения
размеров [19].
Рисунок 10.4.1. – Центральное проецирование
Рисунок 10.4.2. – Параллельное проецирование
Точкой схода называется точка пересечения центральных проекций любой совокупности параллельный прямых, которые не параллельны проекционной плоскости. Существует бесконечное множество точек схода. Точка схода
называется главной, если совокупность прямых параллельна одной из координатных осей. В зависимости от того, сколько координатных осей пересекает
проекционную плоскость различают одно-, двух- и трехточечные проекции.
71
Рисунок 10.4.3. – Точки схода
Простейшей является параллельная прямоугольная проекция. В ней совместно изображаются виды сверху, спереди и сбоку. Эти проекции часто используются в черчении.
В зависимости от соотношения между направлениями проецирования и
нормалью к проекционной плоскости параллельные проекции разделяются на
ортографические (ортогональные), в которых эти направления совпадают, и
косоугольные, в которых они не совпадают.
В зависимости от положения осей системы координат объекта относительно проекционной плоскости ортографические проекции делятся на аксонометрические и изометрические. В изометрических проекциях оси системы координат составляют одинаковые углы с проекционной плоскостью. В аксонометрических проекциях эти углы разные.
11. ВИЗУАЛИЗАЦИЯ ОБЪЕМНЫХ ИЗОБРАЖЕНИЙ
11.1 Каркасная визуализация
Любой объект, в том числе и объемный, может быть изображен различными способами. В одном случае необходимо показать внутреннюю структуру
объектов, в другом – внешнюю форму объекта, в третьем – имитировать реальную действительность, в четвертом – поразить воображение зрителя чем-то неизвестным. Способы визуализации условно можно разделить по характеру
изображений и по степени сложности соответствующих алгоритмов на такие
уровни [8]:
А) Каркасная (проволочная) модель. Простейшая каркасная модель часто
применяется в процессе редактирования объемных объектов.
Б) Показ поверхностей в виде многогранников с плоскими гранями или
сплайнов с удалением невидимых точек. Визуализация второго уровня используется для упрощенного показа объемных объектов. Например, для графиков
функций z =f(x,y) (в виде рельефа поверхности) часто достаточно показать все
грани сетки одним цветом, но зато необходимо обязательно удалить невидимые
точки. Это более сложная процедура по сравнению с выводом каркасного изображения.
72
В) То же, что и для второго уровня, плюс сложное закрашивание объектов;
для имитации отражения света, затенения, прозрачности, использование текстур. Сложность процесса графического вывода возрастает по мере приближения к созданию полной иллюзии естественных, живых, реалистичных изображений. Усилия многих ученых и инженеров во всем мире направлены на разработку методов и средств достижения этой цели. В этом плане наиболее полно
ощущается связь компьютерной графики с естественными науками, с дисциплинами, посвященными изучению окружающего нас мира. Например, для создания реалистичных изображений необходимо учитывать законы оптики, описывающие свет и тень, отражение и преломление.
Каркас обычно состоит из отрезков прямых линий (соответствует многограннику), хотя можно строить каркас и на основе кривых, в частности сплайновых кривых Безье. Все ребра, показанные в окне вывода, видны – как ближние, так и дальние.
Для построения каркасного изображения надо знать координаты всех
вершин в мировой системе координат. Потом преобразовать координаты каждой вершины в экранные координаты в соответствии с выбранной проекцией.
Затем выполнить цикл вывода в плоскости экрана всех ребер как отрезков прямых (или кривых), соединяющих вершины. Для представления каркасных моделей можно использовать следующий способ, при котором не используется
качество растрового дисплея – возможность закраски поверхностей. Наиболее
известный ранний алгоритм – алгоритм Робертса (1963г.). Работает с только
выпуклыми телами в пространстве объектов. Каждый объект сцены представляется многогранным телом, полученным в результате пересечения плоскостей.
Т.е. тело описывается списком граней, состоящих из ребер, которые в свою
очередь образованы вершинами. Вначале из описания каждого тела удаляются
нелицевые плоскости, экранированные самим телом. Затем каждое из ребер
сравнивается с каждым телом для определения видимости или невидимости.
Т.е. объем вычислений растет как квадрат числа объектов в сцене. Наконец вычисляются новые ребра, полученные при протыкании телами друг друга.
11.2. Показ с удалением невидимых точек
Поверхности рассматриваются в виде многогранников или полигональных сеток. Известно много методов показа с удалением невидимых точек.
Классификация алгоритмов удаления:
А) По выбору удаляемых частей:
 невидимых линий,
 ребер,
 поверхностей,
 объемов.
Б) По порядку обработки элементов сцены:
 удаление в произвольном порядке,
 в порядке, определяемом процессом визуализации.
73
В) По системе координат:
 алгоритмы, работающие в пространстве объектов, когда каждая из N
граней объекта сравнивается с остальными N-1 гранями (объем вычислений » N2),
 алгоритмы, работающие в пространстве изображения, когда для каждого пикселя изображения определяется – какая из N граней объекта видна (при разрешении экрана M×M объем вычислений » M2 ×N).
11.3. Сортировка граней по глубине
Это означает рисование полигонов граней в порядке от самых дальних к
самым близким. Метод сортировки по глубине эффективен для показа поверхностей, заданных функциями z =f(x,y), а так же для ряда сцен, включающих,
например, построение изображения нескольких непересекающихся достаточно
простых тел [10].
Однако возможны случаи, когда просто сортировка по расстоянию до
картинной плоскости не обеспечивает правильного упорядочения граней; поэтому желательно после такой сортировки проверить порядок, в котором грани
будут выводиться.
Рисунок 11.3.1. – Сортировка граней по глубине
Можно предложить следующий алгоритм этой проверки. Для простоты
будем считать, что рассматривается параллельное проектирование вдоль оси
Oz.
Перед выводом грани Р следует убедиться, что никакая другая грань Q,
проекция которой на ось Oz пересекается с проекцией грани Р, не может закрываться гранью Р. И если это условие выполнено, то грань Р должна быть выведена раньше. Предлагаются следующие 5 тестов в порядке возрастания сложности проверки:
 Пересекаются ли проекции этих граней на ось Ох?
 Пересекаются ли их проекции на ось Оу?
 Находится ли грань Р по другую сторону от плоскости, проходящей через
грань Q, чем начало координат (наблюдатель)?
 Находится ли грань Q по ту же сторону от плоскости, проходящей через
грань Р, что и начало координат (наблюдатель)?
 Пересекаются ли проекции этих граней на картинной плоскости?
74
Если хотя бы на один из этих вопросов получен отрицательный ответ, то
считаем что эти две грани - Р и Q упорядочены верно, и сравниваем Р со следующей гранью. В противном случае считаем, что эти грани необходимо поменять местами, для чего проверяются следующие тесты:
 Находится ли грань Q по другую сторону от плоскости, проходящей через
грань Р, чем начало координат?
 Находится ли грань Р по ту же сторону от плоскости, проходящей через
грань Q, что и начало координат?
В случае если ни один из этих тестов не позволяет с уверенностью решить,
какую из этих двух граней нужно выводить раньше, то одна из них разбивается
плоскостью, проходящей через другую грань. В этом случае вопрос об упорядочении оставшейся грани и частей разбитой грани достаточно легко решается.
11.4. Метод плавающего горизонта
В отличие от предыдущего метода при методе плавающего горизонта
грани выводятся в последовательности от ближайших к самым дальним. На
каждом шаге границы граней образовывают две ломаные линии – верхний горизонт и нижний горизонт. Во время вывода каждой новой грани рисуется
только то, что выше верхнего горизонта, и то, что ниже нижнего горизонта. Соответственно, каждая новая грань поднимает верхний и опускает нижний горизонты. Этот метод также часто используют для показа поверхностей, которые
описываются функциями z =f(x,y).
11.5. Метод построчного сканирования
Метод построчного сканирования является еще одним примером метода,
работающего в пространстве картинной плоскости. Однако вместо того, чтобы
решать задачу удаления невидимых граней для проекций объектов на картинную плоскость, сведем ее к серии простых одномерных задач. Все изображение
на картинной плоскости можно представить как ряд горизонтальных (вертикальных) линий пикселей. Рассмотрим сечение сцены плоскостью, проходящей
через такую линию пикселей и центр проектирования. Пересечением этой
плоскости с объектами сцены будет множество непересекающихся (за исключением концов) отрезков, которые и необходимо спроектировать. Задача удаления невидимых частей для такого набора отрезков решается тривиально. Рассматривая задачу удаления невидимых граней для каждой такой линии, мы тем
самым разбиваем исходную задачу на набор гораздо более простых задач.
11.6. Метод Z-буфера
Метод основывается на использовании дополнительного массива, буфера
в памяти, в котором сохраняются координаты Z для каждого пикселя растра.
Координата Z отвечает расстоянию точек пространственных объектов до плоскости проецирования. Например, она может быть экранной координатой Z в системе экранных координат (X,Y,Z), если Z перпендикулярна плоскости экрана.
75
Алгоритм рисования объектов согласно этому методу следующий. Пусть,
чем ближе точка в пространстве к плоскости проецирования, тем больше значение Z. Тогда сначала Z-буфер заполняется минимальными значениями. Потом
начинается вывод всех объектов. Причем не имеет значение порядок вывода
объектов. Для каждого объекта выводятся все его пиксели в любом порядке. Во
время вывода каждого пикселя по его координатам (X, Y) находится текущее
значение Z в Z-буфере. Если рисуемый пиксель имеет большее значение Z, чем
значение в Z-буфере, то это означает, что эта точка ближе к объекту. В этом
случае пиксель действительно рисуется, а его Z-координата записывается в Zбуфер. Таким образом, после рисования всех пикселей всех объектов растровое
изображение будет состоять из пикселей, которые соответствуют точкам объектов с самыми большими значениями координат Z, то есть видимые точки –
ближе всех к нам.
Этот метод прост и эффективен благодаря тому, что не нужно ни сортировать объекты, ни сортировать их точки. При рисовании объектов, которые
описываются многогранниками или полигональными сетками, манипуляции со
значениями Z-буфера легко совместить с выводом пикселей заполнения полигонов плоских граней. В настоящее время метод Z-буфера используется во многих графических 3D-акселераторах, которые аппаратно реализуют этот метод.
Наиболее целесообразно, когда акселератор имеет собственную память для Zбуфера, доступ к которой осуществляется быстрее, чем к оперативной памяти
компьютера. Возможности аппаратной реализации используются разработчиками и пользователями компьютерной анимации, позволяя достичь большой
скорости прорисовки кадров.
Основной недостаток алгоритма с Z-буфером – дополнительные затраты
памяти. Другие недостатки алгоритма с Z-буфером заключаются в том, что поскольку пиксели в буфер заносятся в произвольном порядке, то возникают
трудности с реализацией эффектов прозрачности или просвечивания
11.7 Алгоритм разбиения области Варнака
Алгоритм работает в пространстве изображения и анализирует область на
экране дисплея на наличие в них видимых элементов. Если в окне нет изображения, то оно просто закрашивается фоном. Если же в окне имеется элемент, то
проверяется, достаточно ли он прост для визуализации. Если объект сложный,
то окно разбивается на более мелкие, для каждого из которых выполняется тест
на отсутствие и/или простоту изображения. Рекурсивный процесс разбиения
может продолжаться до тех пор, пока не будет достигнут предел разрешения
экрана [22].
Можно выделить четыре случая взаимного расположения окна и многоугольника:
 многоугольник целиком вне окна,
 многоугольник целиком внутри окна,
 многоугольник пересекает окно,
 многоугольник охватывает окно.
76
Рисунок 11.7.1. – Четыре случая взаимного расположения окна и многоугольника
Соотношения между окном экрана (сплошная рамка) и многоугольником
(штриховая рамка)
В четырех случаях можно сразу принять решение о правилах закраски
области экрана:
 все многоугольники сцены – внешние по отношению к окну. В этом случае окно закрашивается фоном;
 имеется всего один внутренний или пересекающий многоугольник. В
этом случае все окно закрашивается фоном и затем часть окна, соответствующая внутреннему или пересекающему окну закрашивается цветом
многоугольника;
 имеется единственный охватывающий многоугольник. В этом случае окно закрашивается его цветом.
 имеется несколько различных многоугольников и хотя бы один из них
охватывающий. Если при этом охватывающий многоугольник расположен ближе остальных к наблюдателю, то окно закрашивается его цветом.
В любых других случаях процесс разбиения окна продолжается. При растре 1024×1024 и делении стороны окна пополам требуется не более 10 разбиений. Если достигнуто максимальное разбиение, но не обнаружено ни одного из
приведенных выше четырех случаев, то для точки с центром в полученном минимальном окне (размером в пиксель) вычисляются глубины оставшихся многоугольников и закраску определяет многоугольник, наиболее близкий к
наблюдателю. При этом для устранения лестничного эффекта можно выполнить дополнительные разбиения и закрасить пиксель с учетом всех многоугольников, видимых в минимальном окне.
Первые три случая идентифицируются легко. Последний же случай фактически сводится к поиску охватывающего многоугольника, перекрывающего
все остальные многоугольники, связанные с окном. Проверка на такой многоугольник может быть выполнена следующим образом: в угловых точках окна
вычисляются Z-координаты для всех многоугольников, связанных с окном. Если все четыре такие Z-координаты охватывающего многоугольника ближе к
наблюдателю, чем все остальные, то окно закрашивается цветом соответству77
ющего охватывающего многоугольника. Если же нет, то мы имеем сложный
случай, и разбиение следует продолжить.
Очевидно, что после разбиения окна, охватывающие и внешние многоугольники, наследуются от исходного окна. Поэтому необходимо проверять
лишь внутренние и пересекающие многоугольники.
Из изложенного ясно, что важной частью алгоритма является определение расположения многоугольника относительно окна. Проверка на то что многоугольник внешний или внутренний относительно окна для случая прямоугольных окон легко реализуется использованием прямоугольной оболочки
многоугольника и сравнением координат. Для внутреннего многоугольника
должны одновременно выполняться условия:
X min  WЛ
и X max  WП и
Ymin  WH
и Ymax  WB
(11.7.1.)
здесь X min , X max , Ymin , Ymax – ребра оболочки
WЛ , WП , WH , WB – ребра окна
Для внешнего многоугольника достаточно выполнение любого из следующих условий:
X min  WП
или X max  WЛ или
Ymin  WB
или Ymax  WH
(11.7.2)
Таким способом внешний многоугольник, охватывающий угол окна не
будет идентифицирован как внешний. Например, представим ошибочное определение внешнего многоугольника как пересекающего при использовании прямоугольной оболочки.
Рисунок 11.7.2. – Ошибочное определение внешнего многоугольника
как пересекающего при использовании прямоугольной оболочки
Проверка на пересечение окна многоугольником может быть выполнена
проверкой на расположение всех вершин окна по одну сторону от прямой, на
которой расположено ребро многоугольника. Пусть ребро многоугольника задано точками P1(x1,y1,z1) и P2(x2,y2,z2), а очередная вершина окна задается
78
точкой P3(x3,y3,z3). Векторное произведение вектора P1P3 на вектор P1P2,
равное (x3-x1)(y2-y1) - (y3-y1)(x2-x1) будет меньше 0, равно 0 или больше 0,
если вершина лежит слева, на или справа от прямой P1P2. Если знаки различны, то окно и многоугольник пересекаются. Если же все знаки одинаковы, то
окно лежит по одну сторону от ребра, т.е. многоугольник может быть либо
внешним, либо охватывающим.
Если многоугольник не был идентифицирован ни как внутренний, ни как
пересекающий, то он может быть либо внешним, либо охватывающим. Для завершающей классификации может использоваться тест с подсчетом угла, рассматривавшийся ранее для определения нахождения точки внутри/вне многоугольника. В этом тесте вычисляется суммарный угол, на который повернется
луч, исходящий из некоторой точки окна (обычно центра), при последовательном обходе вершин многоугольника.
Если суммарный угол равен 0, то многоугольник - внешний. Если же угол
равен N×360°, то многоугольник охватывает окно N раз. Простейшая иллюстрация приведена на рисунках 11.7.3. и 11.7.4. ниже.
А
B
C
D
E
Рисунок 11.7.3. – Многоугольник ABCDE –
охватывающий суммарный угол равен 360°
А
B
D
C
Рисунок 11.7.4. – Многоугольник ABCD –
внешний суммарный угол равен 0°
79
11.8. Алгоритм трассировки лучей
При рассмотрении этого алгоритма предполагается, что наблюдатель
находится на положительной полуоси Z, а экран дисплея перпендикулярен оси
Z и располагается между объектом и наблюдателем [22].
Удаление невидимых (скрытых) поверхностей в алгоритме трассировки
лучей выполняется следующим образом:
 сцена преобразуется в пространство изображения,
 из точки наблюдения в каждый пиксель экрана проводится луч и определяется, какие именно объекты сцены пересекаются с лучом,
 вычисляются и упорядочиваются по Z координаты точек пересечения
объектов с лучом. В простейшем случае для непрозрачных поверхностей
без отражений и преломлений видимой точкой будет точка с максимальным значением Z-координаты. Для более сложных случаев требуется
сортировка точек пересечения вдоль луча.
Наиболее важная часть алгоритма – процедура определения пересечения,
которая в принципе выполняется Rx×Ry×N раз (здесь Rx,Ry – разрешение дисплея по X и Y, соответственно, а N – количество многоугольников в сцене).
Очевидно, что повышение эффективности может достигаться сокращением времени вычисления пересечений и избавлением от ненужных вычислений.
Последнее обеспечивается использованием геометрически простой оболочки,
объемлющей объект – если луч не пересекает оболочку, то не нужно вычислять
пересечения с ним многоугольников, составляющих исследуемый объект.
При использовании прямоугольной оболочки определяется преобразование, совмещающее луч с осью Z. Оболочка подвергается этому преобразованию, а затем попарно сравниваются знаки Xmin с Xmax и Ymin с Ymax. Если
они различны, то есть пересечение луча с оболочкой.
Рисунок 11.8.1. – Алгоритм трассировки лучей
80
При использовании сферической оболочки для определения пересечения
луча со сферой достаточно сосчитать расстояние от луча до центра сферы. Если
оно больше радиуса, то пересечения нет.
Дальнейшее сокращение расчетов пересечений основывается на использовании групп пространственно связанных объектов. Каждая такая группа
окружается общей оболочкой. Получается иерархическая последовательность
оболочек, вложенная в общую оболочку для всей сцены. Если луч не пересекает какую-либо оболочку, то из рассмотрения исключаются все оболочки, вложенные в нее и, следовательно, объекты. Если же луч пересекает некоторую
оболочку, то рекурсивно анализируются все оболочки вложенные в нее.
Наряду с вложенными оболочками для сокращения расчетов пересечений
используется отложенное вычисление пересечений с объектами. Если обнаруживается, что объект пересекается лучом, то он заносится в специальный список пересеченных. После завершения обработки всех объектов сцены объекты,
попавшие в список пересеченных, упорядочиваются по глубине. Заведомо невидимые отбрасываются, а для оставшихся выполняется расчет пересечений и
отображается точка пересечения наиболее близкая к наблюдателю.
Дополнительное сокращение объема вычислений может достигаться отбрасыванием нелицевых граней, учетов связности строк растрового разложения
и т.д.
Для того чтобы получить наиболее реалистичное изображение, нужно
обязательно рассмотреть следующие факторы:

Модели освещения и механизмы отражения света;

Модели закраски;

Прозрачность;

Тени;

Материалы (текстуры);

Трассировка лучей;

Излучательность или взаимное отражение.
Источники света:

излучающие и отражающие источники,

точечные источники,

распределенные источники,

рассеянный свет.
Поверхности:

отражающие,

поглощающие,

полупрозрачные,

рассеивающие.
81
12. Модели освещения и механизмы отражения света
12.1. Классификация источников и поверхностей
При взаимодействии источник-поверхность имеет большое значение типы соответственно источников и поверхностей, классификация которых может
быть представлена в следующем виде [22]:
А) Источники света
 излучающие и отражающие источники;
 точечные источники;
 распределенные источники;
 рассеянный свет
Б) Поверхности
 отражающие;
 поглощающие;
 полупрозрачные;
 рассеивающие.
12.2. Модели отражения света
Когда свет попадает на поверхность, он может поглощаться, передаваться
или рассеиваться; обычно имеют место все три явления. Например, свет, попадающий на кожу, может рассеиваться на тканях на различной глубине и отражаться от крови и меланина в них, может поглощаться или рассеиваться параллельно коже в пределах тонкого слоя жира, а затем выходить наружу в какой-то
другой точке.
Картина еще более усложняется способностью некоторых поверхностей поглощать свет одной длины волны с последующим излучением света другой
длины волны. Этот эффект, называемый флуоресценцией, общеизвестен: под
рентгеновским излучением скорпионы излучают свет в видимом диапазоне; человеческие зубы флуоресцируют бледно-голубым светом под действием ультрафиолетового излучения. Кроме того, если поверхность нагреть достаточно
сильно, она будет излучать в видимом диапазоне. Рассмотрим самые простейшие случаи отражения.
На рисунке 12.2.1. показаны отражения: а – идеальное зеркало, б – неидеальное зеркало (зеркальный лепесток), в – диффузное, г – сумма диффузного и
зеркального, д – обратное, е – сумма диффузного, зеркального и обратного.
Рисунок 12.2.1. – Простейшие случаи отражения
82
Зеркальное отражение света – угол между нормалью и падающим лучом
равен углу между нормалью и отраженным лучом. Падающий луч, отраженный, и нормаль располагаются в одной плоскости.
Рисунок 12.2.2. – Зеркальное отражение света
Поверхность считается идеально зеркальной, если на ней отсутствуют какие-либо неровности, шероховатости. Собственный цвет у такой поверхности
не наблюдается. Световая энергия падающего луча отражается только по линии
отраженного луча. Какое-либо рассеяние в стороны от этой линии отсутствует.
В природе нет идеально гладких поверхностей, поэтому полагают, что если
глубина шероховатостей существенно меньше длины волны излучения, то рассеивания не наблюдается. Для видимого спектра можно принять, что глубина
шероховатостей поверхности зеркала должна быть существенно меньше
0.5 мкм.
Если поверхность зеркала отполирована неидеально, то наблюдается зависимость интенсивности отраженного света от длины волны – чем больше
длина волны, тем лучше отражение. Например, красные лучи отражаются сильнее, чем синие.
При наличии шероховатостей имеется зависимость интенсивности отраженного света от угла падения. Отражение света максимально для углов близких к 90 градусам. Падающий луч, попадая на слегка шероховатую поверхность
реального зеркала, порождает не один отраженный луч, а несколько лучей, рассеиваемых по различным направлениям. Зона рассеивания зависит от качества
полировки и может быть описана некоторым законом распределения. Как правило, форма зоны рассеивания симметрична относительно линии идеального
зеркально отраженного луча. К числу простейших, но достаточно часто используемых, относится эмпирическая модель распределения Фонга, согласно которой интенсивность зеркально отраженного излучения пропорциональна
(cos a)Р, где а – угол отклонения от линии идеально отраженного луча. Показатель р находится в диапазоне от 1 до 200 и зависит от качества полировки.
Запишем это таким образом:
I S  IK S cos P a
83
(12.2.1)
где I S – интенсивность излучения источника,
K S – коэффициент пропорциональности.
Диффузное отражение – этот вид отражения присущ матовым поверхностям. Матовой можно считать такую поверхность, размер шероховатостей
которой уже настолько велик, что падающий луч рассеивается равномерно во
все стороны. Такой тип отражения характерен, например, для гипса, песка, бумаги. Диффузное отражение описывается законом Ламберта, согласно которому интенсивность отраженного света пропорциональна косинусу угла между
направлением на точечный источник света и нормалью к поверхности:
I d  IK d cos 
(12.2.2.)
где I d – интенсивность источника света,
K d – коэффициент, который учитывает свойства материала поверхности.
Его значение находится в диапазоне от 0 до 1.
Интенсивность отраженного света не зависит от расположения наблюдателя.
Рисунок 12.2.3. – Диффузное отражение света
Матовая поверхность имеет свой цвет. Наблюдаемый цвет матовой поверхности определяется комбинацией собственного цвета поверхности и цвета
излучения источника света.
Комбинированное отражение. Не существует идеально зеркальных или
полностью матовых поверхностей. При изображении объектов средствами компьютерной графики обычно моделируют сочетание зеркальности и диффузного
рассеивания в пропорции, характерной для конкретного материала.
В этом случае модель отражения записывают в виде суммы диффузной и
зеркальной компонент:
I отр  I ( K d cos   K S cos P a) (12.2.3.)
– где константы K d , K S определяют отражательные свойства материала.
Согласно этой формуле интенсивность отраженного света равна нулю для
некоторых углов θ и а. Однако в реальных сценах обычно нет полностью затемненных объектов, следует учитывать фоновую подсветку, освещение рас84
сеянным светом, отраженным от других объектов. В таком случае интенсивность может быть эмпирически выражена следующей формулой:
I отр  I a K a  I ( K d cos   K S cos P a)
(12.2.4.)
I a – интенсивность рассеянного света, Ка – константа.
Можно еще усовершенствовать модель отражения, если учесть то, что энергия
от точечного источника света уменьшается пропорционально квадрату расстояния.
Прозрачность. Может быть рассчитана без учета преломления и с учетом
преломления света.
Прозрачность без учета преломления света. В простейших моделях прозрачности преломление не учитывается. При расчетах по такой модели могут
использоваться любые алгоритмы удаления невидимых поверхностей, учитывающие порядок расположения многоугольников. При использовании построчных алгоритмов, если передний многоугольник оказывается прозрачным, определяется ближайший из оставшихся, внутри которых находится строка сканирования. Суммарная закраска определяется следующим образом:
I  k  I б  I д (1  k ) (12.2.5.)
где I б – интенсивность для пикселя ближнего многоугольника;
I д – интенсивность для пикселя дальнего многоугольника;
k – характеризует прозрачность ближнего многоугольника. Лежит в пределах 0 < k < 1
Если k = 1, то он непрозрачен, если k = 0, то ближний многоугольник полностью прозрачен.
Прозрачность с учетом преломления света.
Законы преломления света следует учитывать при более реалистичном
построении изображения прозрачных объектов. Согласно модели идеального
преломления луч отклоняется на границе двух сред, причем падающий луч,
преломленный луч и нормаль лежат в одной плоскости (в этой же плоскости
лежит и зеркально отраженный луч). Обозначим угол между падающим лучом
и нормалью как а1, а угол между нормалью и преломленным лучом как
a2(рисунок 12.2.4).
Рисунок 12.2.4. – Прозрачность с учетом преломления света
85
Для этих углов известен закон Снеллиуса, согласно которому:
n1 sin a1  n2 sin a2 , где п1 и п2 – абсолютные показатели преломления соответствующих сред. На рисунке 14.2.5 изображен пример отклонения луча при преломлении. В данном случае границами раздела сред являются две параллельные
плоскости, например, при прохождении луча через толстое стекло.
Рисунок 12.2.5. – Пример отклонения луча при преломлении
Принято считать, что для вакуума абсолютный показатель преломления
равен единице. Показатель преломления зависит от состояния вещества,
например, от температуры. На практике обычно используют отношение показателей преломления двух сред (п1/n2), называемое относительным показателем
преломления. Еще одним важным аспектом преломления является зависимость
отклонения луча от длины волны. Это наблюдалось еще И. Ньютоном в опытах
по разложению белого света треугольной призмой. Чем меньше длина волны,
тем больше отклоняется луч при преломлении. Благодаря этому свойству преломления мы и наблюдаем радугу. Фиолетовый (=0,4 мкм) луч отклоняется
больше всего, а красный (=0,7 мкм) – меньше всего. Например, для стекла показатель преломления в видимом спектре изменяется от 1.53 до 1.51.
Таким образом, каждый прозрачный материал описывается показателем
преломления, зависящим от длины волны. Кроме того, необходимо учитывать,
какая часть световой энергии отражается, а какая часть проходит через объект и
описывается преломлением света.
Кроме идеального преломления в компьютерной графике (хотя и значительно реже, вследствие сложности реализации) используется диффузное преломление. Согласно этой модели падающий луч преломляется во все стороны.
Примером может служить молочное стекло, обледеневшее стекло.
13. Модели освещения
13.1. Источники света и их действие
Определим источник света как нечто, излучающее непосредственно генерируемый (а не только отражаемый) свет [18]. Для описания источника необходимо описать излучение, исходящее от него в каждом направлении. Обычно
излучение, которое генерирует сам источник, рассматривают отдельно от отраженного излучения (это потому, что отраженный свет, в отличие от генерируе86
мого света, зависит от среды). Полностью описывать излучение, которое исходит от источника в каждом направлении, нет необходимости. Привычнее считать, что источники дают постоянное излучение во всех направлениях (возможно, имеется некоторое число направлений с нулевым излучением, как,
например, у прожектора). Соответствующей величиной в этом случае будет
светимость, определяемая как энергия излучения, которая генерируется за единицу времени единицей площади излучающей поверхности. Помимо описания
светимости необходимо знать геометрию источника, сильно влияющую на пространственное распределение света вокруг источника и на тени, которые отбрасывают объекты вблизи источника. Можно назвать две причины, по которым
геометрия источников обычно принимается достаточно простой: во-первых,
многие искусственные источники можно достаточно эффективно представить
как точечные, линейные или плоские; во-вторых, даже источники с простой
геометрией могут производить удивительно сложные эффекты.
13.2. Точечные (всенаправленные) источники
В качестве обычного приближения часто принимается, что источник света – это очень маленькая сфера, фактически точка; такие источники называют
точечными. Это естественная модель, поскольку многие источники физически
малы по сравнению со средой, в которой они находятся. Модель действия точечного источника можно вывести, представив источник как очень маленькую
сферу, каждая точка которой излучает свет, а светимость по всей поверхности
сферы одинакова. Всенаправленный источник света из своей позиции иллюминирует все грани, ориентированные в его направлении. Поскольку всенаправленные источники света не сконструированы для отбрасывания теней, то их лучи не блокируются какими-либо элементами каркаса и, следовательно, уменьшают темноту любых теней, на которые они отбрасывают свет [22].
Основное назначение всенаправленных источников света служить в качестве заполняющего света. Весьма распространенный способ заключается в
создании множества всенаправленных источников света на больших расстояниях, различных цветов и с низкими уровнями отбрасывания теней и смешивания
их на модели. Подобная технология заимствована из театрального освещения.
Благодаря своей всенаправленности источники света создают вполне предсказуемую результирующую иллюминацию.
13.3. Линейные источники
Геометрия линейного источника – это прямая линия; в качестве наглядного примера можно привести флуоресцентную лампу. Линейные источники не
очень распространены в природе или в модельной среде. Основной интерес эта
модель представляет в задачах по радиометрии; в частности, диффузное отражение участков, расположенных в разумной близости от линейного источника,
меняется как величина, обратная расстоянию до источника (а не квадрату расстояния).
87
13.4. Плоские источники
Плоскость, которая излучает свет. Плоские источники очень важны по
двум причинам. Во-первых, они достаточно часто встречаются в природе (хороший пример – пасмурное небо) и в искусственной среде (например, прямоугольные флуоресцентные лампы на потолках многих предприятий). Вовторых, исследование плоских источников позволяет объяснить различные эффекты затенения и взаимного отражения. Плоские источники обычно представляют в виде участков поверхности, излучение которых не зависит от положения
и направления, и описываются их светимостью. Как и для линейных источников, в данном случае можно доказать, что для точек, не слишком удаленных от
источника, диффузное отражение, обусловленное плоским источником, не зависит от расстояния до источника. Это происходит потому, что для достаточно
большой (по сравнению с расстоянием до источника) поверхности, площадь,
которую источник образует на какой-либо полусфере направлений, остается
приблизительно той же, когда мы приближаемся к источнику или удаляемся от
него. Этим объясняется распространенность плоских источников в осветительной инженерии – они обычно дают достаточно однородное освещение.
13.5. Направленные источники света
Направленный источник света лучше всего сравнивать с солнцем. Когда
свет отбрасывает тени, угол тени определяется линией, проведенной от источника света к объекту. Этот эффект наиболее заметен, когда имеются тесно расположенные объекты с параллельными поверхностями – например, частокол.
Размещение точечного источника света рядом с частоколом приведет к появлению расширяющихся теней, поскольку каждый кол проводит собственную линию тени к источнику света. По мере удаления источника света от частокола
угол между тенями каждого кола будет все меньше и меньше. Если источник
света поместить на значительном удалении, то углы между тенями станут
настолько малы, что отбрасываемые тени будут практически параллельными.
Именно так получается с солнечным светом, а в компьютерной графике подобный эффект называется параллельным или направленным освещением.
13.6. Целевой источник света
Целевой точечный источник представляет собой направленный источник
света, который светит в направлении своей цели. Цель может двигаться независимо. Целевой точечный источник света похож на ситуацию, когда к источнику
света привязывают веревку, что часто используется на концертах. Если потянуть за веревку, свет поворачивается в заданном направлении. В отличие от
всенаправленных источников света, направлением их света можно управлять.
Целевые точечные источники могут отбрасывать тени, иметь прямоугольную
или круглую форму и даже проектировать растровые изображения. Типичными
примерами являются фары автомобиля, прожектор и пр.
88
13.7. Возникновение теней
В локальной модели затенения тени появляются, когда участок не может
видеть один или несколько источников. В этой модели точечные источники порождают ряд теней с четкими границами; особенно темны затененные области,
откуда не виден ни один источник. Тени, отбрасываемые одним источником,
могут быть четкими и черными в зависимости от размера источника и остальных соседних поверхностей (которые могут отражать свет в эту тень и делать
ее границы размытыми). В XIX веке было популярно отбрасывать такие тени на
бумагу, а затем обводить их карандашом, в результате чего получались силуэты, которые иногда еще можно увидеть в антикварных магазинах [19].
Геометрия тени, отбрасываемой точечным источником на плоскость, аналогична геометрии наблюдения через перспективную камеру. Любой участок
поверхности будет находиться в тени, если луч, идущий от участка к источнику, проходит через объект. Это означает, что существует два вида тени:
 собственная тень возникает, когда поверхность удалена от источника света, и луч от участка поверхности к источнику идет перпендикулярно поверхности;
 отбрасываемая тень – когда источник неожиданно исчезает за затеняющим
объектом. Отметим, что тени, отбрасываемые на искривленную поверхность, могут иметь чрезвычайно сложную геометрию.
Если источников много, то тени выглядят светлее (кроме тех точек, откуда не
виден ни один источник), и может существовать множество качественно разных
областей тени (каждый источник отбрасывает свою собственную тень – некоторые
точки могут видеть только один источник). Один из примеров этого явления можно
наблюдать при телевизионной трансляции футбольных матчей. Поскольку стадион
освещается множеством ярких отдаленных точечных источников – прожекторов,
равномерно распределенных по всему периметру стадиона, – вокруг каждого игрока образуется набор равномерно окружающих его теней. При перемещении игрока
по полю эти тени обычно становятся темнее или светлее, чаще всего потому, что
освещение, обусловленное другими источниками и взаимным отражением в области тени, увеличивается или уменьшается.
Плоские источники порождают сложные тени со сглаженными границами, поскольку если смотреть на источник из точки, находящейся на участке поверхности, то он медленно скрывается за затеняющим объектом. Области, откуда источник не виден вообще, называют тенью; области, откуда видна некоторая часть источника, называют полутенью. Представьте себя лежащим на
спине и смотрящим вверх. Из точки 1 вам будет виден весь источник; из точки
2 вы сможете увидеть его часть; а из точки 3 вы его не увидите
Простой способ определения объектов, попавших в тень и, следовательно, неосвещенных, аналогичен алгоритму удаления невидимых поверхностей:
те объекты, которые невидимы из источника освещения, но видимы из точки
зрения находятся в тени. На первом шаге в алгоритме с учетом тени определяются все многоугольники, видимые из точки освещения. Затем выполняется
удаление поверхностей невидимых из точки зрения. При выполнении закраски
89
многоугольника проверяется, не закрыт ли он многоугольником, видимым из
источника освещения. Если да, то в модели освещения учитываются (если
надо) все три компоненты – диффузное и зеркальное отражения и рассеянный
свет. Если же перекрытия нет, то закрашиваемый многоугольник находится в
тени и надо учитывать только рассеянный свет
Рисунок 13.7.1– Источник, тень и полутень
13.8. Естественное освещение
Одна проблема, связанная с локальной моделью затенения, заметна сразу:
данная модель предсказывает, что некоторые области тени будут относительно
темными, поскольку они не видят источник. Это предсказание почти никогда
не сбывается, поскольку тени освещаются светом, исходящим от других рассеивающих поверхностей (это явление может иметь огромное значение). В комнатах со светлыми стенами и плоскими источниками тень можно увидеть, только поднеся объект очень близко к стене или к источнику. Это происходит потому, что участок стены видит все остальные стены комнаты; до тех пор, пока
объект не будет находиться слишком близко к стене, он перекрывает только
небольшую часть видимой полусферы направлений каждого участка.
При определенных обстоятельствах суммарное излучение, которое получает участок поверхности от других участков, почти постоянно и приблизительно равномерно распределено по полусфере направлений. Это справедливо
для внутренней поверхности сферы с постоянным распределением диффузного
отражения (что следует из симметрии) и почти справедливо для внутреннего
помещения комнаты с белыми стенами. В таких средах иногда можно построить модель действия остальных участков, добавив к диффузному отражению
каждого участка член, отвечающий за естественное освещение.
90
14. Модели закраски
14.1. Общие сведения
Существует несколько основных способов закраски многоугольников,
например однотонная закраска, закраска с интерполяцией интенсивности и закраска с интерполяцией векторов нормали [23].
При однотонной закраске предполагается, что и источник света и наблюдатель находятся в бесконечности. На изображении могут быть хорошо заметны резкие перепады интенсивности между различно закрашенными многоугольниками. Если многоугольники представляют собой результат аппроксимации криволинейной поверхности, то изображение недостаточно реалистично.
В методе закраски с интерполяцией интенсивности (метод Гуро) нормали
в вершинах многоугольников вычисляются как результат усреднения нормалей
ко всем полигональным граням, которым принадлежит данная вершина. Используя значения нормалей, вычисляют интенсивности в вершинах по той или
иной модели освещения. Эти значения затем используются для билинейной интерполяции: для данной строки сканирования вначале находят значения интенсивностей на ребрах, а затем линейно интерполируют между ними при закраске
вдоль строки.
В методе закраски с интерполяцией нормали (метод Фонга) значение
нормали вдоль строки интерполируется между значениями нормалей на ребрах
для данной строки. Значения нормалей на ребрах получается как результат интерполирования между вершинами. Значения же нормалей в вершинах являются результатом усреднения, как и выше рассмотренном методе. Значение нормали для каждого из пикселей строки используется для вычислений по той или
иной модели освещения.
14.2. Метод Гуро (закраска с интерполяцией интенсивности)
Этот метод предназначен для создания иллюзии гладкой криволинейной
поверхности, описанной в виде многогранников или полигональной сетки с
плоскими гранями. Если каждая плоская грань имеет один постоянный цвет,
определенный с учетом отражения, то различные цвета соседних граней очень
заметны, и поверхность выглядит именно как многогранник. Казалось бы, этот
дефект можно замаскировать за счет увеличения количества граней при аппроксимации поверхности. Но зрение человека имеет способность подчеркивать перепады яркости на границах смежных граней – такой эфект называется
эффектом полос Маха. Поэтому для создания иллюзии гладкости нужно
намного увеличить количество граней, что приводит к существенному замедлению визуализации – чем больше граней, тем меньше скорость рисования объектов [24].
Метод Гуро основывается на идее закрашивания каждой плоской грани
не одним цветом, а плавно изменяющимися оттенками, вычисляемыми путем
интерполяции цветов примыкающих граней. Закрашивание граней по методу
Гуро осуществляется в четыре этапа:
91
1.
Вычисляются нормали к каждой грани.
2.
Определяются нормали в вершинах. Нормаль в вершине определяется усреднением нормалей примыкающих граней.
Рисунок 14.2.1. – Нормали каждой грани
3.
На основе нормалей в вершинах вычисляются значения интенсивностей в вершинах согласно выбранной модели отражения света.
4.
Закрашиваются полигоны граней цветом, соответствующим линейной интерполяции значений интенсивности в вершинах.
N1  N 2  N 3
(14.2.1.)
3
Определение интерполированных значений интенсивности отраженного
света в каждой точке грани (и, следовательно, цвет каждого пикселя) удобно
выполнять во время цикла заполнения полигона. Рассмотрим заполнение контура грани горизонталями в экранных координатах.
Вектор нормали в вершине равен: N a 
Рисунок 14.2.2. – Заполнения грани горизонталями
в экранныхкоординатах
Интерполированная интенсивность I в точке (X,Y) определяется исходя из
пропорции
I  I1
I I
( I  I )( X  X 1 )
 2 1 => I  I1  2 1
X  X1 X 2  X1
X 2  X1
92
(14.2.2.)
Значения интенсивностей I1 и I2 на концах горизонтального отрезка представляют собой интерполяцию интенсивности в вершинах:
I1  I b I c  I b

,
Y  Yb Yc  Yb
I 2  Ib I a  Ib

,
Y  Yb Ya  Yb
(14.2.3.)
Метод Гуро быстрее метода Фонга, но с его помощью нельзя добиться
некоторых световых эффектов (например, бликов). Его обычно используют в
приложениях, где важна скорость, например, в авиасимуляторах. Закраска методом Фонга позволяет получить более качественные изображения, но она и
обходится дороже. В методе Гуро считаются только интенсивности в вершинах
многоугольников, используя функцию закраски, а затем интерполируются для
пикселей внутренней области. А в методе Фонга интерполируются нормали, и
функция закраски применяется к каждой точке.
14.3. Недостатки метода Гуро
С помощью метода Гуро можно изображать только матовые поверхности,
не имеющие зеркальных бликов (т.к. блик будет размазываться по поверхности
и скроется). Действительно, в случае, когда блик расположен внутри грани и не
доходит до вершин, зеркальная составляющая в вершинах равна нулю и, следовательно, блик не появится при интерполяции.
У метода Гуро есть еще один недостаток. Дело в том, что возникает классический оптический эффект (Mach banding): на границах четырехугольников
человеческий глаз усиливает переходы и границы воспринимаются как светлые линии (это происходит из-за разрыва производной).
Желание устранить эти недостатки приводит нас к методу Фонга.
14.4. Метод Фонга (закраска с интерполяцией нормали)
Аналогичен методу Гуро, но при использовании метода Фонга для определения цвета в каждой точке интерполируются не интенсивности отраженного
света, а векторы нормалей [24].
 Определяются нормали к граням.
 По нормалям к граням определяются нормали в вершинах. В каждой точке закрашиваемой грани определяется интерполированный вектор нормали.
 По направлению векторов нормали определяется цвет точек грани в соответствии с выбранной моделью отражения света.
Рассмотрим, как можно получить вектор нормали в каждой точке грани.
'
'
'
Для интерполяции будем оперировать векторами N a , N b и N c , исходящими из
центра координат плоскости проецирования и параллельными соответствующим нормалям N a , N b и N c в вершинах a, b и c.
93
Рисунок 14.4.1. – Вектор нормали в каждой точке грани
'
'
Сначала найдем N1 и N 2
 X N 1   X Nb  ( X Nc  X Nb )(Y  Yb ) /(Yc  Yb ) 

 

N1'   YN 1    YNb  (YNc  YNb )(Y  Yb ) /(Yc  Yb )  ,
 Z   Z  ( Z  Z )(Y  Y ) /(Y  Y ) 
Nc
Nb
b
c
b

 N 1   Nb
 X N 2   X Nb  ( X Na  X Nb )(Y  Yb ) /(Ya  Yb ) 

 

N 2'   YN 2    YNb  (YNa  YNb )(Y  Yb ) /(Ya  Yb ) 
 Z   Z  ( Z  Z )(Y  Y ) /(Y  Y ) 
Na
Nb
b
a
b
 N 2   Nb

(14.4.1.)
(14.4.2.)
'
'
где X Na , YNa , Z Na , X Nb , YNb , Z Nb , X Nc , YNc , Z Nc – координаты векторов N a , N b
'
'
и N c . Теперь найдем координаты вектора N .
 X N   X N 1  ( X N 2  X N 1 )( X  X 1 ) /( X 2  X 1 ) 

 

N '   YN    YN 1  (YN 2  YN 1 )( X  X 1 ) /( X 2  X 1 ) 
 Z   Z  ( Z  Z )( X  X ) /( X  X ) 
N2
N1
1
2
1
 N   N1

(14.4.3.)
N'
Вектор
параллелен вектору N для нормали в точке (X,Y), поэтому его можно
использовать для расчета отражения света та же, как и вектор нормали N.
Метод Фонга сложнее, чем метод Гуро. Для каждой точки (пикселя) поверхности необходимо выполнять намного больше вычислительных операций.
Тем не менее, он дает лучшие результаты, в особенности при имитации зеркальных поверхностей.
94
14.5. Недостатки метода Фонга
Недостатки метода Фонга: несмотря на то, что метод Фонга позволяет
получать блики на поверхности и снижает видимость границ граней, у него все
же есть недостатки.
· работая в плоскости экрана, мы проводим интерполяцию с одинаковыми приращениями, хотя правильнее было бы учитывать перспективное представление граней и использовать разные приращения.
· возникают проблемы при анимации. В определенный момент времени
при повороте грани нормаль в одной и той же точке начинает интерполироваться по нормалям другой тройки вершин, что, естественно, иногда бывает очень
заметно.
· при разбивке поверхности на четырехугольники надо учитывать, что,
если точка является вершиной хотя бы одного четырехугольника, то она также
должна быть вершиной всех четырехугольников, которым она принадлежит.
Иначе можно столкнуться с ситуацией, где закраска грани 1 интерполируется
по N1 и N3 без учета N2, в то время как при закраске граней 2 и 3 N2 учитывается. Это может привести к нежелательным визуальным эффектам.
· В-четвертых, если нормали к смежным четырехугольникам очень быстро меняют направление, мы можем получить неправильную закраску.
Общие черты и отличия методов Гуро и Фонга
Их можно показать на примере цилиндрической поверхности, аппроксимированной многогранником. Пусть источник света находится позади нас.
Проанализируем закрашивания боковых граней цилиндра (рисунок 14.5.1).
Рисунок 14.5.1. – Закрашивание боковых граней цилиндра
Основные отличия будут в закрашивании передней грани. Она перпендикулярна направлению лучей света. Поэтому нормали в вершинах этой грани
располагаются симметрично – они образовывают попарно равные по абсолютной величине углы с лучами света. Для метода Гуро это обуславливает одинаковые интенсивности в вершинах передней грани. А раз интенсивности одинаковые, то и для любой точки внутри этой грани интенсивность одинакова (для
линейной интерполяции). Это обуславливает единый цвет закрашивания. Все
95
точки передней грани имеют одинаковый цвет, что, очевидно, неправильно.
Метод Фонга дает правильное закрашивание. Если интерполировать векторы
нормалей передней грани, то по центру будут интерполированные нормали, параллельные лучам света. По методу Фонга центр передней грани будет светлее,
чем края.
Методы Гуро и Фонга хороши тем, что они просты и с их помощью можно получить довольно хорошую закраску, но поверхности получаются неинтересными и какими-то безжизненными. Текстуры помогут нам избежать этого.
14.6. Текстурирование
Наложение текстуры на поверхность объектов сцены повышает ее реалистичность. Однако при текстурировании полигональных объектов мы сталкиваемся с некоторыми трудностями. Нельзя наложить двумерный рисунок на полигональный объект произвольного размера, не обрезая рисунок. Необходимо
установить соответствие между точками на поверхности объекта и точками
текстуры, что в общем случае приводит к сжатию или растяжению рисунка текстуры. Это соответствие устанавливается с помощью специальной функции
проецирования F:
(u, v)  F ( x, y, z) ,
(14.6.1.)
где u, v – координаты текстуры, а x, y, z – координаты текстурируемого
объекта.
В качестве функции проецирования могут использоваться стандартные
функции отображения: цилиндрическая и сферическая.
Рассмотрим цилиндрическое отображение: имея параметрическое задание
цилиндрической поверхности ( , z ) , легко получить функцию проецирования
для координат текстуры. Произвольная точка кривой поверхности цилиндра
радиуса r и высоты h задается следующим образом: (r cos , r sin  , hz) ,
0    2 , 0  z  1 , (u, v)  ( / 2 , z ), u, v  0,1
(14.6.2.)
Функция проецирования для этого варианта представлена на рисунке
14.6.1.
Отображение на сферу более проблематично. Проецирование плоскости
на сферическую поверхность приводит к полному разрушению рисунка на полюсах. Рассмотрим в качестве примера наложение текстуры на часть сферы.
Она параметризована следующим образом: (r cos sin  , r sin  sin  , r cos  ) , где
0     / 2 ,  / 4     / 2 .
Тогда мы можем получить координаты текстуры из соотношения:
96
(u, v)  
 ( / 2)  
,
 / 2 ( / 4)
.
(14.6.3.)
Рисунок 14.6.1. – Функция проецирования
В общем случае текстурируемые поверхности не являются цилиндрическими или сферическими. Для наложения текстуры на объекты произвольной
формы применяется метод двухступенчатого отображения, суть которого в следующем:
·
На первом шаге двумерная область текстуры отображается на простую трехмерную промежуточную поверхность, например, цилиндрическую:
·
T (u, v)  T ' ( xi, yi, zi)
(14.6.4.)
Этот этап называется S-mapping.
·
На втором шаге полученная трехмерная текстура проецируется на
поверхность объекта (O-mapping):
·
T ' ( xi, yi, zi )  O( x, y, z) .
(14.6.5.)
Комбинация этих операций позволяет текстурировать объекты «естественным» способом. В качестве промежуточной поверхности предлагается
исрользовать произвольно ориентированную плоскость, кубическую, цилиндрическую или сферическую поверхности, выбор одной из которых зависит,
прежде всего, от геометрической формы поверхности текстурируемого объекта.
Существует также несколько вариантов операции O-mapping. Соответствие
между координатами могут быть получены следующим образом:
 При пересечении отраженного от поверхности объекта луча и промежуточной поверхности T’.
97
 При пересечении нормали к поверхности в точке (x, y, z) c T’.
 При пересечении линии, проходящей через (x, y, z) и центр тяжести объекта, с T’.
 При пересечении линии, идущей из (x, y, z) к T’ , ориентация которой задается нормалью к T’ в точке (xi, yi, zi).
Рисунок 14.6.2. – Примеры соответствий между координатами
14.7. Пирамидальное фильтрование (Mip-mapping)
Если посмотреть на текстурированную поверхность, находящуюся на
большом расстоянии, то вместо рисунка текстуры мы увидим фактически случайный набор точек. Это связано с тем, что здесь одному пикселю экрана соответствует сразу несколько пикселей текстуры, поэтому для корректного отображения данного пикселя его цвет должен быть усреднением цветов этих пикселей (вместо этого выбирается практически случайным образом один из этих
пикселей текстуры).
Ясно, что нереально проводить точное усреднение пикселей в реальном
времени практически: это потребовало бы слишком больших затрат. Однако
существует простой метод, позволяющий бороться с подобными ошибками
сравнительно легко.
Пусть исходное изображение имеет размер 2n на 2n. Построим по нему
последовательность изображений, являющихся копиями данного и имеющими
размеры 2n-1, 2n-2 и т. д. Размер последнего изображения будет 1 на 1 пиксель. В
результате получим пирамиду (mip-map), состоящую из (n+1) уровня, где на
нижнем (0-м) уровне находится исходное изображение. Вся пирамида занимает
объем памяти, необходимый для размещения 22n-1 пикселей.
98
Рисунок 14.7.1. – Способ усреднения пикселей
Доступ к пирамиде осуществляется с помощью трех координат: u, v, d,
где u и v – координаты текстуры, а d (compression) – мера компрессии текстуры,
и может быть рассмотрена как вертикальная координата пирамиды.
Рисунок 12.7.2. – Определение доступа к пирамиде
посредством трех координат
Изображение k-того уровня строится из изображения (k-1)-ого уровня
следующим образом: цвет пикселя определяется билинейной интерполяцией
цветов соответствующих 4-ех пикселей изображения предшествующего уровня.
15. ТРАССИРОВКА ЛУЧЕЙ
15.1. методы трассировки
Методы трассировки лучей на сегодняшний день считаются наиболее
мощными и универсальными методами создания реалистичных изображений.
Известно много примеров реализации алгоритмов трассировки для качественного отображения самых сложных трехмерных сцен. Можно отметить, что универсальность методов трассировки в значительной степени обусловлена тем,
99
что в их основе лежат простые и ясные понятия, отражающие наш опыт восприятия окружающего мира [22].
Итак, полагаем, что окружающие нас объекты обладают по отношению к
свету такими свойствами:
 излучают;
 отражают и поглощают;
 пропускают сквозь себя.
Каждое из этих свойств можно описать некоторым набором характеристик. Например, излучение можно охарактеризовать интенсивностью, направленностью, спектром. Излучение может исходить от условно точечного источника (далекая звезда) или протяженного (скажем, от извергающейся из кратера
вулкана расплавленной лавы). Распространение излучения может осуществляться вдоль достаточно узкого луча (сфокусированный луч лазера), конусом (прожектор), равномерно во все стороны либо еще как-нибудь.
Рисунок 15.1.1. – Распространение излучения равномерно
во все стороны(солнце) и конусом (прожектор)
Свойство отражения (поглощения) можно описать характеристиками
диффузного рассеивания и зеркального отражения.
Рисунок 15.1.2. – Свойства отражения
Прозрачность можно описать ослаблением интенсивности и преломлением.
Распределение световой энергии по возможным направлениям световых
лучей можно отобразить с помощью векторных диаграмм, в которых длина
векторов соответствует интенсивности. Два крайних, идеализированных случая
преломления изображены на рисунке 15.1.3.
100
Рисунок 15.1.3. –Идеализированные случаи преломления
Некоторые реальные объекты преломляют лучи гораздо более сложным
образом, например, обледеневшее стекло.
Один и тот же объект реальной действительности может восприниматься
в виде источника света, а при ином рассмотрении может считаться предметом,
только отражающим и пропускающим свет. Например, купол облачного неба в
некоторой трехмерной сцене может моделироваться в виде протяженного (распределенного) источника света, а в других моделях это же небо выступает как
полупрозрачная среда, освещенная со стороны Солнца. В общем случае каждый
объект описывается некоторым сочетанием перечисленных выше трех свойств.
15.2. Метод прямой трассировки лучей
Теперь рассмотрим то, как формируется изображение некоторой сцены,
включающей в себя несколько пространственных объектов. Будем полагать,
что из точек поверхности (объема) излучающих объектов исходят лучи света.
Можно назвать такие лучи первичными – они освещают все остальное. Важным
моментом является предположение, что световой луч в свободном пространстве распространяется вдоль прямой линии (хотя в специальных разделах физики изучаются также и причины возможного искривления). Но в геометрической оптике полагают, что луч света распространяется прямолинейно до тех
пор, пока не встретится отражающая поверхность или граница среды преломления. Так будем полагать и мы.
От источников излучения исходит по различным направлениям бесчисленное множество первичных лучей (даже луч лазера невозможно идеально
сфокусировать – все равно свет будет распространяться не одной идеально тонкой линией, а конусом, пучком лучей). Некоторые лучи уходят в свободное
пространство, а некоторые (их также бесчисленное множество) попадают на
другие объекты. Если луч попадает в прозрачный объект, то, преломляясь, он
вдет дальше, при этом некоторая часть световой энергии поглощается. Подобно
этому, если на пути луча встречается зеркально отражающая поверхность, то он
также изменяет направление, а часть световой энергии поглощается. Если объект зеркальный и одновременно прозрачный (например, обычное стекло), то
будет уже два луча – в этом случае говорят, что луч расщепляется.
Можно сказать, что в результате действия на объекты первичных лучей
возникают вторичные лучи. Бесчисленное множество вторичных лучей уходит
в свободное пространство, но некоторые из них попадают на другие объекты.
101
Так, многократно отражаясь и преломляясь, отдельные световые лучи приходят
в точку наблюдения – глаз человека или оптическую систему камеры. В точку
наблюдения может попасть и часть первичных лучей непосредственно от источников излучения. Таким образом, изображение сцены формируется некоторым множеством световых лучей. Цвет отдельных точек изображения определяется спектром и интенсивностью первичных лучей источников излучения, а
также поглощением световой энергии в объектах, встретившихся на пути соответствующих лучей.
Непосредственная реализация данной лучевой модели формирования
изображения представляется затруднительной. Можно попробовать построить
алгоритм построения изображения указанным способом. В таком алгоритме
необходимо предусмотреть перебор всех первичных лучей и определить те из
них, которые попадают в объекты и в камеру. Затем выполнить перебор всех
вторичных лучей, и также учесть только те, которые попадают в объекты и в
камеру. И так далее. Можно назвать такой метод прямой трассировкой лучей.
Как учитывать бесконечное множество лучей, идущих во все стороны? Полный
перебор бесконечного числа лучей в принципе невозможен. Даже если какимто образом свести это к конечному числу операций (например, поделить всю
сферу направлений на угловые секторы и оперировать уже не вековечно тонкими линиями, а секторами), все равно остается главный недостаток метода –
много лишних операций, связанных с расчетом лучей, которые затем не используются. Так, во всяком случае, это представляется в настоящее время.
Коротко расчет освещения сцены методом прямой трассировки лучей
можно описать следующими этапами:
 от всех источников света испускаются лучи во всех направлениях;
 рассчитываются преломление и отражение каждого луча, в том числе и
отраженного, т.е. каждая точка сцены может освещаться либо напрямую
источником, либо отраженным светом;
 часть лучей, попавшая в глаз наблюдателя, сформирует в нем изображение сцены.
Изображение формирует только малая часть лучей.
Обобщая вышесказанное, можно записать недостатки прямой трассировки лучей.
А) Проблемы с моделированием диффузного отражения и преломления.
Б) Для каждой точки изображения необходимо выполнять много вычислительных операций. Трассировка лучей относится к числу самых медленных
алгоритмов синтеза изображений.
15.3. Метод обратной трассировки лучей
Позволяет значительно сократить перебор световых лучей. Согласно этому методу отслеживание лучей производится не от источников света, а в обратном направлении – от точки наблюдения. Так учитываются только те лучи, которые вносят вклад в формирование изображения.
102
Рассмотрим, как можно получить растровое изображение некоторой
трехмерной сцены методом обратной трассировки. Предположим, что плоскость проецирования разбита на множество квадратиков – пикселей. Выберем
центральную проекцию с центром схода на некотором расстоянии от плоскости
проецирования. Проведем прямую линию из центра схода через середину квадратика (пикселя) плоскости проецирования. Это будет первичный луч обратной
трассировки. Если прямая линия этого луча попадает в один или несколько
объектов сцены, то выбираем ближайшую точку пересечения. Для определения
цвета пикселя изображения нужно учитывать свойства объекта, а также то, какое световое излучение приходится на соответствующую точку объекта.
Если объект зеркальный (хотя бы частично), то строим вторичный луч –
луч падения, считая лучом отражения предыдущий, первичный трассируемый
луч. Выше мы рассматривали зеркальное отражение и получили формулы для
вектора отраженного луча по заданным векторам нормали и луча падения. Но
здесь нам известен вектор отраженного луча, а как найти вектор падающего луча? Для этого можно использовать ту же самую формулу зеркального отражения, но определяя необходимый вектор луча падения как отраженный луч. То
есть отражение наоборот.
При практической реализации метода обратной трассировки вводят ограничения. Некоторые их них необходимы, чтобы можно было в принципе решить задачу синтеза изображения, а некоторые ограничения позволяют значительно повысить быстродействие трассировки.
Примеры таких ограничений:
1.
Среди всех типов объектов выделим некоторые, которые назовем
источниками света. Источники света могут только излучать свет, но не могут его отражать или преломлять. Будем рассматривать только точечные источники света.
2.
Свойства отражающих поверхностей описываются суммой двух
компонент – диффузной и зеркальной.
3.
В свою очередь, зеркальность также описывается двумя составляющими. Первая (reflection) учитывает отражение от других объектов, не являющихся источниками света. Строится только один зеркально отраженный
луч для дальнейшей трассировки. Вторая компонента (specular) означает световые блики от источников света. Для этого направляются лучи на все источники света и определяются углы, образуемые этими лучами с зеркально
отраженным лучом обратной трассировки. При зеркальном отражении цвет
точки поверхности определяется цветом того, что отражается. В простейшем
случае зеркало не имеет собственного цвета поверхности.
4.
При диффузном отражении учитываются только лучи от источников света. Лучи от зеркально отражающих поверхностей игнорируются. Если
луч, направленный на данный источник света, закрывается другим объектом,
значит, данная точка объекта находится в тени. При диффузном отражении
цвет освещенной точки поверхности определяется собственным цветом поверхности и цветом источников света.
103
5.
Для прозрачных (transparent) объектов обычно не учитывается зависимость коэффициента преломления от длины волны. Иногда прозрачность вообще моделируют без преломления, то есть направление преломленного луча совпадает с направлением падающего луча.
6.
Для учета освещенности объектов светом, рассеиваемым другими
объектами, вводится фоновая составляющая (ambient).
7.
Для завершения трассировки вводят некоторое пороговое значение
освещенности, которое уже не должно вносить вклад в результирующий
цвет, либо ограничивают количество итераций.
15.4. Алгоритм обратной трассировки лучей
для расчета освещения сцены
 отслеживаются лучи, проходящие из глаза наблюдателя через каждый
пиксель экрана в сцену;
 на каждой поверхности сцены, на которую попадает луч, формируются
отраженный и преломленный лучи;
 каждый такой луч рекурсивно отслеживается, чтобы определить пересекаемые поверхности;
 ветвление прекращается если:
а) луч вышел за пределы сцены;
б) луч пришел на источник света;
в) луч попал на непрозрачный диффузный рассеиватель;
г) исчерпана память;
 в результате для каждого пикселя строится дерево пересечений. Ветви
такого дерева – распространение луча, а узлы – пересечения с поверхностями;
 закраска пикселя определяется прохождением по дереву и вычислением
вклада каждой пересеченной поверхности в соответствии с используемыми моделями отражения.
Основные характеристики обратной трассировки.
А) Высокий реализм. Даже усеченные варианты данного метода позволяют
получить достаточно реалистичные изображения. Например, если ограничиться только первичными лучами (из точки проецирования), то это дает
удаление невидимых точек. Трассировка уже одного-двух вторичных лучей
дает тени, зеркальность, прозрачность.
Б) Учет отражения, преломления, затухания.
В) Проблемы с диффузным отражением и преломлением. Так как диффузное
отражение ведет к бесконечному числу лучей, то диффузное отражение и
преломление или не учитывают или рассчитывают только для ближайшей к
глазу поверхности.
Г) Большой объем вычислений.
104
Д) Интенсивность точки и глобальная освещенность вычисляются совместно, поэтому при смене точки наблюдений сцена должна быть вычислена заново.
Е) Затруднено моделирование распределенных источников света, т.к. расчет
поточечный.
16. РАБОТА В 3D MAX
16.1. Interface (Пользовательская Среда)
Главное окно 3d MAX выглядит, как показано на рисунке 16.1.1.
Рисунок 16.1.1. – Главное окно 3d MAX
Если панель (например «Стандартная») не умещается по длине экрана, то
для доступа к невидимым кнопкам необходимо выполнять прокрутку перетаскиванием мыши. Для входа в этот режим необходимо разместить курсор на панели в месте, свободном от кнопок и, после изменения формы курсора со
«стрелки» на «руку» и нажатия левой кнопки мыши, далее просто перемещайте
мышь, не отпуская нажатой кнопки [7].
105
Рисунок 16.1.2. – Команды строки меню
Таблица 16.1.1. – Основные кнопки и команды
Вид кнопки
Описание кнопки
Кнопки отмены и повтора. Работают не всегда однозначно.
Использованием лучше не злоупотреблять.
Кнопки для выбора объектов. Если объектов мало, можно
выбрать объект щелчком. Для добавления объекта к уже выделенным нужно нажать Ctrl. Если много и разных, можно выбрать
из списка. Можно выбрать выделительной рамкой различной
формы.
Режим выделения рамкой. Либо полностью попадают в окно (рамку), либо частично.
Инструменты перемещения, поворота и масштабирования
соответственно.
Центры трансформации. Определяют точку, относительно
которой будет произведен поворот или масштабирование. Это
может быть точка привязки, центр выбранных объектов, центр
системы координат.
Зеркальное отображение выделенных объектов. Нужно
указывать ось или плоскость, относительно которых совершается
поворот.
Выравнивание объектов относительно друг друга.
Редактор материалов.
Рендеринг. Либо с настройкой параметров, либо быстрый.
Панель Команд – совокупность наборов инструментов создания и редактирования объектов, настроек параметров анимации и служебных средств среды Мах. Эта панель также представлена в виде закладок по видам действий:
Создание (любых объектов)
Изменение параметров уже созданных объектов
106
Рисунок 16.1.3. – Создание и изменение объектов
Таблица 16.1.2 – Вкладка «Создание»
Вкладка «Создание»
Создание примитивов (трехмерных геометрических
тел). Это куб (бокс), сфера, цилиндр, конус, тор и пр.
Создание сплайнов (плоских линий). Это линия, прямоугольник, окружность эллипс и пр.
Создание источников света.
Создание камер.
Создание вспомогательных объектов.
Создание сил. Это ветер, сила гравитации и пр.
Создание систем. Например, настройка дневного
освещения, в котором используется несколько источников
света.
Настройка Интерфейса
Видовые окна 3D MAX и управление видами [10].
Видовые Окна – основная рабочая область программы, где происходит
отображение геометрии объектов сцены, материалов, текстурных карт и служебных данных. Видовые Окна могут использовать набор точек зрения
наблюдателя, выбираемый из некоторого числа вариантов. Могут быть активными или пассивными.
 Тор (Вид Сверху)
 Front (Вид Спереди)
 Left (Вид Слева)
 Right (Вид Справа)
 Bottom (Вид Снизу)
 Back (Вид Сзади)
 Perspective (Перспектива)
 CameraXX (Вид из Камеры)
 LightXX (Вид из Источника Света)
107
User (Вид Аксонометрический, Пользовательский)
Активное Видовое Окно имеет желтую рамку по периметру и используется для применения действий над объектами, в то время как пассивные только отображают текущие изменения. Название окна расположено в верхнем левом углу, и все его настройки вызываются правым щелчком мыши на нем. В
этом случае возникает Контекстное Меню – список команд и инструментов,
вызываемый обычно правым щелчком на редактируемом объекте сцены или
элементе интерфейса. Этот список зависит от нескольких факторов и предоставляет быстрый доступ к разрешенным в данный момент действиям. Действия, которые можно производить в видовых окнах.
1. Можно менять размер каждого окна в отдельности с помощью стрелок.
2. Можно одно окно расширить на весь экран. Команда
. Повторное нажатие возвращает остальные окна.
3. Чтобы сбросить настройки окон, нужно щелкнуть ПКМ по любой разделительной полосе и выбрать Reset Layout.
4. Можно менять расположение окон и их количество. Команда Customize >
Viewport Configuration. Вкладка Layout.
5. Чтобы выбрать вид в окне проекции, нужно открыть контекстное меню окна проекции, либо пользоваться горячими клавишами.
6. Чтобы перейти с вида на вид случайно не изменив объекты, нажимать надо
на название проекции.

7.
Чтобы перемещать вид в окне проекции, используют кнопку
8.
Чтобы вращать вид в окне проекции, используют кнопки группы
.
или
.
9.
Кнопки
10. Кнопка
11.
Кнопка
– масштабирование вида без изменения размера объектов.
– приближение всех существующих объектов в одном окне.
– Приближение всех существующих объектов во всех окнах.
Единицы Измерения. Сетка Координат. Привязки
Следующие важные настройки интерфейса Мах включают в себя выбор
Единиц Измерения, установку режимов Привязок и настройку параметров Сетки Координат.
Для выбора Единиц Измерения следует вызвать пункт Units Setup
(Настройка Единиц Измерения) из падающего меню Customize (Настроить). В
результате возникнет одноименное диалоговое окно с набором переключателей
для выбора одной из систем:
 Metric (Метрические),
 US Standard (Американские),
 Custom (Пользовательские),
 Generic Units (Общие) (рисунок 16.1.4.) используемые по умолчанию.
108
При работе с конкретной трехмерной сценой следует выбрать требуемые
единицы сразу при ее создании, однако и уже готовая сцена может быть сконвертирована из одних единиц в другие. Такая же процедура автоматически
производится при объединении сцен с различными установками Единиц Измерения.
Рисунок 16.1.4.– Системные единицы (System unit)
Рабочее поле Видовых Окон для удобства ориентации и отсчетов размеров при создании и редактировании объектов может быть размечено Сеткой
Координат – взаимно перпендикулярными служебными линиями. Линии сетки,
которые подразделяются на основные и вспомогательные, отстоят друг от друга
на расстоянии Grid Spacing (Шага Сетки), задаваемого в закладке Home Grid
(Сетка) диалогового окна Grid and Snap Setting (Установки Сетки и Привязок),
вызываемого через одноименный пункт падающего меню Customize (Настроить).
 Сетка может быть включена или выключена командой Show Home Grid
(Показать Сетку Координат), действующую по правилу переключателя и вызываемую из падающего меню Views (Виды) и подменю Grids (Сетки). Одно из
главных назначений Сетки состоит в использовании ее линий и их пересечений
(узлов) для применения режима Привязки.
Snaps (Привязки) являются особым режимом создания и редактирования
сцены, при котором произвольное перемещение курсора заменяется «привязан109
ным», то есть определенные элементы сцены (вершины сплайнов и каркасных
объектов, узлы Сетки, опорные точки и т.п.) могут быть использованы как точные ориентиры для указания. В режиме активизированной Привязки курсор как
бы притягивается к характерному ближайшему элементу сцены, включенному в
список типов, задаваемый в упоминаемом ранее диалоговом окне Grid and Snap
Setting (Установки Сетки и Привязок) в закладке Snaps (Привязки).
 3D / 2.5D / 2D Snap (Трехмерная / Полутрехмерная / Двухмерная Привязка) – различные варианты используемых в Мах привязок, позволяющие
точный выбор курсором элеменов Сетки или геометрии сцены соответственно в трехмерном пространстве, в плоскости проекций трехмерного
пространства и в плоскости активного Видового Окна. По умолчанию используется режим 3D Snap (Трехмерная Привязка), который обеспечивает
нужный результат в большинстве случаев.
 Angle Snap (Угловая Привязка) – режим Привязки, влияющий на трансформацию Rotate (Поворота). В результате его включения все операции
поворота осуществляются с заданным шагом. Величина шага устанавливается в диалоговом окне Grid and Snap Setting (Установки Сетки и Привязок) в закладке Options (Настройки) счетчиком Angle (deg) (Угол (градусы)).
 Percent Snap (Процентная Привязка) – определяет величину приращений
в любых операциях, связанных с изменением процентов (таких как
трансформация масштабирования). Установка процентного шага производится в том же диалоговом окне счетчиком Percent (Процент).
 Spinner Snap (Привязка Счетчиков) – настраивает величину изменений
счетчиков при их прокрутке мышью.
 Для задания этого параметра необходимо вызвать диалоговое окно
Preference Setting (Настройка Параметров), и в закладке General (Общие) установить требуемое значение счетчиком Spinner Snap (Привязка
Счетчиков). Количество значащих цифр дробной части числа задается
счетчиком Spinner Precision (Точность Счетчиков).
Отображение объектов в Видовых Окнах
При создании и редактировании геометрии сцены, при отладке материалов и настройке параметров анимации необходимо иметь механизм управления
отображением объектов сцены в Видовых Окнах. Особенно это становится актуально при внесении изменений в насыщенные, сложные трехмерные сцены.
Самый простой способ уменьшить системные издержки – это скрыть или «заморозить» неиспользуемые в данный момент объекты (мы разберем эти команды при рассмотрении режимов выбора объектов). Однако есть возможность
управлять отрисовкой и видимой частью сцены. Поэтому рассмотрим режимы
отображения объектов и способы его оптимизации подробнее [7].
Для выбора режима отображения любого Видового Окна необходимо выполнить правый щелчок на его названии и указать один из пунктов верхней
группы контекстного меню:
110
Smooth+Highlights (Сглаживание+Блики) – сглаживание ребер между гранями и показ бликов.
 Wireframe (Каркас) – проволочный каркас, образованный видимыми ребрами.
Еще пять режимов отображения могут быть вызваны с помощью команд, которые расположены в меню опции Other (Иные).
 Smooth (Сглаживание) – сглаживание ребер между гранями
 Facets+Highlights (Грани+Блики) – набор граней объектов с отключенным
сглаживанием ребер и показ бликов.
 Facets (Грани) – набор граней объектов с отключенным сглаживанием ребер.
 Lit Wireframes (Освещенные Каркасы) – проволочный каркас, образованный видимыми ребрами с тонированием.
 Bounding Box (Габаритный Контейнер) – описанный вокруг объекта параллелепипед, образованный плоскостями, параллельными осям локальной системы координат объекта.

Настройка цветов
Настроить цвета можно командой Customize (Настроить)> Customize User Interface, во вкладке Color. Когда цвета настроили по желанию, их можно сохранить кнопкой Save... внизу окна [10]. Если нужно вернуться к цветам по
умолчанию, нужно нажать кнопку Reset. Можно воспользоваться стандартными
схемами с помощью Load…
Принцип создания и редактирования примитива
Все объекты, сгруппированные по типам, выбираются кнопками панели
Создать, которая упоминалась ранее. Для перехода к любому из типов необходимо выполнить левый щелчок на соответствующей кнопке.
Рисунок 16.1.5. – Панель Create
Каждая из групп объектов имеет раскрывающийся список подгрупп, позволяющий работать только с одним из наборов объектов.
111
Рисунок 16.1.6. – Список подгрупп
И, наконец, каждый элемент списка подгруппы представлен свитком
Object Type (Тип Объекта), в котором содержатся рельефные кнопки выбора,
предназначенные для создания конкретных объектов трехмерной сцены.
Рисунок 16.1.7. – Свиток Object Type
Выбор такой кнопки вызывает команду создания нового объекта с параметрами по умолчанию. Для непосредственного создания объекта необходимо
после выбора его типа и предварительных настроек параметров (если это требуется) переместить курсор в предполагаемое место в видовом окне и, нажав
левую кнопку мыши, растянуть создаваемый объект, контролируя его форму и
размер визуально, и затем отпустить. Этот способ применим к объектам, требующим ввод одного параметра, например, для объекта Sphere (Сфера) – это
Radius (Радиус). Объекты, которым необходимо указание более одного параметра, требуют после первого отпускания кнопки мыши продолжать перемещение курсора и для фиксации каждого следующего производить левый щелчок. Пример такого объекта – Box (Коробка).
Когда объект создан, его можно отредактировать во вкладке Modify (Редактировать). После выделения изменяемого объекта и в этой панели возникают группы параметров, которые можно настроить по необходимости:
 Текстовое поле имени объекта и поле с образцом цвета (можно изменить
имя объекта и его цвет);
 Список Modifier List (Список модификаторов).
112
Настраиваемый набор инструментов изменения структуры объектов,
представленный рельефными кнопками и текстовыми окошками (можно вписать с клавиатуры все размеры, которые необходимы во время моделирования).
Основные команды и операции над объектами.
Основные команды и операции над объектами в среде Мах можно определить по следующим группам:
 Выделение объектов;
 Выделение объектов с выполнением команды или трансформации объектов;
 Выделение подобъектов;
 Клонирование объектов;
 Объединение объектов в группы.
Рассмотрим каждую из них детальнее.
16.2. Выделение и трансформация объектов
Существует несколько дублирующих друг друга приемов для выполнения
и управления операциями выделения объектов [12]. Кроме самого традиционного из них – левого щелчка мыши на выбираемом объекте, эту процедуру
можно произвести через группу пунктов Select (Выбор) из строки меню Edit
(Редактирование).
Ниже приводится список этих пунктов с кратким описанием их функций:
 Select All (Выбрать Все) – позволяет выделить все нескрытые и «размороженные» объекты (смысл этих терминов будет описан далее).
 Select None (Сбросить Выделение) – снимает выделение со всех объектов
сцены.
 Select Invert (Выбрать Все Невыделенные) – выделяет инверсно все невыбранные объекты.
 Select By Color (Выбрать По Цвету) – создать выделение по указанному
цвету объекта
 Select By Name (Выбрать По Имени) – выбрать один или несколько объектов по имени из общего списка через диалоговое окно Select Objects (Выберите Объекты).
 Region (Область Выделения) – имеет два переключателя, задающие режим
выбора объектов: Window (Охват) – в набор попадают объекты, полностью
помещающиеся в область выделения; Crossing (Секущая Рамка) – объекты
выбираются, даже если они лишь соприкасаются с областью выделения.
Также выполнение операции выбора объектов можно выполнить с помощью группы кнопок в Main Toolbar (Основной Панели) (Рисунок 16.2.1)
Рисунок 16.2.1. – Кнопки выбора объектов
113



Select Object (Выбрать Объект) – модальная кнопка, включающая режим
выбора объектов левым щелчком мыши. По каждому левому щелчку
предыдущий выбор сбрасывается и выбранным оказывается лишь один, последний из объектов. Для добавления нового объекта в набор без сброса –
левый щелчок выполняется с нажатой клавишей <Ctrl>, для исключения
выбранного объекта из набора – щелчок совместно с клавишей <Alt>.
Selection Region (Форма Области Выделения) – список кнопок для изменения формы области выделения объектов. Может быть задана как
Rectangular (Прямоугольная), Circular (Круглая) или Fence (Ломаная). Для
выбора нужной формы нажмите на эту кнопку (до появления всего списка)
и, удерживая левую кнопку мыши, перемещайте курсор по списку, отпустив
ее на соответствующей кнопке.
Select By Name (Выбрать По Имени) – кнопка, вызывающая упоминавшееся
ранее диалоговое окно Select Objects (Выберите Объекты). Остановимся на
его параметрах.
Трансформации объектов
В среде Мах с любым объектом, набором нескольких объектов или группой можно производить три базовые операции преобразований – Move, Rotate и
Scale (Перемещение, Поворот и Масштабирование), которые объединены одним общим термином – Transforms (Трансформации). Все трансформации
назначены соответствующим кнопкам в Main Toolbar (Основной Панели), а
Scale (Масштабирование) – списку кнопок. Преобразование перемещения позволяет изменять положение объекта в трехмерном пространстве, поворота – его
ориентацию и масштабирования – линейные размеры объекта. Причем последнее преобразование может быть трех видов:
 Uniform (Однородное) – равномерное масштабирование по трем координатным осям;
 Non-Uniform (Неоднородное) – выполняется по одной из осей или плоскостей объекта;
 Squash (Сплющивание) – взаимно противоположное одновременное масштабирование по одной из осей и плоскости двух других, или наоборот.
Обычно выполнение преобразований с объектами сцены выполняется с
приблизительной точностью («на глаз») в соответствии с визуальным восприятием положения, ориентации или масштаба. Однако, существуют случаи, когда
необходим точный ввод параметров, для осуществления которого и служит
способ Type-In (Точный Ввод), диалоговое окно которого может быть вызвано
через пункт меню Tools > Transform Type-In. В зависимости от типа выбранной
трансформации, вызывается окно Move, Rotate или Scale Transform Type-In (Перемещение, Поворот или Масштабирование), которое содержит две группы
счетчиков – Absolute: World (Абсолютные: Мировые Координаты) и Offset:
Screen (Приращения: Экранные Координаты). Проще всего пользоваться
окошками Offset.
114
Клонирование объектов
В 3DS MAX существует несколько способов клонирования объектов.
Наиболее используемым является выделение копируемого объекта или группы
объектов и применение одной из команд трансформации – Move (Переместить), Rotate (Повернуть) или Scale (Масштабировать) с нажатой клавишей
<Shift>. После завершения выполнения команды происходит вызов диалогового
окна Clone Options (Режимы Клонирования), где необходимо указать тип создаваемого объекта или группы объектов (рисунок 8.2.2). Их существует три
типа:
 Сору (Копия) – новый объект наследует все свойства оригинала (геометрию, материалы, режимы отображения на видовых экранах и т.д.).
 Любые изменения, производимые с копией или с оригиналом, являются
уникальными и применяются только к модифицируемому объекту.
 Instance (Экземпляр) – новый объект является полной копией исходного, и
между ними создается следующая двусторонняя логическая связь: любые
изменения оригинала сразу же отображаются во всех его экземплярах и
наоборот.
 Reference (Ссылка) – вариант экземпляра, но с односторонней связью.
Только изменения оригинала влекут за собой такие же изменения во всех
ссылках. Любое изменение ссылок объектов применяется только к конкретному модифицируемому объекту-ссылке.
Рисунок 16.2.2. – Определение параметров клонирования
Остается добавить, что окно Clone Options (Режимы Клонирования) позволяет задавать имя для создаваемых объектов в текстовом поле Name (Имя) и
выбирать число новых копий счетчиком Number of copies (Число Копий).
Команда Mirror (Зеркало)
Вызывается кнопкой Mirror Selected Objects (Создать Зеркальное Отражение Объектов) со стандартной панели. Дополнительное диалоговое окно
Mirror : Screen Coordinates (Зеркало : Экранные Координаты) позволяет выбрать ось копирования – X, Y, Z или плоскость копирования – XY, YZ, ZX. По115
ложение переключателя Clone Selection (Клонировать Выделение) дает возможность выбрать тип создаваемых копий, причем положение No Clone (He Клонировать) выполняет зеркальное отображение исходного объекта, не создавая
копий.
А теперь проведем эксперимент с клонированием и попробуем создать
имитацию резьбы на каменной поверхности. Вначале создайте исходные объекты: каменную плиту на основе примитива ChamferBox и заготовку для резьбы
на основе примитива RingWave (рисунки 14.2.3 и 14.2.4). Не забудьте выровнять объекты по центру относительно осей X и Y при помощи команды Align
(Выровнять). Выделите объект RingWave01 и воспользуйтесь командой Scale
(Масштабировать) при нажатой клавише <Shift>, создавая два клона волнообразного кольца (рисунок 16.2.5 ). В итоге каменная плита преобразится и станет
напоминать рисунок 16.2.6.
Рисунок 16.2.3. – Исходный вид изображения –
плита и декоративная заготовка для резьбы
Рисунок 16.2.4. – Параметры настройки
примитива RingWave
116
Рисунок 16.2.5. – Изображение в процессе масштабирования
Рисунок 16.2.6. – Каменная плита с резьбой
16.3. Выравнивание объектов и создание массива
Команда Align (Выравнивание)
Нужны два объекта. Один из них нужно выделить щелчком левой кнопкой мыши и нажать кнопку
на стандартной панели. Потом нужно щелкнуть
по второму объекту.
В появившемся окне поставить галочку на ось, по которой нужно выравнивать, и отметить, по каким параметрам нужно выровнять объекты. Например,
чтобы «поставить» большой прямоугольник на маленький, нужно использовать
параметры min (в левой колонке) и max (в правой колонке) рисунок 16.3.1.
Команда Array (Массив)
Самый быстрый способ создания серии однотипных объектов, расположенных по тому или иному закону, – использование массивов, что, по сути,
представляет собой разновидность клонирования. Для работы с массивами
предназначена команда Array (Массив) вызывается строкой меню Tolls > Array.
Одноименное диалоговое окно Array позволяет задать способ копирования,
размерность массива (1,2 или 3D), а также вид трансформации (Move, Rotate или
Scale) которая будет применена к каждой копии.
117
Рисунок 16.3.1. – Определение параметров Выравнивания
Попробуйте для начала сформировать одномерный массив на основе
обычной сферы. Создайте исходный примитив-сферу (рисунок 16.3.2), выделите сферу, откройте команду Tools=>Array (Инструменты=>Массив) и настройте
параметры преобразования в соответствии с рисунком 16.3.3. В итоге из одной
сферы вы получите семь вытянувшихся в один ряд по оси X сфер (рисунок
16.3.4). Обратите внимание, что тип массива – одномерный, двумерный или
трехмерный – определяется указанием соответствующих флажков: 1D, 2D или
3D, а закон размещения объектов регулируется координатами X, Y и Z – в
нашем случае сферы смещены относительно друг друга по оси X на 20 единиц.
Рисунок 16.3.2. – Исходная сфера
Рисунок 16.3.3. – Настройка параметров окна Array
для одномерного массива
118
Рисунок 16.3.4. – Одномерный массив сфер
Чуть усложним задачу и на основе другого примитива (в нашем случае
конуса – рисунок 16.3.5.) создадим двумерный массив, расположив объекты
друг за другом ровными рядами. Выделите созданный объект-конус и откройте
команду Tools=>Array (Инструменты=>Массив). Для варианта 1D все оставьте
без изменения, исходя из предположения, что число конусов в ряду будет равно
числу сфер. Активизируйте флажок 2D и определите число рядов и смещение
их относительно друг друга (рисунок 16.3.6. и 16.3.7.).
Рисунок 16.3.5. – Добавление конуса
119
Рисунок 16.3.6. – Настройка параметров окна
Array для двумерного массива
Рисунок 16.3.7. – Создание двумерного массива конусов
Доя создания кругового или спирального массива, необходимо перенести
опорную точку. Включение видимости опорной точки объекта производится
рельефной кнопкой Affect Pivot Only (Работать Только с Опорной Точкой) во
вкладке Hierarchi (Иерархия) (рисунок 16.1.3 – третья кнопка), после чего в видовом окне появится тройка утолщенных разноцветных векторов осей локальной системы координат объекта. С помощью команды переноса переместить
опорную точку, тем самым задавая центр вращения массива. Трансформации
120
перемещения и поворота, производимые с объектом в этом режиме, будут влиять только на опорную точку, не затрагивая сам объект.
Объединение объектов в группы
Любая сцена состоит из огромного числа объектов, и для удобства работы
с ними используют различные варианты их объединения. Самое простое – объединить объекты в группы, что позволит в дальнейшем выполнять ряд действий, таких как выбор, клонирование, присвоение материалов, трансформация
и пр., одновременно в отношении всей группы объектов.
Для облегчения управления наборами объектами и с целью упрощения
насыщенных объектами сцен применяют команду меню Group (Группировка) >
Group (Сгруппировать).
После этого группу можно открыть для редактирования командой Open
(Открыть), которая частично снимает группировку, давая возможность выбирать, модифицировать и трансформировать любой объект, входящий в открываемую группу. После внесения изменений можно воспользоваться командой
Close (Закрыть) – возвращает группу в стандартное состояние, скрывая объект с
именем группы и возвращая полную группировку всем объектам группы. Еще
команды меню Group (Группировка):
 Ungroup (Разгруппировать) – удаляет группировку объектов, входящих в
выбранную группу, позволяя раздельную работу над каждым из них.
 Explode (Полная Разгруппировка) – удаляет группировку объектов, составляющих многоуровневую, вложенную группу.
 Detach (Отсоединить) – выделяет выбранный объект (или объекты) из
состава группы. Для выполнения этой команды необходимо сначала открыть группу командой Open (Открыть).
 Attach (Присоединить) – добавляет выбранные объекты в группу, указываемую левым щелчком мыши.
Создадим группу из объектов только что полученного логотипа. Выделите все объекты, заключив их в прямоугольный контейнер инструментом Select
Object (Выделить объекты), вызовите команду Group=>Group (Группировать=>Группировать) и введите имя группы (рисунок 16.3.8 ). После этого
можно будет работать с группой как с единым целым – все объекты группы будут выделяться щелчком на любом из них и их можно будет все вместе перемещать, поворачивать, масштабировать, копировать и пр.
Рисунок 16.3.8. – Ввод имени группы объектов
121
А теперь исключите из группы ранее выровненные кристаллы. Для этого
выделите и откройте группу при помощи команды Group=>Open (Группировать=>Открыть). Выделите первый исключаемый из группы кристалл и примените команду Group=>Detach (Группировать=>Отсоединить), затем проведите
аналогичную операцию для двух других кристаллов и закройте группу командой Group=>Close (Группировать=>Закрыть). Щелкните по любому элементу
группы инструментом Select Object (Выделить объект), и вы увидите, что исключенные объекты окажутся невыделенными, а значит, они больше не входят
в группу. А теперь проведите обратную операцию: сформируйте пару новых
объектов и добавьте их в ранее созданную группу. Выделите первый из созданных объектов, выберите из меню Group (Группировать) команду Attach (Присоединить) и щелкните мышью на группе (рисунок 16.3.9.) – объект окажется
включенным в группу, в чем несложно убедиться, например, при попытке одновременного перемещения всех объектов группы. Аналогичную операцию
проведите и в отношении второго включаемого в группу объекта.
Рисунок 16.3.9. – Указание группы в процессе включения
в нее нового объекта
16.4. Применение модификаторов
Чтобы применить модификатор объект обязательно должен быть выделен. Модификаторы выбираются в списке Modifier List (Список модификаторов), а после применения отображаются в поле Modifier Stack (Стек Модификаторов).
Поле Modifier Stack (Стек Модификаторов) – список модификаторов
всех уровней, примененных к выделенному объекту. Это поле содержит все
«превращения» объекта с момента создания и формируется при применении к
выбранному объекту какого-либо из модификаторов (для этого используются
кнопки предыдущего свитка). Выбор каждого из элементов списка вызывает
появление соответствующего набора свитков с настройками, относящимися к
этому модификатору. Стек модификаторов позволяет изменять свое содержимое и тем самым формировать структуру модифицированного объекта.
122
Рисунок 16.4.1. – Список модификаторов

Часто применяемые кнопки стека модификаторов:
Слева от списка модификаторов расположена кнопка Pin Stack (Закрепить Стек)
, предназначенная для фиксации отображения текущего
модификатора выбранного объекта.

Show End Result (Показывать Конечный Результат)
– включает режим отрисовки объекта со всеми примененными активными модификаторами, независимо от текущего положения стека.
Remove Modifier from Stack (Удалить Модификатор из Стека)
- удаляет текущий модификатор из стека объекта.
Ниже поля Modifier Stack (Стек Модификаторов) возникают наборы свитков, относящихся к текущему выбранному модификатору. Они содержат группы параметров для всевозможных настроек и установок. При раскрытии нескольких больших свитков (для доступа ко всем их настройкам), необходимо
выполнять мышью вертикальную прокрутку вверх-вниз.

Применение осевых деформаций
Задание: На основе длинного цилиндра попробовать действие следующих модификаторов:
Модификатор Bend (изгиб).
Сгибает объект вдоль определенной оси. Его свиток содержит параметры
Angle (Изгиб), Direction (Направление), Upper Limit (Верхняя граница), Lower
Limit (Нижняя граница) и Bend Axis (Ось изгиба). Используя параметры раздела Limits (Пределы), можно установить соответственно верхнюю и нижнюю
границы, за пределами которых модификатор Bend (Изгиб) не оказывает влияния на объект.
Модификатор Taper (свести на конус).
Основывает свой эффект на центре гизмо (оболочки) с противоположным
масштабированием, которое выполняется всегда выше и ниже центра. Центр
работает как устойчивое место, в котором масштабирование не выполняется.
123
Опция Curve в Тарег позволяет задавать выпуклости и вогнутости для того, что
иначе было бы прямым конусом.
Модификатор Skew (Наклон).
Наклоняет объект, перемещая его верхнюю часть при неподвижной нижней. Свиток его параметров включает счетчики Amount (Степень), Direction
(Направление), а также параметры разделов Skew Axis (Ось наклона) и Limits
(Границы).
Модификатор Twist (скручивание)
По существу берет ось и создает спиральный винт или штопор. Подобный
эффект получается, когда в вашей руке висит веревка, а вы начинаете быстро
вращать кисть.
Модификатор Stretch (Растяжение).
Вытягивает объект вдоль одной оси, одновременно выталкивая его по
другой оси в обратном направлении. Свиток Parameters (Параметры) содержит
настройки растяжения Stretch (Растяжение) и Amplify (Увеличение), а также
разделы Stretch Axis (Ось растяжения) и Limits (Пределы).
Задание:
1. Найдите в списке модификаторов еще несколько осевых деформаций
такого типа.
2. На основе плоскости попробовать действие следующих модификаторов:
Модификатор Noise (Шум). Переносит вершины объекта случайным образом. Его свиток Parameters (Параметры) содержит счетчики Scale (Масштаб)
и Seed (Зерно), раздел Fractal (Фрактальный) cо счетчиками Roughness (Сглаживание) и Iterations (Итерации), счетчики раздела Strength (Сила) для значений
вдоль каждой оси, а также параметры раздела Animation (Анимация).
Модификатор Wave (Волна). Создает на поверхности объекта волны. Его
свиток Parameters (Параметры) содержит следующие настройки: Amplitude 1
(Амплитуда 1), Amplitude 2 (Амплитуда 2), Wave Length (Длина волны), Phase
(Фаза) и Decay (Затухание).
Модификатор Ripple (Зыбь). Создает на поверхности объекта концентрические волны. Свиток его параметров аналогичен свитку параметров модификатора Wave (Волна).
16.5. Работа со сплайнами
Сплайны (Spline – кусочно-полиномиальная функция) – это двумерные
геометрические объекты, которые совершенно самостоятельны и могут служить основой для построения более сложных трехмерных тел. Внешне сплайны
представляют собой разнообразные линии, форма линии определяется типом
вершин, через которые она проходит. Сплайнами могут быть как простейшие
геометрические фигуры: прямоугольники, звезды, эллипсы и пр., так и сложные
ломаные или кривые, а также контуры текстовых символов.
Основными элементами сплайнов являются вершины (Vertex) и сегменты
(Segment). Вершинами называют точки, расположенные на сплайне, при этом
124
первая вершина, обозначающая начало сплайна, отмечается квадратиком белого цвета. Под сегментом принято понимать участок линии сплайна, ограниченный двумя соседними вершинами, – сегменты могут быть как прямо-, так и
криволинейными отрезками. Вершины сплайна различаются по типу, от которого зависит степень кривизны прилегающих к данным вершинам сегментов
сплайна. Всего выделяют четыре типы вершин (рисунок 16.5.1):
1. Corner (Угловая) – вершина, в которой сплайн имеет излом, а примыкающие к ней сегменты лишены кривизны.
2. Smooth (Сглаженная) – вершина, через которую кривая сплайна проводится с плавным изгибом, а кривизна прилегающих к вершине сегментов одинакова с обеих сторон.
3. Bezier (Безье) – вершина, напоминающая сглаженную и отличающаяся от
нее возможностью управления степенью кривизны обоих сегментов. Последнее
осуществляется благодаря наличию в вершине касательных векторов, ограниченных на концах маркерами в виде квадратиков зеленого цвета и называемых
ручками Безье. Перемещая ручки Безье, можно изменять направление, в соответствии с которым сегменты сплайна входят в вершину и выходят из нее, а
изменяя расстояние от маркеров до вершины – регулировать степень кривизны
сегментов сплайна. У вершин данного типа ручки Безье связаны между собой, и
перемещение одной из них автоматически вызывает перемещение второй.
4. Bezier Corner (Безье угловая) – вершина, имеющая касательные векторы,
позволяющие управлять степенью кривизны сегментов, однако, в отличие от
вершин Bezier, у вершин Bezier Corner касательные векторы не связаны друг с
другом и перемещение одного из маркеров не зависит от перемещения другого.
Сегменты также различаются по типу: Curve (Кривая) или Line (Линия).
Выбрав типа Curve, можно получить криволинейные сегменты, если вершины
являются гладкими или имеют тип Безье, в случае же угловых вершин даже при
установке типа Curve сегмент останется линейным. Выбор типа Line приводит к
игнорированию типа вершин, в результате чего сегмент данного типа всегда
выглядит линейным.
Рисунок 16.5.1. – Типы вершин сплайнов
125
Создание сплайнов
Вначале мы поэкспериментируем с простейшими сплайнами, представляющими собой обычные геометрические фигуры. Активизируйте категорию
объектов Shapes (Формы)
командной панели Create (Создание)
, в списке разновидностей объектов укажите тип Splines (Сплайны). Это приведет к появлению на панели группы инструментов, соответствующих типам сплайнов
(рисунок 16.5.2). Для построения стандартных сплайнов используются инструменты Rectangle (Прямоугольник), Circle (Окружность), Ellipse (Эллипс), Arc
(Дуга), Donut (Кольцо), NGon (N-угольник), Star (Звезда), Text (Текст), Helix
(Спираль) и Section (Сечение). Их построение аналогично созданию примитивов, а расположение вершин и характер любого из названных объектов устанавливаются параметрами в момент создания в панели Create (Создание), а
позже – в панели Modify (Изменение). Инструмент Line (Линия) предназначен
для создания сплайнов нестандартного вида и работает несколько иначе.
Рисунок 16.5.2. – Инструменты группы Splines
16.6. Геометрические фигуры
Для примера попробуйте создать несколько стандартных сплайнов в виде
геометрических фигур, например многоугольник, звезду и спираль, как показано на рисунок 16.6.1. Попробуйте провести рендеринг, выбрав команду
Rendering=>Renderer и щелкнув на кнопке Render (либо клавиша F9). Подробно с данным процессом мы познакомимся позднее, а пока просто поясним,
что рендеринг обычно проводится на заключительном этапе работы, он необходим для визуализации созданной модели и его основная задача – сделать модель максимально приближенной к действительности. Проведя рендеринг, никакого изображения в открывшемся окне вы не увидите – дело в том, что по
умолчанию сплайны не рендеризируются. Для того чтобы сделать их видимыми во время рендеринга выделите первый сплайн, активизируйте панель Modify
126
(Изменение) и в свитке Rendring (Рендеринг) установите флажок Renderable
(Визуализируемый). Аналогичную операцию проведите в отношении двух других сплайнов и вновь выполните рендеринг – сплайны станут видимыми.
Рисунок 16.6.1. – Исходный вид группы стандартных сплайнов
Пока все сплайны имеют одинаковую толщину, что несложно исправить,
изменив у каждого из них в свитке Rendring (Рендеринг) значение параметра
Thickness (Толщина). Обратите внимание на свиток Parameters (Параметры), в
котором определяются основные параметры каждого типа сплайнов: размеры,
число вершин и пр. Для тренировки увеличьте толщину каждого из сплайнов,
измените число вершин у многоугольника и звезды и увеличьте количество
витков на спирали, например так, как показано на рисунках 16.6.2 – 16.6.4 Обратите внимание, что в окнах проекций отразились все изменения, кроме увеличения толщины сплайнов, которая осталась прежней, – ничего страшного,
все так и должно быть, поскольку по умолчанию опции Enable In Renderer
(Показать в рендере) и Enable In Viewport (Показать в окнах) отключена. Убедиться в том, что толщина реально изменилась, можно проведя рендеринг (рисунок 16.6.5) или просто включив данный флажок. Поэкспериментируйте с
прочими параметрами сплайнов, поперемещайте их относительно друг друга и
попытайтесь на их основе создать единую композицию, например такую, как
на рисунке 16.6.6.
127
Рисунок 16.6.2. – ПаРисунок 16.6.3. – Панель Рисунок 16.6.4. – Панель
нель Modify для звезды Modify для спирали
Modify для многоугольника
Рисунок 16.6.5 – Вид сцены после
рендеринга
Рисунок 16.6.6 – Композиция из
сплайнов
128
Текст
Для создания текста перезагрузите файл командой File=>Reset
(Файл=>Сбросить), на панели Create (Создание) вновь выберите тип Splines
(Сплайны) и активизируйте инструмент Text (Текст). В открывшемся свитке
параметров создания сплайна введите нужный текст, выберите шрифт и установите его параметры (рисунок 16.6.7). Затем щелкните в одном из окон проекций – это приведет к появлению фрагмента текста (рисунок 16.6.8.).
Рисунок 16.6.8. – Текст в окне
проекции Perspective
Рисунок 16.6.7. – Панель Create для текста
Перед проведением рендеринга переместите текст так, чтобы он весь оказался в поле зрения, активизируйте панель Modify (Изменение), в свитке
Rendring (Рендеринг) установите флажок Renderable (Визуализируемый) и увеличьте значение параметра Thickness (Толщина), например до 10. Проведите
рендеринг и убедитесь, что даже такие простые манипуляции позволяют получить интересный вариант трехмерного текста (рисунок 16.6.9).
Рисунок 16.6.9. – Текст после рендеринга
129
Линии
Создавая предыдущие виды сплайнов, мы не обращали внимание на вершины и сегменты – более того, даже не вспоминали про разные типы вершин.
Со сплайнами-линиями все обстоит иначе – в зависимости от особенностей построения кривой они будут дополняться вершинами разного типа. Щелчки левой кнопкой в окне проекции при выбранном инструменте Line (Линия) будут
приводить к появлению новой угловой точки (Corner), а перемещение мыши
при нажатой левой кнопке – к появлению вершины Безье (Bezier). Данный
принцип создания вершин установлен по умолчанию, и при необходимости его
можно изменить в свитке Creation Method (Метод Создания) на панели Create
(Изменение) – рисунок 16.6.10. Для этого достаточно сменить положение переключателей Initial Type (Тип вершин при щелчке) и Drag Type (Тип вершин при
перетаскивании). Отметим, что в большинстве случаев не стоит менять методы
создания вершин (чтобы не путаться) – гораздо удобнее взять за основу устанавливаемый по умолчанию принцип и вначале создавать контуры только с угловыми вершинами, а затем изменять тип у тех вершин, у которых это необходимо сделать.
Рисунок 16.6.10. – Свиток Creation Method
Щелчок правой кнопкой приводит к завершению рисования сплайна из
линий. При попытке поставить вершину в месте нахождения начальной точки
сплайна на экране появляется вопрос «Close Spline?» («Закрыть сплайн?») –
утвердительный ответ приведет к получению замкнутого контура, в противном
случае контур окажется разорванным и его граничные вершины можно будет
независимо перемещать.
Теоретически существует и второй метод создания сплайна из линий –
режим Keyboard Entry (Ввод с клавиатуры), который предполагает ввод координат (X, Y и Z) каждой из вершин вручную с клавиатуры (рисунок 16.6.11).
Непосредственное добавление каждой новой вершины осуществляется кнопкой
Add Point (Добавить вершину), кнопка Finish (Закончить) позволяет закончить
создание сплайна, а кнопка Close (Замкнуть) создает сегмент, соединяющий
первую вершину с последней.
130
Рисунок 16.6.11. – Свиток Keyboard Entry
Обратите внимание, что сплайн содержит только угловые вершины (рисунок 16.6.12). Удобнее всего начинать создание контура с правой нижней
вершины (на контуре она отмечена белым квадратиком) и, учитывая, что большинство сегментов соединяются друг с другом под прямым углом, удерживать
нажатой при построении данных фрагментов контура клавишу Shift (это обеспечит формирование идеальных углов).
Рисунок 16.6.12. – Заготовка для создания объекта из сплайна
Составные сплайновые формы
Два типа стандартных сплайновых форм – Donut (Кольцо) и Text (Текст)
– принципиально отличаются от всех остальных типов сплайнов тем, что содержат более одного сплайна в форме и потому относятся к составным формам.
Кольцо содержит два круговых сплайна. Число простых сплайнов, составляющих текстовый объект, как минимум совпадает с числом входящих в него букв,
а может быть и больше, если в тексте присутствуют буквы, состоящие из нескольких сплайнов. Основным преимуществом составного сплайна по сравнению с обычным сплайном является возможность выполнять операции сразу над
всеми частями сплайновой формы одновременно, что быстрее и удобнее. Но
дело не только в этом – к составным формам приходится прибегать и в других
случаях, например при необходимости проведения в отношении сплайнов булевой операции.
Для превращения простого сплайна в составной необходимо убрать флажок рядом с кнопкой Start New Shape (Начать новую форму) – рисунок 16.6.13
После этого любой новый сплайн становится составной частью уже существу131
ющей сплайновой формы. Включение названного флажка отменит данный режим, и следующие сплайны уже будут образовывать свои формы.
Рисунок 16.6.13. – Установка запрета на создание новой формы
Попробуем создать имитацию простой решетки в виде составного сплайна – такие решетки сплошь и рядом используют при создании разнообразных
ограждений. Для начала создайте сплайн типа Rectangle (рисунок 16.6.4), а затем перейдите в режим создания составной формы, отключив флажок Start New
Shape (Начать новую форму). Добавьте к прямоугольнику дугу инструментом
Arc (рисунок 16.6.5). Обратите внимание, что для совмещения концов дуги с
контуром прямоугольника удобнее воспользоваться ручным изменением параметров From (От) и To (В), определяющих начальную и конечную точки дуги.
Не включая флажка Start New Shape, дополните форму серией линий примерно
как на рисунке 16.6.16.
Рисунок 16.6.14. – Исходный прямоугольник
132
Рисунок 16.6.15. – Построение дуги
Рисунок 16.6.16. – Появление группы линий
Щелкните на свободной части любого окна проекций, чтобы снять выделение с решетки, а затем выделите ее инструментом Select Object (Выделение
объекта) – решетка выделится вся целиком, что говорит о ее единстве. Это позволит настроить параметры сразу для всех входящих в форму сплайнов, что
очень удобно. Активируйте панель Modify (Изменение), в свитке Rendring (Рендеринг) установите флажок Eneible In Renderer (Визуализируемый) и Eneible In
Wiewport и увеличьте значение параметра Thickness (Толщина). Проведите рендеринг – возможно, полученная решетка будет иметь примерно такой вид, как
на рисунке 16.6.17. Однако решетка получилась неидеальной, поскольку разбить дугу на одинаковое число сегментов на глаз проблематично. Для подобных целей лучше использовать возможности автоматического разбиения сегментов на заданное число равных частей, но это предполагает редактирование
формы на уровне подобъектов, поэтому к вопросу создания решетки мы еще
вернемся.
Кроме того, не совсем удачно выбран принцип установки толщины – в
реальной решетке ее прямоугольное основание, как правило, имеет значительно
133
больше толщину, чем отдельные прутья. Чтобы учесть данный аспект, необходимо создавать решетку из отдельных сплайнов или редактировать ее потом на
уровне сегментов.
Рисунок 16.6.17. – Результат построения решетки
16.8. Создание поверхностей с помощью модификаторов сплайнов
Экструдирование (Выдавливание)
Модификатор Extrude (Выдавливание). Превращает двумерную сплайновую форму в трехмерный объект за счет придание ей глубины в направлении
перпендикулярном плоскости формы. С помощью счетчика Amount (Степень)
свитка Parameters (Параметры) этого модификатора определяется расстояние
выдавливания. Параметр Segments (Сегменты) определяет количество сегментов, используемых для определения высоты. Раздел Capping (Накрытие) содержит флажки Cap Start (Накрыть в начале) и Cap End (Накрыть в конце), которые создают «крышки» на торцах модели [19].
Задание: Создание объемной комнаты.
1. Создать прямоугольный сплайн с размерами 900 Х 800 см на виде сверху.
2. Преобразовать прямоугольник в редактируемый сплайн командой контекстного меню объекта Convert to > Convert to Editable Spline.
3. Сделать перегородку. Для этого создать прямоугольник нужного размера
(команда Create Line).
4. Создать внешний контур вокруг комнаты (команда Create Line).
5. Применить булевые операции, не забывая присоединять объекты.
6. Применить модификатор Extrude. Вытяните стены на 300 см.
134
Рисунок 16.8.1. – Контур комнаты, созданный с помощью
редактируемого сплайна
Вращение
Модификатор Lathe (Тело вращения). Создает объект с круговой симметрией, поворачивая сплайн относительно какой-либо оси. Значение параметра Degrees (Градусы) свитка Parameters (Параметры) данного модификатора
определяет угол вращения сплайна. Установка флажка Flip Normals (Обратить
нормали) позволяет менять ориентацию нормалей на противоположенную. Параметр Segments (Сегменты) определяет количество сегментов, на которые будет разбиваться поверхность объекта, созданного вращением. Подобно выдавленным объектам, тела вращения могут иметь торцы, для определения которых
используются параметры раздела Capping (Накрытие). Для выбора оси вращения используются кнопки раздела Direction (Направление). Используя кнопки
раздела Align (Выравнивание) в свитке, можно выровнять ось в соответствии с
минимальной (кнопка Min), центральной (кнопка Center) или максимальной
(кнопка Max) точкой объекта.
Задание: Создать круглый столик.
Рисунок 16.8.2. – Создание контура для вращения объекта
с помощью сплайна
135
1. Создать сплайн (рисунок). Обратить внимание на виды вершин. Поставить
где надо сглаженные.
2. Применить модификатор Lather. С параметром выравнивания min или max.
16.9. Составные объекты Boolean
Объекты данного типа создаются за счет применения к оболочкам двух
трехмерных тел одной из трех операций булевой алгебры [19]:
 Union (Объединение),
 Subtraction (Исключение),
 Intersection (Пересечение).
Оболочки исходных тел, участвующих в булевской операции и называемых операндами, обязательно должны пересекаться. Из двух объектов, участвующих в булевской операции, один должен быть выделен до ее начала (операнд А), а другой (операнд В) указывается в ходе операции.
В 3D Studio MAX предусмотрены пять типов булевых операций (рисунок
16.9.1):
 Union (Объединение) – результатом операции является объект, который получается вследствие объединения двух исходных объектов; при этом части
объектов, оказавшиеся внутри общего внешнего объема, удаляются;
 Intersection (Пересечение) – полученный объект является результатом пересечения двух исходных объектов; при этом части объектов, оказавшиеся вне
общего внутреннего объема, удаляются;
 Subtraction (A-B)/Subtraction (B-A) (Вычитание (A-B)/Вычитание (B-A)) –
результатом является объект, полученный посредством вычитания одного
объекта из второго, все части которого отсекаются объемом первого и удаляются;
 Cut (Вырезание) – полученный объект является результатом вырезания на
поверхности первого объекта в местах пересечения со вторым объектом соответствующих отверстий и проемов.
Рисунок 16.9.1. – Примеры применения разных типов
булевых операций
136
Булевы объекты являются разновидностью составных объектов и поэтому
принадлежат к группе Compound Objects (Составные Объекты) из категории
Geometry (Геометрия) на панели Create (Создать). Технология создания булева
объекта состоит из двух этапов – предварительной подготовки исходных объектов и последующего применения к ним требуемой булевой операции, причем
перед применением последней один из исходных объектов обязательно должен
быть выделен, иначе операция Boolean окажется недоступной.
Существует несколько методов создания булевых объектов:
 Copy (Копия) – при создании булева объекта сохраняется оригинал операнда В;
 Move (Перенос) – при создании булева объекта оригинал операнда В не сохраняется;
 Instance (Образец) – создается Boolean-объект и одновременно сохраняется
копия операнда В; при изменении копии булев объект будет изменяться, а
при изменении булева объекта будет меняться копия;
 Reference (Ссылка) – создается Boolean-объект и одновременно сохраняется
копия В-операнда; если при этом изменять оригинал, то Boolean-объект тоже изменится; если же изменять Boolean-объект, то оригинал при этом изменяться не будет.
 Результат булевой операции не всегда оказывается удачным, поэтому следует соблюдать ряд условий:
 исходные объекты должны пересекаться в некоторой области пространства,
причем характер пересечения нужно тщательно отрегулировать в окнах
проекций;
 исходные объекты должны иметь достаточное количество сегментов и быть
сглаженными, иначе результат окажется слишком грубым или совсем не соответствующим задуманному;
 каркасы должны быть построены правильно – грани, совместно использующие ребро, должны совместно использовать и две вершины, а ребро может совместно использоваться только двумя гранями. Для редактируемых
сеток может потребоваться объединение совпадающих вершин вручную в
режиме Edit Mesh.
Для примера попробуйте создать булеву операцию вычитания на примере
трех перекрывающихся сфер (рисунок 16.9.2). Выделите центральную сферу, на
панели Create установите категорию объектов Geometry, в списке типов объектов
укажите тип Compound Objects (Составные Объекты), щелкните по кнопке Boolean
и установите операцию Subtraction (A-B). Обратите внимание, что в начальный момент оказывается определенным лишь операнд A (рисунок 16.9.3), поэтому для указания операнда B щелкните по кнопке Pick Operand B (Выбрать операнд B), а затем
укажите мышью самую большую из сфер. В итоге в сфере, использованной в качестве операнда A, появится выемка (рисунок 16.9.4). Если операнд B был задан неправильно, не следует сразу же вновь щелкать по кнопке Pick Operand B и указывать другой объект (хотя программа это позволяет), поскольку объект, неудачно
выбранный как операнд B, не восстановится (рисунок 16.9.5.). В таких ситуациях
нужно сначала отменить предыдущий выбор операнда B командой Undo и только
потом сделать новый выбор.
137
Рисунок 16.9.2. – Исходные сферы
Рисунок 16.9.3. – Вид свитка
Pick Boolean на начальной стадии
создания булева объекта
138
Рисунок 16.9.4. – Результат первой булевой операции
Рисунок 16.9.5. – Неудачный результат второй булевой операции:
был повторно задан операнд B без отмены предыдущего выбора
Моделирование при помощи булево объединения.
Как правило, булево объединение используется в отношении объектов,
которые должны выглядеть сплошными, то есть их поверхность всегда закрыта,
а внутренняя структура для сцены неактуальна. Булево объединение позволяет
избавиться от видимости соединения объектов между собой и полезно в тех
случаях, когда пересечение видимо. Если же пересечение двух объектов скрыто, то в применении булевой операции объединения нет необходимости.
139
Для примера попробуем последовательно объединить три стандартных
примитива – две сферы и цилиндр – в форму гантели. Создайте исходные объекты и разместите их по отношению друг к другу нужным образом (рисунок
16.9.6 и 16.9.7). Выделите цилиндр, активируйте булеву операцию Union, для
определения операнда B щелкните по кнопке Pick Operand B (Выбрать операнд
B), а затем укажите мышью одну из сфер. В итоге цилиндр и сфера станут единым объектом. Выделите объединенный объект, активизируйте режим создания
булевых объектов, щелкните по кнопке Pick Operand B (Выбрать операнд B) и
укажите вторую сферу. Результатом станет получение одного единственного
булева объекта.
Рисунок 16.9.6. – Исходные объекты
Рисунок 16.9.7. – Рендеринг исходных объектов
Моделирование при помощи булево вычитания
Булевы операции вычитания наиболее широко используются при моделировании. Чаще всего они применяются для создания закруглений и углублений
на первом из исходных объектов, а также выемок и сквозных отверстий в нем, и
потому второй объект условно можно считать своеобразной стамеской или
фрезой, которая создает желобок на первом объекте или выбирает какую-то его
часть. В качестве «режущих инструментов» могут быть задействованы самые
140
разные объекты, в частности объекты, полученные из криволинейных сплайнов
путем лофтинга или вращения.
На первом этапе воспользуемся булевой операцией вычитания для формирования цилиндрического отверстия внутри шара. Создайте исходные объекты в виде шара и цилиндра (радиус сечения цилиндра должен быть меньше радиуса шара, а его длина – больше радиуса шара) и выровняйте их друг в отношении друга по осям X, Y и Z, применив операцию Align (Выровнять) (рисунок
16.9.8). Проведите рендеринг и сразу же скорректируйте параметры объектов
так, чтобы они оказались достаточно гладкими, особенно в области пересечения; если этого не сделать, то созданный булев объект тоже не будет иметь
надлежащей гладкости. В данном случае видно (рисунок 16.9.9), что степень
гладкости требуется увеличить – это достигается путем повышения плотности
объектов: увеличения количества сегментов и сторон сегментов и уменьшения
размера сегментов (рисунок 16.9.10). В то же время при работе со сложными
моделями для ускорения процесса моделирования в ряде случаев лучше увеличивать плотность объектов, задействованных в качестве операндов, не перед
созданием булевой операции, а после – в ходе редактирования операндов на
уровне объектов.
Рисунок 16.9.8. – Шар и цилиндр
Рисунок 16.9.9. – Рендеринг исходных объектов
141
Рисунок 16.9.10. – Рендеринг объектов и их параметры
после корректировки гладкости
Выделите цилиндр, установите режим создания булевых объектов, установите операцию Subtraction (B-A) (Вычитание B-A), для указания операнда B
щелкните по кнопке Pick Operand B (Выбрать операнд B) и укажите сферу. Это
приведет к удалению внутренней части сферы точно по размеру исходного цилиндра таким образом, что в сфере появится сквозное отверстие (рисунок
16.9.11).
Рисунок 16.9.11. – Сфера с отверстием
142
Формируемые при помощи булево вычитания отверстия могут иметь самую разную форму, а результат зависит не только от размеров и формы объектов, но и от положения их в отношении друг друга, а также от того, какой из
объектов был указан первым. Возьмите в качестве исходных объектов куб и
шар и разместите их показанным на рисунке 16.9.12 образом. Выделите куб,
установите в режиме создания булевых объектов операцию Subtraction (A-B) и в
качестве операнда B укажите сферу – результатом станет появление в ней соответствующего углубления (рисунок 16.9.13), а потом сохраните результат (он
нам позже потребуется). Отмените созданную булеву операцию и примените к
исходным объектам булево вычитание Subtraction (A-B), но в качестве первого
операнда укажите сферу – и вместо куба с углублением итогом операции окажется шар, в котором как бы вырезана одна из его четвертей (рисунок 16.9.14).
Стоит отметить, что для получения того же самого результата совсем не обязательно было менять местами операнды: с таким же успехом можно было вместо
операции Subtraction (A-B) выбрать операцию Subtraction (B-A). Подобная взаимозамена операций Subtraction (A-B) и Subtraction (B-A) очень удобна, так как
при неверном выборе операнда A не потребуется отменять операцию, а достаточно лишь переключиться с одной операции вычитания на другую.
Рисунок 16.9.12. – Куб и шар
143
Рисунок 16.9.13. – Углубление в кубе
Рисунок 16.9.14. – Выемка фрагмента шара
Как было отмечено, форма получающейся выемки определяется вторым
операндом. Попробуйте вместо шара создавать выемки и углубления другими
объектами. Например, при применении объекта Hose (Шланг) (рисунок 16.9.15)
может быть получена резьбообразная выемка (рисунок 16.9.16). Если же взять в
качестве операнда B граненую призму Gengon(рисунок 14.7.17), то выемка
окажется многогранной (рисунок 16.9.18), а при использовании веретена
Spindle – скошенной (рисунки 16.9.19. и 16.9.20.) и т.п.
144
Рисунок 16.9.15. – Исходные объекты
Рисунок 16.9.16. – Куб с резьбовидной выемкой
145
Рисунок 16.9.17. – Куб и шланг
Рисунок 16.9.18. – Куб с граненой выемкой
Рисунок 16.9.19. – Куб и веретено
146
Рисунок 16.9.20. – Куб со скошенной выемкой
Булева операция Intersection (Пересечение) является обратной к булевым
операциям Subtraction (A-B)/Subtraction (B-A) (Вычитание (А-В)/Вычитание (ВА), так как получаемые с ее помощью булевы объекты представляют собой
фрагменты операндов A и B, которые удаляются при операции булева вычитания, если ее провести в отношении тех же самых объектов. Возьмите в качестве
исходных, рассмотренные выше куб и шар, выберите куб в качестве операнда
A, а затем проведите булеву операцию Intersection (Пересечение) – результатом
будет получение четверти шара, которая ранее оказывалась вырезанной в ходе
операции Subtraction (B-A). Исходные объекты и булевы объекты при операциях Intersection и Subtraction (В-А)
Более интересные варианты поверхностей создаются при использовании
в качестве операнда B скрученных объектов. Можно попробовать получить подобный объект на основе примитива Torus, в исходном состоянии имеющего
такой вид, как на рисунке 16.9.21, а после скручивания (параметр Twist) на 360°
– как на рисунке 16.9.22. Дополнительно создайте цилиндр, разместите объекты, как показано на рисунке 16.9.23, и при выполнении булевой операции
Subtraction (A-B) укажите цилиндр как операнд A – результат представлен на
рисунке 16.9.24.
Рисунок 16.9.21. – Исходный объект – тор
147
Рисунок 16.9.22. – Тор после скручивания
Рисунок 16.9.23. – Цилиндр и скрученный тор
Рисунок 16.9.24. – Цилиндр с резьбой
Редактирование булевых объектов
У созданного булева объекта можно изменить цвет; объект можно перемещать, масштабировать и поворачивать обычным образом. При необходимости в области параметров на панели Modify можно откорректировать имена
148
операндов, установить способ отображения булева объекта и определить особенности его обновления при редактировании. Работая со сложными моделями,
которые долго перерисовываются, иногда лучше отказаться от автоматического
режима обновления в пользу ручного режима Manually (Вручную) – тогда для
перерисовки модели нужно будет щелкать по кнопке Update (Обновить).
Здесь же можно установить опцию Hidden Ops, которая позволяет при
просмотре результата видеть в виде сетки операнд, исчезающий при выполнении булевой операции (рисунок 16.9.25). Данная опция служит для информации
о точном местонахождении операнда и о его влиянии на булеву операцию и часто используется при создании анимации.
Рисунок 16.9.25. – Вид булева объекта
при включенной опции Hidden Ops
Кроме того, булев объект можно редактировать на уровне операндов.
Рассмотрим это на примере изучения взаимосвязи между положением операндов по отношению друг к другу и внешним видом булевого объекта. Создайте в
качестве исходных объектов два цилиндра и разместите их так, как показано на
рисунке 16.9.26. Выделите меньший из объектов, установите булеву операцию
вычитания Subtraction (B-A) и вторым операндом укажите другой цилиндр,
вследствие чего в большем цилиндре появится отверстие (рисунок 16.9.27).
Данное отверстие не будет сквозным, что обусловлено исходным положением
цилиндров.
149
Рисунок 16.9.26. – Два цилиндра
Рисунок 16.9.27. – Отверстие в цилиндре
Полученный результат можно изменить, причем для этого даже не потребуется
отменять булеву операцию, поскольку операнды булева объекта в определенной степени редактируемы, причем независимо друг от друга: их можно выделять, перемещать, масштабировать и поворачивать по отношению друг к другу,
меняя, таким образом, сам булев объект. Редактирование операндов осуществляется в режиме Sub-Object, для перехода в который нужно при выделенном
булевом объекте раскрыть свиток Boolean панели Modify, подсветить строку
Operands, а затем указать редактируемый операнд (рисунок 16.9.28) и произвести над ним нужные манипуляции. При перемещении операнда или любой другой манипуляции над ним в проекции Perspective будет сразу же отображаться
обновленный булев результат. Для примера переместите в окне проекции Left
150
операнд A влево – по мере перемещения глубина –отверстия будет увеличиваться (рисунок 16.9.29), а при обратном перемещении – уменьшаться (рисунок
16.9.30). Если продолжить перемещение операнда A влево, то в конце концов
отверстие станет сквозным (рисунок 16.9.31), а при обратном движении превратится в едва заметную выемку (рисунок 16.9.32).
Рисунок 16.9.28. – Установлен режим Sub-Object,
а для редактирования выбран операнд A
Рисунок 16.9.29. – Увеличение глубины
отверстия в цилиндре
151
Рисунок 16.9.30. – Уменьшение глубины отверстия в цилиндре
Рисунок 16.9.31. – Цилиндр со сквозным отверстием
Рисунок 16.9.32. – Цилиндр с небольшой выемкой
152
Аналогичным способом можно не только перемещать и поворачивать
операнды, но и менять их размеры. Попробуйте для операнда A провести масштабирование инструментом Select and Uniform Scale – таким способом можно
менять размеры выемки, например, сделать ее очень большой по диаметру (рисунок 16.9.33) или, наоборот, очень маленькой. Для того чтобы вернуться из
режима редактирования операндов в режим редактирования булева объекта,
нужно подсветить в палитре Modify строку Boolean – после этого операции
масштабирования, перемещения и поворота будут относиться ко всему булеву
объекту в целом.
Рисунок 16.9.33. – Цилиндр с большей по диаметру выемкой
Операнды можно редактировать и на уровне объектов: менять длину, ширину, высоту, число сегментов и т.п. Чтобы перевести булев объект в режим
редактирования на уровне объекта, на палитре Modify следует активировать
строку Operands, выбрать нужный операнд, а затем в списке Boolean щелкнуть
на строке под строкой Operands, где, например, в случае использования примитивов будет фигурировать имя примитива в общем виде (рисунок 16.9.34).
153
Рисунок 16.9.34. – Редактирование операнда A булева объекта
на уровне объекта
16.10. Лофтинговые составные объекты
Объект данного типа представляет собой трехмерное тело, построенное
на основе опорных сечений. Его поверхность формируется как огибающая одной или нескольких двумерных сплайновых форм – сечений, размещенных
вдоль кривой, называемой путем.
Создание простейшего лофтингова составного объекта
Одним из широко используемых способов моделирования объектов в 3D
Studio MAX является метод формования, или лофтинга (lofting), позволяющий
преобразовывать сплайны в трехмерные тела самых разных форм – начиная от
абстрактных объектов (например, изученных ранее примитивов) и заканчивая
совершенно реалистичными моделями. Довольно часто лофтинг оказывается
самым быстрым способом создания той или иной модели методом моделирования. Например, сложный объект, на моделирование которого посредством полигонов понадобилось бы не меньше часа, можно смоделировать при помощи
лофтинга за 10-15 минут.
Рассмотрим создание простейшего лофт-объекта на следующем примере:
Исходные формы для loft-объектов (путь и сечения) можно создавать в
любом окне проекций, поэтому при выборе окна проекций стоит исходить из
удобства моделирования, отдавая предпочтение тому окну проекций, которое в
наибольшей степени согласуется с видом объекта сверху или спереди.
Loft-объекты относятся к составным объектам (Compound Objects, рисунок 16.10.1) категории Geometry (Геометрия), и для их построения предназна154
чена кнопка Loft (Лофтинговый), которая становится доступной при выделении
одной из исходных форм и активизации типа Compound Objects категории
Geometry. Можно пойти и другим путем – выбрать из главного меню команду
Create=>Compound=>Loft, что тоже приведет к открытию панели с настройками loft-объекта.
Рисунок 16.10.1. – Тип Compound Objects с входящими в него
вариантами составных объектов
Создавать простые loft-объекты можно двумя способами: указывая либо
путь – для этого варианта предназначена кнопка Get Path (Указать путь, рисунок 16.10.2) из свитка Creation Method (Метод создания), либо форму-сечение
при помощи кнопки Get Shape (Указать форму). Оба варианта равнозначны, но
различаются расположением в пространстве получаемого лофтингового объекта, которое определяется на основании предварительно выделенного объекта:
сечения – в первом случае и пути – во втором. Кроме названных кнопок, в
свитке Creation Method (Метод создания) имеется важный переключатель,
имеющий три положения:

Move (Переместить) – форма-сечение, указанная после щелчка на
кнопке Get Shape (Указать форму) или Get Path (Указать путь), будет помещена
в создаваемый loft-объект и перестанет существовать как независимый объект;

Copy (Копировать) – в составе создаваемого loft-объекта будет использована независимая копия исходной формы-сечения;

Instance (Образец) – будет применен образец формы-сечения, который установлен по умолчанию и используется чаще всего, так как любое последующее допустимое изменение формы будет отражаться на loft-объекте.
Правда, в этом случае сцена постепенно загромождается лишними объектами,
поэтому обычно после окончания моделирования loft-объекта ненужные формы
скрываются или вообще удаляются со сцены.
155
Рисунок 16.10.2 – Кнопка Get Path из свитка Creation Method
При создании любого loft-объекта следует обратить внимание на следующие моменты:
 если нет ни одного выделенного объекта, то кнопка Loft (Лофтинговый)
будет недоступной;
 если предварительно выделенная форма состоит более чем из одного
сплайна, то кнопка Get Shape (Указать форму) в свитке Creation Method
(Метод создания) окажется недоступной.
Довольно часто построение лофтинговой модели начинают с создания базового объекта с одним-единственным сечением, который создается на начальном этапе формирования модели. Для примера активизируйте категорию объектов Shapes (Формы) командной панели Create (Создание), в списке разновидностей объектов укажите тип Splines (Сплайны) и постройте два сплайна: звезду (Star) в качестве сечения loft-объекта и линию (Line) в качестве его пути (рисунок 16.10.3). Выделите звезду, щелкните на кнопке Geometry (Геометрия) командной панели Create (Создать) и выберите в раскрывающемся списке разновидностей объектов вариант Compound Objects (Составные объекты). В свитке
Object Type (Тип объекта) сначала щелкните на кнопке Loft (Лофтинговый), потом на кнопке Get Path (Указать путь) – выбранная кнопка подсвечивается желтым цветом, а затем укажите мышью предварительно созданный сплайн пути. В
результате получится фигура, образованная движением звезды по линии. Про156
ведя рендеринг, вы увидите примерно такой объект, как показан на рисунке
16.10.4.
Рисунок 16.10.3. – Исходные формы для первого loft-объекта
Рисунок 16.10.4. – Первый loft-объект
Создайте другую форму пути в виде эллипса (рисунок 16.10.5) и вновь
сформируйте лофтинговый объект, но теперь уже на основе звезды и эллипса;
результат рендеринга показан на рисунке 16.10.6. Затем попробуйте получить
loft-объект, взяв в качестве пути криволинейный сплайн. Последний нужно
предварительно создать из линейных сплайнов, затем перейти в режим редактирования сплайна на уровне вершин, превратить каждую вершину в сглаженную и откорректировать положение вершин для достижения задуманной кривизны (рисунки 16.10.7 и 16.10.8). Сохраните данный базовый объект, так как
он потребуется нам в дальнейшем.
157
Рисунок 16.10.5. – Исходные формы для второго loft-объекта
Рисунок 16.10.6. – Второй loft-объект
Рисунок 16.10.7. – Исходные формы для третьего loft-объекта
Рисунок 16.10.8. – Третий loft-объект
158
Кроме пути и сечения, на внешний вид loft-объекта влияют и другие параметры, устанавливаемые в свитках Surface Parameters (Параметры поверхности) и Skin Parameters (Параметры оболочки). Первый свиток содержит опции
для управления способами визуализации поверхности лофтинга; с его помощью, например, можно управлять степенью сглаживания оболочки вдоль и поперек пути (рисунки 16.10.9 и 16.10.10). Второй свиток содержит множество
опций, влияющих не только на отображение оболочки лофтинга, но и на плотность каркаса и используемые методы интерполяции; с его помощью можно, в
частности, регулировать детальность создаваемой модели (рисунки 16.10.11 и
16.10.12).
Рисунок 16.10.9. – Спираль с включением обоих вариантов сглаживания
Рисунок 16.10.10. – Спираль с отключением сглаживания по длине
Рисунок 16.10.11. – Спираль с обычной плотностью каркаса
159
Рисунок 16.10.12 – Спираль с уменьшенной плотностью каркаса
16.11. Редактирование loft-объектов
Под редактированием loft-объекта понимаются различные операции:
 добавление новых сечений в loft-объекты, что позволяет получать гораздо
более интересные модели, чем на основе одного сечения;
 удаление сечений;
 замена одного сечения loft-объекта на другое, что бывает необходимо, если
выбор сечения оказался неудачным, а изменить сечение слишком долго или
вообще невозможно;
 редактирование сплайнов пути и сечений на уровне параметрической формы. Таким способом можно выполнить только самые простые преобразования, например, увеличить или уменьшить радиус сечения, изменить число
вершин в случае многоугольника и звезды и т.п.;
 изменение контуров пути и сечений на уровне подобъектов: вершин, сегментов, что позволяет изменять объект до полной неузнаваемости. Данная
возможность обязательно предполагает предварительное (то есть до проведения лофтинга) конвертирование соответствующих сплайнов из обычных в
редактируемые при помощи команды Convert To=>Convert to Editable Spline
(Конвертировать в => Конвертировать в редактируемый сплайн). При этом
редактируемые сплайны перестают быть параметрическими объектами, и их
уже нельзя будет редактировать на уровне параметров, изменяя ширину,
высоту, радиус и пр.
Проблема скручивания
Неприятным моментом при создании loft-моделей с несколькими сечениями является скручивание объекта от сечения к сечению, если первые вершины
сечений не находятся на одной прямой. В некоторых объектах это может не
слишком бросаться в глаза, но если количество вершин разных сечений различается, то это может оказаться очень заметным. Для примера создайте лофт на
основе сплайнов (рисунок 16.11.1), указав линию в качестве пути, а окружность, квадрат и звезду – в качестве сечений. Окружность установите на уровне
0, квадрат – на уровне 50, а звезду – на уровне 100. Результат лофтинга представлен на рисунок 16.11.4.
160
Рисунок 16.11.3. – Исходные сплайны для loft-объекта
Рисунок 16.11.4. – Loft-объект: перекосы видны очень сильно
Для ликвидации скручивания необходимо выровнять первые вершины
всех входящих в loft-объект сечений (данные вершины в режиме редактирования вершин выделяются квадратиками). Суть процесса выравнивания состоит в
том, чтобы установить все первые вершины на одной прямой. Сделать это
можно двумя путями. Можно последовательно перебрать все сечения в режиме
редактирования вершин и установить в них первые вершины там, где это необходимо, каждый раз выделяя вершину и щелкая на кнопке Make First (Сделать
первой). Очевидно, что данный вариант возможен лишь в том случае, если все
сечения loft-объекта были превращены в редактируемые сплайны до проведения лофтинга. Можно пойти и другим путем: выделить loft-объект, перейти в
режим редактирования подобъектов модификатора Loft на уровне редактирования сечений (Shape, рисунок 16.11.5) и щелкнуть на кнопке Compare (Сравнить). Это приведет к открытию пустого окна Compare, куда нужно загрузить
все нужные сечения. Для этого щелкните на кнопке Pick Shape (в стадии активности она будет желтого цвета) и последовательно укажите в одном из окон
проекций все сечения (в момент попадания указателя мыши на сечение внешний вид указателя меняется на знак «+»). В результате окно Compare станет вы161
глядеть примерно так, как на рисунке 16.11.6. С помощью инструмента Select
and Rotate (Выделить и повернуть) поверните каждое из сечений таким образом, чтобы все первые вершины оказались на одной прямой (рисунок 16.11.7).
Данную операцию выполняют в любом из окон проекций, а окно Compare служит для контроля за положением начальной точки поворачиваемого сечения.
Результатом выравнивания первых вершин будет исчезновение скручивания
(рисунок 16.11.8).
Рисунок 16.11.5. – Выбор режима редактирования Shape для loft-объекта
Рисунок 16.11.6. – Окно Compare после добавления сечений
162
Рисунок 16.11.7. – Окно Compare после выравнивания первых вершин
Рисунок 16.11.8 – Loft-объект после выравнивания вершин
Деформация лофт-объектов
После создания объекта методом лофтинга на командной панели Modify
появляется свиток Deformations (Деформации) (рисунки 16.11.9 и 16.11.10).
Этот свиток содержит пять кнопок, позволяющих изменять размер сечений, перекручивать и сгибать объекты, скашивать их углы и подгонять форму. Щелчок
на любой из этих кнопок вызывает появление окна со специальными линиями и
управляющими точками, предназначенными для управления деформацией.
Кроме того, справа от каждой кнопки находится переключатель, разрешающий
или отменяющий ее действие.
163
Рисунок 16.11.9. – Deformations (Деформации)
Рисунок 16.11.10. – Deformations (Деформации)
На сетке диаграммы деформации находится линия красного цвета. Эта
линия, называемая кривой деформации, является графиком величины деформации сечения в зависимости от координат пути, вдоль которого строится оболочка объекта. Кривая имеет на концах два маркера, называемых управляющи164
ми точками. На кривой деформации можно задать любое количество управляющих точек или удалить лишние. Каждая точка позволяет регулировать величину деформации в сечении, расположенном на заданном расстоянии от начала
пути. Управляющие точки можно перемещать, используя инструменты панели
управления окна диаграммы деформации, чтобы придать кривой ту форму, которая необходима. Кроме того, управляющей точки можно задать один из трех
типов: Corner (С изломом), Bezier-Smooth (Сглаженная Безье) или Bezier Corner
(Безье с изломом). Для этого выделите ее и щелкните правой кнопкой мыши.
После чего выберите необходимый тип из контекстного меню.
Сверху над сеткой диаграммы находится относительная шкала расстояния. Координаты положения управляющих точек вдоль линии пути, на котором
размещаются сечения, указываются на диаграмме в процентах расстояния от
начала этого пути. Слева от сетки диаграммы находится шкала значений деформации. Градуировка этой шкалы зависит от типа деформации и позволяет
оценить степень деформации сечения в любой точке вдоль размещения сечений. В нижней части окна расположены два поля, которые содержат информацию о координатах текущей выделенной точки.
Таблица 16.11.1. – Основные кнопки окна деформации
Изображение
кнопки
Название
Принцип действия
Связывает кривые деформации таким образом, что изменения одной
кривой влечет за собой аналогичное
изменение другой
Display X Axis
Отображает только кривую дефор(Отобразить деформацию по мации по оси Х (красным цветом)
оси Х)
Display Y Axis
Отображает только кривую дефор(Отобразить деформацию по мации по оси Y (зеленым цветом)
оси Y)
Display ХY Axes
Отображает кривые деформации по
(Отобразить деформацию по осям Х и Y (каждую своим цветом).
осям Х и Y)
Если кривые совпадают, отображается только одна из них
Swap Deform Curves
Меняет местами кривые деформации
(поменять кривые деформа- по оси Х и по оси Y
ции)
Make Symmetrical
(Симметричные изменения)
165
Продолжение таблицы 16.11.1
Move Control Point
(Переместить управляющую
точку)
Scale Control Point
(Изменить масштаб в
управляющей точке)
Insert Cornet Point
(Вставить точку с изломом)
Позволяет перемещать управляющую точку
Insert Bezier Point
(Вставить точку Безье)
Позволяет вставлять новую точку
типа Безье
Delete Control Point
(Удалить управляющую
точку)
Reset Curve (Сброс)
Удаляет
точку
Изменяет масштаб деформации в
текущей управляющей точке
Позволяет вставлять новую точку
типа Corner (С изломом)
текущую
управляющую
Возвращает кривую в исходное состояние
Используется для перемещения вида
кривой деформации вверх-вниз,
вправо-влево
Изменяет масштаб окна таким образом, чтобы отобразить всю кривую
Pan (Прокрутка)
Zoom Extents
(Кривая целиком)
Zoom Horizontal Extents
(Кривая целиком по горизонтали)
Zoom Vertical Extents
(Кривая целиком по вертикали)
Zoom Horizontally
(Масштаб по горизонтали)
Отображает кривую деформации
полностью по горизонтали
Zoom Vertically
(Масштаб по вертикали)
Изменяет масштаб по вертикали
Zoom (Масштаб)
Изменяет масштаб окна при перетаскивании курсора
Zoom Region
(Область масштабирования)
Изменяет масштаб области, обозначенной с помощью рамки
Отбражает кривую деформации
полностью по вертикали
Изменяет масштаб окна по горизонтали
166
16.12. Каркасное моделирование
Основа редактируемый сетчатый объект – Editable Mesh. Базовое состояние сетчатого объекта. В среде специалистов трехмерной графики принято
употреблять слово "меш". Его структура:
Вершина – Vertex. Точка в трехмерном пространстве. На основе вершины
строится вся остальная геометрия объекта.
Ребро – Edge. Линия, соединяющая две вершины. В сетчатом объекте ребра могут быть "видимыми" (Visible) или "невидимыми" (Invisible).
Грань – Face. Минимальная поверхность, построенная на базе трех вершин.
Полигон – Polygon. Для сетчатого объекта – это несколько граней, объединенных "невидимыми" ребрами.
Элемент – Element. Несколько граней или полигонов, составляющих единое целое друг с другом и не имеющих общих вершин или ребер с другими
элементами. Элементы возникают, например, при присоединении одного объекта к другому.
Группы сглаживания
Группа сглаживания – это идентификатор, присваиваемый каждой грани
и представляющий собой число из диапазона от 1 до 32. Грани с одинаковыми
значениями идентификатора считаются относящимися к одной и той же группе
сглаживания. Это свойство, которое имеет каждый треугольник (Face) любой
модели в 3D Studio MAX.
Создайте любой примитив, например, Box, и преобразуйте его в Editable
Mesh. Перейдите к редактированию граней. Рассматривается раздел Smoothing
Groups (рисунок 16.12.1). Этот раздел как раз и работает с группами сглаживания.
Рисунок 16.12.1. – Smoothing Groups.
Если выделяется несколько полигонов, у одних из которых проставлены
биты в группах, а у других соответствующие биты не проставлены, то кнопки с
этими битами будут пустыми, без чисел. Кнопка Select By SG позволяет выделять все треугольники, с указанными битами групп сглаживания. Кнопка Clear
All выключает все биты групп сглаживания для выделенных треугольников.
167
1.
2.
3.
4.
5.
6.
7.
8.
Задание для самостоятельной работы: создание камина.
Создайте параллелепипед с размерами:
длина – 160 см,
ширина – 65 см,
высота – 120 см,
Можно взять свои размеры.
Число сегментов по длине равным пяти, по ширине – четырем и по высоте –
пяти (можно свое количество, позволяющее добиться нужного результата).
Четыре сегмента по ширине позволят сформировать наклонную часть основания дымохода, оставляя место для каминной полки. Пять сегментов по
длине и по высоте позволят вдавить часть граней передней стенки и сформировать топку камина.
Включите режим показа невидимых ребер сетки(wirefraim). Превратит объект в редактируемую сетку (ПКМ- convert to mesh).
Перейдите на уровень редактирования полигонов (Polygon), выделите нужные полигоны и перемещением поднимите их вверх.
Рисунок 16.12.2. – Выделение полигонов для создания дымохода
Рисунок 16.12.3. – Создание дымохода
168
Выделите объект полностью. В свитке, в параметре Smothing Groups
нажать кнопку Clear All (Убрать у объекта сглаживание).
10. Чтобы исправить неверное вытягивание, нужно повернуть одно из ребер.
9.
Рисунок 16.12.4. – «Неверное» ребро дымохода
Перейдите на уровень редактирования ребер, щелкните на кнопке
Turn(ниже в свитке), а затем на «проблемном» ребре. Ребро повернется так, что
будет соединять две другие вершины полигона, как показано на рисунке.
Затем необходимо выполнить выдавливание граней, чтобы сформировать
трубу дымохода. В режиме редактирования полигонов выделите полигоны в
верхней части выступа сетки и выдавите их (ПКМ- Extrude Poligons).
Рисунок 16.12.5. – Дымоход полностью
Тем же способом сформируйте углубления топки камина.
Выделите полигоны в центре передней стенки камина. Выдавить полигоны в глубину сделайте остановку. Затем завершите операцию, выдавив эти грани еще
Выполнить выдавливание боковых сторон углубления в стороны, чтобы
увеличить внутреннее пространство топки. Выдавите их внутрь сетки примерно
на – (15–20) см, чтобы потолок топки оказался выше края отверстия на передней стенке. Попробуйте самостоятельно выдавить в стороны полигоны боковых
поверхностей топки, дополнительно увеличив ее внутренний объем.
169
Рисунок 16.12.6. – Образец камина.
16.13. Лоскутное (патчевое) моделирование
Куски Безье (лоскуты) прекрасно подходят для моделирования типа объектов, относящихся к разряду «органики». Или предметов с изначально плавными контурами [9]. Для моделирования есть несколько способов, но все они
включают в себя модификатор Editable Patch. Работа с ним и его команды
очень напоминают работу с Editable Mesh.
Способы моделирования:
 Модели на основе примитивов;
 Модели из готовых лоскутов;
 Модели на основе кривых Безье.
Модели на основе примитивов
Задание для самостоятельной работы: Сделать дверную ручку.
1.
Создайте Plane. Придайте ей размер квадрата.
2.
Примените модификатор Editable Patch.
3.
В случае работы с лоскутами есть всего два типа вершин:
Coner (Угол) – между направляющими возникает угол;
Complanar (Компланарные) – направляющие зависимы.
Рисунок 16.13.1. – Заготовка для ручки
170
4.
Средний лоскут приобрел форму круга (рисунок 14.10.2). Выдавите
его с помощью команды Extrude. Обратите внимание на параметр Outlining.
5.
Расширить верх можно с помощью масштабирования.
Рисунок 16.13.2. – Дверная ручка
Модели из готовых лоскутов
Задание для самостоятельной работы: Сделать морскую звезду.
Будем делать только половинку звезды, а потом отразим ее зеркально
(рисунок 16.13.3).
Рисунок 16.13.3. – Морская звезда
1. В окне проекции FRONT создайте стандартный объект типа Tri Patch
(треугольный лоскут).
2. Примените модификатор Editable Mash и поверните сетку на 45°, чтобы диагональ, разделяющая куски, разместилась вертикально. (Можно работать
с модификатором Editable Patch).
3. На уровне редактирования вершин, выделите все четыре угловые вершины двух кусков, щелкните правой кнопкой мыши и преобразуйте их к типу
Corner.
4. Перемещая вершины и манипулируя маркерами касательных векторов,
придайте сетке кусков форму, подобную показанной на рисунке 16.13.4. Это
будет заготовка лицевой половины верхнего из пяти лучей звезды.
171
Рисунок 16.13.4. – Придание сетке кусков форму
5. Чтобы придать сетке нужную выпуклость, придется работать сразу с
несколькими окнами проекций. Выделите верхнюю вершину сетки в окне вида
спереди. Перейдите в окно проекции вида справа. Плоская сетка в таком окне
будет выглядеть как отрезок вертикальной линии. Переместите влево маркер
касательного вектора, исходящего из верхней вершины, вниз, вдоль диагонали
сетки.
6. Затем выделите нижнюю вершину сетки и также переместите ее влево.
И маркерами касательных векторов двух боковых вершин, придадите сетке
примерно такую форму, какая показана на рисунке 16.13.5.
Рисунок 16.13.5. – Придание сетке примерно такой формы
7. Для дальнейшего наращивания сетки переключитесь на уровень выделения ребер. Выделите в окне проекции вида спереди правое нижнее ребро сетки и щелкните на кнопке Add tri (добавить треугольный). К выделенному ребру
автоматически присоединится новый треугольный кусок Безье. Этот кусок размещается программой так, чтобы без перегибов наследовать форму исходной
сетки (рисунок 16.13.6.).
172
Рисунок 16.13.6. – Наследование формы исходной сетки
8. Форму нового куска требуется подправить. Переключитесь на уровень
выделения подобъектов-вершин. Перемещая на виде спереди крайнюю вершину нового куска и манипулируя маркерами касательных векторов этой и
двух других его вершин, придайте сетке форму как на рисунке 16.13.7.
Рисунок 16.13.7. – Перемещение на виде спереди крайнюю вершину
нового куска и манипулируя маркерами касательных векторов
этой и двух других его вершин
9. Переключившись на уровень работы с ребрами, выделите нижнее из
свободных ребер только что добавленного куска и снова щелкните на кнопке
Add tri (добавить треугольный). Произойдет дальнейшее наращивание площади
сетки за счет добавления еще одного треугольного куска Безье. Вернувшись на
173
уровень выделения вершин, настройте форму добавленного куска за счет перемещения маркеров касательных векторов. Не забудьте переместить нижнюю
угловую вершину нового куска в окне вида сверху на линию зеркальной симметрии половинок создаваемой звезды. В итоге сетка должна принять вид, похожий на рисунок. Можно продолжать дальнейшее наращивание сетки аналогичным способом, начав с ребра, указанного на рисунке стрелкой.
10. Продолжите наращивание сетки, добавляя новые куски любым из
возможных способов, показавшимся вам более простым и подходящим. В итоге
фронтальная половинка звезды должна принять вид, подобный показанному на
рисунке 16.13.8.
Рисунок 16.13.8. – Фронтальная половинка звезды
11. Теперь остается только создать зеркальную копию сформированной
половинки звезды и соединить обе половины вместе. Переключитесь на уровень выделения объекта Editable patch (редактируемый кусок) в целом. Убедитесь, что вся сетка кусков выделена. Активизируйте окно вида справа. Щелкните на кнопке Mirror selected objects (отражение выделенные объекты) главной
панели инструментов. В появившемся окне диалога установите переключатель
Clone selection (тип отражения) в положение Copy (копия) и щелкните на кнопке «ok». Будет создана зеркальная копия половинки звезды. Чтобы слить вершины новой сетки с вершинами первой половины звезды, требуется предварительно включить новую половину в состав исходной сетки. Щелкните на кнопке Attach (прикрепить) свитка Geometry (геометрия), а затем – на исходной половинке звезды.
12. С помощью кнопки Selected в разделе Weld попарно объедините нужные вершины (допуск увеличить до нескольких тысяч).
174
16.14. Работа с материалами
При создании любых объектов в программе им назначаются различные
цвета. Объекты при этом выглядят неестественно, так, словно они сделаны из
разноцветного пластика [6]. Для придания реалистичного вида необходимо
назначить объектам материалы и карты текстур. Материал – это набор свойств,
присваиваемых поверхности объекта для имитации цвета, фактуры, прозрачности и многих других характеристик реальных предметов. Карты текстур присваиваются каналам, соответствующим названным характеристикам. Карты
текстур представляет собой растровое изображения, придающее материалу
объекта уникальные свойства, не достижимые методом настройки стандартных
параметров материала. При присвоении нескольких карт текстур, материал является многокомпонентным.
Для создания, редактирования и применения материалов к объектам используется окно диалога Material Editor (Редактор материалов) (рисунок
16.14.1.), которое вызывается с помощью кнопки Материалы:
.
Рисунок 16.14.1. – Material Editor (Редактор материалов)
175
Основной рабочей зоной окна Material Editor является область ячеек образцов материалов. Всего их 24. Активная ячейка имеет белую рамку по периметру. Если данный материал назначен хотя бы одному объекту в сцене, уголки
ячейки срезаны.
Все остальные зоны свитков, прокруток и управляющих кнопок служат
для настройки различных параметров, влияющих на финальный вид материала
в сцене.
Таблица 16.14.1. – Управляющие кнопки для настройки материалов
Изображение
кнопки
Название
Принцип действия
Позволяет загрузить готовый материал
или создать новый. Щелчок на этой
кнопке
вызывает
появление
окна
Material/Map Browser (Просмотр материалов и карт текстур), рассматриваемого
ниже
Assign Material to
Назначает материал активной ячейки
Selection
всем выделенным объектам
Reset Map/Mtl to De- Устанавливает параметры материала акfault
тивной ячейки в исходные
Make Material Copy Помещает полную копию текущего материала в активную ячейку, сохраняя все
параметры и имя исходного материала
Put to Library
Позволяет переименовать материал и сохранить его в текущей открытой библиотеке материалов
Show Map in View- Позволяет отобразить карту текстуры в
port
окне проекции
Show End
Позволяет просматривать в ячейке образца вид комбинированного материала,
основанного на картах текстур. Если
кнопка отключена, просматривается
лишь одна из его компонент
Go to Parent
Выполняет возврат с компонентноGo to Sibling Result го на составной уровень в многоуровневых материалах. Выполняет переход к
следующему компоненту в многоуровневых материалах
Materials/Map NaviИспользуется для просмотра через
gator
специальное окно полной иерархии активного материала
Select by Material
Позволяет выделить объекты сцены
по признаку используемых в их составе
Get Material
176
Options
Make Preview
Video Color Check
Sample UV Tilling
Background
Backlight
Sample Type
материалов, вызывая для этого специальное окно, где выделены объекты с текущим активным материалом
Позволяет перейти к настройке параметров окна Material Editor
Выполняет просчет анимации материала активной ячейки и позволяет просмотреть результат просчета в реальном
времени
Включает режим контроля цветов материала на соответствие телевещательным стандартам. Не соответствующие
цвета либо корректируются, либо помечаются
Устанавливает количество повторений образцов текстуры 1-одно, 4-х, 9-ти
или 16-ти кратными плитками
Назначает вид фона в активной ячейке материала. Необходимо для настройки
прозрачности материала
Помещает дополнительный источник
света позади образца материала, обеспечивая его заднюю подсветку
Позволяет выбирать фигуру, отображаемую в ячейке образца материалов.
Можно выбрать сферу, цилиндр, куб или
указать собственный объект в качестве
образца
Материал Architectural
Применение материала Architectural – самый простой способ текстурирования объектов, так как он включает множество шаблонов, специально разработанных для имитации тех или иных материалов: керамической поверхности,
пластика, металла, воды и т.д. Использование шаблонов позволяет быстро создавать нужные материалы, ведь достаточно выбрать нужный тип материала,
например пластик, и откорректировать его параметры, а не создавать данный
материал с нуля, что дольше и требует соответствующих знаний.
Для примера попробуйте текстурировать произвольную сцену (рисунок
16.141.2.) с применением материалов данного типа. Откройте окно редактора
материалов, щелкнув на клавише M, выделите первый слот, присвойте материалу имя и щелкните на кнопке Standard – откроется окно с доступными типами
материалов (рисунок 16.14.3.). Выберите тип материала Architectural и в ответ
на запрос программы относительно необходимости замены материала укажите
вариант Discard Old Material (Сбросить старый материал). Это позволит полу177
чить совершенно новый тип материала, пока не обременный никакими характеристиками. На вкладке Templates (Шаблоны) установите нужный шаблон,
например Ceramics (Керамика – рисунок 16.14.4) для визуализации керамических поверхностей (в рабочей сцене подобный материал можно применить для
чайника). Измените параметры шаблонного материала и назначьте его первому
объекту. Аналогичные операции проведите для всех остальных объектов – возможный вид сцены представлен на рисунке 16.14.5.
Рисунок 16.14.2. – Исходный вид сцены
Рисунок 16.14.3. – Окно Material/Map Browser
178
Рисунок 16.14.4. – Установка шаблонного материала Ceramics
Рисунок 16.14.5 – Сцена после текстурирования объектов
179
Материал Top/Bottom
Материал Top/Bottom позволяет назначать верхней и нижней частям объекта разные материалы: Top Material отвечает за материал для верхней части
объекта, а Bottom Material – для нижней. Разделение объекта на верхнюю и
нижнюю части довольно условно и зависит от его ориентации относительно
оси Z. Поверхностям, расположенным на положительной части оси Z, присваивается материал Top, а на отрицательной – материал Bottom. Это автоматически
означает, что при изменении ориентации объекта назначение материалов может
измениться, что актуально, например, при анимации.
Для примера создайте произвольный объект, например Torus Knot (рисунок 16.14.6). Откройте окно редактора материалов, щелкнув на клавише M, выделите первый слот, присвойте материалу имя и щелкните на кнопке Standard.
Выберите тип материала Top/Bottom и в ответ на запрос программы относительно необходимости замены материала укажите вариант Discard Old Material
– будет создан новый материал (рисунок 16.14.7). Назначьте данный материал
объекту. Щелкните в свитке Top/Bottom Basic Parameters на кнопке справа от
Top Material и задайте параметры первого материала, выбрав для него произвольный вариант тонированной раскраски (рисунок 16.14.8). Для настройки
второго материала в списке материалов переключитесь с материала Top на составной материал (рисунок 16.14.9) или нажмите на кнопку Go To Parent, обеспечивающую перемещение от подчиненного материала к родительскому. Затем
определите особенности материала Bottom –для первого эксперимента можно
сделать его контрастным (рисунок 16.14.10) и проведите рендеринг (рисунок
16.14.11.).
Рисунок 16.14.6. – Исходный вид объекта
180
Рисунок 16.14.7. – Появление нового материала Top_Bottom
Рисунок 16.14.8. – Параметры настройки материала Top
181
Рисунок 16.14.9. – Возврат к окну параметров составного материала
Рисунок 16.14.10. – Параметры настройки материала Bottom
Рисунок 16.14.11. – Вид объекта после наложения
составного материала
182
По умолчанию между верхним и нижним материалами проходит четкая
граница, однако при необходимости можно обеспечить плавное перетекание
одного материала в другой за счет их смешивания. Степень смешивания задается в процентах счетчиком Blend (Смешивание). Например, при установке смешивания в 50% граница оказывается полностью размытой. Положение границы
между материалами также регулируется – за это отвечает счетчик Position
(Граница), по умолчанию установленный на 50%.
Попробуем воспользоваться данным типом материала при текстурировании обычного алюминиевого чайника (объект Teapot из группы стандартных
примитивов), стремясь придать его нижней части несколько закопченный вид.
Создайте чайник и назначьте ему материал типа Top/Bottom. Определите параметры материала Top в соответствии с рисунком 16.14.12, а материала Bottom –
с рисунком 16.14.13. Установите позицию границы в 60% и размойте ее (рисунок 16.14.14). Для имитации закопченности нижней поверхности чайника
щелкните в свитке Top/Bottom Basic Parameters на кнопке справа от Bottom
Material, в свитке Maps выберите текстурную карту Bump и установите для нее
текстуру Noise. Откройте свиток Noise Parameters и уменьшите значение параметра Size (Размер) до 1, поэкспериментируйте с типом шума и оттенками используемых для его имитации материалов (рисунок 16.14.15). Окончательный
вариант визуализированного чайника показан на рисунке 164.14.16.
Рисунок 16.14.12. – Параметры настройки материала Top
183
Рисунок 16.14.13. – Параметры настройки материала Bottom
Рисунок 16.14.14. – Параметры настройки материала Top/Bottom
184
Рисунок 16.14.15. – Параметры настройки свитка Noise Parameters
Рисунок 16.14.16. – Закопченный чайник
Материал Double Sided
Материал Double Sided позволяет назначать различные материалы разным сторонам одной и той же поверхности. Если в общем случае визуализируется только сторона поверхности с положительной нормалью грани – внешняя
сторона (обратная сторона при отключении опции 2-Sided вообще игнорируется), то в случае установки составного материала Double Sided материал Facing
назначается поверхности с положительной нормалью, а материал Back – обратной стороне той же поверхности (то есть внутренней стороне).
Для экспериментов создайте обычный чайник, у которого нужно удалить
крышку, отключив соответствующий ей подобъект на панели Modify, и присвойте ему произвольный материал (рисунок 16.14.17.). Изначально внутренняя
сторона его поверхности не визуализируется, хотя при включении флажка 2Sided в свитке Shader Basic Parameters она будет отображаться, правда с тем же
самым материалом (рисунок 16.14.18).
185
Рисунок 16.14.17. – Исходный чайник
Рисунок 16.14.18. – Визуализация чайника
при включении опции 2-Sided
Чтобы появилась возможность присвоить внутренней стороне другой материал, в окне редактора материалов выделите свободный слот, присвойте материалу имя, щелкните на кнопке Standard, установите тип материала Double
Sided и укажите вариант Discard Old Material (Сбросить старый материал). Откроется свиток с параметрами настройки данного типа материала (рисунок
16.14.19). Подберите подходящие материалы для обеих сторон чайника.
Например, для внешней стороны можно остановиться на комбинировании тональной раскраски с подходящей текстурной картой в канале Diffuse Сolor
(в данном случае выбрана карта Marble – рисунок 16.14.20), а для внутренней
ограничиться только тональной раскраской (рисунок 16.14.21). Полученный в
итоге визуализированный чайник представлен на рисунке 16.14.23. При жела186
нии дополнительно можно регулировать степень просвечивания внешнего материала, корректируя значение параметра Traselucency. Если данный параметр
равен 0, то внутренний материал не просвечивает полностью, при его постепенном увеличении степень просвечивания растет, при значении 50 – оба материала становятся примерно одинаковыми, а дальнейший рост приводит к переключению назначения материалов.
Рисунок 16.14.20. – Исходный вид параметров настройки
материала Double Sided
Рисунок 16.14.21. – Параметры настройки материала Facing
Рисунок 16.14.22. – Параметры настройки материала Back
187
Рисунок 16.14.23. – Чайник с различными внешним и внутренним материалами
А теперь попробуем воспользоваться материалом типа Double Sided для
текстурирования поверхности с разрывом, полученной путем лофтинга на основе комбинации замкнутых и разомкнутых сплайнов. Создайте обычную
окружность, конвертируйте ее в редактируемый сплайн, выделите все четыре
сегмента окружности и добавьте в каждый по четыре дополнительных вершины, щелкнув на кнопке Divide (Разделить – рисунок 16.14.24). Сделайте копию
окружности и разорвите данный сплайн в верхней точке окружности, активировав кнопку Break (Разорвать) и щелкнув в соответствующей вершине. Сделайте
копию уже разорванного сплайна и измените положение граничных вершин
произвольным образом. Дополните сцену линейным сплайном, который при создании лофт-объекта будет играть роль пути (рисунок 16.14.25). Согласуйте
первые вершины – в данном случае проще всего это сделать вручную, назначив
первые вершины при помощи операции Make First (Сделать первой). Проведите
лофтинг, указав вначале первый слева сплайн, затем на уровне пути 30 – второй, на уровне 50 – третий, 70 – второй и 100 – первый. Результат loft-объекта с
разрывом представлен на рисунке 16.14.26.
Рисунок 14.11.24. – Исходная окружность после добавления
дополнительных вершин
188
Рисунок 16.14.25. – Исходные объекты для лофтинга
Рисунок 16.14.26. – Loft-объект с разрывом
Обратите внимание, что внутренняя сторона объекта не визуализирована.
Откройте редактор материалов, на пустом слоте создайте новый материала типа
Double Sided и назначьте его объекту. По своему усмотрению определите материалы для внешней и внутренней поверхностей – в данном случае для обоих
материалов были добавлены текстурные карты на канале Diffude Color, а для
материала внутренней поверхности дополнительно включена опция SelfIllumination (Самосвечение) – рисунок 16.14.27 и 16.14.28. Возможный результат визуализации текстурированной поверхности с разрывом представлен на
рисунке 16.14.29.
189
Рисунок 16.14.27. – Параметры настройки материала Facing
Рисунок 16.14.28. – Параметры настройки материала Back
190
Рисунок 16.14.29. – Текстурированная поверхность с разрывом
Одним из наиболее широко используемых составных материалов является материал типа Multi/Sub-Object (Многокомпонентный), позволяющий применять к объекту сразу несколько материалов. Многокомпонентные материалы
используют в тех случаях, когда требуется сохранить сложный составной объект в качестве единого объекта, но при этом применить к его различным частям
разные материалы. Номера компонентов многокомпонентного материала соответствуют значениям параметров Material ID (Идентификатор материала),
которые должны быть заранее присвоены выделенным наборам граней объекта
после преобразования его в тип Editable Poly (Редактируемые полигоны) или
Editable Mesh (Редактируемая сетка)
Для создания материала типа Multi/Sub-Object (Многокомпонентный)
щелкните в окне редактора материалов на кнопке Get Material (Получить материал) и выбрать тип Multi/Sub-Object.
Рисунок 16.14.30. – Кнопка Get Material
Может открыться окно, в котором следует установить переключатель в
одно из двух положений:
191
Discard old material? (Отбросить старый материал?) – материал в активной ячейке образца будет отброшен и заменен на многокомпонентный;
Keep old material as sub-material? (Оставить старый материал в качестве
компонента?) – материал из активной ячейки образца будет включен в состав
многокомпонентного материала в качестве компонента.
Рисунок 16.14.31. – Окно замены материала
Щелкните на кнопке Ок.
В результате в редакторе материалов появится свиток Multi/Sub-Object
Basic Parameters (Базовые параметры многокомпонентного материала).
Задайте количество компонентов материала, щелкнув по кнопке Set
Number (Задать число). По умолчанию материал данного типа включает
10 компонентов, нумеруемых числами о 1 до 10.
Рисунок 16.14.32. – Кнопка Set Number
Настройте параметры компонентов материалов типа Multi/Sub-Object (Многокомпонентный), используя следующие однотипные элементы управления:
Рисунок 16.14.33. – Элементы управления
многокомпонентным материалом
192
Текстовое поле Name (Имя) справа от номера материала позволяет ввести
имя для компонента;
Кнопка в столбце Sub-Material позволяет настроить параметры компонента материала. Щелчок на этой кнопке вызывает появление свитков параметров стандартного материала. Можно либо настроить эти параметры, либо
щелкнуть на кнопке Type (Тип) и выбрать в качестве компонента готовый материал из библиотеки, либо поменять тип материала на другой и настроить параметры. Чтобы вернуться на уровень многокомпонентного материала, следует
щелкнуть по кнопке Go to Parent (Перейти к составному материалу) ;
Рисунок 16.14.34. – Кнопка Go to Parent
Поле образца цвета справа от кнопки позволяет изменить цвет компонента материала. Щелчок на этом поле вызывает появление окна диалога Color
Selector (Выбор цвета);
Флажок на правом краю группы параметров компонента позволяет включать или выключать данный материал в состав многокомпонентного материала.
Для назначения многокомпонентного материала объекту выделите объект, перейдите на командную панель Modify (Изменить) и преобразуйте его в
тип Editable Poly (Редактируемые полигоны) или примените к нему модификатор Edit Poly. Перейдите на уровень полигонов Poligon, щелкнув в стеке на
плюсике на нужной строке.
Выделите набор полигонов, к которым нужно применить один из материалов-компонентов. Затем в свитке Poligon: Material IDs командной панели
Modify поменяйте идентификаторы материала выделенных полигонов – значение параметра Set ID (Задать идентификатор) – на идентификатор того материала-компонента, который хотите им назначить.
193
Рисунок 16.14.35. – Значение параметра Set ID
Проделайте эту процедуру для всех наборов граней, которые должны
иметь определенный материал-компонент. В заключение примените приготовленный многокомпонентный материал к объекту.
Модификатор UVWMap (Координаты текстуры)
Он позволяет указать, каким именно образом мы накладываем текстуру
на объект, какой размер текстуры, сколько раз она повторяется на поверхности
объекта и так далее.
Рисунок 16.14.36. – Параметры модификатора UVWMap
194
Прежде всего, нам необходимо указать здесь тип текстурирования (Mapping). Как правило, мы выбираем из предложенных типов либо Planar (Планарный), либо Cylindrical (Цилиндрический), либо Spherical (Сферический), либо
Box (Кубический). Остальные применяются реже. Выбор типа текстурирования
зависит от формы текстурируемой модели. К объектам произвольной формы
целесообразно применять кубический, как наиболее универсальный.
Далее у нас идут такие параметры, как Length (Длина), Width (Ширина), и
Height (Высота). Это – параметры размера текстуры. Здесь стоит отметить, что
модификатор UVW Map (Координаты текстур) работает следующим образом:
после его применения появляется дополнительный объект – оранжевый габаритный контейнер, в который заключается основной объект, – тот, который мы
текстурируем. Текстура накладывается именно на этот оранжевый габаритный
контейнер, а уже с него проецируется на основной объект. Это дает значительные возможности по распределению текстуры по объекту. В частности, вышеперечисленные параметры длины, ширины и глубины – это параметры этого
оранжевого габаритного контейнера, соответственно, изменяя их, мы изменяем
и размер изображения.
Следующие три параметра – U Tile, V Tile, W Tile – позволяют увеличивать количество отображаемых элементов изображения в рамках оранжевого
габаритного контейнера. Увеличивая значения данных параметров, мы увеличиваем количество отображаемых изображений, одновременно уменьшая их, и
наоборот. Также, данный параметр помогает распределять текстуру по объекту.
Если необходимо выровнять материал на объекте. Для этого необходимо
в стеке модификаторов раскрыть структуру подобъектов модификатора UVW
Map и выбрать единственный имеющийся там пункт – Gizmo (Габаритный контейнер).
Рисунок 16.14.37. – Структура подобъектов модификатора UVW Map
195
Перейдя на уровень редактирования Gizmo, мы можем непосредственно
при помощи манипулятора движений либо вращения, двигать либо вращать
текстуру на объекте. Вместе с контейнером будет двигаться и текстура.
Не забудьте по окончании выравнивания текстуры, выключить режим
редактирования Gizmo.
16.15. Типы источников света
Как известно, свет является одним из главных методов получения реалистичного 3d изображения, так как играет неотъемлемую роль в формировании
свойств материалов, теней, а так же при правильном подходе может скрыть недостатки и подчеркнуть важные детали в сцене. Например, чтобы придать объем трехмерной модели, ее достаточно осветить сзади. При этом появится отчетливая граница, визуально отделяющая объект от фона [7].
В кино- фото- и театральном деле часто применяется метод расстановки
осветителей треугольником. Во многих случаях такая расстановка, еще называемая голливудским треугольником (рисунок 16.15.1), служит основой для создания более сложных осветительных систем. Схема постановки света при работе с фотокамерой действует и в 3ds max. Как понятно из названия, в построении этой схемы участвуют три источника света: ключевой (key
light), заполняющий (fill light), задний (back light).
Рисунок 16.15.1. – Голливудский треугольник
В принципе это стандартный метод расположения источников света.
Источники
света
–
это
вспомогательные
объекты
3ds
max, расположенные на вкладке Create в разделе Lights (рисунок 16.15.2).
196
Рисунок 16.15.2. – Раздел Lights
Источников света много и все они разделены по группам. Нам
но выбрать, в открывающемся свитке, Standard. Группа объектов, которую
мы увидим, и есть стандартные источники света 3D MAX (рисунок 16.15.3).
Рисунок 16.15.3. – Стандартные источники света 3D MAX
3D МАХ содержит несколько типов источников света:
 Точечный всенаправленный (omni);
 Прожектор (spotlights), который может быть свободным (free) или целевым
(targeted);
 Направленный (directional), который также может быть свободным. или целевым;
197
Фоновый (ambient) свет, не представляемый никаким физическим источником света, играет важную роль в общей световой конструкции.
Всенаправленные источники света
Всенаправленные (omni) источники света являются точечными источниками света, очень похожими на лампочки, подвешенные на проводе или на
звезды в солнечной системе. Всенаправленный источник света из своей позиции иллюминирует все грани, ориентированные в его направлении.
Основное назначение всенаправленных источников света – служить в качестве заполняющего света. Весьма распространенный способ заключается в
создании множества всенаправленных источников света на больших расстояниях, различных цветов и с низкими уровнями отбрасывания теней и смешивания
их на модели. Подобная технология заимствована из театрального освещения.
Распространенная ошибка состоит в предположении, что "подвешенный"
в комнате всенаправленный источник света создает сияние воздуха вокруг себя,
как это случается в реальной жизни. Такого быть не может: источники света
3DS МАХ могут отбрасывать свет только на те грани, на которые светят.
Направленные источники света – направленный (directional) источник
света лучше всего сравнивать с солнцем. Когда свет отбрасывает тени, угол тени определяется линией, проведенной от источника света к объекту. Этот эффект наиболее заметен, когда имеются тесно расположенные объекты с параллельными поверхностями – например, частокол. Размещение точечного источника света рядом с частоколом приведет к появлению расширяющихся теней,
поскольку каждый кол проводит собственную линию тени к источнику света.
По мере удаления источника света от частокола угол между тенями каждого
кола будет все меньше и меньше. Если источник света поместить на значительном удалении, то углы между тенями станут настолько малы, что отбрасываемые тени будут практически параллельными. Именно так получается с солнечным светом, а в компьютерной графике подобный эффект называется параллельным или направленным освещением.
Прожектор – Целевой или свободный точечный источник (spotlights)
представляет собой направленный источник света, который светит в направлении своей цели.
Цель используется только при наведении точечного источника света. Расстояние от цели до источника света не влияет ни на яркость, ни на ослабление.
Многочисленные возможности целевых и свободных точечных источников света делают их главными световыми инструментами в среде 3DS МАХ. В
отличие от всенаправленных источников света, направлением их света можно
управлять. Целевые и свободные точечные источники могут отбрасывать тени,
иметь прямоугольную или круглую форму и даже проектировать растровые
изображения.
Фоновый свет – если со сцены убрать все источники света, останется
только фоновый свет (ambient light). Это постоянно присутствующий свет, который кажется существующими в мире даже тогда, когда нельзя идентифицировать источник света. В реальности свет отражается от поверхностей и осве198
щает то, что не освещено непосредственно. Фоновый свет является методом
аппроксимации отраженного света в 3D Studio MAX. Цвет фонового света влияет на каждую поверхность на сцене до того, как на них окажут влияния другие
источники света. Фоновый свет служит в качестве отправной точки. С ним
складываются или вычитаются все остальные световые компоненты. Поскольку
фоновый свет применим универсально, увеличение его уровня снижает контрастность и "сглаживает" сцену. Сцена, освещенная одним фоновым светом,
не имеет контраста или теней. Фоновый свет можно настроить командой
Rendering > Environment. Поскольку фоновый свет присутствует всегда, то он и
его цвет – это то, что вы видите на отбрасываемых тенях. Если вы желаете сделать цвета сцены особенно глубокими, необходимо слегка окрасить фоновый
свет, чтобы он стал дополнением доминирующего тенеобразующего света. Если свет имеет желтоватый оттенок, отбрасываемый луной, то небольшая пурпурность фонового света может интенсифицировать эффект лунного света.
Общие элементы управления светом:
Множитель. Значение, меньшее единицы, уменьшает освещение, тогда
как значения большие единицы ее увеличивают. Когда множителю задаются
отрицательные значения, реально освещение со сцены удаляется. Такой "отрицательный свет" полезен для имитации излучающих эффектов и других внутренних цветовых настроек. Наиболее распространенным является обеспечение
применения серией источников света одного и того же цвета. Каждому источнику света задается один и тот же цвет, а интенсивность управляется множителями
Ослабление. Ослабление управляет границей света по дистанции. Без
ослабления источники света действуют в соответствии со своей ориентацией
относительно поверхности. Если поверхность находится под 90°, свет дает полный эффект. Это значит, что чем дальше поместить источник от поверхности,
тем круче становится угол падения и ярче освещается поверхность. Но в реальной жизни свет с расстоянием уменьшается. Если вы держите фонарик прямо
на столе, то он довольно яркий. Направьте его через комнату и сила его света
уменьшится. Направьте его через улицу и он уже вряд ли достигнет соседнего
дома. Такое уменьшение, затухание или размывание света называется ослаблением (attenuation) и представляет собой простой результат физики явления.
Внутренние помещения имеют тенденцию требовать множества источников
света, и если их свет не затухает, то сцена быстро становится переосвещенной.
При освещении внутренних помещении ослабление должно использоваться для
всех источников за исключением самых тусклых заполняющих.
Яркая точка и граница света. Яркая точка (hotspot) и граница (fallon) являются наиболее часто настраиваемыми аспектами точечного и направленного
источника света. Разница между яркой точкой и границей света управляет отчетливостью результирующей области света. Значения яркой точки и границы
обладают влиянием, подобным влиянию внутренних и внешних диапазонов
ослабления всенаправленного света. Яркая точка определяет величину полной
освещенности – она не увеличивает освещенности, как может подсказывать
199
название. Освещенность внутри яркой точки является полным эффектом света.
Граница света определяет расстояние, на котором свет перестает действовать.
Это увядание или затухание не является линейным, как с диапазонами всенаправленного света, но представляет кубическую сплайповую интерполяцию –
большинство переходов происходят около внешней границы света. Разница в
размере между яркой точкой и границей света определяет мягкость или расплывчатость световой границы. Маленькая яркая точка и широкое падение создают очень мягкую границу, в то время как яркая точка, подступающая к границе, делает границу света очень резкой.
Когда активно превышение, граница света по-прежнему определяет диапазон, внутри которого отбрасываются тени и проектируются образы. Граница
света становится важным механизмом управления размером, до которого простирается теневая карта света. Для создания качественных теней протяженные
границы света требуют больших теневых карт. Вы можете усовершенствовать
качество теней и сократить требования к оперативной памяти, ограничив границу отбрасывающего тень света до минимального размера.
Превышение. Можно устранить направленную или точечную световую
область, активизировав опцию Overshoot. Она устраняет ограничения и обеспечивает освещение, эквивалентное порожденному только внутри яркой точки. В
основном опция превращает точечный свет в "направленный всенаправленный
свет", сохраняя при этом остальные возможности. Благодаря таким качествам
на опцию часто ссылаются как на бесконечное превышение.
Работа с тенями – Для расчета теней есть несколько алгоритмов. 3DS
МАХ обеспечивает две формы теней с существенно различающимися свойствами. Выбор требуемой формы сводится к ответу на базовые вопросы:
"Должны ли границы тени быть резкими или мягкими?" и "Должна ли тень
учитывать прозрачность объекта?"
Использование теней, построенных при помощи трассировки лучей (raytraced-теней)
Ray-traced-тени точны, имеют резкие границы и практически всегда повторяют форму объекта, который их отбрасывает (неприятная черта, с которой
вынуждены бороться карты теней). Всегда, когда нужна четкая граница и вычисления значений прозрачности объекта, требуются ray-traced-тени. Raytraced-тени идеально подходят для эмуляции ярких источников света, особенно
солнечного. Единственный недостаток заключается в том, что тени во время
визуализации требуют длительных вычислении. Поскольку область, рассчитываемая для каждого точечного источника света, основывается на его границе, то
ограничение радиуса области может значительно сэкономить время визуализации. В отличие от параметров карты теней, значение Ray Trace Bias редко нуждается в настройке.
Использование карт теней
Основная возможность карт теней заключается в создании мягких теней.
Мягкие тени по сравнению с ray-traced-тенями представляют более реалистичный эффект, но их труднее получить из-за критического баланса параметров
200
карты. Отбрасывание теней с картами теней требует памяти, однако их визуализация осуществляется быстрее, чем визуализация ray-traced-теней, особенно в
случае сложных моделей. Компромисс заключается в том, что карты теней требуют определенного времени на подготовку и постоянную проверку точности и
соответствия. В реальной жизни четкость тени является продуктом близости
объекта к поверхности, на которую он отбрасывает тень. Окно отбрасывает через комнату очень мягкую тень, тогда как стул под тем же освещением дает достаточно четкую тень. Благодаря такому качеству для сцен, требующих предельного реализма, можно использовать несколько освещений, обладающих
различными теневыми эффектами.
Задание на самостоятельную работу
Создание первой сцены
Создайте плоскость для имитации поверхности. На ней установите объект
типа Teapot.
Первыми мы рассмотрим источники Spotlight. Они бывают Target
(направленые) и Free (свободные). Разница заключается в том, что направленый источник имеет вспомогательный объект Target, который как бы "нацеливает" источник света. Мы воспользуемся направленным источником света, т.к.
его легче направить в нужном направлении.
С помощью меню Create -> Standart Lights -> Target Spotlight создайте
источник "направленый прожектор" и установите его как показанно на рисунке
16.15.4.
Рисунок 16.15.4. – Создание сцены
Визуализируйте сцену (F9). Результат визуализации можно увидеть на
рисунке 16.15.5.
201
Рисунок 16.15.5. – Визуализация сцены с применением источника света.
Теперь поднимем источник света вверх, чтобы прожектор захватывал
большую зону и увеличем площадь плоскости, находящуюся под чайником
(рисунок 16.15.6). Послее этого, для изменения параметров источника света,
выделите его и перейдите на вкладку Modify.
Рисунок 16.15.6. Теперь источник света захватывает весь чайник,
а плоскость увеличена.
В свитке Shadows в Generals Parameters установите галочку on (включены) а в качестве способа просчета тени установите Adv. ray traced. Визуализируйте сцену – вы увидите, что наш чайник начал отбрасывать тень (рисунок
16.15.7).
202
Рисунок 16.15.7 – Визуализация с включенными тенями.
Но, как правило, для того чтобы правильно осветить сцену, необходимо
подсветить объект вторым источником света с отключенными тенями. Поэтому
создайте источник света типа Omni и расположите его как показано на рисунке
16.15.8.
Рисунок 16.15.8. – Источник Omni
Omni – является точечным всенаправленным источником света и очень
удобен для создания глобальной подсветки сцены.
После этого, в параметрах источника света активируте свиток
Intensity/Color/Attenuation и установите параметр multiply равный 0.77.
Визуализируйте сцену.
Как видно из рисунка 16.15.9, сцена стала более сочной, яркой и реалистичной.
203
Рисунок 16.15.9. – Визуализированныая сцена со вторым источником
света в качестве подсветки.
Удалите установленные ранее источник света и установите источник света Directional. Объект Directional Light в 3dS МАХ представляет собой нечто
подобное гибриду между традиционным параллельным и точечным источником света. Directional Light похож на точечный источник света в том, что имеет
яркую точку (hotspot) и границу действия освещения (falloff). Это помогает
управлять протяженностью, до которой можно просчитать тени на сцене, и
размером границы освещения. Когда яркая точка минимизирована, Directional
Light становится похож на фотографический источник света, отбрасывающий
мягкий локальный свет (рисунок 16.15.10).
Рисунок 16.15.10. – Установленный источник света типа Directional.
204
Визуализируйте сцену. Результат визуализации показан на рисунке
16.15.11.
Рисунок 16.15.11. – Визуализация с применением
источника света Directional
16.16. Создание освещения в сцене с помощью источника Skylight
Создание второй сцены
Для начала создайте простенькую сцену, разместив в ней плоскость, на
которой находятся несколько геометрических объектов, как показано на рисунке 16.16.1. Назначьте всем объектам белый цвет.
Рисунок 16.16.1. – Заготовка сцены
В любом месте сцены устнаовите источник света типа Skylight (рисунок
16.16.2).
205
Рисунок 16.16.2. – Заготовка сцены
Отличается Skylight от всех остальных стандартных источников света тем,
что его воображаемые лучи не исходят из какой-то одной точки. При размещении
осветителя Skylight в составе сцены она как бы накрывается сверху воображаемым
куполом в виде бесконечно большой полусферы, все точки которой являются источниками световых лучей. Положение, ориентация и размеры значка не имеют
никакого значения – это всего лишь вспомогательный объект.
Теперь, для корректной визуализации сцены необходимо включить режим расчета освещенности Light Tracer, иначе вы получите картинку, где все
объекты имеют однотонные цвета, совершенно без бликов. Для этого нажмите
клавишу F10 для активации окна настроек визуализации. После этого перейдите на закладку Advaced Lighting и выбирете Light Tracer для просчета теней, как
показанно на рисунок 16.16.3.
Рисунок 16.16.3. – Установка дополнительного плагина
для просчета света
206
Свиток Skylight Parameters имеет следующие свойства:
Use Scene Environment – при установке этого переключателя для окрашивания цвета осветителя будут использованы настройки цвета фона, сделанные в
окне диалога Enironment меню Rendering.
Sky Color – при установке этого переключателя можно выбрать нужный
нам цвет.
Map – Позволяет заменить цвет осветителя изображением текстурной
карты. Если установить в счетчике величину доли вклада меньше 100%, то цвет
ее рисунка будет смешиваться с цветом неба, заданным в образце.
Визуализируйте сцену. Результат визуализации можно увидеть на рисунок 16.16.4.
Рисунок 16.16.4 – Визуализированная сцена.
17. Анимация
Анимация: от рисованной до трехмерной
Понятие анимации в примитивном виде было знакомо человеку еще пять
тысяч лет назад [8]. Например, не так давно во время археологических раскопок
на юго-востоке Ирана обнаружили глиняный кубок, на котором отчетливо сохранились рисунки. На этих изображениях можно увидеть козленка, который
подпрыгивает и срывает зубами листья в разные моменты времени. Когда человек переводил взгляд с одного такого изображения на другое, картинки "оживали".
В XIX веке появилось множество разных устройств, которые "оживляли"
ряд картинок. Например, одно из подобных устройств, зоотроп, представлял
собой барабан, внутри которого находилось большое количество похожих картинок, которые немного отличались друг от друга. На таких изображениях были запечатлены кадры простого циклического действия, например прыжок ребенка со скакалкой, бег страуса и т. д. Глядя в щели в корпусе вращающегося
барабана, зритель видел "ожившие" картинки.
207
С появлением кинематографа возникла кукольная анимация, которую
можно считать первой трехмерной анимацией. Куклы размещались на съемочной площадке, аниматоры устанавливали их положение, после чего снимался
кадр. Затем положение рук, ног и прочих частей тела персонажей изменялось, и
снимался следующий кадр. И так – пока мультфильм не был готов.
Фактически, анимация, которая создается в 3ds Max, является прямым
наследником кукольной анимации. Принцип ее создания остался таким же, однако сегодня, благодаря более совершенным техническим средствам, процедура упрощена. Главным преимуществом компьютерной анимации перед кукольной является то, что для "оживления" виртуальных кукол аниматору не нужно
работать над каждым снимком фильма, а достаточно делать это лишь выборочно.
В основе компьютерной анимации лежит понятие ключевых кадров. Вместо того, чтобы задавать положение объектов в каждом кадре, 3D-аниматору
достаточно показать программе начальное и конечное положения предметов
съемки, а движение во всех промежуточных кадрах будет просчитано автоматически на основе этих данных. Кадры, в которых указывается положение объектов, и называются ключевыми.
Анимация по ключевым кадрам
Самый удобный способ анимации в 3ds Max – использование режима автоматического создания ключевых кадров. Для этого необходимо выполнить
три действия.
Включить режим автоматического создания ключевых кадров анимации,
нажав кнопку Auto Key (Автоключ), которая расположена под шкалой анимации.
Передвинуть ползунок анимации, установив его на какой-нибудь следующий кадр.
Изменить положение объекта в пространстве.
Если вы попробуете после этого воспроизвести анимацию с помощью
кнопки Play Animation (Воспроизвести анимацию), которая расположена под
шкалой, то увидите, как объект перемещается в окне проекции.
Когда вы переместили объект в режиме автоматического создания ключевых кадров, вы указали начальную и конечную координаты чайника, а на основе этой информации 3ds Max определил положение объекта в каждом из
промежуточных кадров.
Данный способ позволяет анимировать любые параметры объекта.
Например, анимируя значение параметра Opacity (Непрозрачность) в настройках материала объекта, можно сделать анимацию, в которой объект постепенно
будет становиться невидимым, а задав многократно в ключевых кадрах для источника света разные значения параметра Multiplier (Яркость), можно заставить
свет мигать.
На шкале анимации ключевые кадры обозначаются метками-маркерами.
Для перемещения между ключевыми кадрами анимации используется кнопка
Key Mode Toggle (Переключение между ключевыми кадрами). Ключевыми кад208
рами можно управлять – изменять их положение, удалять, назначать группам
объектов, корректировать параметры и т. д. Например, для удаления ключевого
кадра используется контекстное меню, возникающее при щелчке правой кнопкой мыши на маркере (рисунок 17.1), а для перемещения достаточно изменить
положение маркера, удерживая кнопку мыши.
Рисунок 17.1. – Удаление ключевого кадра
17.1. Создание простой анимации
Создайте в окне проекции Teapot (чайник), удобнее работать с одним окном проекции, а не с четырьмя сразу, поэтому разверните окно Perspective
(Перспектива) во весь экран (Alt+W) [13].
Объект, созданный по умолчанию, состоит из небольшого количества полигонов, поэтому выглядит угловато, перейдите на вкладку Modify (Изменение)
командной панели и в свойствах объекта увеличьте параметр Segments (Количество сегментов).
Теперь можно приступить к созданию анимации. Используя модификатор
Slice (Срез), вы сможете создать видео, на котором чайник будет постепенно
появляться. Выделите объект, перейдите на вкладку Modify (Изменение) командной панели, выберите из списка Modifier List (Список модификаторов) модификатор Slice (Срез). Этот модификатор разделяет объект условной плоскостью и отсекает его часть (рисунок 17.1.1).
209
Рисунок 17.1.1. – Модификатор Slice
В нашем случае в настройках модификатора нужно указать параметр
Remove Top (Отсечение верхней части). При этом объект исчезнет, так как по
умолчанию плоскость лежит в его основании.
Рисунок 17.1.2. – Параметр Remove Top
Для создания анимации переключитесь в режим ключевых кадров, нажав
на кнопку Auto Key (Автоключ) под шкалой анимации внизу экрана (рисунок
17.1.3).
210
Рисунок 17.1.3. – Кнопка Auto Key
При этом область, по которой передвигается ползунок анимации, окрасится в красный цвет. Передвиньте ползунок анимации на сотый кадр (в крайнее правое положение) – рисунок 17.1.4.
Рисунок 17.1.4. – Сотый кадр анимации
Разверните список модификатор Slice (Срез) в стеке, щелкнув на значке
плюса рядом с его названием и перейдите в режим редактирования Slice Plane
(Поверхность среза) – рисунок17.1.5.
211
Рисунок 17.1.5. – Режим редактирования Slice Plane
Теперь можно переместить плоскость, отсекающую объект, вдоль оси Z
вверх так, чтобы чайник стал виден полностью (рисунок 17.1.6).
Рисунок 17.1.6. – Перемещение плоскости
Если воспроизвести анимацию, нажав на кнопку Play Animation (Воспроизвести анимацию), то в окне проекции можно будет увидеть, как чайник постепенно появится (рисунок 17.1.7).
212
Рисунок 17.1.7. – Воспроизведение анимации
17.2. Изменение продолжительности анимации
По умолчанию продолжительность создаваемой в 3ds Max анимации равна 101 кадру при формате видео NTSC (29,97 кадров в секунду) [13]. Несложно
посчитать, что при таких настройках можно выполнить анимацию продолжительностью около трех секунд. Для изменения продолжительности анимации
используется окно Time Configuration (Настройка времени) (рисунок 9), которое
вызывается при помощи одноименной кнопки (рисунок 17.2.1), расположенной
под кнопками управления анимацией.
Рисунок 17.2.1. – Кнопка Time Configuration
213
Рисунок 17.2.2. – Окно Time Configuration
Здесь можно менять такие параметры, как число кадров в секунду (FPS frames per second) в группе Frame Rate. Можно выбрать известные стандарты
(PAL, NTFS, film) или задать свой FPS, если выбрать Сustom (выборочное).
Time Display – здесь можно выбрать, как отображать наше время, в кадрах
(Frames), в единицах измерения времени (SMPTE), в кадрах и тиках
(FRAME:TIKCS), в единицах изменения времени и тиках (MM:SS:TIKCS). Тики нужны для более точного контроля над временем, когда они включены,
можно ставить анимационные ключи между кадрами. Это полезно как для
управления интерполяцией между анимационными ключами, так и для того,
чтобы при смене числа кадров в секунду FPS не нарушилась точность движений. Playback – здесь можно выбрать режим проигрывания анимации, Real Time
– если здесь стоит флажок, проигрывание будет осуществляться в реальном
времени. Active viewport only – анимация будет проигрываться только в активном (выбранном) окне прекции. Speed – выбор скорости проигрывания (замедленная – ускоренная в указанное число раз). Direction – в какую сторону осуществляется проигрывание, Forvard – вперёд, Reverse – задом наперёд, PingPong – туда-сюда.
Animation – здесь выбираются границы отображаемого диапазона (Start
Time – с какого момента начинать, End Time – каким моментам заканчивать) – в
кадрах, или в единицах времени, в зависимости от того, какой режим у вас выбран. Re-Scale time – масштабирует время, после того, как вы меняете длину
диапазона. Изменить её можно в любом из полей, либо введя в поле length
(длина) в интервалах между кадрами (единицами времени), на которое вы хотите заменить нынешнее число интервалов данного диапазона, либо во frame
214
count (число кадров/время), и нажать кнопку Re-Scale Time. Изменения вступят
в силу только после нажатия кнопки OK.
17.3. Изменение характера протекания анимации
В реальной жизни характер движения объектов и выполнения каких-либо
действий может быть различным. Чтобы вам было понятнее, что имеется в виду, вспомните, как вращается вентилятор. Сразу после включения он раскручивает лопасти с ускорением, пока не достигнет нужной скорости. Затем он вращается на постоянной скорости, а после выключения постепенно снижает скорость [13]. При создании подобной анимации нужно не только указать параметры объекта, но и задать характер ее протекания на разных этапах: при включении, по достижении вентилятором рабочей скорости и после выключения.
Если математически отобразить зависимость анимированного параметра
(или ключа анимации, как его еще называют) от времени, то каждый ключевой
кадр будет характеризоваться двумя кривыми, которые определяют функциональные зависимости анимированного параметра на промежутке между текущим ключевым кадром и предыдущим, а также текущим ключевым кадром и
следующим. Во многих редакторах для работы с трехмерной графикой, в том
числе и в 3ds Max, подобной графической зависимостью можно управлять,
определяя характер анимации.
Для этого в 3ds Max предусмотрены заготовки зависимостей, согласно
которым могут изменяться анимированные параметры. Самый быстрый способ
изменить характер протекания анимации – использовать кнопку Default In/Out
Tangents for New Keys (Маркеры касательных, которые используются по умолчанию) на панели управления анимацией.
Рисунок 17.3.1. – Кнопка Default In/Out Tangents for New Keys
При ее нажатии открывается список со значками доступных заготовок
зависимостей (рисунок 17.3.2).
215
Рисунок 17.3.2. – Заготовки доступных зависимостей
Изменение характера протекания анимации при помощи кнопки Default
In/Out Tangents for New Keys (Маркеры касательных, которые используются по
умолчанию)
Вы также можете изменить характер протекания анимации, используя окно Track View (Редактор треков), которое можно открыть командой Graph
Editors>New Track View (Графические редакторы>Новый редактор треков) рисунок 17.3.3.
Рисунок 17.3.3. – Вызов New Track View
Третий способ – в свитке Key Info (Basic) (Основные параметры ключевого кадра) вкладки Motion (Движение) на командной панели рисунок 17.3.4.
216
Рисунок 17.3.4. – Key Info
В 3ds Max предусмотрено семь основных заготовок, каждая из которых
изменяет значение анимированного параметра следующим образом:
Auto (Автоматическая) – автоматически изменяет значение анимированного
параметра, сглаживая кривую в точке излома;
Custom (Пользовательская) – позволяет установить форму кривой зависимости вручную;
Fast (Быстрая) – с ускорением;
Slow (Медленная) – с замедлением;
Step (Ступенчатая) – по ступенчатому графику;
Linear (Линейная) – линейно;
Smooth (Сглаженная) – плавно. Данный тип функции выбран по умолчанию.
17.4. Создание более сложной анимации
Создайте анимационную сцену с каким-нибудь вращающимся объектом,
например, Teapot (Чайник) – рисунок 14. Включите режим автоматического создания ключевых кадров, передвиньте ползунок анимации в крайнее правое положение, после чего поверните чайник вокруг некоторой оси (рисунок 17.4.1).
217
Рисунок 17.4.1. – Объект для анимации
Рисунок 17.4.2. – Поворот объекта для анимации
Если теперь воспроизвести в окне проекции полученную анимацию, то
можно увидеть, что скорость, с которой трехмерная модель будет совершать
вращение, непостоянна. Причина кроется в том, что анимированный параметр
не является линейно зависимым по отношению к выбранному по умолчанию
218
контроллеру вращения, поэтому объект при вращении ускоряется, а затем замедляется [8].
Чтобы можно было изменить характер зависимости анимированного параметра, необходимо щелкнуть правой кнопкой мыши на ключевом кадре на
шкале анимации и выбрать ключ параметра(рисунок16), характеристики которого необходимо изменить.
Рисунок 17.4.3. – Выбор ключа параметра
Далее в окне изменения характеристик параметра укажите один из семи
вариантов функциональных зависимостей анимированного параметра от контроллера, например Linear (Линейный) рисунок 17.4.4.
Рисунок 17.4.4. – Линейный параметр
Попробуйте теперь проиграть анимацию. Вы увидите, что чайник вращается с постоянной угловой скоростью.
219
17.5. Виртуальные камеры
При создании трехмерной анимации не обойтись без виртуальных камер.
Они выполняют те же функции, что и настоящие камеры во время съемки
фильма, однако гораздо удобнее в обращении. Во-первых, их можно разместить
в любой точке пространства, во-вторых, их может быть неограниченное количество, и, в-третьих, они обладают идеальными для камеры характеристиками
[13]. Например, у виртуальной камеры не возникает проблем при съемке в
условиях плохой освещенности. Несмотря на это, виртуальные камеры могут
имитировать эффекты, которые присущи настоящим камерам и обусловлены их
конструкцией. Это эффекты глубины резкости и смазанного движения. Кроме
того, для виртуальной камеры, как и для настоящей, можно устанавливать фокусное расстояние, выбирать тип линз и т. д.
Поскольку виртуальные камеры – это вспомогательные объекты, на конечном изображении их не видно. Даже если в сцене несколько камер, ни одна
из них не попадет в объектив другой камеры. Не видны они также в отражении
зеркальных объектов.
В 3ds Max виртуальные камеры представлены отдельной группой объектов Cameras (Камеры). Камеры бывают двух видов: Target (Направленная) и
Free (Свободная). Направленная камера состоит из двух частей: самой камеры
и мишени (рисунок 17.5.1). Разница между направленной и свободной камерами заключается в том, что направленная камера всегда нацелена на мишень. Ее
очень удобно использовать, когда необходимо привязать камеру к какомунибудь объекту. Например, если снимается сцена с летящим по небу самолетом, спортсменом, бегущим по дорожке, или автомобилем, который едет по
трассе. Направленная камера дает возможность все время держать в кадре основной объект съемки.
Рисунок 17.5.1. – Направленная камера состоит
из самой камеры и мишени
220
Для привязки объекта к мишени камеры можно использовать несколько
способов. Например, сгруппировать объект и мишень или использовать кнопку
Select And Link (Выделить и связать) на основной панели инструментов.
Камера добавляется в сцену, как любой другой объект, – после нажатия
кнопки с ее названием в категории Cameras (Камеры) нужно щелкнуть в том
месте окна проекции, куда ее необходимо добавить. Однако существует гораздо
более удобный способ добавления камеры – создание ее из вида. Выбрав в окне
проекции вид, удачный для съемки, можно выполнить команду
Create>Cameras>Create Camera From View (Создание>Камеры>Из вида) или
воспользоваться сочетанием клавиш Ctrl+C (рисунок2).
Если в сцене есть одна или несколько камер, вы можете включить в окне
проекции вид из любой из них. Это делается точно так же, как при выборе вида
в окне проекции – в подменю Views (Виды) контекстного меню окна проекции,
которое вызывается щелчком правой кнопкой мыши на его названии в левом
верхнем углу окна (рисунок 3). Быстро переключиться в вид из камеры можно
также, нажав клавишу С. Если в сцене несколько камер, то при нажатии клавиши С, происходит переключение в вид из той камеры, которая была выделена.
Если же ни одна камера не была выделена, появляется окно Select Camera (Выбрать камеру) (рисунок 4), в котором можно выбрать камеру, через объектив
которой будет показан вид.
Рисунок 17.5.2. – Выбор камеры в меню Create
221
Рисунок 17.5.3. – Выбор камеры в подменю Views (Виды)
Рисунок 17.5.4. – Окно Select Camera (Выбрать камеру)
В некоторых случаях визуализация трехмерных сцен требует наличия
эффектов смазанного движения и глубины резкости, без которых анимация не
будет выглядеть реалистичной. Включить отображение одного из этих эффек222
тов можно в области Multi-Pass Effect (Мультипроходной эффект) свитка
Parameters (Параметры) настроек камеры (рисунок 17.4.5). Для этого нужно
установить флажок Enable (Задействовать) и выбрать эффект в списке. В зависимости от того, какой эффект выбран, появится свиток с его настройками:
Depth of Field Parameters (Параметры эффекта глубины резкости) или Motion
Blur Parameters (Параметры эффекта смазанного движения).
Рисунок 17.5.5. – Выбор эффектов камеры
17.6. Создание пульсирующего взрывающегося многогранника
На командной панели Create (Создать) раскройте список разновидностей
объектов категории Geometry (Геометрия) и выберите Extended Primitives
(Улучшенные примитивы).
Щелкните на кнопке Hedra (Многогранник). В окне проекции Тор (Вид
сверху) щелкните вблизи точки с координатами (О; О) и перетаскивайте курсор, пока радиус не окажется равным 40 единицам. Отпустите кнопку мыши.
(Отсчеты показывают значения координат X, Y и Z текущего положения курсора. Установив радиус около 40 единиц (можно задать в нижней части свитка ),
вы построите многогранник нужного размера.)
В свитке Parameters (Параметры) командной панели Create (Создать)
установите переключатель Family (Семейство) в положение Star1 (Многогранник1), а также установите флажок Generate Mapping Coords (Проекционные координаты) в самом низу свитка(рисунок 1). Чтобы увидеть этот флажок, вам
придется прокрутить свиток вверх.
Вот, что должно было получиться.
223
Рисунок 17.6.1. – Настройки Star
Снова раскройте список разновидностей объектов и на этот раз выберите
Standard Primitives (Стандартные примитивы). Щелкните на кнопке Box (Параллелепипед).
В окне проекции Тор (Вид сверху) щелкните в районе точки (-150; -150) и
перетаскивайте курсор вправо, пока в поле отсчетов координат не появятся
цифры (150; 150), после чего отпустите кнопку мыши. Перемещайте курсор
вниз до тех пор, пока в счетчике Height (Высота) свитка Parameters (Параметры) не появится число -3, после чего еще раз щелкните кнопкой мыши, зафиксировав высоту объекта.
Щелкните на кнопке Select and Move (Выделить и переместить) основной
панели инструментов.
В окне проекции Front (Вид спереди) выделите объект Hedra и перетащите его вверх так, чтобы он установился поверх прямоугольного основания.
Выберите команду меню File; Save (Файл; Сохранить) и сохраните файл
под именем mf02–03.max.
Для целей данного упражнения нам будет достаточно только что созданных объектов. Теперь необходимо создать камеру для наблюдения за сценой и
источник света для ее освещения.
Щелкните на кнопке Lights (Источники света) командной панели Create
(Создать).
Выберите разновидность Target Spot (Нацеленный прожектор) объектов
категории Lights (Источники света). Щелкните в точке (-150; -150) окна проекции Тор (Вид сверху), перетащите курсор в точку (О; О) и отпустите кнопку
мыши.
Снова щелкните на кнопке Select and Move (Выделить и переместить). В
окне проекции Front (Вид спереди) перетащите значок источника света (он располагается в первой точке, где вы щелкнули кнопкой мыши при создании ис224
точника) вертикально вверх на 200 единиц (можно через ввод значения координат). При этом, как и раньше, следите за отсчетами координат(рисунок2).
Не отменяя выделения источника света, перейдите на командную панель
Modify (Изменить). В свитке GeneralParameters, установите флажок on (Отбрасывать тень)(рисунок3). В ShadowParameters введите величину 512 в счетчик dens. (Размер).
Рисунок 17.6.2. – Устанвка источника Target Spot
Рисунок 17.6.3. – Включение тени
225
Вернитесь к командной панели Create (Создать) и щелкните на кнопке
Cameras (Камеры). Выберите вариант Target (Нацеленная) в списке разновидностей объектов, щелкните в точке (150; 150) окна проекции Тор (Вид сверху),
перетащите курсор в точку (О; О) и отпустите кнопку мыши.
В окне проекции Front (Вид спереди) переместите значок камеры вертикально вверх на 300 единиц.
Щелкните на окне проекции Perspective (Перспектива), чтобы активизировать его. Нажмите клавишу С в латинском регистре, чтобы сделать это окно
проекции окном Camera (Камера).
Ниже показано то, что вы должны увидеть(рисунок 17.6.4).
.
Рисунок 17.6.4. – Вид из камеры
Снова сохраните файл.
Теперь у вас есть уже почти все, что необходимо. Осталось только добавить два типа материалов, применить небольшую анимацию и визуализировать
сцену.
Откройте окно Material Editor (Редактор материалов), щелкнув на кнопке
Material Editor (Редактор материалов) основной панели инструментов(Tools>Material Editor).
Материал в первой ячейке образца должен быть активным, на что указывает белая рамка, окружающая ячейку. Щелкните на кнопке без значка справа
от образца цвета Diffuse (Диффузный) – рисунок 17.6.5.
226
Рисунок 17.6.5. – Назначение материала
В результате на экране появится окно диалога Material/Map Browser
(Просмотр материалов/карт текстур).
Дважды щелкните на строке Bitmap (Растровая карта), чтобы выбрать
данный тип карт текстур. В окне Material Editor (Редактор материалов) появится новый свиток – Bitmap Parameters (Параметры растровых текстур). Щелкните в этом свитке на длинной кнопке без надписи справа от параметра Bitmap
(Растровая карта). Появится окно диалога Select Bitmap Image File (Выбор файла растровой карты). Выберите файл растрового изображения. Щелкните на
кнопке ОК.
Щелкните на кнопку назначения активного материала выделенному объекту. В результате материал будет назначен данному объекту – рисунок 17.6.6.
227
Рисунок 17.6.6 – Назначение активного
материала выделенному объекту
Щелкните на образце материала во второй ячейке для его активизации.
Щелкните на образце цвета Diffuse (Диффузный). Появится окно диалога Color
Selector (Выбор цвета). В этом окне диалога вы найдете ползунок параметра
Whiteness (Белизна). Перетащите этот ползунок в самый низ шкалы, чтобы выбрать совершенно белый цвет. Щелкните на кнопке ОК – рисунок 17.6.7.
Рисунок 17.6.7. – Выбор цвета
228
Назначьте этот материал прямоугольному основанию.
Сохраните файл.
Теперь, когда все необходимые материалы присвоены объектам сцены,
вам предстоит создать два типа анимаций. Во-первых, вы примените анимацию
к одному из параметров многогранника, а затем выполните анимацию вращения этого объекта. После этого вы заставите многогранник взорваться, разлетевшись на множество осколков.
Анимация многогранника
1. Щелкните на кнопке Select Object (Выделить объект) и выделите объект-многогранник.
2. Откройте окно Track View (Просмотр треков), в меню Graf Editors
(рисунок 7). В левой части окна вы увидите иерархически упорядоченный список объектов, допускающих анимацию. Разверните ветвь объектов списка,
щелкнув на значке "плюс" слева от надписи Objects (Объекты). Вы увидите в
списке объект HedraO1.
Рисунок 17.6.8. – Окно Track View
Раскройте перечень параметров этого объекта. Затем раскройте список
параметра Object (Hedra). Там вы найдете параметр Q Scale (Масштаб по Q).
229
3. Щелкните на строке параметра Q Scale (Масштаб по Q), а затем на
кнопке Assign Controller (Назначить контроллер) панели инструментов
окна Track View (Просмотр треков) – рисунок 17.6.8.
Рисунок 17.6.8. – Назначение контроллера
Выберите контроллер Noise Float (Случайное плавающее управление) и
щелкните на кнопке ОК.
4. Щелкните на строке параметра Q Scale (Масштаб по Q) правой кнопкой
мыши и выберите команду Properties (Свойства) в появившемся контекстном
меню. Раскроется окно диалога Noise Controller (Контроллер случайного управления). Задайте величину параметра Strength (Размах) равной 3000, a Frequency
(Частота) – равной 0,15. Закройте окна диалога Noise Controller (Контроллер
случайного управления) и Track View (Просмотр треков).
5. Щелкните на кнопке Play Animation (Воспроизведение анимации) в
правом нижнем углу экрана, чтобы просмотреть результаты анимации, представляющей собой дикие пульсации многогранника. Повторно щелкните на той
же кнопке, которая теперь будет нести на себе надпись Stop (Стоп), чтобы остановить воспроизведение.
6. Перетащите ползунок таймера анимации в нижней части экрана вправо
к кадру 100. Щелкните на кнопке Auto Key, чтобы включить режим анимации.
Кнопка окрасится красным цветом, указывая на активизацию режима.
7. Щелкните на кнопке Select and Rotate (Выделить и повернуть). В окне
проекции Тор (Вид сверху) поверните объект HedraOI на 720°, следя за величи230
ной угла поворота в поле отсчетов координат. Закончив поворот, выключите
режим анимации, повторно щелкнув на кнопке Auto Key.
8. Вновь воспроизведите анимацию, чтобы увидеть результат.
9. Перейдите на командную панель Create (Создать). Щелкните на кнопке
Space Warps (Объемные деформации).
Рисунок 17.6.9. –. кнопка Space Warps
10. Щелкните на кнопке Bomb (Бомба)(рисунок 17.6.10) в свитке Object
Type (Тип объекта).
Рисунок 17.6.10. – кнопка Bomb
Затем щелкните в точке (0; 0) окна проекции Тор (Вид сверху). В результате будет создан объект-бомба в самом низу объекта HedraO1.
11. Щелкните на кнопке Bind to Space Warp (Связать с воздействием)
основной панели инструментов(рисунок 17.6.11).
231
Рисунок 17.6.11. – кнопка Bind to Space Warp
Щелкните на значке источника объемной деформации и перетащите его к
наружному краю объекта HedraO1. Перетаскивать курсор можно лишь в тех пределах, где он не изменяет свой вид. Отпустите кнопку мыши. Проиграйте анимацию.
Почти мгновенно многогранник взорвется, разлетевшись на осколки.
12. Не отменяя выделения объекта-бомбы, перейдите на командную панель Modify (Изменить). Установите параметр Strength (Мощность) равным 3,
Мах (Максимум) равным 3, Gravity (Гравитация) равным 0, Chaos (Хаос) равным 4 и Detonation (Детонация) – равным 60. Последний параметр, Detonation
(Детонация), определяет номер кадра, в котором произойдет взрыв.
13. Активизируйте окно проекции Camera (Камера) и щелкните на кнопке
Play Animation (Воспроизведение анимации), чтобы просмотреть анимацию. Закончив просмотр, щелкните на кнопке Stop (Стоп) для остановки воспроизведения.
14. Выберите команду меню File; Save (Файл > Сохранить) и сохраните
файл под именем mf02-03.max. Теперь все готово для визуализации анимации.
Визуализация анимации
Настроив свет и материалы в сцене, выполнив несколько тестовых визуализаций, укажем 3D Max, что мы собираемся произвести рендеринг анимации.
Для этого в окне Render Setup (рисунок 17.6.12)
Рисунок 17.6.12. – окно Render Setup
232
Установим переключатель Time Output в положение Active Time Segment,
чтобы сообщить программе, что рендерить нужно с нулевого кадра по последний. Если вам нужен только диапазон кадров, то выбирайте в Range, с какого,
по какой кадр нужна визуализация. А если нужны какие-то конкретные кадры,
то впишите их номера и/или диапазоны в поле Frames (рисунок 17.6.13).
2. разрешение выходного изображения устанавливается в разделе Output
Size. Можно выбрать из предложенных вариантов, а можно ввести свое уникальное разрешение.
3. В разделе Render Output нажимаем кнопку Files и переходим в папку
(или создаём новую), куда будем сохранять получившиеся кадры анимации.
Далее, есть важный момент с выбором формата изображения. Нельзя использовать JPEG, так как этот формат построен на отсечении информации, недоступной человеческому зрению. Сжатие в одном кадре будет отличаться от сжатия в
следующем, что на деле выльется в тихий ужас: всё склеенное из кадров видео
будет дёргаться. Поэтому необходимо выбрать формат изображения без потерь,
например TIFF (рисунок 17.6.14) или TGA. В них от кадра к кадру не будет никаких артефактов сжатия.
Рисунок 17.6.13. – Параметры настроек Render
233
Рисунок 17.6.14. – Выбор формата сохранения анимации
4. Далее ещё один нюанс. Указываем имя первого сохранённого кадра
pic_0000. Обратите внимание на структуру имени. pic – это просто имя самого
кадра, оно может быть любым, а 0000 – порядковый номер первого кадра. Следующим за ним будет автоматически присвоено имя pic_0001, pic_0002 и т.д.
Нолей не обязательно должно быть четыре, можно и три.
5. Нажимаем кнопку Save для возврата в окно Render Setup. Запускаем визуализацию нажатием на кнопку Render.
6. Когда закончится рендеринг, у вас должна получиться последовательность кадров. Давайте сделаем из неё видеоролик в 3dmax. Для этого откроем в
меню Rendering > Ram Player
7. Откроется окно RAM Player. В нём нажимаем на кнопку Open Channel
A (рисунок 17.6.15), далее выделяем любой файл и нажимаем кнопку Open.
234
Рисунок 17.6.14. – окно RAM Player.
Рисунок 17.6.15. – Open Channel A
8. Появится окошко Image File List Control. В нём уже будет указана вся
последовательность ваших кадров. Жмём ОК и попадаем в следующее окно –
RAM Player Configuration. Просто ещё раз нажимаем ОК. Запустится процесс
загрузки кадров в оперативную память.
9. Воспроизвести анимацию можно, нажав кнопку Playback Forward. Рядом устанавливается частота кадров. Насмотревшись на ролик, можно сохранить его в .avi. Для этого нажмите кнопку Save Channel A. Откроется соответствующее окно. Выберите формат сохраняемого файла: AVI File (*.avi). Присвойте видеоролику имя и нажмите кнопку Save.
10. Выберите кодек, которым будет сжато видео. Наличие кодеков зависит от того, установлены они в вашей системе, или нет. Но кое-какие кодеки
всё же у вас быть должны. Нажмите ОК и у вас появится сохранённое видео
анимации.
235
17.7. Анимация падающей сферы на вращающуюся поставку
Рисунок 17.7.1. – Результат
Основание для подставки (параллелепипед)
Создайте в окне проекции Top (Вид сверху) параллелепипед.
Откорректируйте параметры:
Length (Длина) – 60
Width (Ширина) – 60
Height (Высота) – 10
Первая колонна
Создайте в окне проекций Top (Вид сверху) цилиндр.
Откорректируйте параметры:
Radius (Радиус) – 8
Height (Высота) – 200
Height Segments (Сегменты по высоте) – 29
Sides (Стороны) – 18
Щелкните на цилиндре правой кнопкой мыши, выберите команду Move
(Перемещение) контекстного меню или нажмите на панели инструментов Main
Toolbar (Основные инструменты) кнопку. В окне проекции Top (Вид сверху)
переместите первый цилиндр (объект Box01) в верхний левый угол основания
(рисунок 17.7.2).
236
Рисунок 17.7.2. – Расположение первой колонны
Выравнивание цилиндра
Убедитесь, что выделен объект Cylinder01, нажмите кнопку Align (Выравнивание).
Укажите на объект Box01. Для выделения можете воспользоваться кнопкой Select by Name (Выделить по имени).
Появится окно настроек выравнивания Align Position (Screen) (Выровнять
позицию: в группе Current Object (Текущий объект)) установите переключатель Minimum (Минимум), а в группе Target Object (Целевой объект) – переключатель Maximum (Максимум). Установите флажок ZPosition (выравнивание
по оси Z); окно Top при этом должно быть активным. Нажмите кнопку OK.
Рисунок 17.7.3. – Окно настроек выравнивания
Align Position
237
Создание связанных копий цилиндра
Щелкните на цилиндре правой кнопкой мыши, выберите в контекстном
меню команду Move (Перемещение).
Переключитесь в окно проекций Top (Вид сверху). Удерживая клавишу
Shift, переместите объект по оси X (активная ось меняет цвет на желтый) в правый угол основания (рисунок 17.7.4).
Рисунок 17.7.4. – Результат копирования объекта
В окне параметров клонирования установите флажок Instance.
Примечание: При использовании метода клонирования Instance объекты
сохраняют между собой связь: изменение параметров одного из них передается другому. При методе Copy объекты не зависят друг от друга. Метод
Reference предполагает, что изменения родительского (начального) объекта
передаются клонированному, а изменения клонированного объекта родительскому не передаются.
Выделите оба цилиндра и таким же методом клонируйте их по оси Y. Получатся два цилиндра, каждый в своем углу.
Нажмите кнопку Zoom Extents All
(Показать все предметы).
238
Рисунок 17.7.5. – Сохранение сцены в буфер
Сохраните сцену в буфер, для чего выберите команду Hold (Держать) меню Edit (Редактирование).
Назначение цилиндрам модификатора Taper
Выделите один из цилиндров. Перейдите на вкладку Modifiers (Модификаторы) и выберите Taper .
Рисунок 17.7.6. – Работа с модификатором Taper
239
Создайте анимацию параметров модификатора. Для этого следует включить режим анимации, нажав кнопку AutoKey в нижней части экрана. При этом
кнопка поменяет цвет на красный.
Рисунок 17.7.7. – Создание параметров анимации модификатора
Замечание
В режиме анимации изменение любого анимируемого параметра создает
ключи анимации на том кадре, на котором эти изменения происходят.
Убедитесь, что вы находитесь на нулевом кадре. В группе кнопок управления анимацией в числовое поле текущего кадра введите значение 0 (рисунок
17.7.8).
Рисунок 17.7.8. – Текущий кадр – нулевой
В параметрах модификатора Tape введите в числовое поле Amount (Величина) значение 0.
Перейдите на сотый кадр. Для этого можно ввести значение 100 в числовое поле текущего кадра. Задайте для параметра Amount (Величина) значение –
0,94.
240
Рисунок 17.7.9. – Переход на 100 кадр
Назначение модификатора Bend
Не снимая выделение, примените модификатор Bend (Изгиб).
По прежнему находясь на 100 кадре измените параметры модификатора:
Angle (Угол) _ 281
Upper Limit (Верхний предел) _ 100
Установите флажок Limit Effect (Ограничение эффекта)
Рисунок 17.7.10.– Применение модификатора Bend
241
Нажмите кнопку Sub-Object и выберите в раскрывающемся списке рядом
с кнопкой уровень воздействия (Центр).
Рисунок 17.7.10. – Выбираем уровень воздействия Center
Отключите режим анимации, отжав кнопку AutoKey.
В окне проекций Front (Вид спереди) поднимите центр воздействия на
150 единиц вверх (рисунок 17.7.11).
Рисунок 17.7.11 –. Центр воздействия поднять
Отключите режим Sub-Object.
Разворот цилиндров
Нажмите кнопку Zoom Extents All (Показать все предметы).
242
Щелкните на одном из цилиндров правой кнопкой мыши и выберите в
контекстном меню команду Rotate (Вращение).
Рисунок 17.7.12. – Результат разворота цилиндров
В окне проекций Top (Вид сверху) поверните объект Cylinder02 по оси Z на 90.
Поверните объект Cylinder01 вокруг оси Z на 180.
Поверните объект Cylinder04 вокруг оси Z на –90 (рисунок 17.7.13).
Сохраните сцену под именем MyChap04_01.max
Добавление скручивания
В окне проекций Front (Вид спереди) выделите все четыре цилиндра (или
воспользуйтесь выделением по имени.
Во вкладке Modifiers (Модификаторы) выбирете Twist (Скручивание).
Рисунок 17.7.13. – Выбирете модификатор Twist
243
Включите режим анимации.
По-прежнему находясь на 100 кадре, примените
Для модификатора Twist (Скручивание) новые значения параметров:
Angle (Угол) – 400
Upper Limit (Верхний лимит) – 150
Установите флажок Limit Effect (Ограничение эффекта).
Рисунок 17.7.14. – Применение модификатора Twist
Отключите режим анимации, отжав кнопку AutoKey.
Нажмите кнопку Sub-Object и выберите в раскрывающемся списке рядом
с ней уровень воздействия Center (Центр).
В окне проекции Front опустите центр воздействия по оси Z на 86 единиц
вниз (рисунок 17.7.15). Отключите режим Sub-Object.
244
Рисунок 17.7.15. – Результат скручивания
Просмотрите анимацию. Нажмите кнопку Play Animation (Проиграть
анимацию).
Сохраните сцену в буфер. Выберите команду Hold (Держать) меню Edit,
(Правка).
Замечание
Несмотря на то, что объекты связаны, и изменения одного объекта передаются другому, в одном случае мы назначали модификатор одному объекту, в
других – всем выделенным сразу.
Создание, перемещение и выравнивание сферы
Переключитесь на вкладку Objects (Объекты) и нажмите кнопку Sphere
(Сфера).
В окне проекции Front (Вид спереди) создайте сферу. Введите параметры:
Radius (Радиус) – 36
Segments (Сегментов) – 8
Сбросьте флажок Smooth (Сглаживать).
Перемещение сферы в верхнюю часть подставки
Перейдите на 100–й кадр, для этого введите значение 100 в числовое поле
текущего кадра.
Выровняйте объект Sphere01 по центру бокса-основания:
245
Убедитесь, что выделена сфера. Нажмите на панели инструментов Main
Toolbar (Базовая панель) кнопку Align (Выравнивание).
Щелкните на объекте выравнивания Box01.
В окне настроек выравнивания установите переключатель Center (Центр)
в группах Current Object (Текущий объект) и Target Object (Целевой объект), а
также флажки X, Y, Z Position. Нажмите кнопку OK.
Нажмите на панели инструментов Main Toolbar (Базовая панель) кнопку
Select and Move (Перемещение), затем щелкните на ней же правой клавишей
мыши (или нажмите клавишу F12 ). Появится окно Transform Type-In (Ввод
трансформации).
В секции Absolute World (Абсолютные мировые координаты) в числовое
поле Z введите значение 186.
Рисунок 17.7.16. – окно Transform Type-In
246
Анимирование сферы
Перейдите на 100-й кадр. Введите в числовое поле текущего кадра 100.
Создайте ключ анимации для сферы:
Убедитесь, что выделен объект Sphere01.
Щелкните правой кнопкой мыши на движке Time Slider. Появится окно
Create Key (Создать ключ).
Параметры Source Time (Время источника) и Destination Time (Время расположения) должны быть равны 100. Установите флажки Position (Позиция) и
Rotation (Вращение). Они создают ключи для позиции и вращения.
Рисунок 17.7.17. – Создание ключа
Перейдите на нулевой кадр, нажав кнопку Go to Start (На старт).
Включите режим анимации, нажав кнопку AutoKey.
Нажмите кнопку Select and Move (Перемещение), в окне Transform TypeIn (Ввод трансформации) введите значение 480.
247
Рисунок 17.7.18. – Нажатие кнопки Select and Move (Перемещение),
в окне Transform Type-In
Отключите режим анимации, отжав кнопку AutoKey.
Создание камеры
Перейдите на панель инструментов Lights & Cameras (Источники света и
камеры), и нажмите кнопку Free (Свободная).
Рисунок 17.7.19. – панель инструментов Lights & Cameras
Щелкните в одном из окон проекций, чтобы создать камеру.
248
В окне Move Transform – Type-In (Ввод трансформации "перемещение")
введите координаты: X=0, Y= -210, Z=162.
На панели инструментов Main Toolbar (Базовая панель) нажмите кнопку
Rotate (Вращение).
В окне Rotate Transform Type-In (Ввод трансформации вращение) введите
координаты: X=88, Y=0, Z=0. Закройте окно Transform Type-In.
Рисунок 17.7.19. – Ввод трансформации Вращение
Переключитесь на просмотр через камеру: щелкните правой кнопкой
мыши на заголовке окна проекции Perspective (Перспектива), в контекстном
меню выберите команду Views Camera01(Проекции Камера01).
Щелкните правой кнопкой мыши на заголовке окна проекций Camera01 и
выберите в контекстном меню команду Show Safe Frame (Показывать границы
кадра просчета).
249
Рисунок 17.7.20. – Выбор в контекстном меню команду Show Safe Frame
Переключитесь на вкладку Render Setup .
Рисунок 17.7.21. – Вкладка Render Setup
250
Появится окно настроек просчета.
В группе Output Size (Размер вывода) введите для параметров Width (Ширина) и Height (Высота) значения 100 и 240, соответственно.
В раскрывающемся списке Viewport (Окно проекций) выберите элемент
Camera01.
Рисунок 17.7.22. – Раскрывающийся список Viewport
Нажмите кнопку Render (Просчет).
По завершении просчета нажмите кнопку Close (Закрыть), чтобы сохранить установки.
Чтобы просмотреть анимацию, нажмите кнопку Play Animation (Проиграть анимацию).
Остановите просмотр анимации, нажав Stop Animation (Остановить Анимацию).
Сохраните сцену под именем MyChap04_02.
251
Корректировка анимации
Выделите один из цилиндров. Перейдите на командную панель Modify
(Модификации).
Разверните свиток Modifier Stack, показанный на рисунок 8, и выберите
начальный уровень объекта: Cylinder (Цилиндр).
Рисунок 17.7.23. – Начальный уровень объекта
Включите режим анимации.
Перейдите на 0-й кадр. Нажмите кнопку Go to Start (На старт).
Запомните текущие параметры – Height (Высота) – 200, Height Segments
(Сегменты по высоте) – 29. Задайте следующие значения:
Height (Высота) – 0
Height Segments (Сегменты по высоте) – 1
Перейдите на последний кадр, для чего нажмите кнопку Go to End (К
концу).
Верните параметрам старые значения:
Height (Высота) – 200
Height Segments (Сегменты по высоте) – 29
Отключите режим анимации.
Просмотрите полученную анимацию, нажав кнопку Play Animation (Проиграть анимацию).
Остановите просмотр анимации, нажав кнопку Stop Animation (Остановить Анимацию).
Сохраните сцену под именем MyChap04_03.
Назначение объектам материалов из библиотеки
На панели инструментов Rendering (Просчет) нажмите кнопку Material
Editor (Редактор материалов). Откроется окно редактора материалов.
252
Нажмите кнопку Get Material (Взять материал). Появится окно
MaterialMap Browser (Браузер карт и материалов).
В секции Browse From (Просмотр из) переключитесь на Mtl Library (Библиотека).
Откройте файл библиотеки. В меню File (Файл) выберите команду Open
(Открыть). Появится окно Open Material Library (Открыть библиотеку материалов). Найдите и выделите файл Tutor!.mat. Нажмите кнопку Open (Открыть).
Примечание: если файлы не найдены, присвойте любые другие материалы.
Перенесите в редактор материалов первый материал. Найдите в списке
материалов объект Glass01, дважды щелкните на нем мышью. Он будет скопирован на активный слот в редакторе материалов. Можно также перетащить его
из списка на слот материала мышью методом Drag-and-Drop.
Переключитесь, щелкнув мышью, на другой слот и перенесите на него
материал Reflection_Chromic (рисунок 17.7.24).
Закройте окно MaterialMap Browser (Браузер карт и материалов).
Рисунок 17.7.24. – Объекту назначен материал Reflection_Chromic
Нажмите клавишу H. В появившемся окне Select Object (Выделение объектов) выделите объекты Box01, Cylindr01, Cylindr02, Cylindr03, Cylindr04 (используйте для выделения нескольких объектов клавишу Ctrl). Нажмите кнопку
Select (Выделить).
В редакторе материалов убедитесь, что выделен серый материал
Reflection Chromic и нажмите кнопку Assign Material to Selection(Присвоить материал выделенному). Выделенные объекты приобретут один цвет. Полностью
влияние материала будет видно при просчете.
Нажмите клавишу H. В появившемся окне Select Object (Выделение объектов) выберите объект Sphere01.
В редакторе материалов выделите слот с прозрачным материалом Glass01
и нажмите кнопку Assign Material to Selection (Присвоить материал выделенному).
Закройте редактор материалов.
Просчитайте сцену, для чего нажмите клавишу F9 или кнопку Quick
Render (Быстрый просчет).
Изменение цвета фона
253
Во вкладке Rendering (Просчет) нажмите кнопку Environments
(Окружение).
Рисунок 17.7.25. – Вкладка Rendering
Появится окно настроек окружения в сцене.
В секции Background (Задний план) щелкните на цветовом окошке
(Color). Появится окно настроек цвета Color Selector (Выделение цвета).
Введите в числовые поля новые параметры цвета:
Red (Красный) – 159
Green (Зеленый) – 159
Blue (Синий) – 159 (далее RGB 159,159,159)
Нажмите кнопку Close (Закрыть). Закройте окно Environment (Окружение).
Сохраните сцену в буфер, выбрав команду Hold (Держать) меню Edit,
(Правка).
Просчет сцены
Нажмите F10 или кнопку RenderSatup на панели инструментов Rendering
(Просчет). Появится окно настроек рендеринга.
254
Во вкладке Common, в секции Time Output (Время вывода) установите
флажок на Active Time Segment (Активный отрезок времени). Убедитесь, что в
секции Output Size (Размер вывода) установлено значение 100.
Укажите файл, в который будет сохраняться результат просчета, для этого ниже во вкладке Common в секции Render Output (Вывод просчета) нажмите
кнопку Files (Файлы). В появившемся окне введите имя файла в текстовом поле
File Name (Имя файла), например, Stand (подставка). Из раскрывающегося
списка File Type (Тип файла) выберите AVI File (*.avi) . Нажмите кнопку Setup
(Установки) и выберите программу сжатия Microsoft Video 1 (качество сжатия
90). Нажмите кнопку OK.
Рисунок 17.7.26. – Просчет сцены
После этого в секции Render Output (Вывод просчета) появится путь, по
которому будет сохранен файл.
Чтобы начать просчет, нажмите кнопку Render Flame Window(Просчет).
Чем сложнее сцена, тем больше времени занимает просчет.
255
Рисунок 17.7.27.– Сохранение файла и просчет сцены
По завершении просчета просмотрите результат (AVI файл), сохраненный по указанному вами пути.
Сохраните сцену под именем MyChap04_04.max.
18. Заключение
Итак, мы представили методику обучения работе в трехмерной графике.
Ни для кого не секрет, что технологии в современном мире развиваются непрерывно и стремительно. Дизайн тоже не остаётся в стороне от прогресса, и придирчивые заказчики уже не удовлетворяются ни чертежами, ни зарисовками, ни
даже объемными макетами. Технологии компьютерной визуализации – 3D графика и анимация – дают и профессионалу, и заказчику совершенно новые возможности – увидеть дом еще до того, как он будет построен, оглядеть его со
всех сторон, сделать фотографии с любой точки и в любом ракурсе. Виртуальную модель легко изменить, доработать, как внутри, так и снаружи, сэкономив
и силы, и средства. Студии компьютерной графики предоставляет услуги в области разработки дизайна, создания логотипов, фирменного стиля компаний,
оказывает помощь в рекламно-презентационной деятельности, оформлении
наружной рекламы. Сегодня возможности трехмерной компьютерной графики
(или 3D графики) помогают создавать объемные модели объектов самой разной
степени сложности в виртуальном пространстве. При помощи трехмерного моделирования можно создать и увидеть визуализацию дизайна новой квартиры,
коттеджа, магазина до его реального воплощения.
Экстерьерная анимация – один из видов трехмерного дизайна, позволяющий разрабатывать масштабные проекты офисных зданий, торговых и жилых
комплексов; осуществлять компьютерное моделирование больших и малых архитектурных форм, жилых и общественных помещений.
256
Список литературы
1. Агостон, Ж.А. /Теория цвета и применение в искусстве и дизайне./Ж.А. Агостон – М.: Мир, 1982. – 182 с.
2. Волков, И.П. /Учим творчеству/ И.П. Волков – М.: Педагика,1988.
3. Ильин, Г.А. /Педагогика/ Г.А. Ильин – М.: Просвещение,
1984. – 496 с.
4. Кон И.С. /Психология ранней юности. Книга для учителя/ И.С. Кон –
М.: Просвещение, 1989. – 256 с.
5. Понамарева, Е.С. /Цвет в интерьер/ Е.С. Понамарева
6. Рябцев, Д.В. /3ds max дизайн интерьеров/ Д.В. Рябцев. – М.: питер,2007. – 423 с.
7. Шишанов, А.В. /Дизайн интерьеров в 3ds max9/ А.В. Шишанов. – М.:
Питер, 2007. – 230 с.
8. Кулагин, Б. /3ds Max 8 от моделирования до анимации / Б. Кулагин –
СПб.: Петербург, 2006. – 106 с
9. Бондаренко, С.В. /3ds Max. Библиотека пользователя/ С.В. Бондаренко – Питер, 2000. – 57 с.
10. Бондаренко, С.В. /3ds Max 8 на 100%. / С.В. Бондаренко – СПб.:
Питер, 2007. – 254 с.
11. Коцюбинский, А.Г. Грошев Л.М. /Компьютерная графика. Популярные программы / А.Г. Коцюбинский Л.М. Грошев – М.:БИНОМ,
2000. –25с.
Мэрдок, Келли, Л. /3ds Max 5. Библиотека пользователя/ Мэрдок, Л.
Келли – М.:Вильямс, 2005. – 137с.
12. Шон, Б., Стив А. /Внутренний мир 3ds Max 7/ Б. Шон , А.Стив – М.:
Вильямс, 2006. –291с.
13. Мееров, М. /3ds Max. Реальная анимация и внутренняя реальность/
М. Мееров – СПб.: Питер, 2005. – 190с.
14. Квин Д.О. /Допечатная подготовка. Руководство дизайнера/ Д.О`
Квин –М.: Десс, 2002. –83с.
15. Тимофеев, Г. /Графический дизайн/ Г. Тимофеев – М.: Познавательная книга плюс, 2001. –367с.
16. Курушин, В. /Графический дизайн и реклама. Самоучитель/ В. Курушин – М: ДМК, 1999. –49 с.
17. Петров, М.Н., Молочков В.П. /Компьютерная графика/ М.Н. Петров,
В.П.Молочков – СПб.: Питер, 2003. –285с.
18. Дональд, Херн, Паулин Бейкер /Компьютерная графика и стандарт
OpenGL = Computer Graphics with OpenGL. – 3-е изд. / Дональд Херн,
Паулин Бейкер – М.: «Вильямс», 2005. – С. 1168.
19. Эдвард, Энджел /Интерактивная компьютерная графика. Вводный
курс на базе OpenGL = Interactive Computer Graphics. A Top-Down
Approach with Open GL. – 2-е изд. / Энджел Эдвард – М.: «Вильямс»,
2001. – С. 592.
257
20. Ватолин Д., Ратушняк А., Смирнов М., Юкин В. Методы сжатия
данных. Устройство архиваторов, сжатие изображений и видео. – М.:
ДИАЛОГ-МИФИ, 2002. – 384 с.
21. Н.В.Соловьев, А.М.Сергеев/Улучшение качества растровых изображений / – СПбГУ ИТМО, 2010. – 158 с.
22. Шикин Е. В., Боресков А. В. /Компьютерная графика. Полигональные модели./ М, – 2001. – 461с.
23. Роджерс Д., Адамс Дж. Математические основы машинной графики:
Пер. с англ. – М.: Мир, 2001. – 604с., ил
24. Шикин Е.В., Боресков А.В. Компьютерная графика. Полигональные
модели. – М.: ДИАЛОГ-МИФИ, 2000. – 464 с.
258
Учебное издание
Забелин Л.Ю.,
Конюкова О.Л.,
Диль О.В.
Основы компьютерной графики
и технологии трехмерного моделирования
Редактор: В.И. Сединин
Корректор: М.Г. Девищенко
Подписано в печать 29.12.2015
Формат бумаги 62×84/16, отпечатано на ризографе, шрифт № 10,
изд. л. – 16,1, заказ № 221, тираж – 100.
Редакционно-издательский отдел СибГУТИ
630102, Новосибирск, ул. Кирова, 86, офис 107, тел (383) 269-82-36
259
Документ
Категория
Без категории
Просмотров
336
Размер файла
7 940 Кб
Теги
osnovy, komp, 617, grafik, zabelin, juternoj
1/--страниц
Пожаловаться на содержимое документа