exam40 - MiAneko24/bmstu-cg GitHub Wiki
40. Построение теней при создании реалистических изображений. Учет теней в алгоритмах удаления невидимых поверхностей.
В эту хуйню наверное нужно добавить каких-то картинок, чтобы их Курову нарисовать.
Построение теней при создании реалистических изображений
- Если положение источника света и наблюдателя совпадают, то тени учитывать не надо!
- Положение теней не зависит от наблюдателя, поэтому тени достаточно расчитать один раз.
Тень состоит из двух частей: полутени и полной тени.
- Полная тень - центральная, темная, резко очерненная часть.
- Полутень - более светлая часть.
В КГ обычно используют точечные источники освещения, которые создают только полную тень.
Сложность вычислений обычно зависит от положения источников света.
Источник света находится в бесконечности. Используется ортогональное проецирование.
Источник расположен на конечном расстоянии, но вне поля зрения наблюдателя. Используется перспективная проекция.
Источник света в поле зрения наблюдателя. Пространство делят на учатски и определяют тень для каждого участка.
При построении теней нужно два раза удалить невидимые поверхности, для каждого источника и для наблюдателя.
Различают собственные тени и проекционные. *
- Собственная тень - сам объект препятствует попаднию свету на грани.
- Проекционная тень - другой объект попаданию света на объект.
Для нахождения таких теней нужно построить проекцию всех нелицевых граней на сцену.
- Центр проекции хранится находится в источнике света.
- Теневые многоугольники заносятся и хранятся в виде контуров (для оптимизации размера)
- Для разных точек наблюдения нет смысла пересчитывать каждый раз, т.к. они изменятся только при изменении источников света.
Учет теней в алгоритмах удаления невидимых поверхностей.
Учет теней и фактуры в наиболее полном виде возможен при построении сцены с использованием алгоритма трассировки лучей в сочетании с глобальной моделью освещения. Построение теней в сочетании с удалением невидимых поверхностей требует дополнительных усилий и использования дополнительных СД.
Модификация z-буффера:
Так же учет теней возможен в алгоритме Вейлера-Азертона и алгоритмах построчного сканирования.
Модицификация Вейлера-Азертона:
1. На первом шаге с помощью алгоритма удаления невидимых поверхностей выбираются освещенные, т. е. видимые из положения источника грани. Для повышения эффективности в памяти хранятся именно они, а не невидимые грани. Т. к. это удвоило бы количество обрабатываемых граней для выпуклого многоугольника из-за того, что нелицевые грани обычно отбрасываются до применения алгоритма удаления невидимых поверхностей. Освещенные многоугольники помечаются и преобразуются к исходной ориентации, где они приписываются к своим прототипам в качестве многоугольников детализации поверхности. Чтобы не получить ложных теней сцену надо рассматривать в пределах видимого или отсекающего объема, определенного положением источника. Иначе область вне этого объема окажется затененной и наблюдатель увидит ложные тени. Это ограничение требует также, чтобы источник не находился в пределах сцены, т. к. в этом случае не существует перспективного или аксонометрического преобразования, которое бы охватывало всю сцену.
2. На втором шаге объединенные данные о многоугольниках обрабатываются из положения наблюдателя. Если какая-то часть не освещена, применяется соответствующее правило затенения. Если источников несколько, то используется несколько наборов освещенных граней.
Следующий вопрос: 41. Учет прозрачности в модели освещения. Учет прозрачности в алгоритмах удаления невидимых поверхностей.
Предыдущий вопрос: 39. Определение нормали к поверхности и вектора отражения ( 4 способа) в алгоритмах построения реалистических изображений.