2 个 Maya 插件之间的通信
Communication between 2 Maya plugins
我正在用 C++ 开发 2 个 Maya 插件,想从插件 #2 调用插件 #1 中的函数,并随函数一起发送参数。
调用者插件是一个 MPxNode,被调用的插件应该是 "general" 函数,其作用是创建一些渲染 VRayPlugins。
我应该如何继续声明和调用适当的函数?
无论您是 Windows、OSX 还是 Linux,Maya 插件都与标准 DLL 没有区别。您可以在此处使用多种方法。您可以 link 实用程序 dll 到您的插件,只要 OS 可以找到它,它就会在 Maya 加载插件时加载到 Maya 地址 space (像任何 DLL,包括 Maya DLL)。另一种方法是从 DLL 中导出符号,但是 link function/class 在 运行 时间 (LoadLibrary() / GetProcAdress())。这一次,您需要自己加载实用程序 DLL,并在调用它们之前搜索导出签名。对于这两种方法,这是标准的C++编程,对于Maya没有什么特别的。
现在,如果您使用 Maya DG,您还可以考虑使用 MMessage / MPxNode 来传输和评估数据。这是特定于 Maya DG 和 API。但我不确定您是否需要上述复杂程度。
我正在用 C++ 开发 2 个 Maya 插件,想从插件 #2 调用插件 #1 中的函数,并随函数一起发送参数。
调用者插件是一个 MPxNode,被调用的插件应该是 "general" 函数,其作用是创建一些渲染 VRayPlugins。
我应该如何继续声明和调用适当的函数?
无论您是 Windows、OSX 还是 Linux,Maya 插件都与标准 DLL 没有区别。您可以在此处使用多种方法。您可以 link 实用程序 dll 到您的插件,只要 OS 可以找到它,它就会在 Maya 加载插件时加载到 Maya 地址 space (像任何 DLL,包括 Maya DLL)。另一种方法是从 DLL 中导出符号,但是 link function/class 在 运行 时间 (LoadLibrary() / GetProcAdress())。这一次,您需要自己加载实用程序 DLL,并在调用它们之前搜索导出签名。对于这两种方法,这是标准的C++编程,对于Maya没有什么特别的。
现在,如果您使用 Maya DG,您还可以考虑使用 MMessage / MPxNode 来传输和评估数据。这是特定于 Maya DG 和 API。但我不确定您是否需要上述复杂程度。