确定在Maya中何时完成场景加载

时间:2015-12-17 22:18:41

标签: c++ events plugins maya

我正在用c ++编写一个Maya插件。

在Maya中,当打开场景时,我的插件会自动加载并启动。 是否有一个事件告诉我的插件整个场景已加载,所以我可以开始一些动作?

2 个答案:

答案 0 :(得分:1)

我对Maya C ++ API并不熟悉,但有一个mal / python解决方案可以满足您的需求。我知道这个问题被标记为C ++,所以如果这不是一个可以接受的答案,我会删除它。

maya.cmds mel / python库中有一个scriptJob命令,允许在Maya中发生事件或条件时绑定代码的执行。

def printStuff():
    # We are printing stuff here, but this can be a call to your C++ plugin
    # Example:
    # import cppPlugin
    # cppPlugin.doActionOnSceneLoaded()
    print "Scene has been loaded"

cmds.scriptJob(e=('SceneOpened', printStuff))

执行此代码后,每次打开场景时,一旦完全加载,这将打印一行。您可以调用C ++插件,而不是打印一行。我的C ++技能现在变得生疏,已经有一段时间我没有练习但你可以将C ++方法绑定到Python调用,你可以获得一些信息herehere

您可以在userSetup.py中编写此脚本,以便在启动Maya时加载它。您可以在userSetup文件here

上获得更多信息

答案 1 :(得分:0)

找到它:

callbackId = MSceneMessage::addCallback(MSceneMessage::kAfterOpen,  (MMessage::MBasicFunction) BrainClass::sceneLoaded,this);
myCallbackIds.append(callbackId);