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

Подповерхностное рассеяние ( SSS ), также известное как подповерхностный перенос света ( SSLT ) [1], представляет собой механизм переноса света, при котором свет, проникающий через поверхность полупрозрачного объекта, рассеивается при взаимодействии с материалом и выходит с поверхности в другом месте. точка. Свет, как правило, проникает через поверхность и несколько раз отражается под неправильными углами внутри материала, прежде чем выйдет обратно из материала под другим углом, чем это было бы, если бы он отражался непосредственно от поверхности. Подповерхностное рассеяние важно для реалистичного3D компьютерная графика , необходимая для визуализации таких материалов, как мрамор , кожа , листья , воск и молоко . Если подповерхностное рассеяние не реализовано, материал может выглядеть неестественно, как пластик или металл.

Методы рендеринга [ править ]

Большинство материалов, используемых сегодня в компьютерной графике в реальном времени, учитывают только взаимодействие света с поверхностью объекта. На самом деле многие материалы слегка полупрозрачны: свет проникает на поверхность; поглощается, рассеивается и повторно излучается - возможно, в другой точке. Кожа - хороший тому пример; только около 6% отражательной способности является прямым, 94% приходится на подповерхностное рассеяние. [2] Неотъемлемое свойство полупрозрачных материалов - абсорбция. Чем дальше через материал проходит свет, тем больше его доля поглощается. Чтобы смоделировать этот эффект, необходимо измерить расстояние, которое свет прошел через материал.

SSS на основе карты глубины [ править ]

Оценка глубины с использованием карт глубины

Один из методов оценки этого расстояния - использовать карты глубины [3] , аналогично картированию теней . Сцена визуализируется с точки зрения источника света в карту глубины, так что расстояние до ближайшей поверхности сохраняется. Затем карта глубины проецируется на нее с использованием стандартного проекционного наложения текстуры, и сцена повторно визуализируется. В этом проходе при закрашивании заданной точки расстояние от источника света в точке, где луч вошел на поверхность, может быть получен простым поиском текстуры. Вычитая это значение из точки, в которой луч вышел из объекта, мы можем получить оценку расстояния, которое свет прошел через объект. [ необходима цитата ]

Измерение расстояния, полученное этим методом, можно использовать несколькими способами. Один из таких способов - использовать его для индексации непосредственно в созданную художником одномерную текстуру, которая экспоненциально спадает с увеличением расстояния. Этот подход в сочетании с другими более традиционными моделями освещения позволяет создавать различные материалы, такие как мрамор , нефрит и воск . [ необходима цитата ]

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

Как видно на изображении восковой головы справа, свет не рассеивается при прохождении через объект с использованием этой техники; особенности спины четко показаны. Одно из решений этого - взять несколько образцов в разных точках на поверхности карты глубины. В качестве альтернативы можно использовать другой подход к аппроксимации, известный как диффузия в пространстве текстуры . [ необходима цитата ]

Распространение текстурного пространства [ править ]

Как отмечалось в начале раздела, одним из наиболее очевидных эффектов подповерхностного рассеяния является общее размытие рассеянного освещения. Вместо того, чтобы произвольно изменять функцию диффузии, диффузию можно более точно моделировать, моделируя ее в пространстве текстуры . Этот метод был впервые в оказании лица в The Matrix Reloaded , [5] , но в последнее время упал в область техники в режиме реального времени.

Метод разворачивает сетку объекта с помощью вершинного шейдера, сначала вычисляя освещение на основе исходных координат вершины. Затем вершины переназначаются с использованием координат текстуры UV в качестве положения вершины на экране, подходящего преобразования из диапазона [0, 1] координат текстуры в диапазон [-1, 1] нормализованных координат устройства. Освещая развернутую сетку таким образом, мы получаем 2D-изображение, представляющее освещение на объекте, которое затем можно обработать и повторно применить к модели в виде карты освещения.. Чтобы имитировать диффузию, текстуру карты освещения можно просто размыть. Рендеринг освещения в текстуру с более низким разрешением сам по себе обеспечивает определенное размытие. Степень размытия, необходимая для точного моделирования подповерхностного рассеяния в коже, все еще активно исследуется, но выполнение только одного размытия плохо моделирует истинные эффекты. [6] Чтобы имитировать зависящий от длины волны характер диффузии, образцы, используемые во время (гауссовского) размытия, могут быть взвешены по каналам. Это своего рода художественный процесс. Для кожи человека наибольшее рассеяние наблюдается в красном, затем в зеленом, а синий имеет очень небольшое рассеяние. [ необходима цитата ]

Основное преимущество этого метода - независимость от разрешения экрана; затенение выполняется только один раз для каждого текселя в текстурной карте, а не для каждого пикселя объекта. Таким образом, очевидное требование состоит в том, чтобы объект имел хорошее UV-отображение, в котором каждая точка текстуры должна соответствовать только одной точке объекта. Кроме того, использование диффузии текстурного пространства обеспечивает один из нескольких факторов, которые способствуют мягким теням, устраняя одну причину недостаточной реалистичности отображения теней . [ необходима цитата ]

См. Также [ править ]

  • Функция распределения двунаправленного рассеяния

Ссылки [ править ]

  1. ^ «Отделка: подземный легкий транспорт» . POV-Ray вики . 8 августа 2012 г.
  2. ^ Кришнасвами, А; Бароноски, ГВГ (2004). «Биофизическая спектральная модель взаимодействия света с кожей человека» (PDF) . Форум компьютерной графики . Блэквелл Паблишинг. 23 (3): 331. DOI : 10.1111 / j.1467-8659.2004.00764.x . S2CID 5746906 .  
  3. ^ Грин, Саймон (2004). "Аппроксимация подповерхностного рассеяния в реальном времени". GPU Gems . Аддисон-Уэсли Профессионал: 263–278.
  4. ^ Надь, Z; Кляйн, Р. (2003). «Глубокий пилинг для объемной визуализации на основе текстуры» (PDF) . 11-я Тихоокеанская конференция по компьютерной графике и приложениям : 429–433. DOI : 10,1109 / PCCGA.2003.1238289 . ISBN  0-7695-2028-6.
  5. ^ Борщуков, Г; Льюис, JP (2005). «Реалистичный рендеринг человеческого лица для« Матрицы: перезагрузка » » (PDF) . Компьютерная графика . ACM Press.
  6. ^ d'Eon, E (2007). «Продвинутая обработка кожи» (PDF) . GDC 2007 .

Внешние ссылки [ править ]

  • Сайт Хенрика Ванна Йенсена о подповерхностном рассеянии
  • Научная статья Дженсена о моделировании подповерхностного рассеяния
  • Подповерхностное рассеяние: использование шейдера Misss_Fast_Simple_Maya - учебник по Maya
  • Учебное пособие по 3d Studio Max - исчерпывающее руководство по использованию подповерхностного рассеяния в 3dsMax
  • Подповерхностное рассеяние в Blender .