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

概括

启动Katana时预先设置全局图状态变量,可以预定义Katana项目上下文的可用信息,这些信息随后可供节点图或自定义工具访问。同样,艺术家也可以设置预定义变量,例如演出或项目文件夹的文件路径。本文将指导您如何使用Katana启动脚本和回调函数,在Katana启动时修改Katana项目的全局图状态变量。

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

更多信息

以下示例展示了如何通过Katana图形用户界面中的 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)

延伸阅读

更多帮助

如果您还有其他疑问,或者在使用启动脚本设置全局图形状态变量时遇到任何问题,请提交支持工单,并告知我们您遇到的问题以及您目前已采取的故障排除步骤。此外,请提供Q100520 中概述的系统信息:获取用于Foundry支持调查的硬件规格操作系统报告。

有关如何提交支持工单的更多信息,请参阅Q100064:如何提交支持工单文章。

附件

我们很遗憾听到

请告诉我们