Sep. 7th, 2012

steblina: (Default)
Я давно искал способ, как сделать реалистичное стекло в трехмерке. В большинстве случаев уроки дублируют друг друга, советы идентичны, как и сомнительный результат. В основом шейдеры имеют ряд недостатков, которые проявляются в нужный момент. Например, при создании стекла. 

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

Сегодня я наткнулся на вопрос одного пользователя, который спрашивал, как повторить толщину стекла, например, парфюма или бутылки. Стандартный шейдер ментал рея (dialectric) или вирея (vraymtrl) справляется только в случае тонких бокалов. А если попытаться нацепить его на бутылку, то она будет выглядеть нереалистично.

Короче, вот совершенно простой способ, как добиться (и регулировать) толщину стекла без усложнения геометрии, танцев с шейдерами, утилитами, выкручиванием значений и бог знает чего. Нашел я этот способ во время экспериментов. Использовал Maya+Vray, но, думаю, это сработает и в других редакторах, с другими рендерами (если попробуете и получится, то дайте знать).

1. Делаем стандартную модель бутылки. С внутренней стенкой, со всеми изгибами, как положено. Не забудьте склеить все швы. Сцена у меня абсолютно простая: два источника света, два рефлектора, камера (с выставленным аттрибутом physical) и фон. В качестве освещения я еще использую image based lighting с вот этим изображением.

Сцена выглядит так:



2. Для разнообразия эксперимента я сделал граненую крышку для бутылки. На крышку и бутылку нацепил практически идентичные шейдеры (в файле со сценой разберетесь). Я ничего не мудрил с виреевским шейдером стекла, кроме как нацепил на него fresnel shader. А так, он похож на любой шейдер, который рекомендуют в сети.

Делаем тестовый рендер. Я сразу поставил высокие значения, чтобы сразу была видна разница.

Вот у нас есть почти реалистичное стекло. Но ему не хватает толщины и правильного преломления в толстом днище. К тому же крышка вовсе сгладилась, и не ясно, что она граненая. 

Если вы внимательно изучите, как выглядят пустые бутылки на светлом фоне, то увидите, что в сгибах появляются темные преломления, отражения и прочая физика. Сейчас у нас это едва заметно по краям днища. А так, скукота.

3. В режиме полигонов выделяем все внутренние полигоны бутылки аж до горлышка, а затем экструдим вовнутрь на разумное значение. Чем больше количество таких экструдов, тем толще будет в итоге выглядеть стекло.


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

Делаем тестовый рендер.

Появились темные контуры. Надо проверить нормали после экструда внутренней стенки бутылки. Они оказались неверными. Идем в меню, жмем reverse normals. Сразу скажу, что у сдублированного кусочка днища нормали как раз должны быть флипнуты вовнутрь. Рендер.

Дно стало хорошим. У стекла появилась толщина, особенно в районе прямых линий. Теперь осталось разобраться с крышкой.

5. С ней примерно та же процедура: выделяем faces и экструдим их вовнутрь. Чиним какие-то швы, кривые вершины... Готово.


Теперь вы можете крутить разные настройки (преломление, отражение, диффузию). Тут уже вопрос личного предпочтения в фотореализме. Задача все равно решена — стекло выглядит плотным.

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

В моем примере бутылку можно крутить как угодно.


Файл со сценой, исходными и эдванснутными моделями, шейдерами... 
И HDR-файл для освещения сцены

Tip: чтобы усилить работу материала и общий эффект, то повысьте значение IOR примерно до 1,9. Ничего страшного, если это не по таблице в физике.

p.s.: если там ваши друзья или коллеги мучаются над стеклом, отошлите этот пример. Вдруг это именно то, что они искали. Репостите, ретвиттите, полайкайте.



January 2013

S M T W T F S
  1234 5
6789101112
13141516171819
20212223242526
2728293031  

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 28th, 2017 06:33 am
Powered by Dreamwidth Studios