【问题标题】:Identify when scene is finished loading in Maya在 Maya 中确定场景何时完成加载
【发布时间】:2015-12-17 22:18:41
【问题描述】:

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

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

【问题讨论】:

    标签: c++ events plugins maya


    【解决方案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

    【讨论】:

      【解决方案2】:

      找到了:

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

      【讨论】:

        【解决方案3】:

        一个简单的解决方案:!MFileIO::isReadingFile()

        【讨论】:

        • 你会把这段代码放在哪里?
        猜你喜欢
        • 1970-01-01
        • 2014-02-19
        • 2016-06-22
        • 2021-04-20
        • 1970-01-01
        • 2011-08-01
        • 2014-07-17
        • 1970-01-01
        • 2011-10-07
        相关资源
        最近更新 更多