big

Шот из урока 7 собран из слоев отделов, но в нем нет света и рендера. Свет выпускаем своим слоем, а рендер описываем примами USD и делим на два прохода.

big
Исходный размер 3840x2020

Свет и рендер тоже лежат в слоях. Лампы в /World/lights, настройки рендера и проходы в /Render.

1. Свет своим слоем

big
Исходный размер 3840x2020

Сцена света лежит в activities/lighting шота.
1. SubLayer берет восемь слоев, что в root ниже света.
2. Layer Break, выше него в слой ничего не попадет.
3. Лампы неба, солнца и подсветки кораллов.
4. Light Linker решает, на что светит подсветка.
5. USD ROP пишет слой lighting v001 в publish шота.

Исходный размер 3840x2020

Лампа в USD это прим, его тип говорит, какая это лампа. Ставят их Dome Light, Distant Light и Light.
1. Primitive Path у всех в /World/lights.
2. В Texture у неба HDRI из Houdini.
3. Направление солнца задает Rotate на вкладке Transform.
4. Intensity у подсветки больше, чем у солнца, ее свет гаснет с расстоянием.

Исходный размер 3840x2020

Подсветке нужны только кораллы.
1. Тащим corals_fill из Light List в Rules.
2. Из Geometry кладем в правило /World/env/reef.
3. Правило записалось на саму лампу.

Такое правило называется light linking, без него лампа светит на все. На лампе оно записано коллекцией (collection), списком примов под своим именем.

Исходный размер 3840x2020

В v002 опускаем солнце, ослабляем подсветку и прячем краулер.
1. Прячет его новая Configure Primitive перед USD ROP.
2. В Primitives путь к краулеру.
3. У Visibility ставим галку и выбираем Invisible.

Атрибут visibility прячет прим со всем, что внутри, и во вьюпорте, и в рендере.

2. Рендер через примы USD

Примы рендера пишет сцена в activities/render поверх слоев шота и света v002, а USD ROP выпускает слой render v001. В root он встает первой строкой.

Исходный размер 3840x2020

Проход ссылается на настройки, настройки на файл, файл на каналы.
1. RenderVar это канал картинки (AOV), у нас beauty.
2. RenderProduct это файл кадров.
3. RenderSettings это камера, разрешение и список файлов.
4. RenderPass это часть шота для отдельного рендера.

Исходный размер 3840x2020

Render Var делает канал /Render/Vars/beauty.
1. Data Type ставим color4f, цвет с альфой.
2. Source Type ставим LPE, в Source Name пишем C.[LO].
3. На вкладке Husk в Name пишем beauty, в Format ставим color4h.

Строка LPE описывает путь луча. C.
[LO] значит от камеры через любые отскоки до лампы или светящегося объекта, то есть весь свет кадра.

Исходный размер 3840x2020

У effects все так же, кроме путей.
1. У Render Product Sampling Behavior ставим Sample Frame Range и кадры шота.
2. В Ordered Render Vars канал beauty.
3. В Product Name путь от $RENDER, $F4 это номер кадра.
4. У Render Settings в Ordered Products этот файл, Camera шота, ширина 2048.

Исходный размер 3840x2020

Render Pass задает, что из шота попадет в проход. В pass_geometry идет все, кроме эффектов.
1. В Pruned Objects пишем /World/fx, эффекты уходят из рендера совсем.
2. В Render Source его настройки, settings_geometry.

Исходный размер 3840x2020

В pass_effects остаются только взрыв и искры.
1. В Matte Objects пишем /World/env /World/characters /World/vehicles. Маска закрывает то, что за ней, а альфа у нее нулевая.
2. В Pruned Objects подсветка кораллов, риф здесь маска.

Проход ничего не стирает в шоте. Он только говорит рендеру, что взять, что убрать и что сделать маской.

3. Запускаем рендер

Исходный размер 3840x2020

Рендерим из сцены сборки, в ней SubLayer с root шота и USD Render ROP.
1. Valid Frame Range ставим Render Frame Range From Stage, кадры из root.
2. В Render Pass путь прохода.
3. В Render Settings выражение на Python, оно берет у прохода renderSource и отдает его настройки.

Исходный размер 3840x2020