More Related Content
Similar to Houdini .OBJ から .ABC へ
Similar to Houdini .OBJ から .ABC へ (8)
Houdini .OBJ から .ABC へ
- 1. Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
Houdini
.OBJ から .ABC へ
2014/5/12
Side Effects Software Inc.
- 2. Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
今回の目的
1. 他アプリケーションで作られた
データを Houdini に読み込み
、Alembic 出出力することによ
り、Data Tree を用いて、ライ
ティング & レンダリング ワー
クフローに組み込めるようにす
る。
2. 必ずしも Houdini に持ち込む
ことを想定していない ファイ
ルへの対処方法を理解する。
3. カメラ・ライト・マテリアルの
作成&編集は、
http://slidesha.re/1iBNOB0
の2-4 (カメラの追加) からを
参照のこと。
- 3. 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 ビューを使って、マテリアルとライティングを定義。
- 4. Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
今回使用する OBJ ファイル
• www.3drender.com にある
Challenge #1: Fruit Bowl (.OBJ)
をダウンロードして使用。
• これを使うことで、必ずしも
Houdini に持ち込むことを想定し
ていない ファイルへの対処方法を
理解する。
- 5. Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
このOBJファイルの問題点
梨 (Pear) の 実の部分と 軸の部分
が同じグループになっている (画
面)。
リンゴ、バナナ、ブドウのオブジェ
クトが、nurbsToPoly[1-122]
で名付けられていて、判別が面倒。
ちなみに、
• nurbsToPoly23 = リンゴの実
• nurbsToPoly40 = リンゴの軸
• nurbsToPoly64 = リンゴの葉
• nurbsToPoly121 = バナナ1(下)
• nurbsToPoly122 = バナナ2(上)
となっているが、ブドウの実と軸は
ランダム。
- 6. Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
このOBJファイルの問題点
• このファイルをそのまま
Alembic に変換して、Data
Tree に渡せば、122の
nurbsToPoly を扱わなければな
らなくなる。
• これは面倒。
- 7. Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
2つの解決方法
1. Houdiniのノードネットワークですべて対処
nurbsToPoly[1-122]のうち、リンゴグループ3
つ、バナナ2つのグループ名を Houdiniの
Group ノードで置換、残りは、ビューポート
選択によってグループを再編成。
• 利点
• テキスト編集する必要がない
• 難点
• ノードネットワークが冗長になりやすい。
2. .OBJ ファイルをテキスト編集
.OBJ ファイルで定義されたグループのう
ち、簡単に変更できる部分をテキストエディ
タで置換する。
• 利点
• 時間短縮。ノードネットワークが単純にな
る。
• 難点
• テキスト編集を間違うとデータが読めなくな
る可能性あり。
- 8. Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
今回は テキスト編集 (#2) を使用
• .OBJ で定義されたグループのうち、
次を以下のように編集した。
nurbsToPoly23 -> apple
nurbsToPoly40 -> applestem
nurbsToPoly64 -> appleleaf
nurbsToPoly121 -> banana1
nurbsToPoly122 -> banana2
• 編集を加えたのが
fruit_renamed.obj。
編集していないのが fruit_v2.obj。
- 9. 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
- 10. Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
2. OBJ ファイルの読み込み
file ノードを使って、OBJ ファイ
ルを読み込む。
4. ファイルノードの Geometry
File の部分に、.obj ファイル
(fruit_renamed.obj) を指定。
四角で囲われたアイコンをクリ
ックすることで、ブラウザを開
いてファイルの場所まで到達、
ファイルを選択可能。
5. #4が終了すると、ビューポート
上にオブジェクトが現れる (画
面はカメラをタンブルした結果
)。
4
3
- 11. 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 を ON
9. #8 の結果表示された Group
Mask を "piece*" から "*" に
変更。
10. Number of Namings を 1 から0
にするか、右画像で囲われた
'X' アイコンをクリックして削
除 (結果画像は次ページ)。
7
8
9
10
6
- 12. 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
- 13. 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
- 14. 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 ノードを使用。
- 15. 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
- 16. 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
- 17. 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
- 18. Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
7. グループ化 2 (梨): 面の選択、グループの作成
ネットワークビューで、delete2 ノ
ードがハイライト(選択)されている
ことを確認し、
27. ツールボックスで選択ツールを
起動。
28. ビューポート上で、梨のヘタの
部分どこか一箇所を選択すると
、ヘタ全体がハイライト選択さ
れる。
29. この状態、ビューポート内で、
TAB
-> Group として グループノー
ドを作成する。
選択結果を作成するノードに直接渡
すために#29は、必ずビューポート
内で行う。
30. これにより、group1 ノードが
27
28
29
- 19. Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
7. グループ化 2 (梨): グループ編集1
31. Group Name のチェックボックス
がオンになっていること(デフォ
ルト) を確認の上、名前を
Pearstem とする。
Pearstemの'P' は、のちほど
Pear*で両方選択できるように、
大文字。
30
31
- 20. 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
- 21. 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
- 22. 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
- 23. 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
- 24. 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 と
名前を変更しておく (画面は次
ページ)。
45
46
47
- 25. 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
- 26. Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
9. グループ化 3: nurbsToPoly* その5
53. #52によって、作成された Group
ノードの Group Name を grape1
と変更する。
54. ノード名も grape1 とする。
52
54
53
- 27. 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
- 28. 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
- 29. 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
- 30. 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
- 31. 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
- 32. 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
- 33. Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
10. グループ化終了: まとめ
78. merge1 ノードを選択、パラメー
タビューには、このノードに接続
されているノード名が表示される
。
79. ディスプレイフラグもこのノード
にすると、ビューポートにはすべ
てのジオメトリが表示され、総
primitives 数は、106,986 と入
力と同じになっている(はず)。
もし数値が異なるのであれば、ど
こかで間違えている。
80. また、name1 を選択し、 Details
View (Primitives) をみれば、す
べての面にグループ名が入ってい
る(はず)。
空白があれば、どこかで間違えて
いる。
78
79
- 34. Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
11. ROP Alembic の追加
81. ディスプレイフラグを name1 に
設定。これは非常に重要。
82. ここまでシーンファイルを保存
していないのであれば、保存
(File->Save) を実行する
(obj2abc_completePartitions.h
ip)。
これにより $HIP (シーンファイ
ルのあるディレクトリ)が決定/
更新され、Alembicファイルの書
き出される場所がわかり易くな
る。
83. name1 から、TAB -> ROP
Alembic Output を選択。
81
83
- 35. Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
11. ROP Alembic の設定 その1
84. Alembic file の名前を設定す
る。拡張子 (.abc)を忘れない
こと。
84
- 36. 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
- 37. Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
12. Alembic の読み込み: その1
88. Scene View に戻り、今まで作業
をしてきた geo1 のディスプレ
イフラグを(右端の青い部分)を
クリックしてオフにし、非表示
にする。
ビューポートからジオメトリが
消える。
89. TAB -> Geometry で新しく
Geometry ノード (geo2) を作成
。
88 89
- 38. Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
12. Alembic の読み込み: その2
90. #89 で作成した geo2 ノードの
中に入る。ここに file1 ノー
ドがあるが、使わないので、削
除しても無視しても構わない。
91. TAB -> Alembic を実行し、
Alembic ノードを作成。
91
90
- 39. Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
12. Alembic の読み込み: その3
92. File Name に先ほど (#84) で
書き出した ファイル名を指定
。
93. alembic1 ノードのディスプレ
イフラグがオンになっていれば
、ビューポートにジオメトリが
表示される。
92
93
- 40. 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
- 41. Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
14. Data Tree
97. 表示された Data Tree パネル
で Object Appearance を選択
。
右図のように、定義した名前がすべ
て表示され、これを元にライティン
グおよびシェーディングの編集が可
能。
- 42. Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
ここまで
• 続き (カメラ、ライト、マテリアル追加・設定)は
http://slidesha.re/1iBNOB0
の2-4 (カメラの追加) からを参照。
• 基本的な考え方は、他のファイルフォーマットでも同じ。
• やり方は一通りではなく、いくつもある。
• 自分の好みの方法があればそのアプローチを取って構わない。
- 43. 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.abc
fruit_v2.obj をそのまま、NurbsToPoly に修正を加えず
に Alembic ファイルとして出力した結果 。
3 fruit_renamed.obj
fruit_v2.obj にテキスト編集を加えたファイル (8ペー
ジ参照)。
4 fruit_v2.mtl, fruit_v2.obj
オリジナルの .OBJ ファイルとマテリアルファイル
(.mtl)
5 obj2abc_begin.hip 「8. 結果のマージ」 (21ページまで行ったもの)
6 obj2abc_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 ファイルをさらに読み込
んだもの。
シーンファイル
- 44. Copyright © Side Effects Software Inc. 2014 All Rights Reserved.
この項終了
質問は info-jp@sidefx.com まで。
Editor's Notes
- 右側 25,380
- nurbsToPoly* がなければ、手数半分で終わっていたはず。