Skip to content

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

Alice edited this page Jun 14, 2020 · 3 revisions

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

Материалы Курова

В тени находятся те участи поверхностей, на которые не попадает свет от источников освещения.
Полная тень и неполная тень.
Если на сцене несколько источников света, то можно считать находящиеся в полной тени те участники поверхности на которые не попадает ни от одного источника света (Они должны быть абсолютно черные).
При этом в полутени находятся те участки поверхности, которые освещаются не всеми источниками света.
Участки поверхности, которые освещаются всеми источниками - они освещены полностью.

Тень не зависит от положения наблюдателя. Но, мы строим изображения отталкиваясь от положение его взгляда, поэтому не все тени будут видимы наблюдателю.

Участи поверхности, которые находятся в тени, можно рассчитать один раз, т.к. тени не изменятся при изменении положения наблюдателя. Но, в зависимости от положения наблюдателя будут определяться видимые тени.

Из лекции:
Тени не зависят от положения наблюдателя, но нас интересуют, как правило, видимые из положения наблюдателя тени.

Тени бывают двух видов:

Собственные - возникают в том случае, когда одни грани объекта тела препятствуют попаданию света на другие грани.

Задача определения граней, находящиеся в собственной тени (1 этап алг. Робертса):
Определение невидимых граней. Положения наблюдателя совместить с положением источника и найти невидимые грани, они будут находится в тени.

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

  1. Участок поверхности должен находится в тени.
  2. Они должны быть видимы наблюдателю.

Ответ на вопрос:

  1. Какие тени мы различаем.
  2. Зависит положение наблюдателя или нет.
  3. Даст нам задачу на которой нужно будет определить грани, которые в тени и определить грани, которые дадут видимую тень.

Тени существуют объективно, не зависят от наблюдателя.
В каком случае наблюдатель не видит тени? Если вектор взгляда совпадает с вектором распространения света. Т.е. наблюдатель видит тень, если его положение не совпадает с положением источника.

Проективные - возникают в случае, когда одно тело препятствует попаданию света на другое тело.
В нашем примере (выше) параллелепипед будет препятствовать попаданию света на какие-то участки поверхности стола (Эти участки не будут освещаться.).

Решение этой задачи чисто геометрическое:
Чтобы найти проективную тень, нужно найти проекцию одного объекта на поверхность другого.
Если на конечном расстоянии находится источник света, то нужно найти проекции грани, которые находятся в тени на поверхность другого тела.

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

Можно это делать (учитывать), но это будет неудобно, громоздко. По его мнению каждый инструмент нужно использовать в соответствие с его прямым назначением, если алгоритм предназначен для удаления невидимых поверхностей, то для решения этой задачи его нужно и использовать. А попытка с его помощью решить другие задачи может быть неудачной или очень громоздкой.

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

Clone this wiki locally