big

В уроке 3 мы собрали скелет сцены, теперь делаем для него первый ассет, коралл. Одна рабочая сцена сохраняет его тремя файлами, а в конце мы соберем их с нуля и проверим, что коралл на месте.

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

Ассет складывается из трех файлов одной сцены. Любой из них меняется новой версией, а два других остаются прежними.

1. Как устроен ассет

В geo лежит геометрия коралла, в mtl материал и его назначение на geo, в xform место коралла. Новый материал весит килобайты и не переписывает тяжелую геометрию. А в рифе из урока 6 у каждой копии свое место, поэтому туда возьмем только geo и mtl.

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

Корень ассета пишем сразу по его пути в сцене. Тогда SubLayer положит коралл на место в любой сцене с этим скелетом.
1. Новая версия ложится в новую папку, старую не трогаем.
2. Корень делаем Xform с kind component, за него двигают весь коралл.
3. Ветку geo делаем Scope, это папка для мешей.
4. Меши render и proxy с purpose, для рендера и вьюпорта.

2. Сетап по нодам

Вся сеть стоит в /stage рабочей сцены. Сверху коралл приходит из SOP и собирается в дерево ассета. Три USD ROP пишут по файлу, первый geo, второй за границей Layer Break mtl, третий за следующей xform. Внизу отдельной веткой стоит проверка. Цифры показывают порядок, в котором разбираем ноды ниже.

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

От выхода коралла в SOP идут две ветки, render и proxy, Merge сливает их в Null.
1. Name пишет атрибут usdpurpose со значением render, SOP Import сделает из него purpose.
2. Вторая Name пишет name со значением geo/render, это путь прима.
3. PolyReduce оставляет для proxy несколько процентов полигонов.
4. Третья Name пишет usdpurpose со значением proxy.
5. Четвертая Name пишет name со значением geo/proxy.

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

SOP Import забирает этот Null в Solaris.
1. В SOP Path путь к выходному Null.
2. В Sublayer Style ставим Copy SOP Layer Into New Active Layer, тогда геометрию смогут править ноды ниже, и вообще эту настройку лучше по дефолту поставить.
3. У Import Path Prefix ставим галку и пишем /, пути возьмутся из name.
4. Галку у Layer Save Path снимаем, иначе слой может уехать в файл рядом с hip.

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

Корень ассета делает Primitive, а Graft Stages сажает под него ветку из SOP Import.
1. В Primitive Paths пишем /World/env/corals/<коралл>.
2. В Primitive Kind ставим Component, Primitive Type остается Xform.
3. В Primitive Path у Graft Stages тот же путь корня.
4. В Destination Path Default пишем /, иначе geo ляжет в лишний прим sopimport1.

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

Вторая Primitive делает geo папкой, а Configure Primitive снимает с geo kind, который поставил SOP Import. Вторая такая нода страхует render и proxy.
1. В Primitive Paths путь к geo, в Primitive Type ставим Scope.
2. В Primitives пишем /World/env/corals/<коралл>/*, у Kind ставим галку и выбираем None.
3. Во второй то же для geo/render и geo/proxy.

Внутри ассета kind стоит только на корне. Ветки и меши под ним остаются без kind.

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

Mesh нужна, когда меш должен быть гладким в рендере.
1. В Action ставим Edit, в Primitives путь к мешу render.
2. У Subdivision Scheme в меню слева выбираем Set or Create и Catmull Clark.
3. У Transform там же ставим Do Nothing, иначе на меше появится лишний трансформ.

Атрибут меша subdivisionScheme говорит рендеру, сглаживать меш или нет. SOP Import ставит none, без сглаживания.

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

Первый USD ROP пишет geo.
1. В Output File пишем $JOB/assets/Environment/Corals/<коралл>/publish/usd/geo/v001/<коралл>_geo.usd.
2. В Default Primitive пишем /World, как у скелета в уроке 3.

Save Style не трогаем, по умолчанию все собранное в памяти ляжет в один этот файл.

Перед материалом всегда ставим Layer Break. Без него mtl‑файл еще раз запишет всю геометрию.

Между двумя границами Layer Break стоят ноды материала, Material Library и Assign Material, а второй USD ROP пишет mtl. Что делает каждая, разберем в уроке 5.

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

Место коралла задает Transform, а третий USD ROP пишет его в xform.
1. В Primitives пишем корень ассета, /World/env/corals/<коралл>.
2. В Translate и Rotate ставим, где коралл стоит и куда повернут.
3. В Output File тот же путь, что у geo, только с xform. Default Primitive тоже /World.

3. Проверяем

Исходный размер 3840x2020
Мы используем файлы cookies для улучшения работы сайта НИУ ВШЭ и большего удобства его использования. Более подробную...
Показать больше