Q100443: Katana でのスクリプトとプログラミング入門

まとめ

Katana 、アプリケーションにカスタムコードを追加するための3つの言語(Python、Lua、C++)をサポートしています。この記事では、 Katanaでスクリプトとプログラミングを始める方法と、各言語がどのようなタスクに最適かについて概説します。

詳細情報

Katanaで利用可能な各言語にはそれぞれ独自の長所があるため、どの言語が最適であるかは特定のユースケースによって異なります。

パイソン

Python は、 プロジェクトの操作ノードの操作ノード タイプのカスタマイズユーザー インターフェイスのカスタマイズPython ベースのパラメーター式など、ユーザーがアプリケーションをカスタマイズできるようにする API のコンテキストで特に、迅速なアプリケーション開発に広く使用されています。

Katanaで Python スクリプトを使い始める際に役立つよう、主要な分野を整理し、様々な Python ワークフローを詳細に解説する記事を掲載しました。また、 Python スクリプトに特化したKatanaユーザーガイドにも、さらに多くの例が掲載されています。

PythonスクリプトとUIの基礎

このカテゴリでは、 Katanaにおける Python スクリプトの基礎を紹介します。ワークフローを自動化し、パラメータ式に Python を適用できるようになります。以下の関連記事でさらに詳しく学ぶことで、 Katanaの API をツール開発に活用する方法を習得できます。

タブとUIのカスタマイズの操作

Katanaインターフェースをカスタマイズして、ワークスペースを最適化できます。カスタムタブを作成することで、ツールを整理し、ワークフローを改善できます。新しいシェルフツールやUI要素を作成して、 Katanaで最も頻繁に使用する機能に素早くアクセスできるようにすることで、ユーザーエクスペリエンスをよりニーズに合わせてカスタマイズできます。

このようなワークフローの詳細については、以下の記事をご覧ください。

ノードを使ったスクリプト

ノードはKatanaのワークフローの中核です。Pythonを使用することで、ノードの作成と変更、入出力ポートの制御、ノードパラメータのプログラム的な調整が可能です。これにより、ニーズに合わせてワークフローを柔軟にカスタマイズできます。

以下のリンクから関連記事をご覧いただけます。

シーンとプロジェクトの自動化

Katanaでシーンとプロジェクトを最適化するには、いくつかの方法があります。例えば、起動時に特定のタスクを自動化する方法があります。また、特定のニーズに合わせてグローバル設定を調整したい場合もあるでしょう。複数のフレームをレンダリングするように設定したり、シーングラフで属性をクエリしてシーンをより細かく制御したりすることも可能です。Katana Katanaニーズに合わせて最適化する方法は数多くあります。

以下のリンクから追加の記事を見つけることができます。

PYTHON - パフォーマンスに関する考慮事項

より高速なパフォーマンスが必要な場合、Python は必ずしも理想的な選択肢ではありません (恐ろしいGILのせいもあります)。

パラメータ式のコンテキストでは、ノードまたはパラメータを参照する単純な式に対して、Python式よりも高速な代替手段が利用可能です。これらは「参照式」と呼ばれ、詳細についてはKatana開発者ガイドをご覧ください。

Lua は優れたパフォーマンスを提供するため、 OpScriptノードを使用したシーン グラフ処理操作に適したスクリプト言語です。

ルア

Katanaの OpScript ノードでは Lua が使用されています。OpScript/Lua を使用すると、Python よりも高速で強力なOp APIにアクセスできます。特に、OpScript ノードでは、シーングラフ階層の構造を変更でき、位置の削除、新しい子位置の作成、属性の設定と編集などが可能です。

Lua は、シーン グラフ上で操作を開発するための高速な開発ターンアラウンド時間 (後で Op タイプとして実装される予定のより複雑な操作のプロトタイプ作成にも) と、シーンのクッキングの一部としての高速な実行時間と安定性との間で適切なバランスを実現します。

状況によっては、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ユーザー ガイドと開発者ガイドを参照してください。

パイソン

ルア

C++

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

    理由をお聞かせください