Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Houdini .OBJ から .ABC へ

2,536 views

Published on

Published in: Software
  • Be the first to comment

Houdini .OBJ から .ABC へ

  1. 1. Copyright © Side Effects Software Inc. 2014 All Rights Reserved. Houdini .OBJ から .ABC へ 2014/5/12 Side Effects Software Inc.
  2. 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. 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. 4. Copyright © Side Effects Software Inc. 2014 All Rights Reserved. 今回使用する OBJ ファイル • www.3drender.com にある Challenge #1: Fruit Bowl (.OBJ) をダウンロードして使用。 • これを使うことで、必ずしも Houdini に持ち込むことを想定し ていない ファイルへの対処方法を 理解する。
  5. 5. Copyright © Side Effects Software Inc. 2014 All Rights Reserved. このOBJファイルの問題点 梨 (Pear) の 実の部分と 軸の部分 が同じグループになっている (画 面)。 リンゴ、バナナ、ブドウのオブジェ クトが、nurbsToPoly[1-122] で名付けられていて、判別が面倒。 ちなみに、 • nurbsToPoly23 = リンゴの実 • nurbsToPoly40 = リンゴの軸 • nurbsToPoly64 = リンゴの葉 • nurbsToPoly121 = バナナ1(下) • nurbsToPoly122 = バナナ2(上) となっているが、ブドウの実と軸は ランダム。
  6. 6. Copyright © Side Effects Software Inc. 2014 All Rights Reserved. このOBJファイルの問題点 • このファイルをそのまま Alembic に変換して、Data Tree に渡せば、122の nurbsToPoly を扱わなければな らなくなる。 • これは面倒。
  7. 7. Copyright © Side Effects Software Inc. 2014 All Rights Reserved. 2つの解決方法 1. Houdiniのノードネットワークですべて対処 nurbsToPoly[1-122]のうち、リンゴグループ3 つ、バナナ2つのグループ名を Houdiniの Group ノードで置換、残りは、ビューポート 選択によってグループを再編成。 • 利点 • テキスト編集する必要がない • 難点 • ノードネットワークが冗長になりやすい。 2. .OBJ ファイルをテキスト編集 .OBJ ファイルで定義されたグループのう ち、簡単に変更できる部分をテキストエディ タで置換する。 • 利点 • 時間短縮。ノードネットワークが単純にな る。 • 難点 • テキスト編集を間違うとデータが読めなくな る可能性あり。
  8. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 19. Copyright © Side Effects Software Inc. 2014 All Rights Reserved. 7. グループ化 2 (梨): グループ編集1 31. Group Name のチェックボックス がオンになっていること(デフォ ルト) を確認の上、名前を Pearstem とする。 Pearstemの'P' は、のちほど Pear*で両方選択できるように、 大文字。 30 31
  20. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 35. Copyright © Side Effects Software Inc. 2014 All Rights Reserved. 11. ROP Alembic の設定 その1 84. Alembic file の名前を設定す る。拡張子 (.abc)を忘れない こと。 84
  36. 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. 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. 38. Copyright © Side Effects Software Inc. 2014 All Rights Reserved. 12. Alembic の読み込み: その2 90. #89 で作成した geo2 ノードの 中に入る。ここに file1 ノー ドがあるが、使わないので、削 除しても無視しても構わない。 91. TAB -> Alembic を実行し、 Alembic ノードを作成。 91 90
  39. 39. Copyright © Side Effects Software Inc. 2014 All Rights Reserved. 12. Alembic の読み込み: その3 92. File Name に先ほど (#84) で 書き出した ファイル名を指定 。 93. alembic1 ノードのディスプレ イフラグがオンになっていれば 、ビューポートにジオメトリが 表示される。 92 93
  40. 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. 41. Copyright © Side Effects Software Inc. 2014 All Rights Reserved. 14. Data Tree 97. 表示された Data Tree パネル で Object Appearance を選択 。 右図のように、定義した名前がすべ て表示され、これを元にライティン グおよびシェーディングの編集が可 能。
  42. 42. Copyright © Side Effects Software Inc. 2014 All Rights Reserved. ここまで • 続き (カメラ、ライト、マテリアル追加・設定)は http://slidesha.re/1iBNOB0 の2-4 (カメラの追加) からを参照。 • 基本的な考え方は、他のファイルフォーマットでも同じ。 • やり方は一通りではなく、いくつもある。 • 自分の好みの方法があればそのアプローチを取って構わない。
  43. 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. 44. Copyright © Side Effects Software Inc. 2014 All Rights Reserved. この項終了 質問は info-jp@sidefx.com まで。

×