Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Комп_Граф / КГ_курс лекций.doc
Скачиваний:
191
Добавлен:
08.06.2015
Размер:
1.31 Mб
Скачать

4.14. Алгоритмы трехмерной визуализации

Выше были рассмотрены отдельные вопросы, касающиеся синтеза изображений пространственных сцен. Изложенные методы служат основой разработки общих алгоритмов визуализации для конкретных приложений. Отметим, что наряду с термином «визуализация» широко используется термин «рендеринг» (rendering) [8]. Рендеринг – термин, обозначающий в компьютерной графике процесс получения изображения по модели сцены с помощью компьютерной программы.

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

Алгоритмы полутоновой визуализации пространственных сцен можно разделить на два вида:

  • алгоритмы с прямыми методами вычислений;

  • алгоритмы, основанные на полигональной аппроксимации криволинейных поверхностей.

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

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

К их недостатокам следует отнести высокую алгоритмическую сложность и большую трудоемкость разработки программ.

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

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

Достоинствами полигональных алгоритмов являются:

  • универсальность, т.е. возможность визуализации любых классов поверхностей;

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

К недостаткам полигональных алгоритмов следует отнести:

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

  • методическую погрешность как в геометрии объектов, так и в фотометрических расчетах;

  • необходимость пересчета аппроксимации поверхностей при масштабировании объектов для оптимизации погрешности и объема вычислений;

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

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

  1. Выполнить полигональную аппроксимацию криволинейных поверхностей.

  2. Выполнить преобразования к мировой системе координат.

  3. Выполнить преобразование к видовой системе координат.

  4. Рассчитать нормальные вектора Ns единичной длины в узловых точках криволинейных поверхностей.

  5. Заполнить Z-буфер значениями zmax.

  6. Для всех поверхностей Si выполнить п. 6.1.

  1. Для всех треугольников Pij поверхности Si выполнить п. 6.1.1.

6.1.1. Если треугольник Pij потенциально виден, то выполнить пп. 6.1.2 – 6.1.3.

6.1.2. По вершинам P1, P2, P3 треугольника найти границы сканирования Ymin и Ymax.

6.1.3. Для каждой строки Y из [Ymin . . Ymax] выполнить пп. 6.1.3.1 – 6.1.3.3.

6.1.3.1. Рассчитать левую xl и правую xr границы сегмента в строке Y.

6.1.3.2. По формуле интерполяции по векторам N1, N2, N3 в вершинах рассчитать нормальные вектора Nl и Nr для точек (xl, Y) и (xr, Y).

6.1.3.3. Для каждого x из [xl . . xr] выполнить пп. 6.1.3.3.1 – 6.1.3.3.2.

          1. Из уравнения плоскости, содержащей треугольник Pij, для точки (x, Y) вычислить z.

          2. Если z < Z [Y, x], то для точки (x, Y, z)

на основе векторов Nl и Nr вычислить по формуле интерполяции нормальный вектор N;

выполнить нормирование вектора N;

вычислить цветовые компоненты Ir, Ig, Ib и сформировать

код цвета пикселя; вывести пиксель в видеопамять;

Z [Y, x] = z.

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

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

Подробное изложение некоторых наиболее известных алгоритмов визуализации содержится в работах [5, 8].

Соседние файлы в папке Комп_Граф