Анизотропная ориентированно - стружечная плита (making off)

  Как-то раз залипал я в стену из OSB, она так красиво переливалась на закате и подумал я - вот бы сделать такой материал, да вот только как? Фотографии явно недостаточно. Скан? А как же угол поворота каждой щепки?

  Значит остаётся один вариант- собрать OSB с нуля. Задачка на пол вечера, подумал я...

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

Фотографии были сшиты в один большой файл, осталось только получить прозрачность.

  Для кеинга использовал нюковскую ноду Primatte - это один из самых точных и гибких кейеров.

   Заодно в фотошопе сделал карту нормалей, чтобы далее в максе уже ничего не крутить с бампом.

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

   Раскидать в случайном порядке щепки по плоскости с помощью TYflow труда не представляет. Однако, необходимо получить значения поворота каждой отдельной частицы в виде ЧБ текстуры.  На данный момент Тайсон (Tyson Ibele создатель TYflow) не добавил в оператор Rotation никакой интеграции с текстурами. Сам же он рекомендует использовать Script С#. И вот тут начались приключения...

  На базе скрипта из примеров я выяснил как получить яркостное значение  текстуры в диапазоне 0-1 по координатам UV. ОК, это пол дела. Теперь эти значения нужно перевести во вращение частиц по одной оси.

  Всё просто когда вы живёте в мире с Эйлеровым описанием движения, но в tyflow  используются кватернионы и это считается наиболее точным и корректным способом задавать вращение объекту. Хорошо, я погуглил как вращать кватернион. W,X,Y,Z компоненты, синусы, косинусы... Но вот только я НЕ НАШЕЛ в tyflow script  ни синусов, ни косинусов и вот тут уже боль, отчаяние, унижение.

 

  Т.е. просто так с ходу не получится вращать частицы более чем на Пи. Было предпринято много попыток подогнать значения, но всё тщетно. Я уже смирился с тем, что щепки будут повернуты в диапазоне 0-90 или в лучшем случае 0-180 градусов. Соответственно карта анизотропии будет от 0 до 0,25  или 0,5.

  Но чуть позже я прикинул, раз я не могу сделать в скрипте, я сделаю это на уровне самих текстур. Просто с помощью карты Output.  Получилось вместо одной текстуры две, в первой функция линейна, во второй идёт по пиле. Это, конечно не косинус в чистом виде, но для работы кватерниона оказалось достаточно. 

  Теперь вместо считывания одной карты, производится считывание двух. W меняется в диапазоне от -1 до 1, а X меняется в это время 0-1-0.

   Ура, оно вращается! Тестовый линейный градиент:

   Чтобы получить значения поворота в виде ЧБ текстуры применяется оператор Mapping, он устанавливает UV координаты для всех вершин  частицы равными именно той точке на которой она расположена на родительском объекте. Рендерится изначальная текстура шума, которая была до карты Output.

  Все 100000 частиц я сохранил в TyCache и его клонировал 9 раз, чтобы добиться честной бесшовности при "запекании" текстуры. 

  Далее необходимо отрендерить все полезные в этом материалы пассы. Я произвёл рендер ортогональной проекции 3 раза в 8k 32-bit EXR. В первом я забрал пассы VrayDiffuseFilter (собственно цвет), VrayBumpNormal и VraySamplerInfo (потом из него вытянется дисплейсмент). Во втором я отрендерил ЧБ карту анизотропии, ну и третий как вишенка на торте просто рандомная ЧБ маска для разнообразия из VrayMultiSubTex, т.к. у частиц заранее раскиданы Random MatID 0-20.

  Всё это я раскидал, подмешал, перемешал в нюке и отправил на выход  в JPEG.

  Собственно вот они:

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

  А пока этот и другие материалы вы можете найти у меня в моделях .

   PS: На все эксперименты ушло почти 3 дня...А начиналось всё так обнадёживающе...

 Первые тесты даже показывать стыдно)) 

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

+5
CGmachete
Однако, психанул))
а обычный скаттер чем не устроил?)
+1
ViTcore
а какой скаттер выдаст текстуру на поворот?
0
CGmachete
а что за текстура на поворот?
тут конечный продукт картинка с которой генерятся остальные каналы, диффуз дисплейс и т.д.

или я чтото пропустил?
0
ViTcore
анизотропию пропустил
0
Revered
А, понял о чем речь. Ну в теории можно какой-то костыль на уровне шейдеров придумать. В блендере ябсмог. В максе... ну OSL-конструктор вроде есть.
+2
ViTcore
кто не понял тот поймет XD
+3
c3dm
кто не понял - я не понял - не пойму
0
CGmachete
https://prnt.sc/13dwxg4
вот похожая штука, скаттер, с нее таким же образом нарезаются все каналы,

определенный угол задается частицам с рисунком, это имеете ввиду?
дык это не прослеживается практически, хаотичный рисунок
0
ViTcore
Лень было что-то искать, у меня даже мультискаттер не стоит сейчас. Tyflow заменяет половину хлама старого.
Если этой штукой можно получить такую текстуру, то отлично https://ibb.co/pXS0GMm 
И она абсолютна точна, не хаотична и это видно на рендере.
0
CGmachete
нет пересечения плоскостей по оси Z, по глубине, правильно?

в скаттере можно получить похожий эффект, если использовать плоскости, сделать рандом допустим на 1см по оси Z,
но в каких то местах они будут все равно пересекаться.

Да не, урок крутой, задачка хорошая.
0
ViTcore
Поворот 0-360, RGB на выходе 0-255 вот и все дела.

Пересечений здесь нет за счёт оператора Spread
+1
Revered
тоже не очень понял зачем "текстура на поворот" се равно все запекается ведь. Если нужна текстура ДЛЯ поворота, то да нормальные скаттеры это умеют, причем с разбивкой осей по РГБ каналам если надо.
+4
AlexHappy
Вот это мне нравится! Очень круто! Сам вот думал как бы я эту задачку решил.. и не придумал.
+3
AlexHappy
А вот уже и придумал.
+1
mozag
Если другой способ, то хорошая тема для нового ролика :-)
+1
Willfray
мне кажется, что в SD сделать такую было гораздо проще и быстрее
0
ViTcore
наверное, было бы тоже интересно узнать как, но я никогда не ставил SD XDDD
0
YoriToma
+1
+11
alexfmos
Это всё напоминает урок Tmin где он досочку закруглял с помощью Cloth. Т.е. берем тривиальную задачу, которую можно сделать за 10 минут простым способом, но делаем её при помощи половины функционала всего ПО, которое попалось под руку и за несколько часов. Скилл качается в разы, ну и заодно полезную штучку сделали.
+1
ViTcore
За 10 минут что можно сделать? Только сфотать готовую плиту дать бесшовность через прогу и думать что всё ок.
+12
alexfmos
Ну в нормальной рабочей ситуации, когда на тебя давит зак/начальник, и тебе не хочется изучить пару лишних возможностей программы, ты берешь в гугле тестуру ДСП, делаешь её бесшовной и рендеришь. :-)
+8
brovar
зато представь теперь ситуацию, когда ты родил такую текстуру заранее, а потом наступает та самая рабочая ситуация, где ты просто используешь эту наработку, красота :)
А потом клиенту как всегда не нравится и ты заменяешь это на бежевую глянцевую плитку. :(
+8
Generasim
Я прочитал какую-то научную статью доктора наук по 3д)) Начал читать и затянуло, что редко здесь со мной так бывает. Местами даже не понятно
+1
ViTcore
что именно вызывает вопросы? я могу дописать или ответить тут, понимаю что статья не является пошаговой инструкцией, поэтому назвал её making off
+1
AlexDonRumata
красиво заморочился)
+1
1monk
Урок зачетный, но по времени ушло 3 дня. Т.е минимум на 9тыс руб. рабочего времени. О-о-о-окей.
Пожалуй, в текущей работе проще было бесшовную текстуру сделать из фотки.
+16
ViTcore
С каких пор новые знания и опыт ничего не стоят? В часах на первую итерацию ушел час-полтора, суммарно примерно 4-5, потом вечером я понимал, что результат не устраивает и на следующий день придумывал как доделать/переделать то, что вышло. Теперь я не только OSB, но и любые другие композитные материалы могу штамповать, хоть 2к хоть 32к.
+2
armatur
Простите, но это потрясающе...
+4
zifir
Месье знает толк в извращениях)))
0
.Kin
вроде это делается минуты за две... ну, за пять в сабдизайнере... при имеющийся маске или хотябы чего то, с чего можно её сделать там 3-4 ноды. хотя можно и через такие же отдельные "стружки" с нуля. а тут частицы, скрипты? результат то конечно хороший.
0
ViTcore
делайте в SD, кто ж запрещает. Но у моего подхода потанцевал гораздо выше, т.к. не ограничивается плоскостью и статикой.
+2
NoNick
Все бы так к работе относились)
+1
simon310
Основательный подход!
+20
vladimir.drobzhev90
Знаете как бывает в фильмах какой-нибудь тони старк и брюс беннер решают задачку и один такой: "нам нужно использовать кватернион", а второй ему: "но мы живем во вселенной с Эйлеровым описанием движения..." и первый такой: "тогда нам ничего не остается кроме как найти подходящую вселенную (начинает стучать по клавиатуре)...я кажется нашел сингулярность которая поможет нам переместиться в подходящую вселенную". И пошел экшен.

Короче нихрена не понятно, но захватывающе))
0
kit_69
Автор красаучык) Магёшь!)
+1
3Delli
Годно. Познавательно. Читабельно :)
+1
3d Vlad
Мат не очень на OSB похож, и зачем так заморачиваться над ним?
0
ViTcore
Реализьмъ, Сэр ¯\_(ツ)_/¯
0
Bestviz
Наконец то, что то стоящее.
0
ViTcore
Что, про то как "открыть тридэмакс" не вкатывает? Мне тоже, приходится исправлять это дело самому...
+1
Max_Man
Я не готов этот подвиг повторить но я готов это купить! Автор псих!!! ))))
0
ViTcore
♂THREE HUNDRED BUCKS♂
+1
AlexHappy
Для анизотропии у меня ушло 5 минут с помощью Multi Scatter, использовал карту Noise для поворота по оси Z и в слот Object Color.. :)
+1
ViTcore
Лень ставить было. Когда Тайсон прикрутит поворот с текстуры, будет так же просто. Даже проще в паре аспектов. Например работать с единым мешем вместо горы объектов, когда этих щепок сотня. Скажем так мультик - кофемолка, туфлоу - кухонный комбайн.
0
3d Vlad
Я вообще не понимаю про какой поворот вы имеете ввиду?
такое значение вам надо для дисплайса
0
ViTcore
этому материалу вообще не нужен дисплейсмент, я его добавил в конце уже потому, что он просто был сделан автоматически. Почитайте за первое слово в названии поста что-ли...
0
3d Vlad
То есть ты просто раскидал стружку как будто в магнитном поле
-1
ViTcore
неверно
0
Nick_pan
Гениально!
+1
Denis_21
Жаль, что есть только мастер полигона, работа явно тянет на мастера шейдера )
+2
PaulFX
Вызывают уважение такие люди, которые научились пользоваться своим мозгом виртуозно.
0
imFeodor
Мдя мужик, как же всё-таки сложно у вас всё делается, когда это можно сделать элементарным образом. Делаешь плейн, Array`ем делаешь вращательный массив на 180 гр, на 36 штук,получится шаг 5 гр. Аттачишь, потом детечиш, что бы получить одинаковую ось. И на каждый элемент накладываем цвет соответствующий углу поворота элемента, высчитать это не сложно. И ву а ля...и без всяких кватернионов....

Я недавно этой штукой озадачивался таким методом попырому решил.
0
ViTcore
Звучит сложно... Мультискаттер без кватернионов, а у меня мэйкинг офф, а не руководство к действию
0
kolt_050
Статья очень крутая, как раз потому, что используется нестандартное решение для такой задачи. Я сам с материалами работаю больше на глаз, зная только основы и какая карта за что отвечает, поэтому половина из прочитанного для меня, как тёмный лес, например, как использовать информацию с карты Output или яркостные значения UV и т.д...
Было бы очень здорово, если получится записать видео Making-off по этой статье.