Universal Scene Description (USD)#
Импорт файлов USD#
USD files typically represent the scene as a hierarchy of primitives, or prims. Individual prims contain data to describe scene entities, such as geometry, lights, cameras and transform hierarchies. Blender’s USD importer converts USD prims to a hierarchy of Blender objects. Like the USD exporter, the importer does not yet handle more advanced USD concepts, such as layers and references.
Следующие типы данных USD могут быть импортированы в качестве объектов Blender’а:
Камеры (cameras)
Кривые (curves)
Источники освещения (lights)
Материалы (materials)
Меши (meshes)
Примитивные формы (primitive shapes)
Объём* (volume)
Более подробную информацию о том, как обрабатываются различные типы данных, см. в следующих ниже описаниях в разделе «Параметры импорта».
Примечание
При импорте архива USDZ, – важно внимательно рассмотреть параметр «Импортировать текстуры», чтобы определить, следует ли копировать файлы текстур из zip-архива и как это сделать.
Примитивы Xформации и области действия#
USD предоставляет тип примитива Xform, содержащий данные трансформации, которые могут использоваться для представления трансформационных иерархий и организации сцены. Такие Xform примитивы импортируются в качестве объектов-пустышек Blender’а.
USD также поддерживает примитивы Scope, которые являются структурами, не содержащими данные трансформации, но которые служат для группировки других элементов сцены. В Blender’е нет точного аналога концепции «области действия», поэтому такие примитивы импортируются в качестве объектов-пустышек Blender’а, расположенные в начале координат. Это является несовершенным представлением, поскольку сами объекты-пустышки могут иметь трансформацию, а Scope’ы – нет, но этот подход, тем не менее, помогает сохранять структуру иерархии сцены.
Примитивы создающие экземпляры в своих точках#
USD предоставляет тип примитива UsdGeomPointInstancer, который содержит экземпляры, распределённые по точкам самого примитива.
Они импортируются в Blender в качестве облака точек с помощью модификатора Geometry Nodes и ноды Instance On Points.
Анимации (animations)#
Импортёр поддерживает два типа анимации:
Анимация трансформаций: если примитив USD имеет изменяющиеся во времени данные трансформации, то к импортируемому объекту Blender’а будет добавляться ограничитель „Transform Cache“.
Animating geometry: Animating mesh and curve geometry is supported by adding a Mesh Sequence Cache modifier to the imported data. Geometry attribute (USD Primvar) animation is currently supported only for Color Attributes and UVs. Note that USD file sequences (i.e. a unique file per frame) are not yet supported.
Материалы (materials)#
Если меш USD или подмножество геометрии имеет связанный материал, импортёр назначает объекту Blender’а материал с тем же именем, что и материал USD. Если материал Blender’а с тем же именем уже существует в сцене, может быть использован существующий материал в зависимости от параметра „Конфликт названий материалов“. В противном случае будет создан новый материал.
Если материал USD имеет в качестве источника шейдера USD Preview Surface, то цвет отображения во вьюпорте, металлик и шероховатость устанавливаются в соответствии с входными значениями USD Preview Surface.
Также есть опция „Импорт USD превью“ для преобразования шейдеров USD Preview Surface в ноды шейдеров Blender’а „Principled BSDF“. Данная опция может реализовываться с потерями, так как она пока не обрабатывает преобразование всех настроек и типов шейдеров, но она может генерировать приблизительные визуализации материалов.
Ориентация системы координат#
Если импортируемый USD имеет ориентацию „Y - вверх“, – к корневым объектам будет автоматически применяться вращение для преобразования в ориентацию Blender’а „Z - вверх“.
Параметры импорта#
При импорте файла USD будут доступны следующие параметры:
Общее#
- Маска пути (path mask)
Импортировать только подмножество сцены USD, основанное на заданном примитиве.
- Включить (include)
- Только видимые примитивы (visible primitives only)
Не импортировать невидимые примитивы USD. Применимо только к примитивам с неанимированным атрибутом visibility. Примитивы с анимированной видимостью – всегда будут импортироваться.
- Только заданные примитивы (defined primitives only)
Если этот параметр отключён, – он позволяет импортировать примитивы USD, которые не определены, например те, которые имеют спецификатор переопределения.
- Установить диапазон кадров (set frame range)
Обновить начальный и конечный кадры сцены, чтобы они соответствовали таковым в USD-контейнере.
- Создать коллекцию (create collection)
Добавить все импортированные объекты в новую коллекцию.
- Относительный путь (relative path)
Выбрать файл относительно пути к файлу .blend.
- Масштаб (scale)
Значение, на которое следует масштабировать импортируемые объекты по отношению к мировому началу координат.
- Шкала интенсивности света (light intensity scale)
Шкала интенсивности импортируемых источников света.
- Пользовательские свойства (custom properties)
Поведение при импорте атрибутов USD в качестве пользовательских свойств.
- Нет* (none):
Не импортировать пользовательские атрибуты USD.
- Пользователь (user):
Импортирует атрибуты USD в пространство имён
userPropertiesв качестве пользовательских свойств. Пространство имён будет удалено из имён свойств.- Все пользовательские (all custom):
Импортирует все пользовательские атрибуты USD в качестве пользовательских свойств. Пространства имён будут сохранены в именах свойств.
Типы объектов (object types)#
- Камеры (cameras)
Import cameras (perspective and orthographic).
- Кривые (curves)
Import curve primitives, including USD basis and NURBS curves. (Note that support for Bézier basis is not yet fully implemented.)
- Источники освещения (lights)
Import lights. Does not currently include USD dome, cylinder or geometry lights.
- Материалы (materials)
Импортировать материалы.
- Меши (meshes)
Импортировать меши.
- Объёмы* (volumes)
Import USD OpenVDB field assets.
- Облака точек (point clouds)
Imports USD
UsdGeomPointsas a Облако точек (point cloud) object.- Формы USD (USD shapes)
Imports USD primitive shapes (cubes, spheres, cones, ect) as Blender meshes.
- USD Purpose
- Рендеринг (render)
Включить примитивы с назначением
рендеринг.- Прокси (proxy)
Включить примитивы с назначением
прокси.- Направляющие (guide)
Include primitives with purpose
guide.
Геометрия (geometry)#
- UV-Координаты (UV coordinates)
Чтение UV-координат меша.
- Атрибуты цвета (color attributes)
Преобразовать значения
displayColorUSD меша в атрибуты цвета Blender’а.- Атрибуты меша (mesh attributes)
Читать USD
Primvarsкак атрибуты меша.- Подразделение (subdivision)
Создать модификаторы „Subdivision Surface“ на основе атрибута USD
SubdivisionScheme.- Проверить меши (validate meshes)
Проверить импортируемый меш на наличие повреждённых данных и при необходимости исправлять их. Если эта опция отключена, – ошибочные данные могут привести к сбоям при отображении или редактировании мешей. Эта опция хоть и замедляет импорт, но крайне необходима, поскольку ошибки данных не всегда могут быть очевидны.
Риггинг (rigging)#
- Ключи формы (shape keys)
Импортировать формы смешивания USD в качестве ключей формы Blender’а.
- Арматуры (armatures)
Импортировать скелеты USD в качестве арматур Blender’а.
Материалы (materials)#
- Импорт всех материалов (import all materials)
Также импортировать материалы, которые не используются ни одной геометрией. Обратите внимание, что если эта опция «ложна», материалы, на которые ссылается геометрия, всё равно будут импортированы.
- Импорт USD превью (import USD preview)
Преобразовать поверхностные шейдеры предпросмотра USD в шейдерные сети „Principled BSDF“.
- Create World Material
Converts the first discovered USD dome light to a world background shader.
- Установить смешивание материалов (set material blend)
Если опция „Import USD Preview“ включена, – метод смешивания материалов будет автоматически установлен на основе входов шейдера
opacityиopacityThreshold, что позволяет визуализировать прозрачные объекты.
- Конфликт названий материалов (material name collision)
Поведение, когда имя импортируемого материала конфликтует с существующим материалом.
- Сделать уникальным (make unique):
Импортировать каждый материал USD как уникальный материал Blender’а.
- Существующая ссылка (reference existing):
Если материал с таким же именем уже существует, – сослаться на него вместо импортирования.
Текстуры (textures)#
При импорте пакета USDZ следующие параметры будут определять, следует ли и каким образом копировать зависимости текстурных ассетов USD из zip-архива, чтобы их можно было загрузить в Blender.
- Импортировать текстуры (import textures)
Поведение при импорте текстур из архива USDZ.
- Нет* (none):
Не импортировать текстуры. Обратите внимание, что при использовании этой опции, – текстуры материалов могут быть не урегулированы в Blender’е.
- Упаковано (packed):
Импортировать текстуры в качестве упакованных данных в файл Blender’а.
- Копировать (copy):
Копировать файлы в папку, указанную в параметре „Textures Directory“.
- Папка с текстурами (textures directory)
Путь к папке, в которую будут скопированы импортированные текстуры, если режим „Импорта текстур“ установлен на „Копировать“.
Обратите внимание, что папка для текстур по умолчанию имеет относительный путь
//textures, поэтому перед импортом необходимо сохранить файл Blender’а, чтобы можно было урегулировать относительный путь.- Конфликт имён файлов (file name collision)
Поведение, когда имя импортируемого файла текстуры конфликтует с уже существующим файлом.
- Использовать существующий (use existing):
Если файл с таким именем уже существует, – использовать его вместо копирования.
- Перезаписывать (overwrite):
Перезаписать имеющиеся файлы.
Частицы и создание экземпляров (particles and instancing)#
- Создание экземпляров сцены (scene instancing)
Импортировать экземпляры графа сцены USD в качестве экземпляров коллекции, в противном случае они будут импортироваться как копии.
Экспорт в файлы USD#
Файлы Universal Scene Description (USD) могут содержать комплексные слои, переопределения и ссылки на другие файлы. USD-Экспортёр Blender’а использует гораздо более простой подход. При экспорте экспортируются все видимые и поддерживаемые объекты в сцене, опционально ограниченные по их состоянию выделения. Blender (пока) не поддерживает экспорт невидимых объектов, слоёв USD, вариантов и т. д..
В USD могут быть экспортированы следующие типы объекты:
Меши (meshes) (различных видов, см. ниже).
Камеры (сameras) (на данный момент только перспективные камеры, ортогональные не предусмотрены).
Light (all types except area lights).
Волосы (hair) (экспортируются как кривые и ограничиваются родительскими прядями).
Volume (both static and animated volumes).
Арматуры (armatures)
При экспорте анимации, – окончательный, оценённый меш записывается в USD. Это означает, что экспортированы могут быть следующие меши:
Статические меши.
Деформируемые меши; здесь топология меша не меняется, но со временем изменяется расположение вершин. Примерами являются анимированные персонажи или подпрыгивающие (но не трескающиеся) объекты.
Произвольно анимированные меши; здесь топология меняется. Примером может служить результат симуляции жидкости, где брызги жидкости могут отрываться от основного «тела» флюида.
Метасферы экспортируются как анимированные меши.
Примечание
Чтобы экспортировать сцену Blender’а как USDZ-архив, – установите расширение файла вывода на .usdz. Экспортированный пакет USDZ будет представлять собой zip-архив, содержащий зависимости документа USD и текстуры.
Кадр из Spring, экспортированный в USD и открытый в USDView.#
Параметры экспорта (export options)#
При экспорте в файл USD будут доступны следующие параметры:
Общее#
- Корневой примитив (root prim)
Если задано, – добавляет примитив трансформации с указанным путём к контейнеру в качестве родительского элемента всех экспортируемых данных.
- Включить (include)
- Только выделенное (selection only)
Если этот флажок установлен, – экспортироваться будут только выделенные объекты. Экземпляры объектов, например коллекции, копии которых создаются в сцене, – будут считаться «выделенными», когда выделен их источник.
- Только видимые (visible only)
Экспортирует только те объекты, которые не являются скрытыми. Невидимые родители экспортируемых объектов экспортируются как пустые трансформации.
- Анимация (animation)
Если флажок установлен, – экспортируется весь диапазон кадров сцены. Если флажок снят, – экспортируется только текущий кадр сцены.
- Данные Blender’а (Blender data)
- Пользовательские свойства (custom properties)
Экспортирует пользовательские свойства в качестве атрибутов USD. Свойство „Namespace“ используется для определения пространства имён, в которое записываются атрибуты.
- Пространство имён (namespace)
Если установлено, – добавить указанное пространство имён в качестве префикса к экспортируемым именам пользовательских свойств. Это применимо только к именам тех свойств, которые ещё не имеют префикса (например, это будет применено к имени
bar, но не кfoo:bar) и не применимо к именам объектов и данных Blender’а, которые всегда экспортируются в пространстве имёнuserProperties:blender.По умолчанию используется пространство имён
userProperties.- Идентификаторы Blender’а (Blender names)
Создать пользовательские атрибуты USD, содержащие исходные имена объектов Blender’а и данных объектов.
- Разрешить юникод (allow unicode)
Сохраняет символы в кодировке UTF-8 при записи USD примитива и имён свойств (для открытия полученных файлов требуется программное обеспечение, использующее USD 24.03 или выше).
- Ссылки на файлы (file references)
- Относительные пути (relative paths)
Использовать относительные пути для ссылки на внешние файлы (например, текстуры, объёмы) в экспортированном файле USD, в противном случае будут использоваться абсолютные пути.
- Изменить ориентацию (convert orientation)
Преобразовать ориентацию осей в другую систему координат, чтобы она соответствовала системе координат других приложений. Blender использует „Y - вперёд“, „Z - вверх“ (так как вид «спереди» смотрит вдоль направления „+Y“). Например, приложения обычно используют „Y“ в качестве оси «вверх», в этом случае необходимо использовать „-Z - вперёд“, „Y - вверх“.
- Ось «вперёд»/»вверх» (forward / up axis)
Сопоставив их с различными осями, вы можете преобразовывать вращения между осями «вверх» и «вперёд» «по умолчанию» для приложения.
- Операторы Xформации (Xform ops)
Тип операторов трансформации, используемых для трансформации примитивов.
- Переместить, вращать, масштабировать (translate, rotate, scale):
Экспортировать с помощью
Xformоператоров перемещения, вращения и масштабирования.- Переместить, ориентировать, масштабировать (translate, orient, scale):
Экспортировать с помощью
Xformоператоров перемещения, кватерниона ориентации и масштабирования.- Матрица (matrix):
Оператор экспорта матрицы.
- Использовать настройки для (use settings for)
Determines the whether to use Viewport or Render visibility of collection, modifiers, or any other property that can be set for both the Viewport and Render.
Типы объектов (object types)#
- Меши (meshes)
Экспортирует меш-объекты
- Источники освещения (lights)
Exports Light Objects USD does not directly support spot lights, so those are not exported.
- Камеры (cameras)
Экспортирует объекты-камеры. Экспортируются только перспективные камеры.
- Объёмы* (volumes)
Экспортирует объекты-объёмы
- Кривые (curves)
Экспортирует объекты-кривые
- Волосы (hair)
Экспортирует родительские пряди волос в качестве системы кривых. Цвета прядей волос экспортироваться не будут.
Геометрия (geometry)#
- UV-Карты (UV maps)
Если флажок установлен, – включает UV-координаты для экспортируемых мешей. Имя UV-карты в USD совпадает с именем в Blender’е.
- Переименовать UV-карты (rename UV maps)
Exports UV maps using the USD default name (
st) as opposed to Blender’s default name (UVMap).- Нормали (normals)
Если флажок установлен, – включает нормали для экспортируемых мешей. Это включает пользовательскую петлю нормалей.
- Триангулировать (triangulate)
Триангулирует меш перед записью. Более подробную информацию о конкретной опции см. в разделе о модификаторе „Triangulate“.
Риггинг (rigging)#
- Ключи формы (shape keys)
Экспортировать ключи формы в качестве формы смешивания USD.
Абсолютные ключи формы не поддерживаются.
- Арматуры (armatures)
Экспортировать арматуры и меши с модификаторами „Armature“ в качестве скелетов USD и скинированных мешей.
Ограничения:
Модификаторы, помимо модификаторов „Armature“, применяться не будут.
Сгибаемые кости – не поддерживаются.
- Только кости деформации (only deform bones)
Экспортировать только кости деформации и их родителей.
Материалы (materials)#
Экспортирует информацию о материале объекта. По умолчанию экспортёр аппроксимирует дерево нод „Principled BSDF“, конвертируя его в формат USD шейдера для превью поверхности.
Если мешу назначено несколько материалов, для каждого материала будет создаваться подмножество геометрии. Первый материал (если таковой имеется) всегда применяется к мешу (независимо от существования подмножеств геометрии), поскольку вьюпорт Hydra не поддерживает материалы в подмножествах. Подробнее см. в «USD issue #542».
Примечание
Если „USD Preview Surface Network“ и „MaterialX Network“ отключены, материал устанавливается в соответствии с материалами вьюпорта мешей.
- USD шейдер для превью поверхности (USD preview surface network)
Approximates a Принципиальный BSDF (principled BSDF) node tree to by converting it to USD’s Preview Surface format.
Предупреждение
Not all nodes are supported; currently only Diffuse, Principle, Image Textures, and UVMap nodes are support.
- Сеть MaterialX (MaterialX network)
Генерирует графы затенения материалов с использованием стандарта MaterialX. Этот стандарт разработан для поддержки высокой степени взаимодействия между DCCs. В Blender’е MaterialX поддерживает большинство нод-шейдеров и их функциональность, но имеется несколько оговорок (см. ниже).
Предостережения по реализации
При использовании ноды „Principled BSDF“, – результирующий график очень удобен в использовании. Однако при использовании некоторых других BSDF – некоторые из сгенерированных графиков затенения становятся сложны для понимания другими DCC.
- Convert World Material
Convert the world material to a USD dome light. Currently works for simple materials, consisting of an environment texture connected to a background shader, with an optional vector multiply of the texture color.
- Экспорт текстур (export textures)
Export textures referenced by shader nodes to a «textures» folder which in the same directory as the USD file.
- Перезаписать текстуры (overwrite textures)
При экспорте текстур, – разрешить перезапись существующих файлов текстур.
- Понижение разрешения текстур USDZ (USDZ texture downsampling)
Выбрать максимальный размер для всех экспортируемых текстур.
- Оставлять (keep):
Оставить все текущие размеры текстур.
- 256:
Изменить размер до максимального значения в 256 пикселей.
- 512:
Изменить размер до максимального значения в 512 пикселей.
- 1024:
Изменить размер до максимального значения в 1024 пикселя.
- 2048:
Изменить размер до максимального значения в 2048 пикселей.
- 4096:
Изменить размер до максимального значения в 4096 пикселей.
- Особый (custom):
Указать индивидуальный размер.
- Пользовательский уменьшенный размер USDZ (USDZ custom downscale size)
Размер в пикселях „пользовательского“ понижения разрешения.
Экспериментальные (experimental)#
- Создание экземпляров (instancing)
Данная опция является экспериментальной. Если флажок не установлен, – дублированные объекты будут экспортироваться в качестве реальных объектов, поэтому система частиц со 100 частицами, отображаемая со 100 мешами, будет в экспортируемом файле иметь 100 отдельных мешей. Если флажок установлен, – дублированные объекты будут экспортироваться в качестве ссылок на исходный объект. Если исходный объект не является частью экспорта, – первый дубликат будет экспортироваться в качестве реального объекта и будет использоваться в качестве ссылки.
Ограничения экспортёра#
- Односторонние и двусторонние меши
USD, похоже, не поддерживает двухсторонность, определённую для каждого материала или для каждой группы граней, поэтому Blender использует флаг первого материала, чтобы пометить весь меш как одно/двусторонний. Если материала нет, то по умолчанию он становится двухсторонним.
- Mesh Normals
The mesh subdivision scheme in USD is „Catmull-Clark“ by default, but Blender uses „None“ instead, indicating that a polygonal mesh is exported. This is necessary for USD to understand the custom normals; otherwise the mesh is always rendered smooth.
- Vertex Velocities
Currently only fluid simulations (not meshes in general) have explicit vertex velocities. This is the most important case for exporting velocities, though, as the baked mesh changes topology all the time, and thus computing the velocities at import time in a post-processing step is hard.
- Материалы (materials)
При наличии нескольких материалов, – грани меша сохраняются в качестве подмножества геометрии, и каждый материал назначается соответствующему подмножеству. Если материал только один, то он пропускается. Обратите внимание, что подмножества геометрии не дискретизированы по времени, поэтому они могут сломаться, в случае если анимированный меш изменяет свою топологию.
- Волосы (hair)
Экспортируются только родительские пряди и только с постоянным цветом. Никаких UV-координат и никакой информации о нормалях.
- Камера (camera)
Экспортируются только перспективные камеры.
- Источники освещения (lights)
USD does not directly support spot lights, so those are not exported.
- Частицы (particles)
Частицы записываются только когда они «живы», что означает, что они всегда видны. В настоящее время нет кода, который бы делал их невидимыми за пределами их жизненного цикла.
Объекты, созданные в качестве экземпляров системой частиц, экспортируются путём добавления к имени объекта постоянного идентификатора частицы, что даёт каждой трансформации частицы уникальное имя.
- Создание экземпляров/Ссылка
This is still an experimental feature that can be enabled when exporting to USD. When enabled, instanced object meshes are written to USD as references to the original mesh. The first copy of the mesh is written for real, and the following copies are referencing the first. Which mesh is considered „the first“ is chosen more or less arbitrarily.
- USDZ
Из-за текущего ограничения в библиотеке USD, текстуры UDIM не могут быть включены в архив USDZ. Это ограничение, скорее всего, будет устранено в будущей версии USD. (См. USD pull request #2133.)