- •Машинная графика и геометрическое моделирование.
- •Касательная плоскость и нормаль к поверхности.
- •Простейший способ определения цвета точек поверхности. Полигональная аппроксимация поверхности. Flat-закраска.
- •Алгоритмы унЛиП. Цель, классификация, сложность.
- •Алгоритмы унЛиП. Алгоритм, использующий z-буфер.
- •Алгоритмы унЛиП. Алгоритм Робертса. Нахождение ребер, экранируемых другими телами. Точки протыкания.
- •Тени. Модификация алгоритма с z - буфером.
- •Фактура. Создание шероховатостей на поверхности.
- •Глобальная модель освещения с трассировкой лучей.
- •Специфика применения OpenGl для построения реалистических изображений.
- •Основные возможности OpenGl.
- •Удаление невидимых линий и поверхностей. Z-буферизация.
Тени. Модификация алгоритма с z - буфером.
Можно изменить алгоритм, использующий z-буфер, так, чтобы он включал построение теней. Модифицированный алгоритм состоит из двух шагов:
Строится сцена из точки наблюдения, совпадающей с источником. Значения z для этого вида хранятся в отдельном теневом z-буфере. Значения интенсивности не рассматриваются.
Затем сцена строится из точки, в которой находится наблюдатель. При обработке каждой поверхности или многоугольника его глубина в каждом пикселе сравнивается с глубиной в z-буфере наблюдателя. Если поверхность видима, то значения х, у, z из вида наблюдателя линейно преобразуются в значения х', у', z' на виде из источника. Для того чтобы проверить, видимо ли значение z' из положения источника, оно сравнивается со значением теневого z-буфера при х', у'. Если оно видимо, то оно отображается в буфер кадра в точке х, у без изменений. Если нет, то точка находится в тени и изображается согласно соответствующему правилу расчета интенсивности с учетом затенения, а значение в z-буфере наблюдателя заменяется на z'.
Прозрачность. Модификация алгоритма с Z - буфером.
В непосредственный алгоритм, использующий Z - буфер, эффект прозрачности ввести нельзя. Для этого чтобы его учесть необзодимы отдельные буферы прозрачности, интенсивности,весовых коэфициентов, а также отметить прозрачные многоугольники в структуре данных.
Алгоритм:
Для каждого многоугольника:
если многоуг. прозрачный, то внести в спсок произрачный многоуг.
если многоуг. непрозрачный, и Z>Z-буфер то записать его в список непрозрачных многоуг. и скорректировать Z буфер.
Для каждого прозрачного многоугольника:
если Z > Z-буфер, то прибавить его коэф прозрачности к значению, содержащемуся в буфере весовых коэфициентов прозрачности, прибавить интенсивность к значению, содержащемуся в буфере интенсивности прозрачности по след. правилу:
I_bn=I_b0 * t_b0 + I_c* t_c
I_bn - новое значение интесивности
I_b0 - старое значение интесивности
t_b0 - старый коэф прозрачности из буфера весовых коэф
I_с- интесивность текущего многоугольника
t_с - коэф прозрачности текущего многоугольника
На последнем этапе объединяем буфер интенсивности для прозрачных и непрозрачных многоугольников:
I_fb=I_b0 * t_b0 + I_fb0*(1- t_b0)
I_fb - окончательная интенсивность в буфере кадра
I_fb0 - старое значение интенсивности в буфере кадра
Фактура. Нанесение узора на поверхность.
В машинной графике фактурой называется детализация строения поверхности. Обычно рассматриваются два вида детализации. Первый состоит в том, чтобы на гладкую поверхность нанести заранее заданный узор. После этого поверхность все равно остается гладкой. Наложение узора на гладкую поверхность выполняется с помощью функции отображения. Второй тип детализации заключается в создании неровностей на поверхности. Такие шероховатые поверхности реализуются путем внесения возмущений в параметры, задающие поверхность.
Впервые метод для нанесения рисунка (узора) на поверхность предложил Кэтмул. Этот способ вытекает из его алгоритма разбиения для криволинейных поверхностей. Блинн и Ньюэл усовершенствовали подход Кэтмула и включили в алгоритм отражение и блики на криволинейных поверхностях.
Главным при нанесении рисунка на поверхность является отображение, поэтому в данном случае задача сводится к преобразованию систем координат. Если рисунок задан в фактурном пространстве в прямоугольной системе координат , a поверхность - в другой прямоугольной системе координат , то для нанесения рисунка на поверхность нужно найти или задать функцию отображения одного пространства на другое, т. е.
или