Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
игс-ответы.docx
Скачиваний:
7
Добавлен:
02.08.2019
Размер:
296.77 Кб
Скачать
  1. Тени. Модификация алгоритма с 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 - старое значение интенсивности в буфере кадра

  1. Фактура. Нанесение узора на поверхность.

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

Впервые метод для нанесения рисунка (узора) на поверхность предложил Кэтмул. Этот способ вытекает из его алгоритма разбиения для криволинейных поверхностей. Блинн и Ньюэл усовершенствовали подход Кэтмула и включили в алгоритм отражение и блики на криволинейных поверхностях.

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

или

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]