Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Основные понятия рендеринга




 

Рендеринг (rendering — «визуализация») в компьютерной графике — это процесс получения изображения по модели с помощью компьютерной программы.

В зависимости от цели, различают пре-рендеринг, как достаточно медленный

процесс визуализации, применяющийся в основном при создании видео, и

рендеринг в реальном режиме, применяемый в компьютерных играх. Последний

часто использует 3D-ускорители.

Трассирование каждого луча света в сцене непрактично и занимает неприемлемо

длительные периоды времени. Даже трассирование малого количества лучей,

достаточного, чтобы получить изображение, занимает чрезмерное количество

времени, если не применяется аппроксимация (семплирование).

 

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

1. Растеризация (rasterization) и метод сканирования строк (scanline rendering).

Визуализация производится проецированием объектов с сцены на экран без рассмотрения

 эффекта перспективы относительно наблюдателя.

2. Метод бросания лучей (ray casting). Сцена рассматривается, как наблюдаемая из

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

 которых определяется цвет пикселя на двумерном экране. При этом лучи прекращают свое

 распространение(в отличие от метода обратного трассирования), когда достигают любого

 объекта сцены либо ее фона. Возможно используются какие-то очень простые техники

 добавления оптических эффектов или внесения эффекта перспективы.

3. Глобальная иллюминация (global illumination, radiosity). Использует математику

конечных элементов, чтобы симулировать диффузное распространение света от поверхностей

 и при этом достигать эффектов «мягкости» освещения.

4. Трассировка лучей (ray tracing) похож на метод бросания лучей. Из точки наблюдения

 на объекты сцены направляются лучи, с помощью которых определяется цвет пиксела

 на двумерном экране. Но при этом луч не прекращает свое распространение, а

 разделяется на три компоненты, луча, каждый из которых вносит свой вклад в цвет

 пиксела на двумерном экране: отраженный, теневой и преломленный. Количество

 таких разделений на компоненты определяет глубину трассирования и влияет на

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

 особенностям метод позволяет получить очень фотореалистичные изображения,

 но при этом он очень ресурсоемкий и процесс визуализации занимает значительные

 периоды времени.

 

Z-буферизация

 

Z-буферизация - в компьютерной трёхмерной графике, способ учёта удалённости

элемента изображения. Представляет собой один из вариантов решения

 «проблемы видимости». Очень эффективен и практически не имеет недостатков,

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

 конкурировать с ним: Z-сортировка («алгоритм художника») и двоичное разбиение

 пространства (BSP), но они также имеют свои достоинства и недостатки. Основной

 недостаток Z-буферизации состоит в потреблении большого объёма памяти: в работе

 используется так называемый буфер глубины или Z-буфер.

Z-буфер представляет собой двумерный массив, каждый элемент которого соответствует

пикселу на экране. Когда видеокарта отрисовывает пиксел, его удалённость просчитывается

 и записывается в ячейку Z-буфера. Если пикселы двух рисуемых объектов перекрываются,

 то их значения глубины сравниваются, и рисуется тот, который ближе, а его значение

 удалённости сохраняется в буфер.

 

Разрядность буфера глубины оказывает сильное влияние на качество отрисовки: использование

16-битного буфера может привести к геометрическим искажениям, например, эффекту «борьбы»,

 если два объекта находятся близко друг к другу. 24, 32-разрядные буферы хорошо справляются

 со своей задачей. 8-битные почти никогда не используются из-за низкой точности.

 

Ортогональные проекции

 

Если соединить все точки предмета прямыми линиями с постоянной точкой, то получится проекция всех точек предмета. Если центр проекции бесконечно удален от плоскости, то говорят о параллельной проекции. Если центр проекции находится в области видимости, то говорят о перспективе. В этом случае центр проекции будет называться vanishing point

Ортогональное проецирование - это частный случай параллельного проецирования. При ортогональном проецировании проецирующие лучи перпендикулярны к плоскости проекций.

Данный вид проецирования использовался в играх 90х годов и в настоящее время используется в САПР.

 

I Изометрическая проекция

 

1) h/w=1/sqrt(3) arctg(h/w)=30

2) h/w=1/2 arctg(h/w)=27

3) h/w=1 (военная)

 

II Диметрическая проекция

 

1) h/w=1/6 (диметрия 1:2)

2) h/w=1/3 (угол междуправой гранью и нижней плоскостью 40)

3) h/w=0.17 (угол междуправой гранью и нижней плоскостью 30)

 

При изображении трехмерных объектов выполняются преобразования (x,y,z)->(x',y')

Изометрия 30 (САПР)

x'=(x-z)cos30

y'=y+(x+z)sin30

 

Изометрия 1:2 (игры)

x'=x-z

y'=y+(x+z)/2

 

Диметрия 1:2

x'=x+z/2 x'=x+z/4

y'=y+z/4 y'=y+z/2

 

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

 

Перспективная проекция

 

Если соединить все точки предмета прямыми линиями с постоянной точкой, то получится проекция всех точек предмета. Если центр проекции бесконечно удален от плоскости, то говорят о параллельной проекции. Если центр проекции находится в области видимости, то говорят о перспективе.

В этом случае центр проекции будет называться vanishing point.

Фокусное расстояние от наблюдателя до проекции или до вершины называется focal length

 

S=f / ( f + z ) - коэффициент искажения перспективы за счет удаления z

x'=S*x

y'=S*y

 

Чем больше f тем меньше S

Метод перспективной проекции в компьютерной графике используется для создания эффекта присутствия оптики

 

Методы создания элементов сцены

 

Для создания элементов 3d сцены используются:

1) моделирование. Геометрическое моделирование решает как правило 2 задачи: построение модели уже существуещего объекта и синтез модели, ранее не существовавшей.

2) текстурирование - закрашивание полигона или сплайна с помощью растровых изображений. Позволяет изменить форму текстуры на проекции с помощью афинных преобразований.

3) моделирование освещения и теней. Моделирование освещения не является прямым элементом сцены, оно косвенно воздействует на другие элементы сцены. Основное свойство моделирования освещения - изменение способов закрашивания объектов сцены.

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

5) изменение прозрачности при удалении - туман. Реализуется как правило для увелечения производительности, благодаря тому что системе не требуется обрабатывать объекты находящиеся за туманом, т.е. вне зоны видимости.

6) генерация хаотических моделей (фракталы, ландшафт)

 

Текстурирование

 

Текстурирование - закрашивание полигона или сплайна с помощью растровых изображений. Позволяет изменить форму текстуры на проекции с помощью афинных преобразований.

 

Текстура — растровое изображение, накладываемое на поверхность полигона, из которых состоят 3D-модели, для придания ей цвета, окраски или иллюзии рельефа. Понятие «текстура» является одним из столпов 3D-моделирования, поскольку позволяет воспроизвести малые объекты поверхности, создание которых полигонами оказалось бы чрезмерно ресурсоёмким. Например, шрамы на коже, складки на одежде, мелкие камни и прочие предметы на поверхности стен и почвы.

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

Текстура имеет высоту, ширину и 4 вершины. Для обработки используется 8 бит. Как растровое изображения при использовании цветовой модели RGBA может быть прозрачной или полупрозрачной и накладываться на другие текстуры. Данный подход называется мультитекстурирование.

Моделирование освещения не является прямым элементом сцены, оно косвенно воздействует на другие элементы сцены. Основное свойство моделирования освещения - изменение способов закрашивания объектов сцены.

Распространенные методы моделирования освещения:

1) Карта освещения (light map) - это метод освещения пространства в 3d приложении заключается в том, что создается текстура содержащая информацию об освещенности 3х мерной модели. При использовании такого метода грани 3d моделей закрашиваются в соответствии с картой освещения. Выступающие части окрашиваются более ярко чем углубления. Такой метод не требует больших ресурсов, так как расчет такой карты используется динамически

2) Рельефное текстурирование. Метод аналогичен предыдущему, в котором происходит не закраска участков модели, а участков текстуры. Используется для создания теней для таких сложных моделей как ландшафт.

3) Вершинное освещение (vertex lighting). Для каждой вершины 3d модели строится вектор нормали относительно которого будет происходить закрашивание граней (например, для куба 8 нормалей). Закрашивание будет происходить от угла к углу для отражающего света.

4) Освещение граней (face lighting) - аналогичен предыдущему, нормали строятся от граней. Менее реалистичен. Используется для моделирования рассеяного света.

5) Затемнение по Фонгу (Phong shading) - метод освещения граней сложных полигональных моделей, который используется для криволинейных моделей. Для любой кривой поверхности строится полигональная сетка и каждая ее грань закрашивается в соответствии с нормалью. Образующаяся тень применяется к криволинейной модели.

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

 

 

Трассировка лучей

 

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

Достоинства

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

-вычислительная сложность метода слабо зависит от сложности сцены

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

Недостатки

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

Основные элементы систем трассировки лучей

1) Глобальное освещение - ряд алгоритмов предназначенных для добавления более реалистичных изображений 3D сцены. Учитывает не только прямое освещение, но и отражение освещения от других элементов сцены.

2) Искаженное отражение. Если поверхность не является идеальным отражателем, то свет искажается.

3) Каустика - эффект освещения внутри среды. Особенно проявляется когда среда подвижная, например, вода.

4) Освещение от рассеющего объекта, например, неба. Позволяет создавать мягкие тени.

5) Глубина резкости - эффект выделения объекта на определенном фокусном расстоянии (в фокусе), а все остальное размыто.

Трассировка лучей в пакетах 3D моделирования

RenderMan & MentalRay - 3D Max, Maya

Pov-Ray - Blender

 

OpenGL

 

OpenGL (Open Graphics Library — открытая графическая библиотека) — спецификация, определяющая независимый от языка программирования кросс-платформенный программный интерфейс для написания приложений, использующих двумерную и трёхмерную компьютерную графику.

 

Включает более 250-ти функций для рисования сложных трёхмерных сцен из простых примитивов. Используется при создании видео-игр, САПР, виртуальной реальности, визуализации в научных исследованиях. На платформе Windows конкурирует с DirectX.

 

Эффективные реализации OpenGL существуют для Windows, Unix платформ , PlayStation 3 и Mac OS. Эти реализации обычно предоставляются изготовителями видеоадаптеров и активно используют возможности последних. Существуют также чисто программные реализации спецификации OpenGL, одной из которых является библиотека Mesa. Из лицензионных соображений Mesa является «неофициальной» реализацией OpenGL, хотя полностью с ней совместима на уровне кода.

 

Спецификация OpenGL пересматривается Консорциумом ARB (Architecture Review Board), который был сформирован в 1992 году. Консорциум состоит из компаний, заинтересованных в создании широко распространённого и доступного API. Согласно официальному сайту OpenGL, членами ARB с решающим голосом на ноябрь 2004 года являются производители профессиональных графических аппаратных средств SGI, 3Dlabs, Matrox и Evans & Sutherland (военные приложения), производители потребительских графических аппаратных средств ATI и NVIDIA, производитель процессоров Intel, и изготовители компьютеров и компьютерного оборудования IBM, Apple, Dell, Hewlett-Packard и Sun Microsystems, а также один из лидеров компьютерной игровой индустрии id Software. Microsoft, один из основоположников Консорциума, покинула его в марте 2003 года. Помимо постоянных членов, каждый год приглашается большое количество других компаний, становящихся частью OpenGL ARB в течение одного года. Такое большое число компаний, вовлеченных в разнообразный круг интересов, позволило OpenGL стать прикладным интерфейсом широкого назначения с большим количеством возможностей.

 

DirectX

 

DirectX — это набор API функций, разработанных для решения задач, связанных с игровым и видеопрограммированием под Microsoft Windows. Наиболее широко используется при написании компьютерных игр. Пакет средств разработки DirectX под Microsoft Windows бесплатно доступен на сайте Microsoft. На данный момент самой новой версией является DirectX 11. Зачастую, свежие версии DirectX поставляются вместе с игровыми приложениями, так как DirectX API обновляется достаточно часто, и версия, включённая в ОС Windows зачастую является далеко не самой новой.

Изначально нацеленный на разработку видеоигр, DirectX стал популярен и в других областях разработки программного обеспечения. К примеру, DirectX, наряду с OpenGL, получил очень широкое распространение в инженерном/математическом ПО.

Практически все части DirectX API представляют собой наборы COM-совместимых объектов.

В целом, DirectX подразделяется на:

DirectX Graphics, набор интерфейсов, ранее (до версии 8.0) делившихся на:

DirectDraw: интерфейс вывода растровой графики.

Direct3D (D3D): интерфейс вывода трёхмерных примитивов.

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

DirectPlay: интерфейс сетевой коммуникации игр.

DirectSound: интерфейс низкоуровневой работы со звуком (формата Wave)

DirectMusic: интерфейс воспроизведения музыки в форматах Microsoft.

DirectShow: интерфейс, используемый для ввода/вывода аудио и/или видео данных.

DirectSetup: часть, ответственная за установку DirectX.

DirectX Media Objects: реализует функциональную поддержку потоковых объектов (например, энкодеры/декодеры)

    Последней текущей версией является DirectX 10.1, до Service Pack 1 на Windows Vista стоял DirectX 10 изначально называвшийся «Windows Graphics Foundation», но позднее он был переименован. Изменения в DirectX 10.1 в отличие от DirectX 10 касаются графической составляющей — Direct3D. DirectX 10 представляет собой часть ОС Windows Vista и использует отличную от DirectX 9.0 модель видео-драйвера. DirectX 10 предоставляет набор требований к аппаратной части - минимальный стандарт функциональности, необходимой для того, чтобы аппаратное устройство было DirectX-совместимым. В августе 2008 был анонсирован DirectX 11. Были озвучены нововведения, которые войдут в Direct3D11. Предварительная версия будет доступна в конце декабря с обновлением DirectX SDK - будут доступны вся соответствующая документация и примеры.

 

39. GDI, GDI+

 

GDI (Graphics Device Interface или Graphical Device Interface) — один из трёх основных компонентов или «подсистем», вместе с ядром и Windows API составляющих пользовательский интерфейс (оконный менеджер GDI) Microsoft Windows.

 

GDI — это интерфейс Microsoft Windows для представления графических объектов и передачи их на устройства отображения, такие как мониторы и принтеры.

 

GDI отвечает за отрисовку линий и кривых, отображение шрифтов и обработку палитры. Он не отвечает за отрисовку окон, меню и т. п., эта задача закреплена за пользовательской подсистемой, располагающейся в user32.dll и основывающейся на GDI. GDI схож с классическим QuickDraw у Apple.

 

Одно из наибольших преимуществ использования GDI вместо методов прямого доступа к оборудованию — это возможность расширения функций над различными устройствами. Используя GDI, можно легко рисовать на нескольких разных устройствах, таких как экран или принтер, и достичь практически одинакового отображения на них. Эта возможность лежит в центре всех WYSIWYG приложений для Microsoft Windows.

 

Простые игры, которые не требуют быстрой графики, используют GDI. Однако GDI не может обеспечить качественную анимацию (нет возможности синхронизации с framebuffer (буфером кадра)). Также GDI не хватает растеризации для отрисовки 3D графики. Современные игры используют DirectX или OpenGL, что даёт программистам доступ к большему количеству аппаратных возможностей.

 

Технические детали

 

Контекст устройства (DC, Device Context) используется для определения атрибутов текста и изображения, которое выводится на экран или принтер. DC, как и большинство объектов GDI, является непрозрачным, то есть нельзя осуществить прямой доступ к данным.

 

GDI+

 

После выхода Windows XP, использование GDI стало нежелательным из-за выхода в свет его потомка, подсистемы GDI+, основанной на C++. GDI+ является улучшенной средой для 2D графики, в которую добавлены такие возможности, как сглаживание линий (antialiasing), использование координат с плавающей точкой, градиентная заливка, внутренняя поддержка современных графических форматов (таких как JPEG и PNG), преобразования 2D матриц и т. п. GDI+ использует ARGB цвета. Эти возможности используются в пользовательском интерфейсе Windows XP, а их присутствие в базовом графическом слое облегчает использование систем векторной графики, таких как Flash или SVG. Динамические библиотеки GDI+ могут распространяться вместе с приложениями для использования в предыдущих версиях Windows.

В .NET можно использовать функции GDI+ через пространство имен System.Drawing.

GDI+ схож с подсистемой Quartz 2D у Apple и open-source библиотеками libart и Cairo.

Flash API

 

Adobe Flash, или просто Flash называют формат SWF (Shockwave Flash, произносится «swiff») Adobe Flash Player, Adobe Flash Professional, программу разработки мультимедийного контента для платформы «Adobe Engagement Platform» (такого, как веб-приложения, игры и мультфильмы).

 

Если быть точнее, Adobe Flash — среда для создания приложений под Flash платформу (Flash Platform), наряду с ней существуют и другие инструменты (среды): Adobe Flex Builder, Flash Development Tool (FDT), и другие.

 

Flash-приложения создаются с помощью ActionScript (последняя версия 3.0) — языка программирования. Если исходник не содержит в себе инструкции языка, то при компиляции в любом случае генерируется некоторый базовый код на ActionScript (это можно увидеть просмотрев Flash-байткод). Далее соответственно существует базовый клип на сцене, унаследованный от MovieClip класса, который и начинает воспроизводиться. Среда Adobe Flash ориентирована в большей мере на дизайнеров, аниматоров, хотя и имеется возможность писать полноценный код. Flex Builder, FDT, ориентированы на программирование, и там нет специальных инструментов интерфейса для анимации, визуализации.

 

ActionScript 1.0 является прототипным ООП (prototype-based). То есть он вполне реализует все три принципа объектно-ориентированного программирования.

 

ActionScript 2.0 является не более чем надстройкой над ActionScript 1.0, то есть на этапе компиляции компилятор осуществляет некую проверку и превращает класcы, методы ActionScript 2.0 в прежние прототипы, "функции-классы" с их свойствами-методами и пр. ActionScript 1.0.

 

В 2006 году вышел ActionScript 3.0 в среде программирования Adobe Flex, а позже в Adobe Flash 9.

ActionScript 3.0 представляет, по сравнению с ActionScript 2.0 качественное изменение, он использует новую виртуальную машину AVM 2.0 и даёт взамен прежнего формального синтаксиса классов настоящее классовое (class-based) Объектно-ориентированное программирование. ActionScript 3.0 обеспечивает возрастание производительности, по сравнению с ActionScript 1.0/2.0, до 700 раз (это лишь обработка инструкций, не затрагивая графику). ActionScript 3.0 позволяет работать с бинарными данными, с BitMap (что обеспечивает значительный прирост производительности: до 10000 раз). ActionScript 3.0 по скорости приблизился к таким языкам программирования, как Java и C++.

 

Flash одновременно употребляется и как название формата (флеш-фильмы, флеш-ролики) (полное название — Flash Movie), однако формат называется «SWF», что произносится как англ. swiff

 

При создании продукта можно использовать медиа, звуковые и графические файлы, можно создавать интерактивные интерфейсы и полноценные веб-приложения с использованием PHP и XML.

 

Flash-файлы имеют раcширение .swf и просматриваются с помощью собственнического Flash Player, который может быть установлен как плагин для браузера. Распространяется бесплатно через сайт Adobe. Исходные файлы с расширением .fla создаются в среде разработки Adobe Flash, а потом компилируются в понимаемый Flash Player формат — .swf.

Также swf-файлы можно просматривать с помощью различных свободных плейеров, например, Gnash или swfdec.

    В основе Flash лежит векторный морфинг, то есть плавное «перетекание» одного ключевого кадра в другой. Это позволяет делать достаточно сложные мультипликационные сцены, задавая лишь несколько ключевых кадров для каждого персонажа.










Последнее изменение этой страницы: 2018-04-12; просмотров: 329.

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