Что такое PBR? Часть 4.3
Pavel_Ushakov 1823

Все базовые свойства изложенные в диснеевском «трактате» от 2012 года Physically-Based Shading at Disney я так или иначе уже проговорил и показал реализацию этих свойств используя стадартный V-ray шейдер (VRayMtl). Пришло время поговорить о «тонких мирах».

Реализация шейдеров для тонкостенных объектов в СG. Это частный случай и он имеет ограниченную область применения. Как таковой физической основы за собой они не имеют, кроме шейдеров, которые имитируют интерференцию света в тонких средах.

Thin Film Interference

В быту данное свойство можно наблюдать на крыльях у некоторых насекомых, у масляных и бензиновых разводах на мокром асфальте, у мыльных пузырей, перламутра на ракушках, у оксидных пленок на поверхности металла и просветляющих пленок на оптических стеклах и т.д. Это явление называется «интерференция в тонких пленках».

Физика эффекта следующая — крылышко насекомого состоит из хитина, который, будучи прозрачным, 80% света пропускает и только 20% отражает. При этом лучи, отраженные от верхней и нижней поверхности, интерферируют, то есть складываются с усилением или ослаблением амплитуды. Поскольку крылышко не везде имеет одинаковую толщину, разные длины волн, в различных точках, совпадают по максимуму — отсюда и получаются радужные разводы на поверхности. По такому же принципу работает этот эффект на мыльных пузырях, у оксидной пленки на металле, бензиновой пленке на асфальте и т.д.

В V-ray данный эффект можно реализовать через OSL шейдер или плагин Thin Film от студии SIGGER. По моему мнению использовать OSL шейдер предпочтительней, так как он будет работать независимо от версии 3ds max, сцену с этим шейдером легко передать другому пользователю, так как фактически OSL это запрограммированная процедурная текстура и может «лежать» в папке с остальными текстурами к сцене, когда как Thim Film это плагин, который надо устанавливать, под нужную версию 3ds max.

Так же, путем нехитрых манипуляций с нодой Output, можно создать эффект интерференции стандартными инструментами 3ds max, тогда эта нода будет «разлагать» любую проходящую через нее текстурную карту, создавая различные цветовые переходы между оттенками серого у входящей текстуры. Примеры, в представленных в статье таблицах, были реализованы именно этим методом.

На этом обзор физически обоснованных, то есть PBR свойств, у шейдеров закончен. Далее я буду рассматривать реализацию в CG Thin thickness (англ. — тонкая толщина) поверхностей. Этот раздел не имеет прямого отношения к PBR принципам, поскольку это только средство оптимизации шединга, которое избавляет от сложных или ненужных вычислений, в частных случаях.

Thin geometry

Для начала я дам определение нескольким понятиям — Solid, Hollow и One-Side Geometry.

Определение Solid (англ. — сплошной) подразумевает собой что весь объем объекта это единый материал. В реальности, если разрезать полнотелый объект, так и будет. Но если же объект разрезать в 3d пространстве, то мы увидим… мы ничего не увидим… Это будет One-Side Geometry (англ. — односторонняя геометрия), но рендер система, в стандартных условиях, воспринимает этот объект как полнотелый.

Определение Hollow (англ. — пустотелый)— подразумевает собой что объект внутри пустой, с некоторой толщиной стенок. В реальности, при разрезе, действительно будет видна некоторая толщина. В 3d пространстве, при виртуальном разрезе 3d модели со стенками, мы увидим два объекта, один в другом. Это по прежнему будет One-Side Geometry, но с разной ориентацией нормалей. Такая «матрёшка» считывается рендер системой как пустотелый объект с определенной толщиной стенок.

В некоторых случаях, мы не видим толщины объекта, так как объект имеет замкнутый объем (воздушный шарик), либо она столь несущественна (лист бумаги), что на рендере это не будет заметно. Не разумно, для таких объектов применять модификатор Shell и настраивать ресурсоемкий SSS шейдер, если речь ведется об общих и средних планах кадра.

Для того чтобы избежать лишних вычислений были придуманы шейдерные решения, которые дают возможность достоверно рендерить One-Side Geometry, как будто она имеет некоторую толщину.

До этого раздела я рассматривал все свойства материалов в контексте «нормальной» геометрии объекта, когда 3d модель имеет видимую толщину — Solid geometry и это толщина учитывается шейдером, например при реализации SSS свойств материала, когда вычисляется насколько глубоко свет проникает в объем и как он ведет себя в этом объеме.

К тонкостенным объектам, физической толщиной которых можно пренебречь, можно отнести: пластиковые пленки, ткани, бумагу, растительность (листья, трава, лепестки), крылья насекомых, мыльные пузыри, в некоторых случаях стекло — думаю вектор мысли вам понятен. В CG эти объекты, как правило, реализуют через одностороннюю геометрию.

На коференции SIGGRAPH 2015 выступал Brent Burley с темой Extending the Disney BRDF to a BSDF with Integrated Subsurface Scattering. В этом докладе были представлены расширенные диснеевские принципы в шейдинге. Подробно был рассмотрен отдельный раздел для объектов с односторонеей геометрией, но фактически шейдинг для таких объектов не отличается от базовых PBR принципов, просто идет корректировка некоторых свойств.

Например персонаж из анимационного фильма Big Hero 6 . Очевидно что тут используется SSS шейдер, но персонаж не выглядит как мрамор, он выглядит как надувной шарик из тонкой ткани.

Так же очевидно, что честное решение геометрии персонажа из ткани с толщиной в миллиметр доставило бы ряд неудобств при ригинге, UVW мапинге, шейдинге и т.д. Поэтому для таких случаев диснеевский шейдер был доработан, что бы можно было достоверно рендерить One-Side Geometry, как будто она имеет некоторую толщину.

Какие свойства в настройках шейдера V-ray следует пересмотреть для случаев описанных выше?

Все зависит от материала и ситуации. К примеру, шейдерам пластиковой пленки или стекла электролампы, которые реализованы через одностороннюю геометрию необходимо сделать следующие поправки:

Выставить белый цвет для опций Refract и Reflect Значение IOR поставить равное 1.0 «разлочить» Fresnel IOR Скорректировать Fresnel IOR для пластика или стекла (пластик 1.55, стекло 1.52) Активировать опцию Reflect on back side Цвет у Diffuse черный

Таким образом объем и толщина объекта, а вернее её отсутствие, будут игнорироваться, поскольку IOR равен 1.0, но при этом за счет того, что «разлочена» опция Fresnel IOR отражения на объектах по прежнему будут присутствовать, а активная опция Reflect on back side будет давать отражения на обратной стороне геометрии.

Transmittance

Прозрачность для односторонней геометрии можно реализовать как через Refract, так и через Opacity. Для пластиковых пленок и тонкого стекла уместней использовать Refract, настройки смотрите выше. Для полупрозрачных тканей и бумаги — оптимальным решением будет реализовывать прозрачность через Opacity.

Transmittance colour

Для создании цветных пленок или стекла через одностороннюю геометрию, опцией Fog color, пользоваться не следует, для этих задач эта опция не подходит. Fog color определяет цвет основе на объеме объекта, в нашем случае объекты подразумеваются плоским или тонкостенными. Для определения цвета прозрачности материала его следует задавать напрямую в слоте Refract.

Transmission roughness

Transmission roughness, реализованное в V-ray опцией Refract glossy, на объектах с односторонней геометрией работает корректно, поэтому каких то дополнительных "твиков" VrayMtl не требует.

Translucency

В случае тонкостенных материалов, в бытовом употреблении, применяют термин — «транслюцентный материал», но по факту это все то же подповерхностное рассеивание света (SSS).

В V-ray, для односторонней геометрии и материалов с явными SSS свойствами (бумага, ткань, растительность, тонкий пластик и т.д. ) следует использовать стандартный VrayMtl шейдер в связке с VRay2SideMtl. Данная связка дает возможность корректно и быстро реализовать эффект подповерхностного рассеивания света для односторонней геометрии.

Прочие свойства, описанные в ранних частях обзора, будут работать с односторонней геометрией в «штатном» режиме, либо будут не актуальны, как например Attenuation (англ. — затухание) так как речь ведется об очень тонких поверхностях.

Яндекс.Дзен | ВКонтакте | YouTube | Instagram

Комментарии (23)

+2
shinodem
и причем тут pbr...
+3
Pavel_Ushakov
Расшифровка PBR звучит как Physically Based Rendering (англ. Физически обоснованный\корректный рендеринг). В сети так же можно встретить аббревиатуру PBS - Physically Based Shading (англ. Физически корректный шейдинг), не стоит на это обращать внимание, это все тот же PBR, просто в этом случае физически корректный шейдинг выделяют как отдельное направление.
+7
Kaiwas
Что такое PBR? Часть 34.11

Материал интересный. Но этот "ченел"... на каждой картинке.
Думается можно было оптимизировать количество частей и выкидывать более постепенно.
Такой маркетинг не так раздражал бы )
+1
Lamfadel
Так что такое PBR???
+1
Alvion
Спасибо за материал) Обязательно почитаю)
+5
Ghonatan
Я не понял, это Ушаков Чанел или не Ушаков Ченел? Агрессивная реклама, как амиго. Или мэил ру.
+5
Artnway
Почему все так воняют, на тегинг каждой картинки, логотипом и названием канала автора?
Он все сделал сам, оформил и сверстал, и подписал.

Вы же понимаете, что так надо делать всем, под своими работами.
А ежели вы этого не делаете, то либо от лени, либо от беспечности, либо от того и другого
0
Kaiwas
да это просто смешно. это как на трениках абибис сделать не три полоски, а по кругу сплошняком.
вроде и товар норм, но как-то... странно.

притерно всё это короче. но есть можно и даже полезно многим будет.
+2
dontpiter
Я вас умоляю... пользы от таких статей 0. Потому что автор не фильтрует теорию через свой практический опыт работы.
+3
dontpiter
Во-первых, потому что канал автора - пустой. Нафига он его пиарит не понятно. И какое отношение он имеет к PBR тоже не ясно. Очередной пересказчик хелпов... Когда статьи пишет профи он логотипами не морочится.

Во-вторых это просто свинство поднимать себе трафик, таким образом, За счёт популярности сайта. Ладно бы ещё канал интересный был.
0
Kenzo80
Красавчик)
0
goldeditionzzz
Так это всё таки PBR или не PBR ?
+4
StunBreaker
Нам нужно больше... частей ! xD
+2
lis-220
ооо. мне кажется я знаю автора. ) помню была группа в вк где очень сильно, товарищ, засаживал 3ддд как ресурс и жестко пиарил свой ресурс по продажам моделек,на этом фоне. эх забавное чтиво было. Щя как понял ,уже 3ддд нормальный ресурс как сообщество? или чето не понимаю я в этой жизни. )
+1
Y.O.U.
...но 20 баксов - это 20 баксов )
+1
Grend
Благодарю автора, мне пригодилось.
+1
IK86
Классно. Еще бы часть где бы объяснялось как правильно использовать наборы, так называемых, pbr текстур. Зачастую комплектация отличается для разных ресурсов. Здесь была тема по этому поводуhttps://3ddd.ru/forum/thread/show/pbr_matierialy_i_kak_nastroit_ikh_riendier/4#post1439399.  В последнем сообщении итог обсуждения).
+1
Pavel_Ushakov
Спасибо. В понедельник будет.
+1
suhiro
Я не в теме местных устоев, по этому не понял почему под блогами автора всех так бомбит, От себя скажу автору спасибо. Читать интересно, без привязки к практическому применению, просто для общего развития.
0
Pavel_Ushakov
Спасибо. После теории будет и практика. Материал емкий и лонгриды могу просто утомить, поэтому статьи у меня делятся в среднем на 1500-2000 слов, что оптимально для восприятия сегодняшнего пользователя.
+1
Kaiwas
и для SEO )
Если статья нормально написана и интересна то и 30 тыщ символов прочитать не грех.
0
Pavel_Ushakov
Согласен. Но у меня другая стратегия.
0
Hell1993
Спасибо за проделанную работу.