Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Диплом_Данил.doc
Скачиваний:
42
Добавлен:
09.02.2016
Размер:
1.53 Mб
Скачать

1. Построение реалистичных изображений

Построение реалистичных изображений включает как физические, так и психологические процессы. Свет, то есть электромагнитная энергия, после взаимодействия с окружающей средой попадает в глаз, где в результате физических и химических реакций вырабатываются электроимпульсы, воспринимаемые мозгом. Восприятие – это приобретаемое свойство. Человеческий глаз – очень сложная система. Он имеет почти сферическую форму с диаметром около 20 мм. Из опытов известно, что чувствительность глаза к яркости света изменяется по логарифмическому закону. Пределы чувствительности к яркости чрезвычайно широки, порядка 1010 , однако глаз не в состоянии одновременно воспринять весь этот диапазон. Глаз реагирует на гораздо меньший диапазон значений относительно яркости, распределённый вокруг уровня адаптации к освещённости. [3]

Скорость адаптации к яркости неодинакова для различных частей сетчатки, но, тем не менее очень высока. Глаз приспосабливается к «средней» яркости обозреваемой сцены; поэтому область с постоянной яркостью (интенсивностью) на тёмном фоне кажется ярче или светлее, чем на светлом фоне. Это явление называется одновременным контрастом.[6]

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

Рис. 1.1. Эффект полос Маха: (а) кусочно-линейная функция интенсивности, (b) функция интенсивности с непрерывной первой производной.

1.1 Простая модель освещения.

Световая энергия, падающая на поверхность, может быть поглоще­на, отражена или пропущена. Частично она поглощается и превра­щается в тепло, а частично отражается или пропускается. Объект можно увидеть, только если он отражает или пропускает свет; если же объект поглощает весь падающий свет, то он невидим и называ­ется абсолютно черным телом. Количество поглощенной, отражен­ной или пропущенной энергии зависит от длины волны света. При освещении белым светом, в котором интенсивность всех длин волн снижена примерно одинаково, объект выглядит серым. Если погло­щается почти весь свет, то объект кажется черным, а если только небольшая его часть — белым. Если поглощаются лишь определен­ные длины волн, то у света, исходящего от объекта, изменяется распределение энергии и объект выглядит цветным. Цвет объекта определяется поглощаемыми длинами волн.[5]

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

Рис.1.2. Ламбертовое диффузное отражение

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

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

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

Рис.1.3. Зеркальное отражение.

Если предполагается, что точка наблюдения находится в беско­нечности, то определяется положением объекта, ближайшего к точке наблюдения. Это означает, что ближайший объект освещает­ся с полной интенсивностью источника, а более далекие — с умень­шенной. Для цветных поверхностей модель освещения применяется к каждому из трех основных цветов.[10]

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

Прозрачность

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

Ни одно вещество не пропуска­ет весь падающий свет, часть его всегда отражается; это также по­казано на (рис.1.4.)

Рис.1.4.Геометрия преломления.

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

Тени

Если положения наблюдателя и источника света совпадают, то те­ней не видно, но они появляются, когда наблюдатель перемещается в любую другую точку. Изображение с построенными тенями вы­глядит гораздо реалистичнее, и, кроме того, тени очень важны для моделирования. Например, особо интересующий нас участок мо­жет оказаться невидимым из-за того, что он попадает в тень. В прикладных областях — строительстве, разработке космических ап­паратов и др. — тени влияют на расчет падающей солнечной энер­гии, обогрев и кондиционирование воздуха.[8]

Наблюдения показывают, что тень состоит из двух частей: по­лутени и полной тени. Полная тень — это центральная, темная, резко очерченная часть, а полутень — окружающая ее более светлая часть. В машинной графике обычно рассматриваются точечные ис­точники, создающие только полную тень. Распределенные источни­ки света конечного размера создают. как тень, так и полутень: в полной тени свет вообще отсутствует, а полутень освещается ча­стью распределенного источника. Из-за больших вычислительных затрат, как правило, рассматривается только полная тень, образуе­мая точечным источником света. Сложность и, следовательно, сто­имость вычислений зависят и от положения источника. Легче всего, когда источник находится в бесконечности, и тени определяются с помощью ортогонального проецирования. Сложнее, если источник расположен на конечном расстоянии, но вне поля зрения; здесь не­обходима перспективная проекция. Самый трудный случай, когда источник находится в поле зрения. Тогда надо делить пространство на секторы и искать тени отдельно для каждого сектора.[10]

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

Рис.1.5.Тени.

Если один объект препятствует попаданию света на другой, то получается проекционная тень, например тень на горизонтальной плоскости на (рис. 1.5, Ь.) Чтобы найти такие тени, нужно постро­ить проекции всех не лицевых граней на сцену. Центр проекции на­ходится в источнике света. Точки пересечения проецируемой грани со всеми другими плоскостями образуют многоугольники, которые помечаются как теневые многоугольники и заносятся в структуру данных. Для того чтобы не вносить в нее слишком много много­угольников, можно проецировать контур каждого объекта, а не от­дельные грани.

После добавления теней к структуре данных, как обычно, стро­ится вид сцены из заданной точки наблюдения. Отметим, что для создания разных видов не нужно вычислять тени заново, так как они зависят только от положения источника и не зависят от поло­жения наблюдателя.[4]

Развитие алгоритмов

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

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

В 1974 году Эд Кэтмул ввел концепцию Z-буфера, суть которой была в том, что изображение может состоять из горизонтальных (X) и вертикальных (Y) элементов, каждый из которых также имеет глубину. Таким способом был ускорен процесс удаления скрытых граней, и теперь этот метод является стандартом для трехмерных ускорителей. Другим изобретением Кэтмула было обертывание двумерного изображения вокруг трехмерной геометрии. Проецирование текстуры на поверхность, является основным способом придания реалистичного вида трехмерному объекту. Изначально объекты были равномерно окрашены в один цвет, так что, например, создание кирпичной стены требовало индивидуального моделирования каждого кирпичика и заливки между ними. В наши дни вы можете создать такую стену, назначив растровое изображение кирпичной стены простому прямоугольному объекту. Этот процесс требует минимального объема вычислений и ресурсов компьютера, не говоря уже о значительном сокращении времени работы.[12]

By Тонг Фонг усовершенствовал принцип сглаживания Гуро путем интерполяции оттенков всей поверхности полигона, а не только областей, прилегающих непосредственно к граням. Хотя визуализация в этом случае происходит раз в сто медленней, чем при предыдущем варианте сглаживания, объекты получают в результате «пластичный» вид, присущий ранней компьютерной анимации. В Maya используются два варианта раскраски по Фонгу.

Джеймс Блинн скомбинировал элементы раскраски по Фонгу и проецирования текстур, создав в 1976 году текстуру рельефа. Если к поверхности было применено сглаживание по Фонгу и можно спроецировать на нее карту текстуры, почему не использовать оттенки серого в соответствии с направлениями нормалей к граням, чтобы создать эффект рельефа? Более светлые оттенки серого воспринимаются, как возвышенности, а более темные — как впадины. Геометрия объекта при этом остается неизменной, и вы можете видеть его силуэт.

Блинн также разработал метод использования карт окружающей среды для формирования отражений. Он предложил создать кубическую среду путем визуализации шести проекций из центра объекта. Полученные таким способом изображения затем проецируются обратно на объект, но с фиксированными координатами, в результате чего картинка не перемещается вместе с объектом. В результате поверхность объекта будет отражать окружающую среду. Для успешной реализации эффекта нужно, чтобы не было быстрого движения объектов окружающей среды в процессе анимации. В 1980 году Тернер Уиттед предложил новую технику визуализации, называемую трассированием. Это отслеживание путей прохождения отдельных световых лучей от источника света до объектива камеры с учетом их отражения от объектов сцены и преломления в прозрачных средах. Хотя реализация этого метода требует значительного количества ресурсов компьютера, изображение получается очень реалистичным и аккуратным.[15]

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

В 1984 году в Торонто была основана фирма Alias. Это название имеет два значения. Во-первых, это переводится как «псевдоним», ведь в те времена основатели компании были вынуждены работать по совместительству. Во-вторых, этот термин используется для описания ступенчатых краев изображения в компьютерной графике. Первоначально фирма ориентировалась на выпуск программного обеспечения. предназначенного для моделирования и разработки сложных поверхностей. Затем была создана программа Power Animator, мощный и дорогостоящий продукт, который многие производители считали самым лучшим из доступных на тот момент.

В 1984 году в Сайта-Барбаре была основана компания Wavefront. Это название буквально переводится как волновой фронт. Компания немедленно занялась разработкой программного обеспечения для создания трехмерных визуальных эффектов и производством графических заставок для телепрограмм Showtime, Bravo и National Geographic Explorer. Первое приложение, созданное компанией Wave-front, называлось Preview. Затем в 1988 году была выпущена программа Softimage, которая довольно быстро завоевала популярность на рынке продуктов, предназначенных для работы с компьютерной графикой. Все программное и аппаратное обеспечение, использовавшееся для создания анимации в 80-х годах, было специализированным и очень дорогим. К концу 80-х годов в мире насчитывалось всего несколько тысяч человек, занимавшихся моделированием визуальных эффектов. Почти все они работали на компьютерах производства компании Silicon Graphics и использовали программное обеспечение от фирм Wavefront, Softimage и т. п.[3]

Благодаря появлению персональных компьютеров число людей, занимающихся созданием компьютерной анимации, начало расти. Компании IBM PC, Amiga, Macintosh и даже Atari начали разрабатывать программное обеспечение для обработки трехмерных изображений. В 1986 году фирма AT&T выпустила первый пакет для работы с анимацией на персональных компьютерах, который носил название TOPAS. Он стоил 10 000 долларов и работал на компьютерах с процессором Intel 286 и операционной системой DOS. Благодаря этим компьютерам стало возможным создание свободной анимации, несмотря на примитивную графику и относительно низкую скорость вычислений. В следующем году фирма Apple Macintosh выпустила еще одну систему для создания трехмерной графики на базе персональных компьютеров, которая носила название Electric Image. В 1990 году фирма AutoDesk начала продажу продукта 3D Studio, созданного независимой командой Yost Group, разрабатывавшей графические продукты для компании Atari. Стоимость 3D Studio составляла всего 3000 долларов, что в глазах пользователей персональных компьютеров делало его достойным конкурентом пакету TOPAS. Еще через год появился продукт Video Toaster компании NewTek вместе с простой в использовании программой LightWave. Для работы с ними были необходимы компьютеры Amiga. Эти программы пользовались большим спросом на рынке и продавались тысячами копий. К началу 90-х годов создание компьютерной анимации стало доступно широкому кругу пользователей. Каждый мог экспериментировать с анимацией и эффектами трассирования. Появилась возможность бесплатно загрузить программу Стивена Коя Vivid, позволяющую воспроизводить эффекты трассирования, или программу Persistence of Vision Raytracer, больше известную под названием POVRay. Последняя предоставляет детям и начинающим пользователям замечательную возможность познакомиться с основами компьютерной графики.

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

По мере роста рынка приложений для работы с трехмерной графикой и увеличения конкуренции, многие компании объединили свои технологии. В 1993 году компания Wavefront слилась с фирмой Thompson Digital Images, которая использовала моделирование на основе NURBS-кривых и интерактивную визуализацию. Позднее эти функции легли в основу интерактивной фотореалистичной визуализации в Maya. В 1994 году фирма Microsoft купила программу Softimage и выпустила версию данного продукта для платформ Windows NT на базе компьютеров Pentium. Это событие можно считать началом эры недорогих и доступных среднестатистическому пользователю персонального компьютера программ для работы с трехмерной графикой. В ответ на это в 1995 году компания SGI купила и объединила фирмы Alias и Wavefront, чтобы предотвратить упадок интереса к приложениям, которые работали исключительно на специализированных компьютерах SGI. Почти сразу же новая компания, названная Alias] Wavefront, начала объединение имевшихся в ее распоряжении технологий для создания совершенно новой программы. Наконец, в 1998 году было выпущено приложение Maya, стоившее от 15 000 до 30 000 долларов и предназначенное для операционной системы IRIX на рабочих станциях SGI. Программа была написана с нуля и предлагала новый путь развития анимации с открытым интерфейсом программирования приложений (API) и колоссальными возможностями расширения. Несмотря на первоначальное намерение компании SGI сохранить эксклюзивное право на предоставление среды для Maya, в феврале 1999 года появилась версия для Windows NT. Старая схема формирования цен была отброшена, и теперь базовый пакет Maya стоит всего 7500 долларов. В апреле этого же года появилась Maya 2, а в ноябре — Maya 2.5, содержащая модуль Paint Effects (Эффекты рисования). Летом 2000 года была выпущена версия Maya 3, к которой была добавлена возможность создания нелинейной анимации с помощью инструмента Тгах (Видеомонтаж). В начале 2001 года были анонсированы версии Maya для Linux и Macintosh, а с июня начались поставки Maya 4 для IRIX и Windows NT/2000.[10]

Maya представляет собой программу для создания трехмерной графики и анимации, основанных на моделях, созданных пользователем в виртуальном пространстве, освещенных виртуальными источниками света и показанных через объективы виртуальных камер. Существуют две основные версии программы: Maya Complete (ее стоимость на момент написания книги составляла 7500 долларов) и Maya Unlimited (стоившая 16 000 долларов), которая включала некоторые специфические функции. Maya работает как на компьютерах PC с операционной системой Windows NT/2000, так и в операционных системах Linux, IRIX или даже Macintosh. Программа позволяет создавать фотореалистичные растровые изображения, подобные тем, которые вы получаете с помощью цифровой камеры. При этом работа над любой сценой начинается с пустого пространства. Лю-эой параметр можно заставить изменяться с течением времени, в результате после визуализации набора кадров получается анимированная сцена.

Maya превосходит многие из имеющихся в данный момент на рынке пакетов для работы с трехмерной анимацией. Программа используется для создания эффектов в большом числе фильмов, имеет широкий диапазон применения в областях, которые мы перечислили выше, и считается одной из лучших в области создания анимации, несмотря на сложность в ее изучении. В настоящий момент основными конкурентами Maya являются программы LightWave, Softimage XSI и 3ds max, стоимость которых составляет от 2000 до 7000 долларов. Среди программ, стоящих меньше 1000 долларов, можно упомянуть trueSpace, Inspire 3D, Cinema 4D, Вгусе и Animation Master.

Большинство этих программ хорошо работают на базе персональных компьютеров и имеют версии для различных операционных систем, таких как Macintosh. Провести их сравнительный анализ довольно сложно, но в основном, чем сложнее программа, тем более сложную анимацию она позволяет создавать и тем проще в ней процесс моделирования сложных объектов или процессов.[6]