big

В уроке 6 мы собрали риф, теперь собираем на нем шот. Камеру, лейаут, анимацию, толпу и взрыв делают разные отделы в своих сценах, и каждый пишет свой слой. В конце соберем шот одним файлом и подключим новую версию анимации.

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

Шот это короткий файл со списком слоев. Новая версия любого слоя попадает в шот заменой одной строки.

1. Шот из слоев

Шот собирается в одном текстовом файле в publish шота, в примере sq010_sh0010.usda.

Файл шота, в котором нет своих примов, а есть время шота и список слоев, называется root шота.

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

В root сильнее всех верхняя строка.
1. Внизу скелет из урока 3.
2. Над ним окружение и риф секвенции из папки _seq.
3. Выше слои отделов шота.
4. Свет и рендер добавим в уроке 8.

2. Камера, лейаут, анимация

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

Сцены отделов лежат в activities шота и устроены одинаково, покажем на камере.
1. SubLayer подключает скелет, окружение и риф, у следующих отделов еще слои предыдущих.
2. Layer Break отрезает все это от слоя отдела.
3. Дальше свои ноды отдела, у камеры это Camera.
4. USD ROP пишет слой в publish шота.

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

Camera ставит камеру шота, USD ROP пишет ее по кадрам.
1. В Primitive Path пишем /World/cameras/shotcam.
2. В Translate ключи, поля зеленые.
3. Valid Frame Range ставим Render Specific Frame Range с кадрами шота, иначе запишется один кадр.
4. Output File ведет в publish/usd/cam/v001.

Значения атрибута по кадрам называются time samples, так в слое лежит анимация.

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

Лейаут ставит дрон. Reference приносит его из publish ассета, Transform ставит на место.
1. В Primitive Path пишем /World/vehicles/Drone_001.
2. В File Pattern файл дрона, Reference Primitive по умолчанию.
3. В Translate место дрона, без ключей.
4. Valid Frame Range не трогаем. Дрон стоит, ему хватит одного кадра.

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

Аниматор работает поверх лейаута, слои лейаута и камеры стоят в SubLayer его сцены.
1. Transform берет тот же прим, что лейаут.
2. В Translate и Rotate ключи.
3. USD ROP пишет кадры шота в anim/v001. В слое место и поворот дрона на каждом кадре.

Вопрос на подумать. Лейаут выпустил новую версию и переставил дрон. Где дрон будет в шоте?

3. FX одним слоем

Взрыв посчитан в SOP той же сцены. Объем лежит в файлах VDB, оболочка дыма и искры раскладываются по кадрам, а в слое FX только пути к этим файлам.

Анимацию, разложенную по файлам на кадр, называют value clips. USD читает только файл нужного кадра.

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

Сеть FX собрана в /stage.
1. Primitive делает корень /World/fx/explosion, kind component.
2. Volume ставит объем, Configure Primitive дает ветке render purpose render.
3. Оболочку дают SOP Import, Configure Primitive с purpose proxy и Geometry Clip Sequence.
4. У искр своя пара SOP Import и Geometry Clip Sequence.
5. Merge собирает ветки, USD ROP пишет слой.

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

Volume ставит объем взрыва.
1. В Primitive Path пишем /World/fx/explosion/geo/render/volume.
2. Parent Primitive Type ставим Scope, geo и render только папки.
3. В File Path путь к файлам VDB, $F4 дает файл на каждый кадр.

Прим объема называется Volume. В нем поля density, flame, temperature и vel, в их атрибуте filePath путь к VDB своего кадра.

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

Оболочку по кадрам раскладывает Geometry Clip Sequence.
1. Первый вход пустой, оболочка приходит во второй, иначе ее кадры лягут в сам слой.
2. Get Geometry From Second Input и Flatten Clip Files включаем, в файл кадра пишется сама геометрия.
3. Save Clip File Path ведет в proxy/clip, рядом лягут manifest и topology.

В слое FX нет ни одного вокселя и ни одной точки. В нем только пути, а кадры лежат рядом.

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

USD ROP пишет слой FX по кадрам шота, как у камеры.
1. Output File ведет в fx/explosion/v001, рядом с папками vdb, proxy и sparks.
2. Flush Data After Each Frame включаем, каждый кадр сразу уходит на диск и не копится в дорогой нам оперативке

4. Собираем шот

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