
В уроке 4 одна сцена коралла записала три слоя. Geo и xform мы разобрали, а щас очередь mtl. В нем только материал коралла и его назначение на геометрию. Поэтому новую версию лукдева выпускаем, не трогая геометрию, а в шот она попадает заменой одной строки.

Материал живет в своем слое поверх геометрии. Новому лукдеву хватает новой папки v002 и одной строки SubLayer.
1. Как устроен слой лукдева
Слой mtl ничего не строит заново. Коралл и его ветки в нем записаны через over, как правка чужого прима. Добавляет он только ветку mtl с материалом и связь с ним на geo, геометрии нет.
Связь с материалом в USD называется material: binding, это путь к материалу, записанный на ветке. Материал с ветки получают меши внутри, если у них нет своей связи.

В проверке и в шоте коралл собирают тремя строками SubLayer, внизу geo, над ним mtl, сверху xform. Это обычная стопка слоев из урока 1. Спорить файлам не о чем, каждый пишет свое. Поэтому строку mtl можно заменить, а геометрия и место коралла останутся прежними.
2. Сетап по нодам
Это та же сцена коралла из урока 4, кусок сети сразу после geo. Layer Break отрезает все, что выше, и геометрия в mtl не попадет. Дальше материал, назначение и USD ROP, он пишет mtl так же, как geo в уроке 4. Ноды разбираем по цифрам на картинке.
Material Library кладет материал в ветку mtl.
1. В Parent Primitive Type ставим Scope, как у geo.
2. В Material Path пишем полный путь с именем материала <коралл>_mat. Тогда Material Path Prefix ни на что не влияет.
Прим материала в USD называется Material, на него указывает связь. Внутри лежат примы Shader, в них записаны ноды сети.
Внутри Material Library стоит Karma Material Builder с сетью из нод MtlX, без текстур.
1. Три ноды MtlX Geometry Property Value читают атрибуты коралла.
2. MtlX Standard Surface, сам шейдер, собирает цвет и шероховатость.
Атрибут геометрии, который видят рендер и шейдер, называется primvar. SOP Import записал атрибуты коралла как primvar.
MtlX Geometry Property Value читает primvar margin, расстояние до края пластины. По нему материал рисует белую кайму и кольца роста.
1. В Geomprop пишем margin, имя атрибута как в SOP.
2. Default отдается, если атрибута нет. Тогда кайма пропадет, а кольца перестанут повторять край.
Поэтому Attribute Delete в SOP оставляет все, что читает материал.
Assign Material записывает связь с материалом.
1. В Primitives пишем /World/env/corals/<коралл>/geo, ветку с render и proxy.
2. В Material Path пишем путь материала из Material Library.
В файле это over на ветке geo с одной строкой material: binding. Связь стоит на geo, поэтому материал получают оба меша.
В слое mtl нет ни одного меша. В пустой сцене он ничего не рисует, а если виден коралл, в слой уехала геометрия.
3. Новая версия одной строкой
Лукдев v002 делаем в той же сцене, но сохраняем ее как <коралл>_v002.hip. Меняем только материал и пишем только mtl, в новую папку mtl/v002. Папка v001 остается на месте, ее никто не перезаписывает. Geo и xform тоже остаются v001.
В MtlX Standard Surface открываем раздел Coat. Это прозрачная глянцевая пленка поверх материала, как лак или вода.
1. Coat поднимаем, и коралл выглядит мокрым.
2. Roughness в том же разделе ставим чуть выше, и блик становится мягче.
USD ROP слоя mtl пишет новую версию.
1. Output File теперь $JOB/assets/Environment/Corals/<коралл>/publish/usd/mtl/v002/<коралл>_mtl.usd, поменялась только папка версии.
2. Save to Disk жмем только на этом USD ROP. USD ROP слоев geo и xform в сцене v002 не запускаем, иначе перезапишем выпущенные v001.
Утверждаем v002 одной строкой там, где собран коралл. В проверке это SubLayer со слоем mtl, в шоте такая же строка, если коралл стоит там тремя строками.
1. В File меняем v001 на v002, остальное в пути не трогаем.



