見出し画像

Houdini18.5 Solaris(USD) トレーニング Part4 USDを用いたHoudiniの操作

はじめに

YouTubeに説明動画をUPしておりますので、併せてご覧ください。

今回のパートは、演習を含んでおります。
今回は演習ファイルは約800MBほどありますのダウンロードの際には空き容量などに注意してしてご活用ください。URLは下記になります。
https://drive.google.com/file/d/1XfgNW3VvYAshnWDbsgRiNw7Zjm0B2aq8/view?usp=sharing
※注:また今回はSideFX社さまより特別な許可をいただきHoudini 18.5に対応したデータを配布させていただいております。
(11月1日追記:URL先に飛んだ際にアクセス権を求める共有状態となってしまっておりました。現在は何もせず演習ファイルをダウンロードできるようになっております。記事をご覧いただいている皆様に、大変ご迷惑をおかけしてしまいましたことをここにお詫び申し上げます。
誠に申し訳ございませんでした。)

デュアルモニター

■この記事を閲覧される対象の方
・Solaris(USD)について体系的に学習したい方
・Houdini Solarisの導入を検討している方
・ライティング、ルック開発、レイアウトに携わるアーティスト

■記事作成時の情報について
Houdini18.5.462、2021年9月に作成

----------------------------------------------------------------------

はじめに2

5-1.SOPオブジェクトの読み込みとLOP内での作成

■アセットの作成

↓下のリンクから再生すると、実践している部分から再生されます↓

ここでは、LOPネットワークを使用してアセットを作成します。最初に、新規シーンを展開します。Objectネットワーク上でTabキーからGeometryノードを作成します。

画像47

Geometryノードをダブルクリックして中に入り、TabキーからBoxを作成しその下にNullノードを追加し、名前をOUT_OBJに変更します。

Part4.00_01_33_21.静止画008

ウィンドウ上部のプルダウンSolaris インターフェース
メニューから【Solaris】を選択することでデスクトップのモードをSolarisの仕様に変更します。

画像40

次に、OtherネットワークからStageを選択します。Stageネットワークに移動すると、先ほど作成したBoxが非表示になっていることが確認できます。
注意:Solaris(Stageネットワーク)での作業は、他のコンテキスト(Obj、Geometryネットワーク)での作業とビューポートが異なります。

画像41

Part4.00_01_52_01.静止画009

SOP Importノードを作成して、パラメーターをいくつか調整します。

画像43

■補足:SOP Import LOPとは
SOPネットワークからジオメトリをUSDシーングラフにインポートします。SOPジオメトリをサブレイヤー化(現在のシーンツリーのコンテンツ上に構成)またはリファレンス(シーンツリーの特定のブランチにアタッチ)することによりインポートが可能です。このノードは、インポートされたジオメトリをアクティブなレイヤーに配置することができます。そのため、このノードの出力に接続されたLOPノードによって変更されます。また、ジオメトリ自体に加えて、ジオメトリのHoudiniアトリビュートをUSDプリムバーとしてインポートすることもできます。

画像43

SOP Pathの右アイコンをクリックし、先ほど作成したOUT_OBJを指定します。

Part4.00_02_10_06.静止画010

■LOP内でのSOPのオブジェクトの作成

↓下のリンクから再生すると、実践している部分から再生されます↓

Stageネットワーク内でSOP Createノードを作成します。左下のScene Graph Treeを確認すると作成したオブジェクトを確認することができます。

画像44

Part4.00_02_34_16.静止画012

■補足:SOP Create LOPとは
このノードは中のSOPサブネットワークにジオメトリを作成します。そのため、別のSOPネットワークを必要とせずに、LOPネットワーク内の決められた場所にジオメトリを作成します。

画像45

SOP CreateノードをダブルクリックしてGeometryネットワーク内に入り、TabキーからBoxノードを作成します。

Part4.00_02_46_16.静止画011

Stageネットワークにアクセスすると、ビューポート上にグリッドが表示されたことが確認できます。

Part4.00_02_55_23.静止画013

5-2.LOP内でのシェーディング

スライド12

↓下のリンクから再生すると、実践している部分から再生されます↓

SOP Createノードを二つ作成し、片方にBox、片方にSphereを作成します。
二つのオブジェクトは重なってしまっているので、SOP Create(Sphere)のTransformの値を変更し、場所を移動させます。

Part4.00_04_13_01.静止画014

SOP Createノード(Sphere)の下にMaterial Libraryノードを追加します。

画像46

スライド14

Material LibraryノードをダブルクリックしてMaterialネットワークに入り、PrincipledShaderを2つ作成します。

画像47

画像48

PrincipledShaderのベースカラー(Base Color)をそれぞれ赤、青に設定します。

画像49

スライド15

■補足:Material Library LOPとは
Material VOPノードをUSDマテリアルプリムとしてインポートします。このノードは、Houdini VOPマテリアルをVOPネットワーク(/matなど)から読み込むことができます。または、USDマテリアルを定義するための場所としてVOPサブネットが含まれています。このノードは、VOPネットワーク内のすべてのマテリアルを自動で読み込むことが可能です。

画像50

Stageネットワークに戻り、Auto Fill Materialsをクリックすることで、パラメータ欄にシェーダーパスなどを自動的に割り当て、マテリアル名はMaterial Libraryノードで作成した名前が表示されます。Scene Graph Treeを見ると追加したマテリアルを確認できます。

スライド16

Scene Graph Tree上でオブジェクトを選択した後、Geometry Pathへドラッグアンドドロップすることでマテリアルを割り当てることができます。また、Scene Graph Tree上でオブジェクトを選択し、Geometry Pathのカーソルアイコンをクリックすることでもマテリアルを割り当てることが可能です。

スライド17

■補足:マテリアルの適用は、Material LibraryノードのGeometry Path欄でカーソルアイコンをクリックします。そして、ビューポート上でジオメトリを選択してEnterキー押すことでもマテリアルを割り当てることができます。

■シェーダーを追加する方法(サブレイヤー)

↓下のリンクから再生すると、実践している部分から再生されます↓

Box、Sphereを含んだSOP Createノードと、赤と青の情報を持ったPrincipledShaderを2つ含んだMaterial Libraryノードを用意します。
(動画内では前項のノード3つをコピーして使用しました。)

Part4.00_06_50_18.静止画001

Sublayerノードを作成し、左にSOP Createノード、右にMaterial Libraryノードを連結させます。

Part4.00_07_13_23.静止画002

■補足:Sublayer LOPとは
USDファイルまたは他のLOPノードからサブレイヤーとして、インポートおよび既存のサブレイヤーを削除/置換/並べ替えます。

画像82

SublayerノードのSublayer TypeSublayer Inputsに変更します。

Part4.00_07_18_03.静止画003

Sublayerノードの下に、Asign Materialノードを追加します。

Part4.00_07_51_10.静止画004

Primitevessopcreate3(Box)Material Pathblueをドラッグアンドドロップして、それぞれの情報を割り当てます。

スライド1

アサインするマテリアルが複数ある場合は、+マークをクリックします。

スライド2

Primitevessopcreate4(Sphere)Material Pathredをドラッグアンドドロップして、それぞれの情報を割り当てます。

スライド3

■マテリアルがついているオブジェクトを読み込む場合

↓下のリンクから再生すると、実践している部分から再生されます↓

マテリアルがついているオブジェクトをLOP階層で読み込むとマテリアルが剝がれてしまいます。そのためマテリアルを再度アサインする必要があります。

SOP Createノードを作成し、内部でTest Geometryを作成します。

Part4.00_08_59_12.静止画015

Material Networkからテストジオメトリー内にある作成されているマテリアルを選択し、Auto-fill Materialsをクリックします。

Part4.00_09_40_05.静止画016

Geometry Pathにsopcreate5をドラッグアンドドロップすることで、マテリアルを割り当てることが出来ました。

プレゼンテーション1

5-3.LOP内でのライティン

スライド25

スライド27

画像61

■Dome Light LOP

スライド28

Dome Lightのパラメーターです。
・Intensity 発光の強さ
・Exposure 発光の強さ(指数関数)
・Color 環境マップを使用しない場合の発光白
・Texture IBL環境マップとして使用するテクスチャを指定

画像60

Dome LightではHDRIによるイメージベースドライティングを行うことができます。

スライド29

■Light LOP

スライド30

Lightのパラメーターです。
・Type ライトの形状を選択
・Radius ライトの半径(Cylinder,Disk,Sphere)
・Exposure 発光の強さ(指数関数)
・Intensity 発光の強さ
・Color 環境マップを使用しない場合の発光白

画像62

USD Lightには様々な種類があります。
Cylinder X軸円柱形上から光を放ちます。エンドキャップは光りません。

画像55

●Distant Z軸に沿って遠方から放たれる光であり、指向性ライトです。

画像56

●Disk 円形ディスクから放たれる光であり、-Z軸方向のみです。

画像57

●Point 半径は0の点光源です。

画像58

●Rectangle 四角形の平面から放たれる光であり、-Z軸方向のみです。

画像59

●Sphere 球形から放たれる光です。

画像60

■ライティング実践編

↓下のリンクから再生すると、実践している部分から再生されます↓

Sublayerノードを作成して/Library/Layout/FullScene.usdを読み込みます。

Part4.00_12_16_09.静止画018

Dome Lightノード、Lightノード、Distant Lightノードを追加します。
Lightノードは、ライトの種類をDistantに変更します。

Part4.00_14_18_14.静止画019

少数のライトの場合、各々のバランスを計ることは難しくはありませんが、ライトが多い場合、またはノードの位置が異なると調整を行うことが困難です。
解決策として、Light Mixerノードを使用します。これは、複数のライトを1つのパネルで調整することができます。

Part4.00_14_33_04.静止画020

Light Mixerノードの設定パネルでは左側にあるライト一覧から右側のミキサーパネルにドラッグアンドドロップして並べます。

Part4.00_14_58_15.静止画021

Part4.00_15_10_06.静止画022

Light Mixerでは主にSlidersタブにてライトを操作します。

Part4.00_15_13_00.静止画023

スライダーを操作することでライトの強度を変更することが出来ます。

画像67

下の白い四角をクリックすることでライトの色を変更できます。

Part4.00_15_35_13.静止画025

Part4.00_15_42_06.静止画026

スライダー上部の黄色の枠で囲まれた部分をクリックすると、そこに該当するライトのON/OFFを変更することが出来ます。

Part4.00_15_47_22.静止画027

Part4.00_15_49_00.静止画028

またAttributesタブでは数値でライトの設定することが出来ます。

Part4.00_15_56_02.静止画030

Transformsタブではライトの位置を数値で設定することが出来ます。

Part4.00_16_01_04.静止画029

Sublayerノードを使用したライトの作成

↓下のリンクから再生すると、実践している部分から再生されます↓

前項で説明したようにライトノードを直列で接続した場合、途中のノードを参照しずらくなってしまう場合もあるため、並列でライトノードを接続する方法を説明します。

Dome Lightノード、Lightノード、Distant Lightノードを追加します。
Lightノードは、ライトの種類をDistantに変更しています。
(動画内では前項のノードをコピーして使用しました。)

Part4.00_16_40_11.静止画031

3つのライトノードをMergeノードを使用して合併させ、Light Mixerノードを追加します。

Part4.00_17_03_01.静止画032

SubLayerノード(Sublayer3)を作成し、左にシーンを読み込んだSublayerノード(Sublayer1)、右にマージされたライトを接続したLight Mixerノードを接続します。
二つのノードを接続したSublayerノード(Sublayer3)のSublayer TypeSublayer Inputsに変更します。
この状態にすることで、並列でつなげた状態でLight Mixerノードを使用したライトの設定を変更することが可能になります。

Part4.00_18_08_20.静止画033

5-4.LOPを使用したシーン構成

Stage Managerを使用したUSDファイルの読み込み

↓下のリンクから再生すると、実践している部分から再生されます↓

Solarisには、Stage Managerという機能があります。ディスクからアセットを参照し、3D空間上に配置、シーン空間を調整する一連の流れを1カ所で操作することが可能です。Stage Managerを利用した場合、シーンのレイアウト、整理、バリアントの選択にかかる時間を大幅に節約することができます。
※注意:Stage Managerを使用した場合、レイヤースタック内のすべてのレイヤーが結合されます。

画像78

最初に、Stageネットワーク上でTabキーからStage Managerノードを作成します。パラメーター左端のファイルブラウザのアイコンをクリックして、プロジェクトファイルの保存先を参照します。

画像79

スライド36

そして最初にアセットを読み込みます。
.usdファイルを選択し、Scene Graph Path上へドラッグアンドドロップします。ドラッグすると、ビューポートにオブジェクトが表示されます。

スライド37

画像79

スライド38

USDのレイアウトの方法

↓下のリンクから再生すると、実践している部分から再生されます↓

Scene Graph Pathの右にマニピュレーターアイコンがあります。これを選択して、アセットを移動させることができます。また、Enterキーでハンドルモードに移行し、マニュピレーターを動かすことでアセットを配置することも可能です。

Part4.00_21_42_19.静止画034

 次に、各オブジェクトを配置します。
Sキーを押し、ビューポートのなにも無い部分をクリックします。選択モードにした状態で、TabキーからEditノードを作成します。StageネットワークにEditノードが追加されたことが確認できます。

画像78

■補足:Edit LOPとは
ビューアーでプリムをインタラクティブに変換します。物理衝突を使用して、リアリティ感のあるプロップの配置を行うことができます。

画像79

Editを選択した状態で、すべてのプリムを選択します。そこからHas Physics Enabled(DOP Networkと同じマーク)にチェックを付けます。

Part4.00_23_51_07.静止画035

この状態でビューポート上を右クリックして【Use Physics】にチェックを入れます。これでビューポートがPhysicalモードになります。

Part4.00_24_04_02.静止画036

この状態でマニピュレーターからオブジェクトを操作すると、移動させたオブジェクトが他のオブジェクトに衝突するようになります。

Part4.00_24_56_13.静止画037

Use Physicsを使用することでよりリアルな配置を容易に行うことができ、この操作はGPUメモリの影響を受けます。

■補足:Shift+PキーからUse Physicsを実行することができます。

画像80

■注意:EditノードとStage Managerノードについて
Editノードで編集した後にStage Managerノードへ戻り、Scene Graph Pathの階層を変更すると、プリミティブのパスが変わり、Editノードの編集が無効になります。

■USD LOPを使用したUSDデータの書き出し

↓下のリンクから再生すると、実践している部分から再生されます↓

前項のシーンの続きから始まります。

Edit ノードの下にUSD ROPノードを作成し、接続します。

Part4.00_25_36_04.静止画038

■補足:USD ROP LOPとは
このノードは、LOPによって生成されたUSDファイルをディスクに書き込む方法です。保存操作は、レイヤー構造と各レイヤーのデータに対して多数の変換を実行します。

画像80

USD ROPノードのOutput File右端のカーソルアイコンをクリックして、ここでは「test.usd」という名前でUSDファイルを書き出します。

Part4.00_26_02_16.静止画039

ファイルを保存した後、パラメーター左上の【Save to Disk】をクリックして、USDファイルを書き出します。

画像81

次に、Sublayerノードを作成します。

Part4.00_26_18_16.静止画040

SublayerノードのパラメーターからSublayer File > File右端カーソルアイコンをクリックして、先ほどUSD ROPノードで書き出したtest.usdファイルを選択します。Sublayerノードにディスプレイフラグをつけると、ビューポート上にオブジェクトが表示されたことが確認できます。

Part4.00_26_28_06.静止画041

Part4.00_26_41_01.静止画042

この状態で、前項で説明した手順を踏んでライトの接地を行うことが出来ます。

Part4.00_26_55_18.静止画043

■LOP階層でのRBDシミュレーション

↓下のリンクから再生すると、実践している部分から再生されます↓


Stageネットワーク上でTabキーよりSOP Createノード(sopcreat1)を作成します。SOP Createノードの中に入り、Geometryネットワーク上でSphereノードを配置します。スフィアのPrimitive TypeをPolygonに変更します。

画像82

次に、SOP Createノード(sopcreate2)を作成し、接続します。

Part4.00_29_10_12.静止画045

SOP Createノードの中に入り、Geometryネットワーク上でGridノードを配置します。

画像83

Stageネットワークに戻り、それぞれのSop createノードの名前をSphere、Gridに変更します。

Part4.00_29_34_08.静止画044

オブジェクトに対してマテリアルを割り当てます。
Material Libraryノードを追加します。ノードの中に入りPrincipled Shaderを2つ作成します。

画像84

ここでは、青と赤のシェーダーを作成しています。blueをGroundに割り当て、redをSphereに割り当てています。

Part4.00_30_43_09.静止画047

次に、Material Libraryノードの下にUSD ROPノードを作成し、接続します。
USD ROPノードのOutput File右端のカーソルアイコンをクリックして、ここではRBD.usdという名前でUSDファイルを書き出します。

Part4.00_31_13_10.静止画048

ファイルを保存した後、パラメーター左上の【Save to Disk】をクリックして、USDファイルを書き出します。

画像83

次に、Sublayerノードを作成し、SublayerノードのパラメーターからSublayer File > File右端カーソルアイコンをクリックして、先ほどUSD ROPノードで書き出したRBD.usdファイルを選択します。

Part4.00_31_27_12.静止画049

次に、サブレイヤーとして読み込んできたレイアウトファイルに対して、エフェクトを追加します。SOP Modifyノードを作成し接続します。

Part4.00_31_55_15.静止画050

■補足:SOP Modify LOPとは
このノードは、RBDシミュレーションに基づいた変換のアニメーション化、既存のジオメトリへプリムバーまたはアトリビュートの追加、ジオメトリの破壊、既存のサーフェス上に散在するインスタンスの追加などに使用することができます。ノードの中に入り、LOPネットワークに戻す前にSOPネットワークでソースジオメトリを編集することができます。

画像85

SOP ModifyノードのパラメーターからPrimitives右端カーソルアイコンをクリックして、SceneGraphからSphereを選択し、Enterキーを押します。

画像86

Unpack USD Primitives to Polygonsにチェックを入れ、SOP Modifyノードの中に入ります(Unpack USD Primitives to Polygons:パックされたUSDプリミティブをポリゴンに変換して、編集を行うためにサブネットワークを介して送信します)。

画像87

次に、SOP Modifyノードをダブルクリックしに内部に入り、RBD Material Fractureノードを作成します。ノードは、OUT Putノードの前にくるように配置します。

画像88

■補足:ここでExproded ViewノードをRBD Material Fractureノードに接続すると、Sphereがどのように分割されているのか確認することが出来ます。

Part4.00_33_22_14.静止画051

次に、RBD Bullet Solverノードを作成して、RBD Material Fractureノードの下に配置します。(Exproded Viewノードの下には接続しません)

Part4.00_34_21_10.静止画053

そして、Grandタブ > Add Grand PlaneからGrand Planeを選択します。

画像89

タイムラインからシミュレーションを確認します。
シミュレーション結果は、Stageネットワークでも確認することができます。

Part4.00_34_41_06.静止画054

---------------------------------------------------------------------

今回のパートは以上となります。
次回Part5では「Karmaを用いたレンダリング」を解説します。
是非ご覧ください。

画像3



























この記事が気に入ったらサポートをしてみませんか?