Self-Shadowing — это эффект освещения в компьютерной графике , используемый в приложениях 3D- рендеринга , таких как компьютерная анимация и видеоигры . Самозатенение позволяет нестатичным объектам в окружающей среде, таким как игровые персонажи и интерактивные объекты (ведра, стулья и т. д.), отбрасывать тени на себя и друг на друга. Например, без самозатенения, если персонаж кладет правую руку на левую, правая рука не будет отбрасывать тень на левую руку. Если тот же персонаж кладет руку на мяч , эта рука будет отбрасывать тень на мяч.
Необходимо указать, является ли отбрасываемая тень динамической или статической. Стена с тенью на ней — это статичная тень. Стена не движется, поэтому ее геометрическая форма не будет перемещаться или меняться в сцене. Динамическая тень — это то, что имеет геометрические изменения в пределах сцены.
Методы самозатенения имеют компромиссы между качеством и скоростью в зависимости от желаемого результата. Чтобы поддерживать скорость, некоторые методы полагаются на быстрые решения с низким разрешением, что может привести к неправильно выглядящим теням, которые могут быть неуместны в сцене. Другие требуют, чтобы CPU и GPU вычисляли с помощью алгоритмов точное местоположение и форму тени с высоким уровнем точности. Это требует больших вычислительных затрат, с которыми старые машины не могли справиться.
Была создана техника, в которой тень на неровной поверхности может быть быстро рассчитана путем нахождения высоких точек вдоль источника света и игнорирования любых других геометрических точек под вершинами. Представьте себе восход солнца в горах, где свет падает на вершину позади вас, но вы все еще в темноте. Компьютеру не нужно беспокоиться о том, что вам нужна тень или свет, поскольку вы находитесь ниже вершины позади вас. «Height Field Self-Shadowing» визуализирует собственные тени на динамических полях высоты в динамических световых средах в реальном времени. [1]
Самозатенение может использоваться для интерактивной анимации волос, которую обычно очень сложно визуализировать на компьютерах из-за значительного увеличения индивидуальных геометрических форм, которые могут принимать волосы. Самозатенение является важной частью 3D-приложения, которое способствует созданию впечатления объема. [2]
Объем тени — один из способов использования самозатенения в 3D-изображении или сцене. Метод в основном заставляет 3D-объект занимать замкнутый объем в сцене, где отбрасывается тень. Это позволяет рендереру , или шейдеру , выполнять анализ того, находится ли точка или пиксель внутри затененной области. Это в конечном итоге позволяет программе определить, как будет освещен объект.
3D- картирование теней — еще один метод, который создает приблизительные тени из заданного положения, создавая очень размытые тени, которые могут быть не совсем точными.
Крис Грин из Valve , создателя видеоигр , говорит, что данные карты рельефа выводятся из геометрических описаний поверхности объектов, существенные световые сигналы из-за окклюзии освещения деталями поверхности не рассчитываются. [3] Распространенным решением является использование дополнительного канала текстуры для создания поля окклюзии окружающего света . Это обеспечивает только эффект затемнения, который не связан с направлением источника света, действующего на поверхность. [3]
Теневой объем был предложен Фрэнком Кроу в 1977 году. [4] Преимущество теневого объема состояло в том, что его можно было использовать для затенения всего, включая самого себя.