exam40 - MiAneko24/bmstu-cg GitHub Wiki

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

В эту хуйню наверное нужно добавить каких-то картинок, чтобы их Курову нарисовать.

Построение теней при создании реалистических изображений

  • Если положение источника света и наблюдателя совпадают, то тени учитывать не надо!
  • Положение теней не зависит от наблюдателя, поэтому тени достаточно расчитать один раз.

Тень состоит из двух частей: полутени и полной тени.

  • Полная тень - центральная, темная, резко очерненная часть.
  • Полутень - более светлая часть.

В КГ обычно используют точечные источники освещения, которые создают только полную тень.
Сложность вычислений обычно зависит от положения источников света.

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

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

  • Собственная тень - сам объект препятствует попаднию свету на грани.
  • Проекционная тень - другой объект попаданию света на объект.

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

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

Учет теней в алгоритмах удаления невидимых поверхностей.

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

Модификация z-буффера:

bigdick

Так же учет теней возможен в алгоритме Вейлера-Азертона и алгоритмах построчного сканирования.

dick

Модицификация Вейлера-Азертона:

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

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

Следующий вопрос: 41. Учет прозрачности в модели освещения. Учет прозрачности в алгоритмах удаления невидимых поверхностей.

Предыдущий вопрос: 39. Определение нормали к поверхности и вектора отражения ( 4 способа) в алгоритмах построения реалистических изображений.