3D Graphics

Трехмерная графика. Визуальное отображение сцены или объекта по трем осям: высота, ширина и глубина (x, y и z) 


Камеры

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

Название        


1. Org        Координаты камеры.

2. Direction/Target        Направление взгляда (Либо как смещение от координат камеры, либо абсолютные координаты).

3. UpVector        Вектор верха наблюдателя(камеры).(Aбсолютные)

4. Focus        Фокусное расстояние (если <=0, то подбирается автоматически)

5. Far_Clip        дальняя отсекающая плоскость

6. Near_Clip        ближняя отсекающая плоскость

7. Отсечение по ближней и дальней плоскости зависит от драйвера(может ли он отсекать часть грани, либо только всю).

8. Extent        Масштабы по всем трем осям.

9. Offset        Смещение относительно центра проекции (0,5 - центр)

10. HazeColor        Цвет тумана (RGB)

11. HazeScale        Уровень тумана

12. Background        Цвет подложки (RGB)

13. RenderName        Имя драйвера, осуществляющего визуализацию.

14. RenderType        Тип визуализации:

· RENDER_DISABLED        без визуализации

· RENDER_BOUNDED        ограничивающие прямоугольники

· RENDER_POINTS вершины объектов

· RENDER_WIREFRAME        проволочные модели

· RENDER_FACETED грани.Режимы визуализации:

· RENDER_TRANSPARENTпустые места - прозрачны

· RENDER_USELIGHT        использовать источники света

· RENDER_HAZE        с учетом тумана

· RENDER_SHADED        применять сглаживание (зависит от драйвера)

· RENDER_ZSORT        сортировать по Z (зависит от драйвера)

· RENDER_ALLFACES        вывод всех граней (без проверки на         ориентацию)

· RENDER_NOBUFFER        не буферизировать сцену на         промежуточном битовом образе

· RENDER_WAITCURSOR        во время визуализации выводить курсор-         песочные часы.

15.        Flags        Флаги камеры

16.        Perspective        Тип перспективы:PERSPECTIVE_NO - без перспективыPERSPECTIVE_CENTRAL - центральная перспективаPERSPECTIVE_SFERICAL - сферическая перспектива


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


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

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

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


3d Модель


Для изображения трехмерных объектов на экране монитора требуется проведение серии процессов (обычно называемых конвейером) с последующей трансляцией результата в двумерный вид. Первоначально, объект представляется в виде набора точек, или координат, в трехмерном пространстве. Трехмерная система координат определяется тремя осями: горизонтальной, вертикальной и глубины, обычно называемых, соответственно осями x, y и z. Объектом может быть дом, человек, машина, самолет или целый 3D мир и координаты определяют положение вершин (узловых точек), из которых состоит объект, в пространстве. Соединив вершины объекта линиями, мы получим каркасную модель, называемую так из-за того, что видимыми являются только края поверхностей трехмерного тела. Каркасная модель определяет области, составляющие поверхности объекта, которые могут быть заполнены цветом, текстурами и освещаться лучами света. 


Теперь подробно опишем  структуру первичного трехмерного объекта.

 Каждый объект состоит из вершин

Вершины нумеруются от 0 до PointCount-1,где PointCount - количество вершин в объекте.

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

 На вершины натягивается поверхность. Которая разбивается на многоугольники. Каждый многоугольник задается трехмерным примитивом. Примитив содержит ссылки на вершины (от 2 до 16). Причем вершины должны быть заданны в определенном порядке. Это для того, что бы по порядку обходы вершин можно было определить видимость каждой грани.  Кроме вершин задается цвет, материал и атрибуты. Атрибуты примитива определяют:

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

2.  Видимость примитива только при определенной ориентации или в любом случае.

Примитивы нумеруются от 0 до PrimCount, где PrimCount -количество примитивов в объекте.


 Локальная матрица трансформации - определяет перевод из локальной системы координат в мировые.

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

· отображение осей локальной системы координат.

· отображение обрамляющего прямоугольника

· отображение вершин

· рисование всех граней

· отключение сглаживания для этого объекта


Локальная система координат

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


Мировая система координат

Система координат трехмерного пространства. 


Ambient

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


Ambient

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


Atmospheric Effect

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


Color

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


Colored lighting

Цветовое освещение. Освещение источниками разного цвета, при этом происходит смешение цвета. 


Directional

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


Flat Shading (Flat)

Метод затенения, называемый также постоянным затенением. Поверхность объекта, построенного с использованием этого метода, получается наиболее низкого качества, и изображение выглядит как бы поделенным на блоки. Flat Shading даёт более худший результат, чем, допустим, метод Ошибка! Закладка не определена., но, в то же время и работает значительно быстрее. 


Fogging (Затуманивание)

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


Gouraud Shading (Smooth shading)

Затенение методом Гуро (или плавное затенение), один из наиболее популярных алгоритмов затенения, который обеспечивает прорисовку плавных теней вокруг изображаемого обекта, что позволяет изображать трехмерные объекты на плоском экране.
Метод назван по имени его разработчика, француза Генри Гуро. Gouraud Shading или цветовая интерполяция - процесс, с помощью которого цветовая информация интерполируется по поверхности многоугольника для определения цветов в каждом пикселе. Информация о цвете связывается с каждым пикселом каждого многоугольника с использованием линейной интерполяции по всему множеству многоугольников.
Или, затенение Гуро работает, считывая информацию о цвете каждого треугольника, на которые разбита поверхность объекта, и плавно интерполирует интенсивность красного, зеленого и голубого цветов по трем координатам.
Этот метод уменьшает "блочность" изображения (смотри Ошибка! Закладка не определена. ) и используется для отображения металлических и пластиковых поверхностей.
В результате действия этого алгоритма, должен создаваться эффект, заставляющий глаза зрителя экстраполировать информацию о глубине и кривизне поверхности изображаемого объекта. 


Hidden Surface Removal

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

Поверхность может быть невидима по следующим причинам:

· Она не попадает в призму отображения камеры (наблюдатель смотрит в другую сторону)

· Поверхность загораживается другими поверхностями. Для определения этого факта может использоваться сортировка по Z, Z - буфер и другие методы.

· Поверхность повернута к наблюдателю невидимой стороной. Определяется по направлению вектора нормали к поверхности. Как правило применяется для задания замкнутых фигур.


Lighting

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


Projection (Проецирование)

Процесс преобразования трех размерностей в две. Т.е. преобразование видимой части 3D объекта для отображения на двумерном дисплее. Может использовать перспективу и ли нет.


Rendering

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


В текущей версии имеется два алгоритма рендеринга:

Встроенный и Z-буфер.

Встроенный

Возможности и основные характеристики:

  Программный вывод через GDI

    Заполненные полигоны;

    Полилинии;

    Точки;

  Цветовое разрешение - текущий WINDOWS;

  Cглаживание - отсутствует;

  Максимальная сложность - 32000 примитивов;

  Предвапительная сортировка по Z.


Resolution

Разрешение. Количество пикселей представленное битами в видеопамяти, или адресуемое разрешение. Видеопамять может организовываться соотношением пикселов (битов) по оси x (пикселы на строке) к числу пикселов по оси y (столбцы) и к размеру отводимой памяти на представление глубины цвета. Стандартная видеопамять VGA 640 пикселов на 480 пикселов и, обычно, с глубиной представления цвета 8 бит. Чем выше разрешение, тем более детально изображение, тем больше нужно хранить о нем информации. Но не вся хранимая информация может быть отображена на дисплее. 


RGB

Система цветообразования, в которой конечный цвет получается за счет смешения, с различной интенсивностью, трех основных цветов: красного (Red), зеленого (Green) и синего (Blue). Самое известное устройство, которое использует систему RGB, это цветной монитор


Specular highlights

Световая характеристика, которая определяет то, как свет будет отражаться от объектов. 


Spot

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


Transparency

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


Texel

Элемент текстуры определенный пиксель в текстуре. 

Texture Anti-aliasing

Удаление нежелательных искажений растровых изображений с помощью интерполяции текстурных изображений. 


Texture Mapping

Texture mapping базируется на сохраненных битмэпах, состоящих из текстурных пикселов. На объект "натягивается" текстурное изображение для создания реалистичного представления объекта в трехмерном пространстве. 


True color

Истинный (полный) цвет. Если на экране отображается цвет с глубиной представления 24 бит или просто выводится 16.7 миллионов цветов. 


Texture Mapping

Texture mapping базируется на сохраненных битмэпах, состоящих из текстурных пикселов. На объект "натягивается" текстурное изображение для создания реалистичного представления объекта в трехмерном пространстве. 


Transformation

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


Vertex (Вершина)

Точка в трехмерном пространстве, где соединяются 2 линии. 


Z buffer

Возможности и основные характеристики:

  Программный Z буфер(оптимизированный для Intel 486®)

      Заполненные полигоны;

      Текстурированные полигоны;

      Заполненные,сглаженные, полигоны;

      Полилинии;

      Точки;

  Глубина Z буфера - 32 бита;

  Цветовое разрешение 24 бита;

  Cглаживание (подобно Гуро);

  Наложение текстур с коррекцией перспективы;

  Отсечение по глубине;

  Максимальная сложность - неограниченна;

  Версия 1.04


В следующих версиях будут выпущены драйверы для средств реализующих аппаратный рендеринг.


Z-sorting (Z сортировка)

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


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

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


Z-buffer

Часть графической памяти, в которой хранятся расстояния от точки наблюдения до каждого пиксела (значения Z). Z-buffer определяет, какой из многих перекрывающихся многоугольников наиболее близок к плоскости наблюдения. 
Также, как буфер кадра содержит всю информацию о цвете для каждого пиксела на экране, z-буфер, или буфер глубины, содержит всю информацию о глубине представления цвета для всех пикселов на экране.
И также, как большее число битов на пиксель для цвета в буфере кадра соответствует большему количеству цветов, доступных в системе изображения, так и количество бит на пиксель в z-буфере соответствует большему числу элементов, определяющих глубину цвета изображаемой картинки. Обычно, z-буфер имеет не менее 16 бит на пиксел, для представления глубины цвета. Аппаратные акселераторы 3D графики должны иметь собственный z-буфер на графической карте, чтобы избежать удвоенной нагрузки на системную шину при передаче данных. Для Z-буфера можно использовать любой тип видеопамяти, как DRAM, SGRAM, EDO DRAM, так и VRAM, WRAM. 

Created with the Personal Edition of HelpNDoc: From Word to ePub or Kindle eBook: A Comprehensive Guide