Демоверсии
Блог
Arnold
09 Марта 2021

Создание, управление и передача ассетов с помощью Arnold Stand-ins, USD и MaterialX. Вторая часть

Применение возможностей MtoA в едином производственном конвейере на основе USD и MaterialX.

Автор: Дмитрий Чехлов

Приветствую! Это вторая часть статьи, посвященной инструментам для обмена данными между разными системами визуализации. В этом обзоре мы рассмотрим основы: как представлены данные в USD и MaterialX, какие возможности Arnold Renderer поддерживаются, а также как использовать их для передачи данных между приложениями и изменять с помощью Arnold Operators. Первая часть статьи полностью была посвящена истории и возможностям формата Universal Scene Description (USD). Сегодня поговорим о стандарте MaterialX и процессе экспорта и импорта USD-моделей.

Введение в MaterialX

MaterialX – это открытый стандарт для полноценной передачи между приложениями и модулями визуализации всего материала и контента для разработки внешнего вида. Созданный Lucasfilm в 2012 году, MaterialX использовался Industrial Light & Magic в таких художественных фильмах, как «Звездные войны: Пробуждение силы» и «Изгой-один: Звездные войны. История», а также ILMxLAB в опытах с технологиями в режиме реального времени, таких как «Испытания на Татуине».

MaterialX удовлетворяет потребность в общем открытом стандарте для представления значений данных и взаимосвязей, необходимых для передачи полного визуального вида компьютерной модели из одного приложения или платформы визуализации в другое, включая графы затенения, процедурные текстуры и растровые текстуры, сложные вложенные материалы и их назначение геометрическим поверхностям. Чтобы еще больше стимулировать взаимозаменяемые настройки внешнего вида компьютерной графики, MaterialX также определяет полный набор узлов создания и обработки данных с точным механизмом функциональной расширяемости.

Реализация USD и MaterialX в Maya и Arnold

На текущий момент поддержка USD и MaterialX реализована в Maya с помощью модуля расширений Maya USD plug-in для Autodesk Maya 2020, MtoA 4.X и ядра Arnold Renderer 6.X. О модуле Maya USD plug-in мы поговорим с выходом новой версии Maya. В данной статье я подробно расскажу о реализации поддержки формата USD и стандарта MaterialX в MtoA 4.X.

Одним из важнейших преимуществ поддержки USD в Arnold стала возможность визуализировать сцену с проработанной иерархией, внося изменения в режиме реального времени. USD и MaterialX позволяют сохранять ассеты в универсальном формате, когда может потребоваться передать модель для визуализации в стороннем приложении или с применением Arnold Stand-in’s.

Autodesk

Инструменты экспорта данных сцены в MtoA 4

Напрямую из Maya с помощью MtoA могут быть экспортированы данные в виде описания сцены или объектов и материалов в USD, а также графы материалов – в MaterialX. Для этого, просто используйте инструменты в меню Arnold => Scene Export... и Arnold => Utilities..., как на изображении выше.

MtoA поддерживает экспорт в USD в бинарном формате. В то же время вы можете экспортировать модель в ascii-формате, используя модуль Maya USD plug-in, доступный на GitHub для Maya версии 2020 и выше. Спецификации материалов могут быть экспортированы в MaterialX на основе выделенных объектов и графов материалов.

Рассмотрим небольшую концептуальную схему, в которой показано, как можно использовать файлы в формате USD и MaterialX для визуализации с помощью MtoA.

Autodesk

Схема применения Arnold Standin, Arnold Operators и файлов с данными в форматах USD и MaterialX

На рисунке представлена общая концептуальная диаграмма возможного применения форматов USD и MaterialX. Создав сцену в 3ds Max, Maya или Houdini, вы можете экспортировать модель и связанные с ней данные в файлы USD и MaterialX. Если создана анимация, экспорт анимации в USD также возможен. При этом все основные блоки, представляющие данные сцены, доступны для экспорта напрямую из Maya и Arnold Renderer. Так как USD и MaterialX являются «языком», на котором могут разговаривать приложения, данные, сохраняемые в них, универсальны для всех поддерживающих их приложений и ядер визуализации.

В Arnold Renderer вы можете загрузить модель со всей структурой данных с помощью Arnold Stand-in и вносить в них изменения с помощью мощного и многофункционального инструмента Arnold Operators. Таким образом могут быть созданы различные варианты модели напрямую в Stand-ins, что существенно помогает в создании множества вариаций одной модели.

Созданная с применением нескольких вариаций сцена, может быть визуализирована сразу в Maya или любом другом приложении, поддерживающим Arnold, но также ее можно экспортировать для визуализации с помощью Arnold Standalone или в KATANA, а также в Gaffer. Важной особенностью применения USD и MaterialX является возможность правки в текстовых редакторах, так как это важно в создании сложных и комплексных проектов.

Рассмотрим основные инструменты экспорта и импорта моделей, реализованных в Arnold Renderer.

Экспорт и импорт моделей в формате USD

Напрямую экспорт в формат USD можно выполнить с помощью меню Arnold => Scene Export => Export All / ...Selection to USD. Особых отличий от экспорта в формат Arnold *.ass нет, вы можете добавить временной диапазон анимации, что позволит закешировать анимацию геометрии в сцене и визуализировать, загружая каждый кадр в процессе визуализации.

Autodesk

Диалоговое окно Export All с выбранным форматом Arnold-USD и активным режимом экспорта секвенции анимации

В настройках формата можно выбрать типы объектов, которые будут экспортированы в USD, и как будет экспортирована анимация. Arnold USD поддерживает как полигональные, так и NURBS-поверхности, также поддерживает атрибуты ядра визуализации Arnold, которые могут быть активны в одноименном свитке для узлов mesh и nurbsSurface.

Autodesk

Атрибуты Arnold Renderer для узла mesh используются для конфигурации трансляции модели в процессе визуализации

Все атрибуты могут быть представлены в формате USD и интерпретируются ядром Arnold Renderer во время процесса визуализации. Преимуществом представления атрибутов в формате USD является возможность передачи данных в другую систему визуализации и упрощение процесса редактирования моделей в текстовом формате.

Если же вы создали граф затенения (материал) который хотите использовать в различных приложениях, например, 3ds Max и Houdini, то его можно экспортировать в MaterialX и USD, и импортировать в нужном приложении и системе визуализации.

При этом граф затенителей может быть связан с конкретными объектами в сцене, что позволяет создавать множество вариативностей. Экспорт графа затенителей в MaterialX выполняется с помощью инструмента Export to MaterialX, доступного в меню Arnold => Utilities => Export Selection to MaterialX.

Autodesk

Диалоговое окно Export to MaterialX используется для экспорта графов затенителей (материалов) выделенной геометрии

С помощью диалогового окна Export to MaterialX экспортирует графы MaterialX для последующего использования с Arnold. Вы можете экспортировать графы шейдеров и свойства поверхностей из Arnold в граф затенителей MaterialX.

В экспорт входят:

  • Затенение поверхности, смещение геометрии и объемные эффекты.
  • Свойства (параметры поверхности), такие как параметры видимости, объекты-маски и смещение геометрии, экспортируются автоматически, и вы можете указать другие параметры поверхностей.
  • Существует специальное назначение видимости (visibility), которое похоже на эквивалент бита маски, где пользователи могут указать, что они хотят отключить, например, лучи камеры (camera rays).

Экспортированные графы затенителей могут быть повторно или совместно использованы Arnold Renderer в разных приложениях. Для каждого документа в формате *.mtlx вы можете определить, какие части сцены экспортируются и как должен называться внешний вид. Модуль расширения Arnold транслирует сцену, а затем вызывает функцию общедоступного API, которая проходит через пространство, генерирует документ *.mtlx и затем записывает его в файл.

Поддерживается:

  • Экспорт назначений материалов с помощью графов узлов с запатентованным типом связей Arnold, информации о каналах и определения контекста (шейдер и смещение геометрии).
  • Назначения материалов / свойств / видимости.
  • Замена / добавление режима документа *.mtlx.

Не поддерживается:

  • Варианты графов, потому что для Arnold, это «запеченная» версия сцены.
  • Поддержка стандартной библиотеки MaterialX.
  • Назначение шейдеров для источников света.

НА ЗАМЕТКУ. Вы не можете выполнить визуализации при экспорте в MaterialX.

Переменные среды

По умолчанию в экспортированных документах MaterialX используются определения узлов, поставляемые с Arnold. Пользователи могут указать свои собственные определения узлов и путь поиска, используя переменные среды ARNOLD_MATERIALX_NODE_DEFINITIONS и ARNOLD_MATERIALX_SEARCH_PATH.

Основные параметры

Параметр Filename позволяет выбрать имя и путь, по которому вы хотите сохранить файл в формате *.mtlx. Для существующих файлов MaterialX экспорт либо обновит существующий граф, либо добавит новый граф к выбранному документу.

Параметр Look Name задает имя графа вида для использования в экспортированном документе MaterialX.

Параметр Properties задает дополнительные параметры поверхности для последующего экспорта. Например, step_size и volume_padding для полигональной поверхности, которая отображается как объем (volume).

Следующие параметры поверхности будут автоматически экспортированы (если для них заданы значения, отличные от значений по умолчанию): visibility, sidedness, disp_padding,disp_height, disp_zero_value, disp_autobump, autobump_visibility.

Параметр Relative Assignments. Если установлено, назначение шейдера / свойства / видимость будет относиться к пространству имен, в котором находится геометрия. В противном случае назначения будут содержать полный путь к объекту. Например, если сфера с именем sphere1 находится в процедуре my_proc, полное имя будет my_proc/sphere1, а относительное имя – sphere1. Это позволяет назначить внешний вид другому процедурному элементу с другим именем. Концепция представления относительных и реляционных имен хорошо представлена в записях имен объектов в загружаемом Arnold Stand-ins.

В листинге ниже, приведен небольшой пример определения материала и графа затенителей в MaterialX.

<?xml version="1.0"?>

<materialx version="1.37">

  <look name="DATACOLOR">

                <materialassign name="materialassign25" material="DATACOLOR_DCC:arn_A_D_material_shader" geom="/DCC:PLATES_CONTROL_LOCATOR/DCC:BLAK_COLORED_PLATE_SIDE_A/DCC:BLAK_COLORED_PLATE_SIDE_A/DCC:BLAK_COLORED_PLATE_SIDE_AShape" />

  </look>

  <material name="DATACOLOR_DCC:arn_A_D_material_shader">

                <shaderref name="DCC:arn_A_D" node="standard_surface">

               <bindinput name="base" type="float" value="1" />

               <bindinput name="base_color" type="color3" nodegraph="NG_DATACOLOR_DCC:BLAK_COLORED_PLATE_DIFFUSE_A_D/uv" output="out" />

               <bindinput name="specular" type="float" value="0" />

               <bindinput name="specular_color" type="color3" value="0, 0, 0" />

                </shaderref>

  </material>

  <nodegraph name="NG_DATACOLOR_DCC:BLAK_COLORED_PLATE_DIFFUSE_A_D/uv">

                <uv_transform name="DCC:BLAK_COLORED_PLATE_DIFFUSE_A_D/uv" type="color4">

               <input name="passthrough" type="color4" nodename="DCC:BLAK_COLORED_PLATE_DIFFUSE_A_D" />

               <input name="rotate_frame" type="float" value="-90" />

               <input name="wrap_frame_color" type="color4" value="0.5, 0.5, 0.5, 0" />

                </uv_transform>

                <image name="DCC:BLAK_COLORED_PLATE_DIFFUSE_A_D" type="color4">

               <input name="filename" type="string" value="/sourceimages/datacolor_spyderchecker_back_A-D.tx" />

               <input name="color_space" type="string" value="" />

               <input name="ignore_missing_textures" type="boolean" value="true" />

               <input name="missing_texture_color" type="color4" value="0.5, 0.5, 0.5, 0" />

                </image>

                <output name="out" type="color3" nodename="DCC:BLAK_COLORED_PLATE_DIFFUSE_A_D/uv" />

  </nodegraph>

</materialx>

В приведенном выше листинге вы можете видеть, как представлены введенные в диалоговом окне параметры. Так, параметр Look Name здесь представлен записью <look name="DATACOLOR"> /look, а его назначение объекту записано как <materialassign name="materialassign25" material="DATACOLOR_DCC:arn_A_D_material_shader" geom="/DCC:PLATES_CONTROL_LOCATOR/DCC:BLAK_COLORED_PLATE_SIDE_A/DCC:BLAK_COLORED_PLATE_SIDE_A/DCC:BLAK_COLORED_PLATE_SIDE_AShape" />.

Материалы представлены записью в виде:

<material name="DATACOLOR_DCC:arn_A_D_material_shader">

                <shaderref name="DCC:arn_A_D" node="standard_surface">

               <bindinput name="base" type="float" value="1" />

               <bindinput name="base_color" type="color3"

nodegraph="NG_DATACOLOR_DCC:BLAK_COLORED_PLATE_DIFFUSE_A_D/uv" output="out" />

               <bindinput name="specular" type="float" value="0" />

               <bindinput name="specular_color" type="color3" value="0, 0, 0" />

                </shaderref>

  </material>

А компоненты материала, определены описанием шейдера (<shaderref ...>), настройки шейдера определяются атрибутами <bindinput name=””/>.

Связь нескольких узлов, управляющих текстурной картой представлена атрибутами <nodegraph> </nodegraph>. В данной группе атрибутов сохранена информация о таких узлах, как file и place2dTexture. Управление координатами UV выполняется с помощью атрибутов <uv_transform></uv_transform>. Сами данные о UV будут взяты из UV-пространства геометрии, сохраненной в файле *.ass или *.usd.

Данные о созданных с помощью узлов Arnold материалах и текстурах, могут быть превосходно представлены с помощью шейдеров MaterialX и импортированы как в текущую сцену, так и в другие. При этом все необходимые ассеты могут храниться во внешних файлах.

Все операции с экспортом и создание отдельных файлов нам будут полезны в работе над моделью с помощью инструмента Arnold Stand-ins и Arnold Operators, благодаря которым можно создавать несколько вариаций объектов и даже камер и вносить изменения в модель в режиме реального времени, например, при использовании режима IPR.

Ну вот и всё на сегодня. В заключительной части статьи мы достаточно подробно поговорим об основных операторах Arnold Operators и их ключевых возможностях. До скорой встречи!   

поделиться
Для сбора статистики по работе PointCGI, мы cобираем данные о пользователях. Используя PointCGI, вы соглашаетесь с нашей политикой обработки персональных данных, включая технологию cookie.