【超入門】Re:ゼロから始めるHoudini /Solaris ~氷の島を作ってみよう(Hip File配布)~
はじめに
YouTubeにて動画を公開しておりますので、併せてご覧ください。
(予告編+Part1〜Part5まであります。)
https://www.youtube.com/playlist?list=PLw6ZwRI5IW5APqdXYi1naVcW2ytCcw4F0
概要
このシリーズでは Houdini/Solaris を用いたワークフローを学ぶため、
モデリング〜レンダリング全ての工程を通してシーンを丸々一つ制作していきます。どうしてこのノードを使用するのか、どうしてそのパラメーターを変更するのか、CGを学び始めたばかりの方は理解できないことだらけだと思います。そんな方にも分かりやすく丁寧に解説していきますので、是非チャレンジしてみてください!
【全体的な流れ】
①モデリング
②USDでのデータ書き出し
③マテリアル設定
④ライト・カメラの設定
⑤レンダリング
以上の5つのステップに分けてシーンを完成させていきます。
それでは、具体的な説明を行います。
00. Houdini/Solaris(USD)って何?
★Houdiniとは
カナダのSide Effects Software社が開発した3DCGソフトウェアです。主にハリウッド映画やディズニー映画などのVFXの制作現場で使用されています。
★USDとは
USDという3Dのシーンデータを扱うためのファイル形式です。USD以外では、OBJやFBXなどがありますが、USDのファイル形式では、さまざまなツールやパイプライン間でのシーンのやりとりが容易になって、大規模なシーンデータを高速かつ効率的に扱うことができます。
★Solarisとは
USDファイル形式のデータを、Houdiniで扱うときに必要になってくるツールのことを「Solaris」と言います。
※ Solarisの詳しい説明に関しましては、こちらの動画をご覧ください
https://youtu.be/WOx_YpR4-Kw
01. モデリング
まず初めに、「旗」「氷」「地面」のモデリングをしていきます。
★ 旗のモデリング
まず「lineノード」からロープを作成します。
次に「gridノード」から旗を作成します。
次に、このロープと旗にシュミレーションをかけていきます。
今回は、風になびく布のシュミレーションにしたいので「Vellum」を使用します。
ここでは「Vellum Constraintsノード」「Vellum Solverノード」を使ってシュミレーションを行いました。
次に「Tubeノード」からポールを作成します。
★ 氷のモデリング
まず「Boxノード」から氷を作成します。
今回は「Voronoi Fractureノード」を使用して形状を作成しています。
その後、ピースを一つ取り出し氷を作ります。
今回は「Swithノード」でポイントの値を変えて3種類の氷のデータを作成していきます。
★ 地面のモデリング
まず「Height Fieldノード」から地面を作成し、その後Noiseをかけて
ポリゴンに変換します。
これで「旗」「氷」「地面」が完成しました!
02. USDでデータを書き出す
次に「USD Exportノード」を使用してモデリングしたものをUSDデータで書き出していきますが、「旗」「氷」「地面」でそれぞれ書き出し方が異なるので注意して下さい。
★ 旗のUSDデータを書き出す
先ほど作成した「OUT_FLAG」の下に「USD Export」を作成し
このとき USD Export < Configure < Subnet Groups にチェックを入れ「flag」と「rope」を選択して下さい。その後、書き出します。
※ここにチェックを入れて、読み込むグループを選択しないと
Solarisで個別にマテリアルを割り当てられなくなってしまうので必ず設定して下さい。
ポールに関しては、特にマテリアルを分ける必要はないので
先ほど作成した「OUT_POLE」の下に「USD Export」を作成し
そのまま書き出して下さい。
★ 地面のUSDデータを書き出す
地面に関しても、特にマテリアルを分ける必要はないので
先ほど作成した「OUT_GROUND」の下に「USD Export」を作成し
そのまま書き出して下さい。
★ 氷のUSDデータを書き出す
これまではHoudiniのobj階層でUSDデータを書き出していましたが
氷に関してはSolarisのstage階層でUSDデータを書き出していきます。
なぜそんな事をするのかというと、Solarisの便利な機能である「Layoutノード」というのを使用するためです。
※レイアウトノードの詳細については、こちらの動画をご覧ください。
https://youtu.be/-BA_TOWebMg
このレイアウトノードを使用するためには、以下の手順が必要です。
obj階層(SOP階層)でオブジェクトをジオメトリファイルとして書き出す
stage階層(LOP階層)でUSDファイルを書き出す
stage階層(LOP階層)でアセットを作成する
レイアウトノードにアセットを読み込んで、アセットを配置していく
では早速やっていきます。
02-1. 氷をジオメトリファイルで書き出す
先ほど作成した「OUT_ICE」の下に「File Cacheノード」を3つ作成し
3種類の氷のデータをジオメトリファイルとして書き出します。
※このとき File Cache < Advanced < Path < Output File の
パスの名前を変更して、連番書き出しにならないようにして下さい。
02-2. 氷をUSDファイルで書き出す
今度はSolarisに移動して、作業していきます。
Solaris上で「Component Builder」を作成し、バリエーションもつUSDを作っていくためのツールセットを読み込みます。
次に「Component Geometryノード」に、先ほど作成した3種類の氷のジオメトリファイルを読み込みます。
その後「Component Outputノード」にてUSDの書き出しを行います。
※ 必ず Variant Layers をONにして下さい。この設定をしないと、3種類のバリエーションを持つ氷がUSDデータに保存されなくなります。
02-3. 氷のアセットを作成する
今度は氷のアセットを作成していきます。
まず、下のペインから「Layout Aseet Gallery」を呼び出します。
既存のアセットは使用しないので、歯車マークを押して新しいアセットを作成します。
次にフォルダのマークを押して、先ほど作成したUSD を読み込みます。
3種類読み込まれていたら、アセットの完成です。
02-4. 氷を配置していく
ではレイアウトノードを使用して、氷のアセットを地面に配置していきます。
ただその前に、氷を配置するための地面が必要なのでSolarisに
地面のUSDデータを読み込んでおきます。
この下に「レイアウトノード」を作成し、氷のアセットを用いて配置していきます。
※ 配置するときは「レイアウトノード」を何回かに分けて配置する事をお勧めします。一つのレイアウトノードで全部配置してしまうと、やり直しが難しくなりますのでご注意ください。
03. マテリアル設定
では、先ほど作成した旗のUSDを読み込んでシーンを完成させていきます。
「Material Libraryノード」を接続しマテリアルを設定していきます。
「Material Libraryノード」の中はこのような感じになっています。
今回は MaterialX を使用し、テクスチャを読み込んでいきます。
※ 今回使用したテクスチャは配布したHipデータには含まれておりません。
以下のサイトからダウンロードして下さい。
https://polyhaven.com/
04. ライト・カメラの設定
ライトは、「Dome Light」と「Distant Light」を使用しました。
※ Dome Lightに使用したHDRIもPoly Havenのサイトからダウンロードできます。
05. レンダリング
では、最後にレンダリングしていきます。
今回は「Karmaノード」を使用してレンダリングを行います。
ここで重要になるのは「Resolution」と「Primary Sample」です。
この二つの干渉し合う値をうまく調節することで、高速かつ高画質でレンダリングすることができます。
シーン完成
これで一つのシーンが完成しました!
背景には、合成ソフトや編集ソフトを使用してお好みの背景を入れてみて下さい。
---------------------------------------------------------------------
今回の記事はここまでとなります。
閲覧いただきありがとうございました。
この記事が気に入ったらサポートをしてみませんか?