Upload
ken-taki
View
1.404
Download
0
Embed Size (px)
Citation preview
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
Houdini .OBJ から .ABC へ
2014/5/12
Side Effects Software Inc.
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
今回の目的
1. 他アプリケーションで作られたデータを Houdini に読み込み、 Alembic 出出力することにより、 Data Tree を用いて、ライティング & レンダリング ワークフローに組み込めるようにする。
2. 必ずしも Houdini に持ち込むことを想定していない ファイルへの対処方法を理解する。
3. カメラ・ライト・マテリアルの作成 & 編集は、http://slidesha.re/1iBNOB0の 2-4 ( カメラの追加 ) からを参照のこと。
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
基本的な流れ
1. OBJ ファイルを読み込む。2. ファイル内のグループ情報を引き継ぐ形で、 Alembic (.abc) に渡すグ
ループ情報を定義。• Name ノードを使って Primitive ( 面 ) 単位のアトリビュートにする。• 元のグループ情報を編集したい場合は、 Group ノードを使用して、排他
的な ( 複数グループにまたがらない ) グループを定義。これには、 Delete ノードとの組合せが必要。
3. Alembic で出力。4. #3 の Alembic を ( 新たな ) シーンに読み込み、 Packed Edit ノー
ドを使って、グループ情報を抽出。5. Data Tree ビューを使って、マテリアルとライティングを定義。
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
今回使用する OBJ ファイル
• www.3drender.com にある Challenge #1: Fruit Bowl (.OBJ) をダウンロードして使用。
• これを使うことで、必ずしも Houdini に持ち込むことを想定していない ファイルへの対処方法を理解する。
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
この OBJ ファイルの問題点
梨 (Pear) の 実の部分と 軸の部分が同じグループになっている ( 画面 ) 。
リンゴ、バナナ、ブドウのオブジェクトが、 nurbsToPoly[1-122] で名付けられていて、判別が面倒。ちなみに、
• nurbsToPoly23 = リンゴの実• nurbsToPoly40 = リンゴの軸• nurbsToPoly64 = リンゴの葉• nurbsToPoly121 = バナナ 1( 下 )• nurbsToPoly122 = バナナ 2( 上 )
となっているが、ブドウの実と軸はランダム。
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
この OBJ ファイルの問題点
• このファイルをそのまま Alembic に変換して、 Data Tree に渡せば、 122 の nurbsToPoly を扱わなければならなくなる。
• これは面倒。
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
2 つの解決方法
1. Houdini のノードネットワークですべて対処nurbsToPoly[1-122] のうち、リンゴグループ 3 つ、バナナ 2 つのグループ名を Houdiniの Group ノードで置換、残りは、ビューポート選択によってグループを再編成。
• 利点• テキスト編集する必要がない
• 難点• ノードネットワークが冗長になりやすい。
2. .OBJ ファイルをテキスト編集
.OBJ ファイルで定義されたグループのうち、簡単に変更できる部分をテキストエディタで置換する。
• 利点• 時間短縮。ノードネットワークが単純にな
る。
• 難点• テキスト編集を間違うとデータが読めなくな
る可能性あり。
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
今回は テキスト編集 (#2) を使用
• .OBJ で定義されたグループのうち、次を以下のように編集した。
nurbsToPoly23 -> applenurbsToPoly40 -> applestemnurbsToPoly64 -> appleleafnurbsToPoly121 -> banana1nurbsToPoly122 -> banana2
• 編集を加えたのがfruit_renamed.obj 。 編集していないのが fruit_v2.obj 。
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
1. Geometry ノードの配置
ジオメトリデータを扱うための大元となる Geometry ノードを作成。実際の編集作業はすべてこのノードの中で行う。
1. ネットワークビューの Scene ビューで、 TAB->Geometry として、 Geometry ノードを配置する。
2. ダブルクリック、または Enterキーを押す、または 'i' キーを押し、中に入る。
3. Geometry ノード (geo1) の中に入ると、 File ノード (file1) があるはず ( 次ページ ) 。
1
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
2. OBJ ファイルの読み込み
file ノードを使って、 OBJ ファイルを読み込む。
4. ファイルノードの Geometry File の部分に、 .obj ファイル (fruit_renamed.obj) を指定。
四角で囲われたアイコンをクリックすることで、ブラウザを開いてファイルの場所まで到達、ファイルを選択可能。
5. #4 が終了すると、ビューポート上にオブジェクトが現れる ( 画面はカメラをタンブルした結果 ) 。
4
3
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
3. Name ノードの追加
Name ノードを追加することで、OBJ ファイルにあるグループ情報を Houdini の面単位でのアトリビュート値に変換することが可能。
6. file1 ノードから TAB -> Name として Name ノードを追加。
7. パラメータビューの Attribute を name ( デフォルト ) から abcname Class は Primitive ( そのまま )
8. Name from Group を ON9. #8 の結果表示された Group
Mask を "piece*" から "*" に変更。
10. Number of Namings を 1 から 0 にするか、右画像で囲われた 'X' アイコンをクリックして削除 ( 結果画像は次ページ ) 。
7
89
10
6
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
4. Details View による確認
Details View により現在のデータの様子を確認可能。
11. Details View をクリック。
12. Primitives アイコンをクリックして面単位でのアトリビュート値を確認。
13. abcname のカラムに、 OBJファイルから取り込まれたグループ情報が面単位で存在していることがわかる。ここには、 apple などテキスト編集したのもあれば、 "nurbsToPoly*" なども混在。
14. shop_material は、 OBJ ファイル内で定義されているマテリアル情報。これは必要ないので、削除可能 ( 次ページ ) 。
11
12
13 14
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
5. Attribute ノードによるデータ削除
OBJ から取り込んだシェーディング情報は使わないので削除できる ( しなくとも良い ) 。
15. file1 ノードから、 TAB -> Attribute として、 Attribute ノードを作成、 name1 ノードとの間に挿入する。
16. Primitive タブに行く。17. Delete Attribute の部分、三角
形のアイコンをクリックして、shop_materialpath を指定。
name1 ノードのディスプレイフラグがオンになっていれば、Details Viewで、 shop_materialpath のカラムが削除されたことが確認できる。file1 をハイライトすれば、元データが確認可能。
15
16
17
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
ここから 3 つに場合分け
ここから先、扱うデータを次の 3 つの場合に分けて操作していく。
1 グループ名がそのまま使えるもの
グループ名が nurbsToPoly* と梨 (Pear) ではないもの。そのまま Name ノードに通す。
2 Pear ( 梨 ) 実の部分 (Pear) とヘタ (Pearstem) の 2 つにグループ分け。
3 nurbsToPoly*
nurbsToPoly というグループ名をすべて削除、扱い易いグループ 3 つ (grape1, grape2, stems) に再編成。実の部分 (grape1 と grape2) は、 2 回に分け手作業で選択。残りを一つのグループ (stems) にまとめる。
それぞれのグループ化には、 Delete ノードを使用。
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
6. グループ化 1 ( そのまま通すもの )
18. attribute1 から、 TAB -> Delete として、 Delete ノードを作成。
19. Group にnurbsToPoly* Pearと二つのノード名をスペースで分けて挿入。Operation は Delete Selected のまま。
name1 ノードを選択して、 Details View を見れば、 abcname 以下に、Big_Stem, Plate, apple, appleleaf, applestem, banana1, banana2, cherry_grp_1, cherry_grp_2, orange, shee1, sphere[2-7] が確認できる。
20. delete1 を others と名称変更しておくと後々わかり易い ( 次ページ ) 。
18
19
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
7. グループ化 2 ( 梨 ): Delete ノード作成
21. 再び attribute1 ノードから、TAB -> Delete として、 Delete ノードを作成。
22. Group に Pear と名前を挿入。
23. Operation を Delete Non Selected に変更。
これにより、 Pear オブジェクトが他から分離された。
20
22
21
23
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
7. グループ化 2 ( 梨 ): 選択モードの変更
24. 右画面上、箱で囲われた Geometry Selection Mode アイコンを右マウスボタンでクリック。
25. Mode は Primitives 。
26. Select Connected Geometry をオンにする。
#26 により、形状の面どこか一箇所を選択すれば、つながった面がすべて選択できるようになる。
24
25
26
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
7. グループ化 2 ( 梨 ): 面の選択、グループの作成
ネットワークビューで、 delete2 ノードがハイライト ( 選択 ) されていることを確認し、
27.ツールボックスで選択ツールを起動。
28. ビューポート上で、梨のヘタの部分どこか一箇所を選択すると、ヘタ全体がハイライト選択される。
29. この状態、ビューポート内で、TAB -> Group として グループノードを作成する。
選択結果を作成するノードに直接渡すために #29 は、必ずビューポート内で行う。
30. これにより、 group1 ノードが作成された ( 次ページ ) 。
27
2829
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
7. グループ化 2 ( 梨 ): グループ編集 1
31. Group Name のチェックボックスがオンになっていること( デフォルト ) を確認の上、名前を Pearstem とする。
Pearstem の 'P' は、のちほど Pear* で両方選択できるように、大文字。
30
31
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
7. グループ化 2 ( 梨 ): グループ編集 2
32. 同じ group1 ノードの Combine タブに行き、
33.左の Group 名に Pear ( プルダウンから選択可能 )
34. 画面で箱で囲われたアイコンをクリック、
35. 右の Group 名に Pearstem ( プルダウンから選択可能 ) を挿入。
こうすることで、梨の実とヘタの部分が排他的にそれぞれ別のグループとなった。
36. この group1 は pear と名前を変更しておくと後々わかり易い ( 次ページ ) 。
32
34
33 35
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
8. 結果のマージ
ここでグループ化 1 の結果とグループ化 2 の結果を一度まとめておく。
37. others ノードを選択し、 TAB -> Merge で Merge ノードを作成。
38. 出来たノード (merge1) を name1 との間に挿入。
39. pear ノード (#36 で名称変更 )を merge1 に接続。
これにより、二つのグループが一緒になった。
ここまでの作業を保存しておく良い。(obj2abc_begin.hip)
3637
38
39
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
9. グループ化 3: nurbsToPoly* その 1
40. 再び attribute1 ノードから、TAB -> Delete として、 Delete ノードを作成。
41. Group に nurbsToPoly* とノード名を挿入。
42. Operation を Delete Non Selected に変更。
これで、 nurbsToPoly ではじまる名前のオブジェクトが分離された。
43. このノードを nurbsToPolyG と名前を変更しておく ( 画面は次ページ ) 。
40
41
42
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
9. グループ化 3: nurbsToPoly* その 2
ここでは、 Group のプルダウンリストに羅列される nurbsToPoly1 … nurbsToPoly120 までのグループ名を削除し、これから作るグループ名へのアクセスを容易にする。
44. ネットワークビューでnurbsToPolyG (#43 で名称変更 ) から、 TAB -> Group として Group ノードを一つ作成。
45. できた group1 ノードの Group Name パラメータの左横にある チェックボックス ( 作成時はオン ) をオフにする。これにより新しいグループ名が追加されるのを防ぐ。
43
44
45
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
9. グループ化 3: nurbsToPoly* その 3
45. #44 で作成した group1 ノードの Edit タブに行く。
46. さらにその中の Delete タブに行く。
47. 削除する Group 名として、 nurbsToPoly* を入力。
これにより、 group1 以下に今後作成されるノードから nurbsToPoly* グループを参照することは出来なくなり、現在ビューポートに表示されているオブジェクトは特にどのグループにも属さない ( よってこれから作る ) 。
48. このノードを groupRemoved と名前を変更しておく ( 画面は次ページ ) 。
4546
47
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
9. グループ化 3: nurbsToPoly* その 4
49. groupRemoved (#48 で名称変更 ) が選択されているのを確認してから、ビューポート画面右側の大きな房のぶどうの実を、「 7. グループ化 2 ( 梨 ): 選択モードの変更」 (#24~26) の手順を使って一つずつ選択。
カメラビューをタンブルする際には、 SPACE + G キーを押すと、ビューのピボットが選択物の中心となる。
50.全部選択すると、 Primitives の選択数が、 25,380 となる。
51. この状態、ビューポート内で、TAB -> Group として グループノードを作成する。
52. これにより、 group1 ノードが作成された ( 次ページ ) 。
49
50
51
48
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
9. グループ化 3: nurbsToPoly* その 5
53. #52 によって、作成された Group ノードの Group Name を grape1 と変更する。
54. ノード名も grape1 とする。
52
54
53
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
9. グループ化 3: nurbsToPoly* その 6
55. ネットワークビューで、 grape1 から、 TAB -> Delete として、 Delete ノードを作成する。
56. Group に grape1 を追加
57. Operation を Delete Non Selected とする。
58. この Delete ノードを grape1_x と名前を変更し、merge1 ノードに接続する。
このように Delete ノードを経由してマージすることで、 grape1 で定義した面情報だけを merge1 以下に渡すことが出来る。
56
57
55, 58
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
9. グループ化 3: nurbsToPoly* その 7
#49 ~ #52 の手順を数の少ないブドウの実の方でもおこなう。
59. grape1 をネットワークパネルで再度選択、ビューポート画面左側に残ったぶどうの実を、 #24 ~ 26 の手順で一つずつ選択。
60.全部選択すると、 Primitivesの選択数が、 5,940 となる。
61. この状態、ビューポート内で、TAB -> Group として グループノードを作成する。
62. これにより、 group1 ノードが作成された ( 次ページ ) 。
63. この group1 を grape2 と Group, Group Name の 2箇所で改名 ( 画面は次ページ ) 。
59
60
61
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
9. グループ化 3: nurbsToPoly* その 8
64. #63 で改名した grape2 が、grape1 と grape1_x をつなぐ線からは外れていることを確認。
65. もし間に挿入されているのであれば、ノードを選択、左右に振って外し、 groupRemoved とあらためて接続。
64-65
63
63
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
9. グループ化 3: nurbsToPoly* その 9
#55 ~ #58 で行ったことを繰り返し、 grape2 も Delete ノード経由で merge1 ノードに接続する。
66. ネットワークビューで、 grape2 から、 TAB -> Delete として、 Delete ノードを作成 ( 右画面では #69 により既に改名 ) 。
67. Group に grape2 を追加68. Operation を Delete Non
Selected とする。
69. この Delete ノードを grape2_x と名前を変更し、merge1 ノードに接続する。
このように Delete ノードを経由してマージすることで、 grape2 で定義した面情報だけを merge1 以下に渡すことが出来る。
67
68
66
69
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
9. グループ化 3: nurbsToPoly* その 10
残ったヘタをグループ一つにまとめる。ここでの手順は、 grape1, grape2 とは逆。つまり、 Delete 、 Group の順で作成。
70. grape2 をネットワークパネルで選択、 TAB -> Delete として、 Delete ノードを作成。
71. Group に grape1 と grape2 を追加。
72. Operation は Delete Selected のまま。これにより、軸の形状だけが抽出される。
73. このノードを stems と改名。
71
72
70
73
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
9. グループ化 3: nurbsToPoly* その 11
74. stems をネットワークパネルで選択、 TAB -> Group として、 Group ノードを作成。
75. Group Name を stems とする。
76. このノードを stems_g と改名。
77. stems_g を merge1 に接続。
これで、すべてのグループ化が終了。
75
74
76
77
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
10. グループ化終了 : まとめ
78. merge1 ノードを選択、パラメータビューには、このノードに接続されているノード名が表示される。
79. ディスプレイフラグもこのノードにすると、ビューポートにはすべてのジオメトリが表示され、総 primitives 数は、 106,986 と入力と同じになっている ( はず ) 。
もし数値が異なるのであれば、どこかで間違えている。
80. また、 name1 を選択し、 Details View (Primitives) をみれば、すべての面にグループ名が入っている ( はず ) 。
空白があれば、どこかで間違えている。
78
79
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
11. ROP Alembic の追加
81. ディスプレイフラグを name1 に設定。これは非常に重要。
82. ここまでシーンファイルを保存していないのであれば、保存 (File->Save) を実行する (obj2abc_completePartitions.hip) 。
これにより $HIP ( シーンファイルのあるディレクトリ ) が決定 / 更新され、 Alembic ファイルの書き出される場所がわかり易くなる。
83. name1 から、 TAB -> ROP Alembic Output を選択。
81
83
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
11. ROP Alembic の設定 その 1
84. Alembic file の名前を設定する。拡張子 (.abc) を忘れないこと。
84
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
11. ROP Alembic の設定 その 2
右横のスクロールバーを使って パラメータビューの下の方に進み、85. Partition Mode を
Use Attribute Valueに変更する。
86. Partition Attribute を abcnameに設定 (#7 で定義した ) 。
87. 再びパラメータビュー上部に戻り、 Render ボタンをクリックし、ファイルを出力。
85
86
87
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
12. Alembic の読み込み : その 1
88. Scene View に戻り、今まで作業をしてきた geo1 のディスプレイフラグを ( 右端の青い部分 )をクリックしてオフにし、非表示にする。
ビューポートからジオメトリが消える。
89. TAB -> Geometry で新しく Geometry ノード (geo2) を作成。
88 89
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
12. Alembic の読み込み : その 2
90. #89 で作成した geo2 ノードの中に入る。ここに file1 ノードがあるが、使わないので、削除しても無視しても構わない。
91. TAB -> Alembic を実行し、 Alembic ノードを作成。
91
90
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
12. Alembic の読み込み : その 3
92. File Name に先ほど (#84) で書き出した ファイル名を指定。
93. alembic1 ノードのディスプレイフラグがオンになっていれば、ビューポートにジオメトリが表示される。
92
93
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
13. Packed Edit + Data Tree
94. alembic1 ノードから TAB -> Packed Edit を実行。
95. #94 によって作成された packededit1 にディスプレイフラグを設定。
96. パネルタブの右端にある '+' ボタンを押してメニューを表示。New Pane Tab Type-> Data Tree ( 下から5番目 ) を選択。
96
94-95
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
14. Data Tree
97. 表示された Data Tree パネルで Object Appearance を選択。
右図のように、定義した名前がすべて表示され、これを元にライティングおよびシェーディングの編集が可能。
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
ここまで
• 続き ( カメラ、ライト、マテリアル追加・設定 ) は
http://slidesha.re/1iBNOB0
の 2-4 ( カメラの追加 ) からを参照。
• 基本的な考え方は、他のファイルフォーマットでも同じ。
• やり方は一通りではなく、いくつもある。
• 自分の好みの方法があればそのアプローチを取って構わな
い。
Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
ftp://ftp.sidefx.com/public/sidefx_jp_obj2abc.zip (17MB)• Houdini 13.0.401 で作成。1 fruit_out.abc この手順通りに出力した Alembic ファイル
2 fruit_plain_output.abcfruit_v2.obj をそのまま、 NurbsToPoly に修正を加えずに Alembic ファイルとして出力した結果 。
3 fruit_renamed.objfruit_v2.obj にテキスト編集を加えたファイル (8 ページ参照 ) 。
4 fruit_v2.mtl, fruit_v2.objオリジナルの .OBJ ファイルとマテリアルファイル(.mtl)
5 obj2abc_begin.hip 「 8. 結果のマージ」 (21 ページまで行ったもの )
6obj2abc_completePartitions.hip
「 11. ROP Alembic の追加」 (#81 まで行ったもの )
7 obj2abc_final.hip 「 14. Data Tree」 (41 ページまで行ったもの )8 simpleout.hip #1 の fruit_out.abc を出力したシーンファイル
9 simpleout_in.hip#7 のファイルから、 #1 の .abc ファイルをさらに読み込んだもの。
シーンファイル