импорт — Как извлечь пользовательские данные из пользовательского материала в .mb с Maya C ++ API?

Как я могу извлечь данные, введенные пользователем в поля моего пользовательского материала, когда я анализирую .mb с C ++ Maya API в своем приложении для импорта? (Я подозреваю, что у меня уже есть доступ к MObject, который содержит ввод пользователя, но не знаю, как его извлечь)

Вот ситуация более подробно:

  • Я определил пользовательский материал с помощью API C ++ Maya (я создал .mll, который определяет пользовательский MPxNode, который, в свою очередь, определяет некоторые поля float и enum для пользователя)
  • в Maya я могу «назначить новый материал» объекту с пользовательским материалом, а затем изменить поля данных пользовательского материала и сохранить файл .mb
  • в моем импортере Maya из C ++ я просматриваю DAG и DG и, как и ожидалось, отмечаю одно вхождение пользовательского материала (что было отмечено при идентификации MObject материала как единственного, для которого возвращается вызов MObject :: hasFn (MFn :: kPluginDependNode) правда)
  • Я могу извлечь каждый из полей данных моего пользовательского шейдера по имени, используя MFnDependencyNode :: attribute («datafieldName») — попытка извлечь несуществующее поле данных завершается неудачно, как и ожидалось

…но эти извлеченные поля данных являются объектами MObject, и я не знаю, как извлечь данные, введенные пользователем в пользовательский экземпляр материала в Maya.

Какой правильный подход здесь?

0

Решение

Вот недостающая ссылка, которую я искал:

MFnDependencyNode :: findPlug («datafieldName») возвращает MPlug, который затем предоставляет доступ к введенным пользователем данным.

(Я искал такие имена, как «атрибут» и «поле данных» — мне не пришло в голову искать что-либо, называемое «плагин»)

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]