Q100439:如何在启动期间修改全局图形状态变量以预配置 Katana 场景

关注

概括

使用全局图形状态变量集启动Katana预定义有关Katana项目上下文的可访问信息,然后可以通过节点图或自定义工具访问这些信息。同样,艺术家可以设置预定义的变量,例如演出的文件路径或项目文件夹。本文将指导在Katana启动时修改Katana项目的全局图形状态变量的步骤。

有关图状态变量的信息,请参阅我们的Katana 用户指南:图状态变量

该方法涉及使用Katana启动脚本和回调协同工作来设置图形状态变量。

更多信息

以下是如何通过Katana GUI 中的 Python 选项卡设置全局图形状态变量的示例:

 def AddGlobalGraphStateVariable(name, options):
variablesGroup = NodegraphAPI.GetRootNode().getParameter('variables')
variableParam = variablesGroup.createChildGroup(name)
variableParam.createChildNumber('enable', 1)
variableParam.createChildString('value', options[0])
optionsParam = variableParam.createChildStringArray('options', len(options))
for optionParam, optionValue in zip(optionsParam.getChildren(), options):
optionParam.setValue(optionValue, 0)
return variableParam.getName()

name = "Variable Name"
options = ('Option 1','Option 2','Option 3')
AddGlobalGraphStateVariable(name, options)

要在交互模式下启动Katana时自动运行 Python 脚本,您可以将 Python 脚本保存在KATANA _RESOURCES环境变量目录路径的UIPlugins文件夹中。

但是,为了在项目上设置图形状态变量,需要完全加载节点图才能使项目设置可供变量编辑生效。 UIPlugins 脚本在节点图加载到Katana会话中之前运行,并且最初无法访问全局图状态变量。

为了解决这个问题,UIPlugins 脚本中需要回调。回调是添加到Katana环境中的一段 Python 代码,当Katana中发生各种事件(例如创建节点或加载脚本)时,回调会自动运行。在这种情况下,我们需要设置onStartupCompleteonSceneLoad回调来运行一个函数,该函数在启动或项目加载后立即设置全局图状态变量。

下面是一个示例 UIPlugins Python 脚本,它在Katana启动时设置全局图形状态变量(另附)

 from Katana import Callbacks
import logging

def onStartupComplete(**kwargs):
    log = logging.getLogger("Startup Example")
    import NodegraphAPI
    name = "Variable Name"
    options = ('Option 1','Option 2','Option 3')

    variablesGroup = NodegraphAPI.GetRootNode().getParameter('variables')
    variableParam = variablesGroup.createChildGroup(name)
    variableParam.createChildNumber('enable', 1)
    variableParam.createChildString('value', options[0])
    optionsParam = variableParam.createChildStringArray('options', len(options))
    for optionParam, optionValue in zip(optionsParam.getChildren(), options):
            optionParam.setValue(optionValue, 0)
    log.info("Katana is now fully initialized and ready for use.")

log = logging.getLogger("Startup Example")
log.info("Registering onStartupComplete callback...")
Callbacks.addCallback(Callbacks.Type.onStartupComplete, onStartupComplete)

如果您还有其他问题,或者在使用启动脚本设置全局图形状态变量时遇到任何问题,请打开支持票证并告诉我们您遇到的问题以及您迄今为止采取的故障排除步骤。

有关如何开立支持票证的更多信息,请参阅“ 如何提出支持票证”一文。

延伸阅读

附件

我们很遗憾听到

请告诉我们