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

Q100326:カスタムOpsの作成とテスト

概要

Opsは、Katanaで3Dシーンデータを作成および操作するための操作の構成要素です。 Opsは 、C ++で書かれた Op Types と呼ばれるプラグインのインスタンス です。 Katanaの Op API を使用して、シーングラフの操作や属性の変更など、さまざまな操作を実行でき ます

この記事では、 $ KATANA_ROOT / plugins / Src / Opsの 下にあるHelloWorldサンプルOpに基づいて、カスタムOpを作成、コンパイル、およびテストするためのステップバイステップの例を示し ます

詳しくは

カスタムOpを作成する前に、 $ KATANA_ROOT / plugins / Src / OpsにあるOps の例を見て おくと便利 です。このチュートリアルは特にHelloWorldの例Opに基づいています。

次の手順では、このOpのソースコードを変更して、シーングラフ内の場所で属性を読み取って設定できるOpを作成する方法について説明します。

  1. $ KATANA_ROOT / plugins / Src / Ops / HelloWorld / src / HelloWorldOp.cpp cook()関数 を次のように変更します。

static void cook(Foundry::Katana::GeolibCookInterface& interface)
{
   FnAttribute::StringAttribute typeAttr = interface.getAttr("type");
   interface.setAttr("testType",  typeAttr);

    if (interface.atRoot())
    {
       interface.setAttr("hello", FnAttribute::StringAttribute("world!"));
    }

}

  1. サンプルのOpプラグインを構築するには、 $ KATANA_ROOT / plugins / Src / README.mdに ある指示に従ってください

    ソースファイルのパスがcmakeコマンドの正しいKatanaバージョンを指していることを確認してください。 cmakeコマンドに-DCMAKE_PREFIX_PATHを含める必要はありません。これは、この場合には関係ない他のOpの例に対する依存関係を指定しているためです。

  1. プラグインをビルドしてインストールしたら、インストールディレクトリがKATANA _RESOURCESの一部であることを確認してください 。 README.mdに記載されているコマンドを使用して、MyKatanaResourcesディレクトリをKATANA _RESOURCESに含める必要があります。

  1. Katanaを起動し、CameraCreateノードを作成し、それにGenericOpノードを接続します。

  1. GenericOpノードのopTypeパラメータを "HelloWorld"に設定します。この結果、 testTypeという名前の属性が各場所に設定され、属性の値が場所のタイプになります。さらに、 "hello"という名前の属性が / root 設定され 、 "world!"という値に 設定され ます。

また、 cook() 関数を変更して、ある場所で興味のある属性を読み取りまたは設定したり、その他のさまざまな操作を実行したりすることもできます。

カスタムOpsで使用できるその他の機能については、 Katana Developer GuideのCook Interface(C ++) を参照してください

注: Opはデフォルトで( GenericOpノードの applyWhere パラメータで 指定されている ように) すべての場所で実行される ため、シーングラフ全体を自動的に移動します。上記の例では、 testType属性がすべての場所に設定されています。

これは必ずしも望ましいことではないので、上記の例では、インタフェースがあるかどうかをチェックif文含む atRoot() -これはOPが最上位置で実行されているのみ実行されるブロックは、それが調理されている場合は内部のステートメントをもたらすであろう ifステートメントの後に interface.stopChildTraversal() を使用 すると、Opがその最上位の位置の下にあるシーングラフ全体をトラバースするのを防ぐ ことができます

Opを使用するためにカスタムノードタイプを作成したい場合は $ KATANA_ROOT / plugins / Src / Ops / Messer / RegisterMesserNode.pyに ある NodeTypeBuilder の例を参照してください

いくつかのNodeTypeBuilder API関数 はKatana開発者ガイドに文書化されています。

これらの手順で問題が発生した場合は、サポートチケットを開いて、発生した問題とこれまでに実行したトラブルシューティングの手順をお知らせください。

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



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

We're sorry to hear that!

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

コメント