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.: если там ваши друзья или коллеги мучаются над стеклом, отошлите этот пример. Вдруг это именно то, что они искали. Репостите, ретвиттите, полайкайте.



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

К примеру, вам надо на черном фоне сделать красивую растяжку (бленду) от красного в 100% прозрачность. Вы увидите, что прозрачный объект генерирует отвратительный блеклый цвет, который, к тому же, показывает границы этой самой прозрачности. Это явно некрасиво. 

Проблема решается двумя способами. Во-первых, прозрачный дочерний объект должен быть покрашен в цвет родительского (в нашем случае прозрачный объект имеет такой же красный цвет, как родительский объект, просто на картинке я ему дал 15% opacity, чтобы его было видно, а бленду я уже сделал с 0% opacity). И обязательно к этому цвет надо добавить нижележащей краски. В нашем случае мы добавляем 50% черного (можно и 100%). Тогда переход в прозрачность сгладится. 

Но этого не совсем достаточно. Иллюстратор достаточно хорошо передает 100% черного цвета, таким, какой он в жизни — с грязно-серым налетом. Если в настройках у вас включено Display black accurately, то вы увидите, что 100% черного не совсем уж такой и черный. Это отражается на самой графике. Если на такой "черный" цвет разместить объект другого цвета, то у вас появятся отвратительные белесые стыки. Если рисунок сложный и этих стыков много, то даже для превью картинка выглядит плохо. Такая ситуация лечится добавлением по 50% каждой краски к 100% черного. Получается своего рода rich black. 

Если мы на таком фоне сделаем бленду в прозрачность, то исчезнут вообще всякие отвратительные артефакты в переходе.


P.s.: хочется отметить, что иногда неправильно используются два термина opacity и transparency. Opacity — это непрозрачность. И когда я говорю 100% непрозрачности, то имею ввиду абсолютно залитый видимый объект. Transparency — это прозрачность. И если говорят 30% transparency, то имеется в виду, что объект видим лишь на 30%. Короче, 30% transparency и 30% opacity — это два разных результата.
steblina: (Default)
Иногда нужно обрезать объект формой другого объекта. Когда речь идет об объектах с несложным контуром или просто с заливкой, то проблем не возникает. Проблемы начинаются тогда, когда объект — это compound path из строуков (без заливки). Например, штриховка. Если вам нужно сделать штриховку со сложным контуром, при этом категорически нельзя оставлять clipping mask (например, возникают проблемы при импорте в Индизайн; при вставке в фотошоп он точно будет учитывать скрытые линии), то классические методы не помогут.

Конкретный пример. У нас есть сложная форма обрезки и сама штриховка, которую мы хотим оставить в виде stroke (ну, мало ли, вдруг надо менять толщины). Если мы попробуем воспользоваться способами обрезки из палитры pathfinder, то увидим, что: а) не все работают; б) работающие фильтры оставляют четкий замкнутый контур вокруг, от которого надо избавляться вручную. При плотной штриховке это ад.

Чтобы выполнить эту процедуру, надо воспользоваться инструментом live paint, переключив режим с fill на stroke. Причем, не обязательно красить каждый штрих отдельно. Достаточно планомерно провести мышью поперек внутренней штриховки и она сразу вся перекраситься. Назначьте цвет штриха желтый, включите stroke в опции инструмента live paint и проведите по внутренней части штрихов (забыл упомянуть: и штрихи, и форму надо предварительно сделать объектом live paint). После этого достаточно сделать expand, выделить желтые контуры через select same stroke color и вуаля.

steblina: (Default)
Для того, чтобы сделать картинку четче, ребята прибегают к разным манипуляциям. Например, кладут поверх изображения дубликат в режиме overlay, а потом применяют к нему highpass. Плющат. Иногда по вкусу добавляют smart sharpen с большим amount, но маленьким радиусом (0,2, например). В обоих случаях, как я заметил, очень часто вылазят артефакты. Поэтому я попытался найти способом минимизировать их, при этом добиваться супер-резкой картинки. Для этого надо всего-то применять smart sharpen не к сплющенной картинке, а как раз к тому слою, к которому вы применяли highpass. Иными словами, шарпить не картинку, а highpass. В итоге получаем очень резкую картинку, с небольшим ореолом (куда ж без него), но зато всякие какашки не повылазили и зернышко благородно вытащилось.

 
steblina: (Default)

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

 

 

 

Read more... )

January 2013

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

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 24th, 2017 10:54 pm
Powered by Dreamwidth Studios