плагины — не Maya c ++ атрибут объекта в MPxNode

Я разрабатываю плагин для C ++, и мне хотелось бы узнать, как работать с объектами не-Maya класса через сцену. Я хочу иметь экземпляр класса, внешнего по отношению к API Maya, в качестве атрибута класса Node. Класс довольно сложный и состоит из нескольких классов.

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

Прямо сейчас я использую MPxCommand для выполнения вычисления этого объекта, но как только он закончится, он будет уничтожен. Я хочу сохранить это в сцене, поэтому мне нужно как-то использовать узлы. На данный момент нет необходимости хранить данные.

Итак, вы знаете способ сделать эквивалент в Maya типичного класса ООП? Я не нашел ни одного примера в devkit или документации.

class Foo : public MPxNode
{
public:
Foo () {};
virtual         ~Foo () {};
virtual MStatus compute(const MPlug& plug, MDataBlock& data);
static  void*   creator();
static  MStatus initialize();

static MObject  inputMesh;
static MTypeId  id;

// I want to keep it alive through the scene.
// static ClassBar  myBarObject; // How can I do this??

// barFunction(...); // use ClassBar myBarObj
};

MObject Foo::inputMesh;
MTypeId Foo::id( 0x80000 );
//ClassBar  Foo::myBarObj; // ????

большое спасибо

0

Решение

Нет, у вас нет возможности создать узел Maya с точки зрения чистого ООП и извлечь его из того, что когда-либо было в наших библиотеках. Maya MPxNode — это прокси-класс, который инкапсулирует логику внутреннего узла Maya. Однако, когда вы реализуете пользовательский узел, вы описываете, какими должны быть атрибуты, чтобы Maya могла работать с вашими данными и создавать соединения в DG. Способ установить и обработать атрибут зависит от вас. Вам нужно будет добавить свою собственную логику в метод computer (), когда Maya запросит значение атрибута для повторного вычисления.

Для получения дополнительной информации об интеграции пользовательских узлов и библиотек см. Опубликованные там статьи.
http://around-the-corner.typepad.com/

0

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


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