Подповерхностное рассеивание что это
Магия шейдеров 13: Подповерхностное рассеивание
Я на некоторое время пропадал и моя небольшая рубрика про магию шейдеров на пикабу увядала, let’s make it great again!
Очень классный и простой трюк, я увидел в твиттере у Гарри Алисавакиса (Harry Alisavakis).
Можно создать классную драматическую сцену с таким освещением!
Я бы добавил холодного света снаружи, каких-то елей, может святлячков, а может и горящие красные пары глаз среди деревьев.
Весь исходный код Шейдера для Unity вы найдете на сайте Гарри: https://halisavakis.com/my-take-on-shaders-simple-subsurface.
Смотрите остальные посты про магию шейдеров по тегам ниже
Лига Разработчиков Видеоигр
4.5K постов 19.1K подписчиков
Правила сообщества
— Уважайте чужой труд и используйте конструктивную критику
— Не занимайтесь саморекламой, пишите качественные и интересные посты
— Не употребляйте мат без необходимости
— Посты о Вашей игре с историей её разработки и описанием полученного опыта
— Обучающие материалы, туториалы
— Интервью с опытными разработчиками
— Анонсы бесплатных мероприятий для разработчиков и истории их посещения;
— Ваши работы, если Вы художник/композитор и хотите поделиться ими на безвозмездной основе
НЕ СТОИТ ПУБЛИКОВАТЬ:
— Только гифки/арты/скриншоты из игры. Такие материалы могут сопровождать рассказ об игре или обучающий туториал, но не должны являться основой поста
— Посты, содержащие только идею игры
— Посты, не относящиеся к тематике сообщества
Подобные посты по решению администрации могут быть перемещены из сообщества в общую ленту.
— Публиковать бессодержательные посты с рекламой Вашего проекта (см. следующий пункт), а также все прочие посты, содержащие рекламу/рекламные интеграции
— Выдавать чужой труд за свой
Подобные посты будут перемещены из сообщества в общую ленту, а их авторы по решению администрации могут быть внесены в игнор-лист сообщества.
Ссылка на сторонний ресурс, связанный с игрой, допускается только при следующих условиях:
— Пост должен быть содержательным и интересным для пользователей, нести пользу для сообщества
— Ссылка должна размещаться непосредственно в начале или конце поста и только один раз
— Cсылка размещается в формате: «Страница игры в Steam: URL»
Видел я уже где то такие кхмм, шейдеры
Волшебная гифка получилась.
Чувак, можно задать парочку вопросов по юнити? Который год уже работаю шарпистом, но десктоп меня порядком задолбал, хочу перейти на юнити. Что посоветуешь из материалов по обучению? Интересует сама архитектура игры, как правильно устроить мвс паттерн и не придумывать велосипед. Ну и т.д.
Выглядит круто
Реддитор создаёт визуальные эффекты в программе Blender с использованием отслеживания объектов видеокамерой.
Основные эффекты для начальной сцены в игре. Также игрок будет часто взаимодействовать с объектами в локациях, чтоб находить предметы необходимые для принятия некоторых решений. В противном случае игрок может оказаться в не приятной ситуации например без револьвера, или ключа, которые были бы очень кстати в некоторых случаях.
Но самым важным будет найти фрагменты своих воспоминаний в виде пазла, чтоб узнать, как вы попали в этот беспробудный сон, и кто вы такой…
Визуальный обман
Забавно, как благодаря небольшому наклону досок цвет дороги на набережной меняется. По классике, все зависит от точки зрения.
Думаю, помните прикол с кубом и клеточками, где один и тот же цвет кажется то белым, то серым?
Магия шейдеров 19: ASCII Art Шейдер а-ля Watch dogs от Мэтта Старка
Я возвращаюсь к Магии шейдеров и сегодня хочу, как обычно, не вдаваясь в детали, рассказать как бы я сделал шейдер для такого post-эффекта.
Но, давайте, сначала вспомним: что это за ASCII-арт такой. Как сообщает нам Википедия: ASCII-графика — это форма изобразительного искусства, использующая символы ASCII на моноширинном экране компьютерного терминала или принтера для представления изображений.
Так как бы я сделал?
Сделаем fullscreen post-эффект: 1) Вычисляем Luminance 2) Сжимаем картинку до размеров нашей ASCII-картинки в символах. Сколько символов мы хотим чтобы у нас было на экране? 3) Делаем 1D LUT-текстуру с, отсортированными по количеству белого, символами 4) В последнем пассе используем картинку из шага 2 и LUT-текстуру из шага 3 чтобы отрисовать символы в экранную текстуру.
Простор для применения
— Можно блендиться между исходной текстурой и полученной в результате такого пост-эффекта, чтобы сделать какой-то красивый fade-эффект.
— Можно затенять пиксели символов, я предполагаю будет гораздо более объемная картинка
— Можно сделать цветной и добавить какую-то палитру
Как всегда любые вопросы в ЛС или в предложку можно задавать вконтакте, и мы, наконец, завели канал в телеграме: https://t.me/coremission
Всем гектаров в имениях и легкости в движениях!
Смотрите остальные посты про магию шейдеров по тегам ниже.
Моделирование подповерхностного рассеивания
В этой статье речь пойдёт о быстром fake-методе реализации подповерхностного рассеивания (subsurface scattering) полупрозрачных материалов.
Подповерхностное рассеивание (subsurface scattering, SSS) — это механизм переноса энергии (света), при котором свет, проникая через поверхность полупрозрачного материала, рассеивается внутри самого материала и выходит из материала в другой точке. Рассеивание происходит путем многократного отражения в случайном направлении от частиц материала.
Подповерхностное рассеивание необходимо использовать для правильной отрисовки таких материалов как мрамор, нефрит, воск (парафин), кожа, и пр.
Существует несколько методов реализации подповерхностного рассеивания, но мы остановимся на так называемом fake-методе, который позволит быстро и без существенных затрат смоделировать подповерхностное рассеивание. Итак, начнем!
Для моделирования подповерхностного рассеивания нам придется совсем на немного изменить обычную отрисовку объектов.
Итак, допустим, что у нас уже есть некоторый алгоритм отрисовки объектов. Пусть он использует стандартную модель освещения (модель Ламберта) и некоторую модель вычисления отраженного света (Фонг, Блинн, Кук-Торренс – роли практически не играет). Также может быть алгоритм затенения объектов (карты теней, ambient occlusion). Пускай параметры источника света задаются у нас через колонки некоторой матрицы. В первой колонке – фоновое освещение (ambient), во второй – рассеянное (diffuse), в третьей отраженное (specular). Допустим также, что мы уже вычислили затенение объекта и модель освещения. В общем и целом результирующий цвет будет вычисляться так:
Значит, стандартная отрисовка у нас есть. Выглядеть это будет примерно так:
Мы видим зайца, сделанного из какого-то камня (или покрытого лаком). Давайте начнем делать его нефритовым :).
Для начала нам нужно смягчить тени, поскольку подповерхностное рассеивание подразумевает тот факт, что свет проходит сквозь материал и выходит из него в произвольной точки под произвольным углом. Таким образом освещенность объекта увеличивается. Для моделирования этого эффекта проведем следующие операции:
1) введем новый параметр для осветленной тени на поверхности (старое значение нам все еще нужно для затенения отраженного света):
2) если есть ambient occlusion – то осветлим и его:
3) теперь главное. У нас в vLighting.x храниться угол между источником света и нормалью в данной точке. Сделаем освещение менее зависимым от угла падения света:
Таким образом, вычисление результирующего цвета фрагмента перепишем в таком виде:
Результатом проделанной операции будет вот такое изображение:
Уже ближе? Наверно…, но продолжим.
Теперь будем моделировать зависимость освещенности от расстояния до источника. Чем ближе к источнику света – тем сильнее освещена поверхность и сам материал («подповерхность» :)).
Для начала вычислим расстояние от источника света до текущей точки:
Так как у меня расстояние до источника света большое – то мне приходиться вычитать из реального расстояния большую величину. В общем, это можно сделать так: передавать в шейдер радиус сферы, охватывающей всю модель и вычитать из расстояния до источника света значение (расстояние – радиус) – т.е как бы помещать источник света на границу сферы, охватывающей модель. Расстояние мы вычислили, теперь можно вычислять непосредственно рассеивание:
Коэффициенты, наверно, придется подбирать каждому свои, чтобы добиться примерно вот такой картинки:
Добавим учет рассеивания в финальную часть шейдера вот таким образом:
И получим вот такую картинку:
В общем и целом, наш нефритовый заяц готов. Но есть еще один момент.
Если смотреть через полупрозрачные материалы непосредственно на источник света – то материал становиться светлее. Давайте промоделируем и этот эффект. При взгляде сквозь нашего зайца на источник света без этого эффекта мы будем наблюдать такую картину:
Наш заяц совсем не пропускает свет. Давайте пропустим 🙂
Для этого нам всего лишь нужно найти скалярное произведение между двумя векторами, проходящими через текущую точку, положением камеры и положением источника света.
Мы получим примрно вот такую картинку:
Давайте теперь просто добавим вычисленное значение к уже имеющемуся у нас параметру:
Финальное вычисление мы не изменяем, но теперь наш заяц пропускает свет:
Таким образом финальный шейдер (вернее его дополнение) будет таким:
Теперь у нас получился довольно симпатичный нефритовый заяц.
Напомню вам, что приведенный выше алгоритм – это fake. Если вам необходимо делать честное подповерхностное рассеивание – читайте дополнительную литературу 🙂
Спасибо тем, кто дочитал статью до конца. Удачи вам!
Подп. рассеивание¶
Simulates semi-translucent objects in which light rays enter, bounce around, then exit in a different place. Many organic and inorganic materials are not totally opaque right at the surface, so light does not just bounce off the top surface. Instead, some light also penetrates the skin surface deeply, and scatters around inside, taking on the color of the insides and emerging back out at a different location. Human/animal skin, the skin of grapes, tomatoes, fruits, wax, gels (like honey, or Jello) and so on all have subsurface scattering (SSS), and photo-realism really cannot be achieved without it.
Важно понимать, что подповерхностное и диффузное рассеивание – это одно и то же. Разница заключается в том, насколько далеко свет может диффузно рассеятся под поверхностью, прежде чем он поглотится или отразится обратно.
How It Works¶
На самом деле не практично рассчитывать путь светового луча под поверхностью объекта. Было показано, что в этом нет необходимости и можно воспользоваться другим подходом.
Blender вычисляет подповерхностное рассеивание в два этапа:
Вместо этого давайте посмотрим, что подповерхностное рассеивание делает с чёткими пятнами света.
Без подповерхностного рассеивания
Малый радиус подповерхностного рассеивания
Увеличенный радиус подповерхностного рассеивания
Подповерхностное рассеивание с очень большим радиусом красного
Если вы включите подповерхностное рассеивание, свет будет распределяться по большей области. Размер этой области зависит от значения радиуса. Вместо распространения всех цветов на одинаковое расстояние вы можете указать различные радиусы для каждого из компонентов RGB.
Если вы используете очень большое значение радиуса для цвета, он будет равномерно распределён по всему объекту.
Из-за способа вычисления рассеивания, при использовании больших значений радиуса, вы можете заметить артефакты на окантовке, которые проявляются в виде дополнительного цвета, преобладающего над цветом рассеивания. Выше вы можете видеть голубоватую полосу в освещённой области на последнем изображении. Это нежелательный побочный эффект. Чтобы уменьшить его, используйте несколько проходов с различными радиусами рассеивания и усредните их.
Включение подповерхностного рассеивания¶
Панель подповерхностного рассеивания. Подповерхностное рассеивание уже включено
Для включения подповерхностного рассеивания необязательно включать трассировку лучей. Но поскольку оно зависит от падающего света и теней, вам потребуется их правильное вычисление (которое как раз может потребовать включения трассировки лучей).
Параметры¶
Числовые ползунки регулируют степень рассеивания света:
Альбедо – вероятность того, что свет «выживет» при рассеивании. Если вы думаете о рассеивании как о фильтре, это – высота фильтра. Оно умножается на цвет поверхности. На практике всё это выглядит неинтуитивным. Альбедо должно быть равным цвету поверхности, однако его изменение влияет на эффект рассеяния совсем неинтуитивно:
Чем темнее цвет, тем больше света рассеивается. Значение 1 отключит эффект рассеивания.
Так что, если вы установите его в зелёный цвет, освещённые области объекта будут видны в зелёном цвете, а сам зелёный будет рассеян совсем немного. Поэтому более тёмные области будут иметь красный и синий оттенки. Вы можете скомпенсировать различное рассеивание путём установки большего радиуса для цвета.
RGB-радиус На самом деле это не радиус подповерхностного рассеивания, а средняя длина пути между событиями рассеивания. Когда свет проходит через объект, он испытывает внутри него отскоки, а затем выходит на поверхность в какой-то другой точке. Это значение определяет среднюю длину пути, которую свет пройдёт между двумя отскоками. Чем больше длина пути, тем дальше свет может рассеяться. Этот механизм является основным источником воспринимаемого «цвета рассеивания» материала. Материал вроде кожи будет иметь немного больший радиус красного, нежели зелёного или синего. Подповерхностное рассеивание есть ни что иное, как диффузия света под поверхностью. Чтобы достить определённого результата, вы управляете тем, насколько далеко свет может распространиться. Смешивание Цвет Контролирует, как сильно RGB-радиус модулирует диффузный цвет и текстуры. Обратите внимание, что даже при установке этого параметра в 0.0, RGB-радиус всё равно влияет на поведение рассеивания. Текстура Насколько сильно размывается текстура при затенении. Коэфф. рассеивания Спереди Коэффициент для увеличения или уменьшения рассеивания спереди. Указывает на то, сколько света поглотится или добавится, когда он входит через переднюю часть объекта (в норме 1.0 или 100%). Сзади Factor to increase or decrease the backscattering. Light hitting an object from behind can go all the way through the object and come out on the front of the object. This happens mostly on thin objects, like hands and ears. Ошибка
Этот параметр определяет, насколько точно алгоритм отбирает образцы окружающих точек. Оставив его в положении 0.05, вы должны получить изображение без артефактов. Для ускорения визуализации он может быть установлен и в более высокое значение, но потенциально это приведёт к появлению артефактов.
Установка параметра в 1.0 – хороший способ получить быстрый предпросмотр визуализации ценой большого количества артефактов.
Developing your own SSS Material¶
Традиционный подход¶
Более общий, но менее интуитивный подход состоит в использовании «слоёв». Это упрощённая версия подхода с использованием слоёв. Дополнительную информацию смотрите по внешним ссылкам:
Наука создания фотореалистичного 3D (часть5). Прозрачность, преломление, подповерхностное рассеивание, дисперсия
‘‘), array(«string» => ‘‘), ); if (!isset($_COOKIE[‘rek’])) < print($banners[$GLOBALS["banner_num"]]["string"]); >elseif ($_COOKIE[‘rek’] == «rek1») < print($banners[0]["string"]); >elseif ($_COOKIE[‘rek’] == «rek2») < print($banners[1]["string"]); >?>
Поехали! Для начала немножко закрепим пройденный материал об отражениях.
Отражения и преломления перебивают диффузный цвет.
Это означает, что если у вас есть сильно отражающий материал, металл, к примеру, то диффузный цвет вообще не будет виден. Поэтому 100% отражений = 0% диффузного цвета. 100% прозрачность – означает, что отражения могут иметь место, но полностью исключает диффузный цвет. Проводники (металлы) не имеют диффузной составляющей, поэтому для металлов вы ставите diffuse на 0% (черный цвет).
ЛЮБАЯ поверхность отражает.
Существующий на Земле реальный материал с наименьшей отражающей способностью отражает 0.045 % падающего на него света. Таким образом, даже «абсолютно черная» поверхность все равно отражает какую-то долю света. Что уж говорить об обычных материалах, существующих в реальной жизни, а не созданных в лабораторных условиях.
Самый отражающий материал – Spectralon. Он отражает приблизительно 99% падающего света. Похож по виду на материал с BRDF по Ламберту, но точно им не является.
Лист белой бумаги отражает приблизительно 80% света.
Поэтому, если хотите добиться реалистичного результата, следует добавлять текстуру отражения ко всем без исключения материалам.
Отражения, наверное, второй по значимости для фотореализма фактор после глобального освещения (технически говоря, талант и опыт тоже все еще в ходу).
Ниже представлено изображение, визуализированное с и без отражений. Посмотрите, на сколько богаче смотрится картинка с отражениями.
А вот то, что архитектурные визуализаторы используют постоянно – френелевские (Fresnel) отражения. Поскольку отражения в реальном мире в большинстве своем размытые, а не зеркальные.
Тоже самое можно сказать о четких и размытых тенях. Постоянно используя мягкие тени – вы не допустите ошибки.
Самый темный материал, который более-менее доступен обычному человеку, отражает минимум 3% света. Конечно, вы можете создать материал, который будет отражать только 1% света, но в реальной жизни такой материал можно будет встретить разве что в лаборатории.
Идея такова: реальные материалы отражают довольно много. Но отражения у диэлектриков должны иметь френелевское затухание (Fresnel falloff), поговорим о нем немножко позже.
2. Пропускание (Transmission).
Прозрачность на уровне микроструктуры означает, что световая энергия не трансформируется в тепловую (последнее характерно для черных или темных материалов) и материал пропускает свет полностью.
Если прозрачный или полупрозрачный материал окрашен в некоторый цвет, то он поглощает определенные длины волн света, а этот некоторый цвет проходит без каких либо препятствий. При этом другие цвета вовсе не проходят сквозь такой материал.
Проходит ли свет сквозь поверхность или отражается от нее, зависит от угла падения света на поверхность и коэффициента преломления материала. Мы моделируем это, используя уравнения Френеля. Вообще-то, свет, который падает перпендикулярно поверхности диэлектрика почти полностью проходит внутрь, а свет, который падает под скользящим углом – почти полностью отражается.
Только одно из вышеописанных событий может случиться с определенным фотоном: он может либо проникнуть в объем материала, либо отразится поверхностью. Но мы моделируем общий результат для бесконечного количества фотонов. Поэтому, моделируя случай для конкретной поверхности, мы имеем дело с процентным соотношением фотонов, претерпевающих то или иное взаимодействие.
Таким образом, металл отражает 50% фотонов попадающих на него и поглощает оставшиеся 50%. Если нужно смоделировать стекло, то мы скажем, что оно пропускает 90% фотонов падающих на него перпендикулярно, 5% отражает и оставшиеся 5% поглощает.
Преломление (Refraction).
Этот эффект связан с пропусканием.
Представьте камень, брошенный в воду под прямым углом – он не изменит своего направления, просто замедлит ход. Но если бросить камень под острым углом к поверхности воды, то, войдя в воду, он изменит свое направление полета из-за большой плотности воды по сравнению с плотностью воздуха.
Именно поэтому когда вы смотрите на стеклянную бутылку, вы почти не видите ее переднюю сторону, а видите только преломленные силуэт.
Также существуют коэффициенты отраженных преломлений и преломленных отражений, которые почти всегда равны (т.е. значение отраженного преломления всегда равно преломленному отражению).
Если вы хотите быть научно подкованы в этом вопросе, то должны также знать, что значения отражения и преломления равны. Конкретные цифры вы найдете в соответствующих таблицах.
Рендерер Mental Ray позволяет контролировать эти оба значения посредством одного параметра – IOR (отражения по Френелю), а вот VRay, использует два раздельных параметра – IOR в свитке Reflection и Fresnel IOR в свитке Refraction.
На какой бы материал не попал свет, происходит его поглощение. Величина поглощения зависит от конкретного материала, а точнее от того как свет рассеивается внутри материала. Например, внутри стекла свет двигается прямо сквозь всю его толщу и не рассеивает при прохождении сквозь него. Именно поэтому стекло предстает перед нами прозрачным, а не полупрозрачным. Конечно же, поглощение происходит, но очень небольшое. Именно поэтому, изображения, которые вы видите сквозь стекло, кажутся совсем немножко затененными (не такими яркими, как без стекла).
Дисперсия (Dispersion).
Существует также такой эффект как дисперсия, когда падающий на материал свет расщепляется. Дисперсия происходит из-за свойства материала преломлять электромагнитные (световые) волны разной длины под разными углами. Дисперсия является причиной появления таких цветовых явлений как радуга.
Это достаточно распространенный эффект. Вы постоянно наблюдаете дисперсионную каустику от воды или алмазов. К пример, Ньютон успешно использовал для демонстрации расщепления света стеклянную призму.
Дисперсия является причиной дисперсионных отражений (на счет этого определения я не особо уверен). Выглядит это как окрашенные отражения и как результат окрашенная каустика.
Так что знайте, что цветные переливы на жемчужинах и на бензине никак не связаны с поверхностными отражениями. Эти цветные разводы мы видим благодаря тонкопленочным эффектам.
Происходит это из-за дисперсии в тонких слоях (толщиной не больше длины световой волны) пропускающего материала (диэлектрика), который покрывает поверхность. Сложные цветные узоры и разводы зависят от количества слоев и их толщины.
К примеру, когда тонкая пленка бензина находится на поверхности воды или когда тонкий слой «глазури» покрывает жемчужину или когда мыльный пузырь состоит из сверхтонкой пленки мыльного вещества, которая колеблется в воздухе, а от этого изменяется толщина пленки и мы видим динамические цветовые разводы. По своей природе это тот же самый эффект, что приводит к появлению радуги, только происходит внутри очень тонкого слоя прозрачного материала.
Полупрозрачность (Translucency).
Полупрозрачность – это частный случай прозрачности.
Микрогеометрия поверхности приводит к тому, что свет рассеивается в разных направлениях. Этот эффект качественно одинаков для диффузных и глянцевых отражений. Это и провоцирует такой эффект как пропускание света сквозь матовое стекло.
На микроструктурном уровне: полупрозрачность – это подповерхностный эффект. Я не уверен, есть ли официальная терминология для того, что я опишу ниже, но лично я использую термин » подповерхностное отражение » для эффекта, когда свет входит в материал, рассеивается и, отражаясь там внутри, выходит там же, где попал внутрь. А также понятие » подповерхностное прохождение » для эффекта, когда свет входит в материал с одной стороны, рассеивается и отражается там внутри, а выходит с противоположной стороны объекта.
То, что происходит внутри – это чрезвычайно сложный процесс. Обычно это моделируют как случайное блуждание – т.е. фотон пролетает очень короткое расстояние внутри материала до столкновения с атомом, теряет часть своей энергии во время этого столкновения (поглощение), отскакивает от этого атома в другом направлении и все повторяется сначала много-много раз.
Подповерхностное рассеивание это частный случай прохождения и происходит это так: свет входит в материал, многократно отражается от атомов внутри и выходит наружу не в том же месте, где вошел.
Взаимодействие внутри материала между светом и атомами приводит к тому, что часть энергии поглощается. Обычно для разных длин волн величина поглощения разная. Поэтому, когда свет выходит обратно из материала, то он немножко тусклее и другого оттенка.
Подповерхностное рассеивание происходит только у диэлектриков. Именно поэтому неметаллические материалы имеют свой определенный цвет (а вот блики у диэлектриков всегда белого цвета). Т.е. каждый раз, когда вы видите цветной объект, знайте, это не металл, поскольку свет входит в материал, скачет там внутри, немножко «подкрашиваясь» в процессе, а потом покидает материал из другой точки.
Благодаря тому, что большинство материалов чрезвычайно тверды, координаты точки входа света в материал и точки выхода почти не отличаются и потому, мы визуально видим, что материал твердый.
Измеренную BSSRDF можно использовать для материалов с большим внутренним рассеиванием, таких как органические материалы, к примеру, для кожа.
Вы не сможете симулировать процесс большого внутреннего рассеивания с помощью BRDF, поскольку BRDF, по определению, принимает в расчет, что свет входит в материал и выходит из одной и той же точки (это справедливое допущение для большинства материалов).
Такие трассировщики (вид реалистичных рендереров) как Maxwell вообще не используют BSSRDF, но вместо этого они напрямую симулирует случайное блуждание для расчета подповерхностного рассеивания.
Отличие между свойствами шейдера Diffuse и SSS/Translucency состоит в (подповерхностном) распространении света. Или, другими словами, как далеко от точки вхождения фотона в материал, будет находится точка выхода этого же фотона (луча) наружу. Таким образом, свет, попадающий на твердую каменную стену, выйдет из ее подповерхностного слоя так близко к точке вхождения, что шейдер считает эту величину равной нулю. Но свет, попадающий на кожу, обычно выходит на заметном удалении от точки вхождения. Поэтому это нельзя игнорировать, иначе кожа будет выглядеть мертвой. Отсюда и необходимость в шейдере подповерхностного рассеивания (SSS).
3. Поглощение (Absorption).
Энергия электромагнитной (световой) волны преобразуется в тепловую энергию и «пропадает». Конечно же, пропадает она не по настоящему, но когда мы визуализируем картинку, мы концентрируемся на свете, а не на тепле. На практике это означает, что никакой материал никогда не должен отражать 100% падающего на него света, если вы хотите, чтобы он смотрелся реалистично.
Если поверхность белая, значит, она отражает все длины волн, если она окрашена – значит, отражает только определенные световые волны, которые вы видите. Для вас это должно значить одно, некоторые цветные поверхности могут взаимодействовать с цветным освещением совсем не так как вы того ожидаете.
Падая на гладкую поверхность (гладка на микроуровне), фотон отражается и пропадает. Но падая на шероховатую поверхность, с фотоном после отражения может случится целая куча вариантов: может отразится и пропасть, может переотразится несколько раз от микрошереховатостей и пропасть, а может и поглотится в конце-концов.
Когда свет поглощается поверхностью, то мы видим ее темной (поэтому темные одежки всегда теплее, чем белые).
Итак, 100% черный означает 0% отражений, а этого никогда не происходит в реальной жизни. ВСЕ материалы ВСЕГДА отражают в какой-то степени.
Цвет – это результат выборочного поглощения и выборочного отражения.
Поверхности предстают нам окрашенными поскольку они поглощают некоторые волны (тот цвет, что вы не видите), а некоторые волны отражают (тот цвет, что мы видим). Таким образом, 0% диффузной составляющей (черный) означает, что никакой свет не будет отражаться, с какой бы интенсивностью он не светил бы, поскольку вы сказали материалу полностью поглощать свет. Именно поэтому, вы никогда не должны выставлять 0% для диффуза (черный цвет в слоте Diffuse), даже если создаете очень темный материал.
Выводы.
Подпишитесь на обновление блога (вот 3 причины для этого).
Читайте следующую (финальную) часть, которая посвящена материалам металла и френелевским отражениям.
В последнее время появились помехи для моего беспроводного интернета от Интертелекома на даче (где я в данный момент работаю). Как результат, интернет на даче вообще не берет. Пришлось искать новое рабочее место, офис, так сказать, где бы интернет брал. Просмотрел несколько объявлений типа «аренда помещений». Нашел. Комнатушка маленькая, возле речки, но мне кроме розетки и стола со стулом ничего не нужно. Главное, чтобы интернет принимал. Теперь езжу работать в свой «офис» 🙂
Похожие статьи:
комментариев 11 к статье “Наука создания фотореалистичного 3D (часть5). Прозрачность, преломление, подповерхностное рассеивание, дисперсия”
Такие таблицы существуют, но большинство параметров бесполезны, поскольку фотореалистичные рендереры используют симуляцию физических (реальных) эффектов и свойств материалов.