Алгоритм - Учебный центр

Версия сайта для слабовидящих
Заполните форму ниже! Мы вам перезвоним!

Нажав на кнопку "Отправить", Я даю своё согласие на автоматизированную обработку указанной информации, распространяющейся на осуществление всех действий с ней, включая сбор, передачу по сетям связи общего назначения, накопление, хранение, обновление, изменение, использование, обезличивание, блокирование, уничтожение и обработку посредством внесения в электронную базу данных, систематизации, включения в списки и отчетные формы.


Основные понятия трехмерной компьютерной графики

Основные понятия трехмерной компьютерной графики

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

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

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

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

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

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

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

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

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

Вычисление координат вершин. Процессор вычисляет позицию каждой вершины для каж­дого объекта в мировой системе координат.

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

Отбрасывание скрытых поверхностей. Изображать невидимые поверхности излишне. Процессор должен распознавать видимые поверхности и отбрасывать невидимые.

Вычисление координат проекций. Дисплей работает всего лишь как двумерное устройст­во, наподобие куска стекла, через которое вы смотрите на трехмерную сцену. Чтобы про­моделировать это в компьютере, нам нужно пересчитать координаты проекций вершин ка­ждого многоугольника из системы координат в пространстве в систему координат на плос­кости (поверхности экрана).

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

Большинство современных наборов микросхем 3D-акселераторов  обеспечивают выполнение следующих  функций растеризации:

 - растровое преобразование - определение того, какие пиксели экрана покрываются каждым из примитивов;

 - обработка полутонов - цветовое наполнение пикселей с плавными цветовыми пере­ходами между объектами;

 - образование текстуры -  наложение на примитивы двухмерных изображений и по­верхностей;

 - определение видимости поверхностей - определение пикселей, покрываемых бли­жайшими к зрителю объектами.

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

Когда два объекта перекрываются, нужно выяснить, какой из них находится впереди, чтобы знать, какие пиксели объекта нужно показать на дисплее. Область, в которой пересекаются две фигуры,  можно описать, указав для каждого пиксела фигур величину расстояния от него до условного заднего плана. Если дополнить обычную видеопамять картой этих расстояний для каждого пикселя, то будет всегда известно, нужно ли закрашивать конкретный пиксель: если значение расстояния (или значение Z) у пикселя меньше, значит, он позади и его не нужно закрашивать. Эту идею можно тоже  реализовать аппаратно.


Лицензия