まとめ
Katanaアプリケーションにカスタム コードを追加するために、Python、Lua、C++ の 3 つの言語をサポートしています。この記事では、 Katanaでスクリプトとプログラミングを始める方法と、各言語がどのタスクに最適であるかについて概要を説明します。
詳しくは
Katanaで利用可能な言語にはそれぞれ独自の長所があるため、どれが最も適しているかは特定のユースケースによって異なります。
ニシキヘビ
Python は、迅速なアプリケーション開発、特にユーザーがアプリケーションをカスタマイズできるようにする API のコンテキストで広く使用されています。たとえば、 プロジェクトの操作、 ノードの操作、 ノード タイプのカスタマイズ、 ユーザー インターフェイスのカスタマイズ、またはPython ベースのパラメータ式の場合です。
さらなる例については、 Python を使用したスクリプトに関するKatanaユーザー ガイドと、さまざまな Python ワークフローについて詳しく説明した次の記事で説明されています。
- Q100091: Katanaで複数のフレームをレンダリングする方法
- Q100108: ノードのコンテキスト メニューにカスタム メニュー項目を追加する方法
- Q100109: パラメータ式で使用するカスタム関数を作成する方法
- Q100401: Katanaで棚アイテムを作成する方法
- Q100385: Python を使用してKatanaにコールバックとイベント ハンドラーを登録する方法
- Q100439: 起動時にグローバル グラフ状態変数を変更する方法
- Q100372: Python を使用した入力ポートと出力ポートの名前変更
- Q100358: Geolib3 クライアントを使用して Python 経由でシーン グラフの位置の属性をクエリする方法
- Q100277: Python を使用して新しいノードを作成して配置する方法
- Q100098: UI で独自のカスタム タブを作成する方法
Python - パフォーマンスに関する考慮事項
より高速なパフォーマンスが必要な場合、Python は常に理想的な選択肢であるとは限りません (恐ろしいGILのせいもあります)。
パラメーター式のコンテキストでは、ノードまたはパラメーターを参照する単純な式に対して、Python 式のより高速な代替手段を使用できます。これらはReference Expressionsと呼ばれ、これらに関する詳細情報はKatana開発者ガイドで参照できます。
Lua はパフォーマンスが優れているため、 OpScriptノードを使用したシーン グラフ処理操作に推奨されるスクリプト言語です。
ルア
Lua はKatanaの OpScript ノード内で使用されます。 OpScript/Lua を使用すると、Python よりも高速かつ強力なOp APIにアクセスできます。特に、OpScript ノードを使用すると、ロケーションの削除、新しい子ロケーションの作成、属性の設定および編集など、シーン グラフ階層の構造を変更できます。
Lua は、シーン グラフでのオペレーションを開発するための開発所要時間の短縮 (後で Op Type として実装される予定のより複雑なオペレーションのプロトタイプ作成にも) と、シーンのクックの一部としての実行時間の短縮と安定性の間の合理的なバランスを実現します。
特定の状況では、OpScript/Lua を使用する代わりに、カスタム Op タイプのプラグインを実装することをお勧めします。これが利点となるかどうかは、プロジェクトとその資産の複雑さ、実行される操作の数、対象となるシーン グラフの場所の数など、実際の使用例によって異なります。 FX データは、OpScript/Lua ではなく Ops/C++ でパーティクル シミュレーションのように処理することをお勧めします。
OpScript と Op API の使用の概要については、 Katanaの[ヘルプ] > [サンプル プロジェクト]メニューにある OpScript チュートリアルを参照してください。
Op API の詳細については、 Katanaユーザー ガイドおよびKatana開発者ガイドを参照してください。
次の記事にも興味があるかもしれません。
C++
大規模なデータセットを扱う場合など、パフォーマンスが重要な場合は、Lua OpScript を C++ Op タイプのプラグインに移植できます。
インターフェイスのドキュメントについてはKatana開発者ガイドを参照してください。また、次の場所にあるKatanaソース コードに同梱されているサンプル「HelloWorld」Op を参照してください: $KATANA_ROOT/plugins/Src/Ops/HelloWorld
ビルド手順はここにあります: $KATANA_ROOT/plugins/Src/README.md
サンプル Op のコンパイルに関するヒントと手順については、次の記事を参照してください: Q100326: 最初のカスタム Op を作成してテストする方法
次のコンテンツにも興味があるかもしれません。
Q100351: C++ Op 内からシステムのグラフ状態データをクエリする方法
参考文献
各言語のガイドと詳細なリファレンスについては、 Katanaユーザー ガイドと開発者ガイドを参照してください。
パイソン
- https://learn.foundry.com/ katana /Content/ug/script_editing/scripting.html
- https://learn.foundry.com/ katana /dev-guide/Scripting/WorkingWithProjects.html
- https://learn.foundry.com/ katana /dev-guide/py-modindex.html
ルア
- https://learn.foundry.com/ katana /dev-guide/OpsAndOpScript/Attributes/OpScript.html
- https://learn.foundry.com/ katana /dev-guide/OpsAndOpScript/CookInterface/OpScript.html
- https://learn.foundry.com/ katana /dev-guide/lua-modindex.html
C++
- Q100326: 最初のカスタム Op を作成してテストする方法
- Q100351: C++ Op 内からシステムのグラフ状態データをクエリする方法
- https://learn.foundry.com/ katana /dev-guide/OpsAndOpScript/CookInterface/Cpp.html
- https://learn.foundry.com/ katana /dev-guide/OpsAndOpScript/Attributes/Cpp.html
- https://learn.foundry.com/ katana /Content/tg/op_api/op_api_explained.html
- https://learn.foundry.com/ katana /dev-guide/cpp-index.html
私たちはそれを聞いて申し訳ございません
理由をお聞かせください