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 スクリプトを自動的に実行するには、 KATANA _RESOURCES環境変数ディレクトリ パスのUIPluginsフォルダーに Python スクリプトを保存します。

ただし、プロジェクトでグラフ状態変数を設定するには、ノードグラフが完全に読み込まれ、変数の編集が反映されるプロジェクト設定が利用可能になる必要があります。UIPlugins スクリプトは、 Katanaセッションでノードグラフが読み込まれる前に実行されるため、最初はグローバル グラフ状態変数にアクセスできません。

これを解決するには、UIPlugins スクリプトにコールバックが必要です。コールバックとは、 Katana環境に追加される Python コードで、 Katanaでさまざまなイベント(ノードの作成やスクリプトの読み込みなど)が発生したときに自動的に実行されます。この場合、起動時またはプロジェクトの読み込み直後にグローバル Graph State Variable を設定する関数を実行するために、 onStartupCompleteまたはonSceneLoadコールバックを設定する必要があります。

以下は、 Katana起動時にグローバル グラフ状態変数を設定するUIPlugins Python スクリプトの例です (添付も参照)。

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: サポート チケットの発行方法」の記事を参照してください。

添付ファイル

私たちはそれを聞いて申し訳ございません

理由をお聞かせください