2016-10-03

rop in hython

Hython (Houdini Python) を使ったキャッシュファイルの出力方法についてまとめました。



使用したバージョン: Houdini 15.5.588

海外など遠いところにいる人が Houdini で作業をしていて、そのシミュレーションキャッシュなどを送るとなると、かなり巨大なファイルサイズを送る可能性が生じる。Houdiniを持たない人でも、安価な Houdini Engine のライセンスを用いることで、小さなシーンファイル (.hip) を送ってもらうだけで、コマンドライン処理によるキャッシュファイルの作成が可能。
ここでは、遠くにいる人(リモートアーティスト)と(本社の)スーパバイザの二つの職務に分けて、シーンファイルへの ROP ノードの追加、Hython による ROPノードの実行とファイル出力に関して説明する。

1. 送付する hip ファイルへの ROP ノード追加

リモートアーティストがシミュレーションシーンファイルに追加すべきことを、voronoi rbd で作成したシミュレーションを元に話を進める。

  1. ここにある voronoi_rbd_glue_switch.hip を開く。
  2. ネットワークエディタで /obj/testgeometry_rubbertoy_object1 内に入り、最下流の dopimport1 を見つける。
  3. dopimport1 の出力から ROP_Output Driver を作成。rop_geometry1 が出来る。
  4. rop_geometry1 ノードのパラメータは次の通り。

    ここでは
    • Valid Frame Range を Render Frame Range に (デフォルトは Render Current Frame で現在のフレーム1フレームのみ)
    • Start/End/Incのうち、End のエクスプレッションを RMB->Delete Channel で削除。値を24 (フレーム)に。
    • Output File の .$F. となっているところを .$F3. としてフレーム番号を3桁にする。
  5. File->Save As… で別名で保存。例えば、voronoi_rop.hip などと名前を付ける。この場合、$HIP/geo/$HIPNAME.$OS.$F3.geo.sc は、
    • $HIP: シーンファイルのあるディレクトリ
    • $HIPNAME: シーンファイルから拡張子を除いた名前 (voronoi_rop)
    • $OS: このノード名 (rop_geometry1)
    • $F3: 三桁でのフレーム番号 (4桁にするなら $F4)
    • .bgeo.sc: は拡張子。bgeo は Houdiniのジオメトリファイルフォーマット、.sc は BLOSC圧縮。
    よって変数が展開されれば、このファイル名は voronoi_rop.rop_geometry1.[001-024].bgeo.sc となる。

2. Hython でのコマンドライン処理

リモートアーティストから受け取った .hip ファイルを Hython (Houdini の Python) で処理してキャッシュファイルを生成する。これには、Houdini のライセンスでも良いが、安価な Houdini Engine のライセンスでも可能。Houdini Engine を使う場合でも、Houdini のフルインストールが必要。

  1. 上記の voronoi_rop.hip は C:\work に格納されたとする。
  2. Start->All Programs->Side Effects Software->Houdini 15.5.588->Utilities->Command Line Tools を実行。
  3. プロンプトに
    cd c:\work
    と入力、シーンファイルのあるディレクトリに移動。
  4. プロンプトに hython と入力する (Cygwin で実行する場合 hython -i)。
    Python 2.7.5 (default, Oct 20 2015, 11:48:00) [MSC v.1900 64 bit (AMD64)] on win32
    Houdini 15.5.588 hou module imported.
    Type "help", "copyright", "credits" or "license" for more information.
    >>>
    と表示される。
  5. ファイルを開くには、
    >>> hou.hipFile.load("voronoi_rop.hip")
  6. ROP ノードを選択、キャッシュを出力するには、
    >>> rop_node = hou.node("/obj/testgeometry_rubbertoy_object1/rop_geometry1")
    >>> rop_node.render()
        
    でキャッシュファイルが出力される。
  7. 例えば、最終フレームを 24 フレームから 48フレームに変更するには、
    >>> p = render_node.parm("f2")
    >>> p.set (48)
    >>> rop_node.render()
        
    で今度は48フレーム分キャッシュファイルが出力される。
  8. >>> exit()
    で終了。
  9. シェルのプロンプトに dir /b /d geo とすれば、ファイル名がリストされる。
    c:\work>dir /b /d  geo
    voronoi_rop.rop_geometry1.001.bgeo.sc
    voronoi_rop.rop_geometry1.002.bgeo.sc
    voronoi_rop.rop_geometry1.003.bgeo.sc
    ...
    voronoi_rop.rop_geometry1.024.bgeo.sc
    

関連項目

0 件のコメント:

コメントを投稿