houdini alembic を使ったライティングワークフロー
DESCRIPTION
Houdini Alembic を使ったライティングワークフローTRANSCRIPT
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
Alembic を使ったライティングワークフロー
2014/4/30
Side Effects Software Inc.
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
Alembic を使ったライティングワークフロー
1. 形状ファイルを Alembic ファイルにまとめる。
2. Deferred Load によるオーバヘッド回避
1. ビューポートには、 CPU を経由せずに GPU に直接ロード。
2. Mantra ( レンダラー ) はAlembic ファイルから直接形状データを取り込む。
3. モデリングとライティング+ シェーディングの分業化。
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
全体的な流れ
1. 形状シーンの作成1. 形状に Alembic と Data
Tree が理解可能なパーティション分けに必要なアトリビュートの定義
2. 形状を Alembic で出力2. ライティングシーンの作成
1. 1-2 で出力した Alembic を入力
2. ライトおよびマテリアルの追加
3. Data Tree による一括編集
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
シーンファイル
ftp://ftp.sidefx.com/public/mantraAlembicTokyo.zip (259KB)
• このファイルは必須ではありません。
• Houdini 13.0.376 で作成。
• alembic_lighitng.hip を使う際には、• alembic1 ノードの ファイル名を
• $HIP/teapot_out.abcと変更すること。
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
1-1 Teapot の作成
Houdini を起動または新規シーンを作成。
1. Create シェルフの Platonic Solids をクリック。
2. ビューポート内にカーソルを移動、ビューポート内をクリックするか、 Enter キーを押せば、プラトニック形状が一つ作成される。 Enter キーの場合は、原点に作成される。
3. ビューポート上部のプルダウンで Utah Teapot を選択。
4. ビューポートで、 SPACE+G キーを押すと、ティーポットが拡大表示される。
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
1-2 ネットワークビュー
5. ネットワークビューで platonic_object1 を選択。
6. ダブルクリックするか、 Enter キーまたは i キーを押すと、このノードの中に入ることが可能 ( 出るには u キー ) 。
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
1-3 Convert ノードの追加
7. Network パネルの中にある platonic1 の出力ポートをクリックし、 TAB キーを押してから、 'c', 'o', 'n', 'v' と押すと、 Convert ノードが選択可能になる。 Enter キーを押して確定。
8. Convert To が Polygon になっていることが必須。
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
1-4 トランスフォームノードの追加
9. Convert ノードを追加したのと同じ要領で Transform ノード (xform と表示される ) を追加。
10. Translate Y に $BBY ( バウンディングボックスの Y 値 ) と変数を入力。
これにより、ティーポットがXZ 平面状に配置される。
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
1-5 Grid( 平面 ) の作成
11. Tool Options で Create in Context を選択。
これにより、今後の操作が現在のコンテクスト (/obj/platonic_object1) の中で行われるようになる。
12. Create タブから Grid を選択 ( もしくは TAB キー -> Grid) 。
13. ビューポートで Enter キーを押して原点に配置。
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
1-6 Grid の調整
14. Rows と Columns をそれぞれ 3 にする。
この Rows と Columns はそれぞれの「点」の数であり、「面」の数ではない。面の数は結果的に 2x2 になる。
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
1-7 Copy ノードの追加
ティーポットを 9 個複製する。
15. TAB->Copy で Copy ノードを作成。
16. 左側の入力に xform1 ノードを接続。
17. 右側に grid1 ノードを接続。
18. copy1 ノードのパラメータビューで、 Transform Using Template Point Attributes をオフにする。
19. ビューポートで SPACE+G を押すと、 grid の各頂点にティーポットがコピーされているのが確認できる。
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
1-8 Attribute Create ノードの追加
grid1 の頂点番号をコピーされた各ティーポットに継承させるためにアトリビュートを作成。
20. TAB->AttribCreate を実行。
21. 作成されたノード (attribcreate1) を grid1 とcopy1 の間の線の上にドラッグ & ドロップして挿入。
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
1-9 アトリビュートの定義
attribcreate1 ノードのパラメータビューの中で
22. Name を ptnum ( など、わかり易いものであれば何でも良い )
23. Type を Integer ( 整数 )
24. Value を $PT ( 各ポイント番号 )
と定義する。
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
1-10 ( おまけ ) アトリビュートの確認
1-9 で作成したアトリビュートを確認するには、
25. attribcreate1 ノードが選択されていることを確認。
26. Details View パネルに行く。
27. 表示モードを point モードにする。
すると、 ptnum というカラムが追加され、それぞれに正しい数値が入っていることがわかる。
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
1-11 アトリビュートの継承
28. copy1 ノードを選択。
29. パラメータビューで、 Attribute タブを選択。
30. To Primitive の Set の部分に、 ptnum ( 定義したアトリビュート名 ) を挿入。
31. Details View の Primitives ( 面 ) ビューでみれば、コピーされた各ティーポットの各面がそれぞれ grid1 の頂点番号を正しく持っていることが確認可能。
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
1-12 ( おまけ ) アトリビュートの確認 (2)
copy1 ノードに Color ノードを接続することで、それぞれの面に定義したアトリビュートの値が正しく渡ったかを視覚的に確認することが可能。
32. copy1 ノードの出力から TAB->color で、 Color ノードを作成。
33. 作成された Color ノード (color1) で、 Class を Primitive ( 面 )
34. Color Type を Random from Attribute
35. Attribute を ptnum ( 定義したアトリビュート名 )
にすると、ティーポットがそれぞれ ptnum の値別にランダムに色づけされる。
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
1-13 Alembic に渡すアトリビュートの作成
ここまで作ってきた値を元にAlembic ファイル経由でのちのライティングワークフローに必要なアトリビュートを定義する。このアトリビュートは、「文字列」( String )である必要がある。36. 1-12 で作成した Color1 から
AttribCreate ノードをもう一つ作成
37. attribcreate2 の Name を teapot ( わかり易い名前であれば何でも可 ) 。
38. Class を Primitive ( 面 )39. Type を String ( 文字列 )40. String( 値 ) を teapot_$PTNUM
とする。41. Details View でみれ
ば、 teapot_0 から teapot_8 までの値が面にアサインされているのが確認可能。
( おまけ )0~8 の代わりに 1~9 としたければ、 #40 の部分に teapot_`PTNUM+1` とすると、 teapot_1 ~ teapot_9 となる。
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
1-14 ( おまけ ) ティーポットの回転 1
それぞれのティーポットにランダムな回転を与えたい場合、 Copy ノードの Stamp 機能を使う。これには、1.Copy ノードでランダム値を作成。2.それをトランスフォーム (xform1)に渡す
の 2 ステップが必要。
41. copy1 ノードを選択。42. Stamp タブを開き、43. Stamp Inputs をオンにする ( 気
分的には最後にオンにするものかもしれないが、いずれにせよオンにすることを忘れないこと ) 。
44. Variable1 の部分に randrot ( わかりやすいものであれば何でも可 )
45. Value1 に rand($PT)*360 とする。これはつまり、 $PT (0~8 の間 ) を元にランダム値 (0.0~1.0)を生成、それに 360 をかけて0~360 までの値にしている。
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
1-15 ( おまけ ) ティーポットの回転 2
46. xform1 を選択
47. Rotate Y に
stamp("../copy1", "randrot", 0)
と入力。
これで、ビューポート上のティーポットにランダムな回転が加わる。
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
1-16 ( おまけ ) fuse の追加
ポリゴン変換したあとの形状に対して、 fuse ノードを追加することで、重複する頂点をまとめることが出来る。
48. このシーンでは、 convert1 とxform1 の間に fuse1 を挿入。
総面数は変わらないが、総頂点数が減り、後ほどレンダリングした際に、ハードエッジが減る。
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
1-17 背景オブジェクトの追加
後ほどティーポットをレンダリングする際に影の落ちる背景 ( 地面 ) を作成。
49. ネットワークビューで、 'u' キーを押して、 /obj/platonic_object1 から、一つ上の /obj に移る。
50. Create シェルフから Grid を再び実行。 Size( 大きさ ) を 50 x 50 に変更。
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
1-18 ここまで
ここまでで Scene レベルには二つのオブジェクトノード、• platonic_object1 ( ティーポット
9 個 )• grid_object1 ができている ( はず ) 。
platonic_object1 の中でのDisplay Flag が一番下の attribcreate2 ノードになっていることを確認すること。
このシーンを保存しておくと良い。
次に、 Alembic で出力する。 platonic_object1 内での Display Flag が一番下の attribcreate2 ノードになっていることを確認すること。
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
2-1 Alembic ノードの作成 (1)
51. コンテクストを /obj から /out に移動する。
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
2-1 Alembic ノードの作成 (2)
52. /out 以下で TAB->Alembicで Alembic ノードを作成。
53. ファイル名を指定。自分で認識できる名前であれば何でも良い (.abc は必須 ) 。
54. Save Attributes をオフにする。
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
2-1 Alembic ノードの作成 (3)
alembic1 のパラメータを下の方にスクロールして
55. Partition Mode を Use Attribute Value に
56. Partition Attribute を teapot (#37 で定義したアトリビュート名 ) にする。
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
2-2 Alembic ファイルの出力
57. パラメータビューの一番上に戻り、 Render ボタンをクリック。これで、 abc ファイルが出力される。
58. ここでファイルを保存しておくと良い。
次に新しいシーンファイルを作成する。
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
2-3 新規シーン + Alembic 入力 (1)
59. File->New として新しいシーンを作成。
60. ネットワークパネルの Scene (/obj) で、 TAB->Geometryとして Geometry ノードを作成。
61. 作成された geo1 ノードを選択したまま、 Enter キーを押すか、 i キーを押すか、もしくはダブルクリックして geo1 ノードの中に入る。
62. geo1 の中に存在する file1 を選択、 Delete キーを押して削除。
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
2-3 新規シーン + Alembic 入力 (2)
63. geo1 の中で、 TAB->Alembic として alembic ノードを作成。
64. #57 で出力したファイルを読み込む。
65. alembic ノードから TAB->Packed Edit としてpackededit ノードを追加し接続する。
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
2-4 カメラ追加
レンダリング用のカメラを追加する66. Ctrl キーを押しながら、 Lights
and Cameras シェルフから、Camera ボタンを実行。ビューポートのカメラが、作成されたカメラか (cam1) らのビューに変わる。
67. cam1 の View タブに行き、 Resolution脇の ボタンをクリックして、好きな解像度に設定 (#68) 。ここでは、 HDTV 720 を選択して、画角を1280x720 に変更。
69. ビューポートに表示されるビューがどのカメラからかを確認するには、 69 の表示で確認可能。
70. その際に、 70 のボタン (Lock camera) ボタンを押せば、 #69 で定義されたカメラの位置を変更可能。
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
2-5 ライト追加 ( その 1)
71. Ctrl キーを押しながら、 Area Light ボタンをクリック。 Ctrlキーを押したことで、ビューは、 arealight1 からの視点になっている (#72) 。
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
2-5 ライト追加 ( その 2)
73. 同じ要領で、 Ctrl キーを押しながら、 Spot Light を作成。Area Light の反対側に配置する。
74. さらにライトを追加したければ、同様の要領でライトを追加しても良い。
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
2-6 マテリアルの登録 ( その 1)
75. Material Palette を開き、
76. 左側のリストで Mantra Surface を選択、右側 (/shopの中 ) に左マウスボタンでドラッグ & ドロップ。
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
2-6 マテリアルの登録 ( その 2)
77. リストを下にスクロールし、 Patterns 以下にある Checkerboard を右側にドラッグ & ドロップ。
78.他にもマテリアルを追加したければ、追加してよい。
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
2-7 Data Tree 設定 ( その 1)
79. ネットワークビューやマテリアルパレットの右端にある '+' ボタンを押してメニューを表示。New Pane Tab Type-> Data Tree ( 下から5番目 ) を選択。
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
2-7 Data Tree 設定 ( その 2)
80. Choose a viewer をクリック、プルダウンから Light Bank を選択。ライトがリストされる ( 次ページの画像参照 ) 。
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
2-7 Data Tree 設定 ( その 3)
81. ビューポート (Scene View) から Render View に画面を切り替える。
82. カメラを ROP Camera から /obj/cam1 に切り替える。
83. Render ボタンを押して IPR レンダリングを実行。
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
2-8 Data Tree ライティング ( その 1)
84. arealight1 の色 (Color) と強度 (Intensity) を、例えば、黄色っぽく (R=0.87, G=0.83, B=0.3 など ) し、 Intensity を0.4 にして、
85. spotlight1 の色 (Color) と強度 (Intensity) を、例えば、青っぽく (R=0.53, G=0.55, B=1.0 など ) し、 Intensity を0.5 にしてみる。
調整をすれば、 IPR により Render View が更新され、瞬時に変更が反映される。
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
2-8 Data Tree ライティング ( その 2)
86. Data Tree の中で、ライトを一つハイライトすれば、そのパラメータが、パラメータビューに表示される。
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
2-8 Data Tree ライティング ( その 3)
87.黄色く囲われたところをクリックすると、そのライトのソロ (単独 ) ライティングが可能になる。 もう一度クリックするとソロがオフになる。
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
2-8 Data Tree ライティング ( その 4)
88.黄色く囲われたところをクリックすると、そのライトがオフになる。この場合、青いポイントライトがオフになった。 もう一度クリックするとオフが解除になる。
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
2-8 Data Tree ライティング ( その 5)
89. arealight1 パラメータのCategory に lb:yellow と追記すると、このキーワードを元にしたオブジェクト単位でのライトのアサインが可能になる。
90. spotlight1 にも同様に lb:blue と追加する (Light タブ以下にこのパラメータがあることに注意、画像は次のページ ) 。
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
2-8 Data Tree ライティング ( その 6)
91. Light Bank から Object Appearance に切り替える。
92. デフォルトでは、リストにgeo1だけが表示されているが、折りたたみを解除することで、すべてのオブジェクトを確認できる。 platonic_object1以下は、 #40 (1-13) で設定した通り。
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
2-8 Data Tree ライティング ( その 7)
93. grid_object1 の Light Selection は、デフォルトでは、 * ( すべて ) となっているが、 lb:blue と書き換える。すると、左画面でわかるように、地面部分だけが、 blue とタグされた spotlight1 のみで照らされるようになる。
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
2-8 Data Tree ライティング ( その 8)
94. #93 で定義した lb:blue の先頭に、 '^' を追加すると、「 lb:blue 以外」という定義が可能になる。これによって特定ライトの除外が可能になる。
再度 * で置き換えれば、すべてのライトで照射される。
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
2-8 Data Tree マテリアル ( その 1)
95. grid_object1 の Material の部分の '+' をクリック、表示されるリスト (96) から、 checkerboard を選択。
これにより、 grid_object1 にcheckerboard マテリアルがアサインされる。
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
2-8 Data Tree マテリアル ( その 2)
97. platonic_object1 の Materialの部分の '+' をクリック、表示されるリストから、 mantrasurface (98) を選択。
これにより、すべてのティーポットに mantrasurface マテリアルがアサインされる。
さらに多くのマテリアルを作成し、ティーポット個別にアサインするのであれば、 Material Palette からマテリアルを作成 (2-6, #75 ~ 78) を繰り返す。
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
2-9: Data Tree Visibility の変更
99. オブジェクトを個別にレンダリングに登場させたくない場合、99 の部分にあるチェックボックスをはずす。
ここでは、中央のティーポットが非表示設定された。チェックボックスはレンダリングに影響、その横の Display Type はビューポート表示に影響する。
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
2-10: Data Tree Visibility の変更 ( その 2)
100.grid_object1 の Light Selection に ^lb:yellow と記述。
101.#100 で定義したライティング関係の設定は、 packededit1ノードに格納されている。ライティングに関するものはLighting (102) タブ以下にある。
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
2-11: Date Tree より複雑なシーン
シーンが複雑になっても考え方は同じ。形状データが複雑になればなるほど、このワークフローが活きることになる。