サポートチケットを作成する
フォローする

Q100439:起動時のグローバルグラフ状態変数の変更

概要
グローバルなグラフ状態変数を設定してKatanaを起動すると、Katanaプロジェクトのコンテキストに関するアクセス可能な情報が事前に定義されます。この情報は、ノードグラフまたはカスタムツールからアクセスできます。同様に、アーティストはショーやプロジェクトフォルダへのファイルパスなどの事前定義変数を設定できます。この記事では、Katanaの起動時にKatanaプロジェクトのグローバルなグラフ状態変数を変更する手順について説明します。

グラフ状態変数については、Katana ユーザーガイド:グラフ状態変数を参照してください。

この方法では、Katana起動スクリプトとコールバックを組み合わせて使用して、グラフ状態変数を設定します。


詳しくは
Katana起動スクリプトは 、KATANA_RESOURCES環境変数で 定義さ たパスの下の、Startupフォルダにある "init.py"という名前のファイル です。あるいは、$ HOMEディレクトリの“ .katana”フォルダにある“ init.py”ファイルの形式で起動スクリプトを使用することもできます。 "init.py"のPythonコードはKatana起動時に実行されます。

以下は、KatanaのGUIの[Python]タブで実行するなど、Pythonを介してグローバルなGraph State変数を設定する方法の例です。

 def AddGlobalGraphStateVariable(name、options): 
variablesGroup = NodegraphAPI.GetRootNode()。getParameter( 'variables')
variableParam = variablesGroup.createChildGroup(name)
variableParam.createChildNumber( 'enable'、1)
variableParam.createChildString( 'value'、オプション[0])
optionsParam = variableParam.createChildStringArray( 'options'、len(options))
optionParam、zip内のoptionValue(optionsParam.getChildren()、オプション)の場合:
optionParam.setValue(optionValue、0)
variableParam.getName()を返します。

しかし、 "init.py"スクリプトを使ってグローバルなグラフ状態変数を直接設定 しようと すると、グラフ状態変数への変更が有効ではないことがすぐにわかります。

プロジェクトにグラフ状態変数を設定するには、そのプロジェクト(新しいKatanaセッションの開始時にロードされる新しい空のプロジェクトを含む)をロードして、ルートノードにアクセスする必要があります。他のプロジェクト設定スタートアップスクリプトは、プロジェクトがKatanaセッションにロードされる前に実行されます。したがって、 "init.py"はグローバル状態変数に直接アクセスできません。

これを解決するために、起動スクリプトにコールバックが必要です。コールバックは、Katana環境に追加されたPythonコードの一部で、さまざまなイベント(ノードの作成やスクリプトのロードなど)がKatanaで発生したときに自動的に実行されます。この場合、 起動時またはプロジェクトのロード直後にグローバルなグラフ状態変数を設定する関数を実行するには、 onStartupCompleteまたはonSceneLoadコールバックを設定する必要があります。コールバックの詳細については、ナレッジベースの記事Q100385:Katanaのコールバックとイベントハンドラを参照してください

これはKatana起動時にグローバルグラフ状態変数を設定する結果の例 "init.py"です。 ( "init.py"スクリプトは、 KATANA _RESOURCES / plugins / Src / Resources / Examples / Startup フォルダで提供されているサンプルスクリプトから借用しています):

 Katanaからのコールバック
インポートログ

def onStartupComplete(** kwargs):
log = logging.getLogger( "起動例")
NodegraphAPIをインポートする
name = "変数名"
options =( 'オプション1'、 'オプション2'、 'オプション3')

variablesGroup = NodegraphAPI.GetRootNode()。getParameter( 'variables')
variableParam = variablesGroup.createChildGroup(name)
variableParam.createChildNumber( 'enable'、1)
variableParam.createChildString( 'value'、オプション[0])
optionsParam = variableParam.createChildStringArray( 'options'、len(options))
optionParam、zip内のoptionValue(optionsParam.getChildren()、オプション)の場合:
optionParam.setValue(optionValue、0)
log.info( "Katanaは完全に初期化され使用可能になりました。")

log = logging.getLogger( "起動例")
log.info( "onStartupCompleteコールバックの登録...")
Callbacks.addCallback(Callbacks.Type.onStartupComplete、onStartupComplete)

“ init.py”起動スクリプトの例を以下に添付します。

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

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

参考文献

添付

この記事は役に立ちましたか?
/

We're sorry to hear that!

Please tell us why.
2人中2人がこの記事が役に立ったと言っています

コメント