Skip to main content

Cardsモデルを作る

SOLARIS には「CardTextureRender ノード」という、Cards モデルを生成してくれそうなノードが
標準で用意されていますが、初見だと使い方が全く分からなかったので
USD の仕様とあわせて使い方を確認していきたいと思います。

Card Texture Render

まず、該当のノードを確認。
Card Texture Render という名前で、

どの向きを、どのレンダラーでレンダリングするか指定し
Render toDisk を押すことで、指定フォルダ以下に画像をレンダリングしてくれます。

レンダリングを実行すると、このように、レンダリング結果を張り付けた四角い板ポリを表示できるようになります。
これは、いわゆる軽量なガイドモデルとして使用するためのモデルです。

DrawMode

この Cards モデルは、USD の仕様に含まれていて、UsdGeomModelAPI という API スキーマによって定義されています。
この API の詳細はドキュメントをみてもらうとして、
ざっくり要約するとジオメトリ全体にかかわる各種拡張機能を含む API で
そのなかの1つが DrawMode であり、Cards Geometry です。

DrawMode は

Draw modes provide optional alternate imaging behavior for USD subtrees with kind model.

現在のツリー以下を描画するときに、シーングラフの走査を停止し、
サブツリー以下を、指定のプロキシモデルに置き換える処理を行います。

つまり、大量のオブジェクトを配置した時などに
「作業中は軽量なモデルに置き換えたい」
という要望があったとすると、DrawMode を default から cards や bounds に変更することで
軽量なモデルに置き換えを行います。

この設定を Houdini で行う場合は「Prim」への設定のため「ConfigurePrimitive」を使用します。

Draw Mode を「BoundingBox」にすれば

このように表示されますし、

「Origin Axis」にすれば

このように表示されます。

今回のお題である「CardsGeometry」の場合、この DrawMode を「Textured Cards」にすると
Cards モデルに切り替えることができます。

この時、板に張り付けるテクスチャのパスは
UsdGeomModelAPI によってルールが定められています。
Houdini の場合は、ConfigurePrimitive ノードにテクスチャパスを指定するプロパティが用意されているので
すべてチェックを入れて、保存先を指定します。

ここまでくるとわかりますが、Card Texture Render ノードが一体何かというと

このUSDのCardsGeometryの仕様に沿ったテクスチャをレンダリングするノード

ということになります。
実際に使用してみます。

テクスチャをレンダリングする

まず、基本的なノードの構成です。

Cards モデルを作成したいアセットの Root(DefaultPrim)ノードに対して Configure Primitive ノードを指定し、
CardsGeometry 用のテクスチャパスを指定します。

今回はチェックを ON にして、テクスチャパスはデフォルトのままにします。
この状態で HIP を保存します。

最後に、Card Texture Render ノードの Render to Disk を押します。
とりあえずデフォルトの Karma CPU を使用しますが、このあたりはお好みで変えてください。

このノードは、

UsdGeomModelAPI の CardsGeometry 関係の設定をみて、カメラを自動生成します。
そして、この生成したカメラを使用してモデルをレンダリングします。

しばらく待つと、このようにレンダリング結果が作成されます。

テクスチャがレンダリングされた状態で、DrawMode を cards に変更すると、
このようにレンダリング結果のテクスチャを使用して CardsGeometry を表示できるようになります。

この CardsGeometry は、表示方法を切り替えることもできて
デフォルトでは cross になっていますが、それを box に変更するとこのようになります。

まとめ

以上が、Card Texture Render の使用方法と
それに関係する USD の DrawMode に関する解説でした。

このあたりの USD アセットの標準仕様にかかわる部分は
https://github.com/usd-wg/assets/blob/main/docs/asset-structure-guidelines.md#draw-mode USD-WG リポジトリにある Asset Structure Guidlines に詳しく記載されています。

USD を使用したアセットを作成するとときに、今回の CardsGeometry のようなよく使用する構造を
USD で扱う場合どうすればいいかなど、サンプルデータも含めてたくさん置てあるので、
今回の件以外にも非常に参考になる情報が多いので合わせてみることをお勧めします。

参考