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でさまざまなイベント (ノードの作成やスクリプトのロードなど) が発生したときに自動的に実行されます。この場合、 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)

さらに質問がある場合、または起動スクリプトを使用してグローバルなグラフ状態変数を設定する際に問題が発生した場合は、サポート チケットを開いて、発生している問題とこれまでに実行したトラブルシューティング手順をお知らせください。 。

サポート チケットの発行方法の詳細については、「 サポート チケットの発行方法」の記事を参照してください。

さらに読む

添付ファイル

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

理由をお聞かせください