Houdini Apprentice Advent Calendar 2025、11日目の記事です。
Houdini solaris1年生🔰が贈る、USDやSolarisに興味がある人向けの
宇宙一👽緩い記事の2回目です。
(一回目はこちら https://qiita.com/hajimeCG/items/1d1981071c75d03aea55)
今日はBlenderのサンプルシーンをSolarisでライティングしてみようと思います。
Mayaユーザーでもわかるように書くのでよろしくです👍
(というか筆者はMaya歴長いのでMaya寄りな説明です)
まず、Houdini Apprenticeのインストールだけは自力でお願いします🙏
無料です!🥴
準備🐣
サンプルはこれを選びました。
https://download.blender.org/archive/gallery/blender-splash-screens/blender-2-81/
ポストエフェクトとか無く、ポリゴンにシンプルなマテリアルをアサインしただけの構成だったので。
Blender5.0.0で開きます。
背景をエクスポート🏠
キャラクターをすべて隠し、背景モデルをすべて選択して
File>Export>Universal Scene Discription(USD)
ちなみにMayaの人は
File>Export Selection> USD Export
[v]Selection Only
選択物のみ出力。
[v]Convert Orientation
Z-upからY-upにします。やらないと90度回った状態になります
Object TypesはMeshesだけにしました。余計なものは要らない!
Materials
これが一番悩ましいです。MaterialXはマテリアル版のUSDで、どのソフトでも使えるソフトに依存しないマテリアルなのですが・・・今回はとりあえずMaterialX NetworkはOFFのまま。
USDという名前でフォルダを作って、その中に出すとよいかと思います。
Mayaとマテリアル出力の話🙈
さて、Mayaの方はさらに悩ましいです。実はArnold>Shaders>Export Selected Shaders
から、MaterialX か USD で出力できます。
しかも全部中身が違う・・・。
一番まともに動くやつをベースに手直ししていく感じになるかと思います😣
がんばれ!Mayaユーザーはいつもスクリプト書いて解決してるでしょ!😭
Houdiniで開く🧙♂️
Houdini21を立ち上げたら、まずシーンを保存しよう。
Houdiniはテクスチャなどのファイルパスを、今のシーンファイルからの
相対パスで書くのが基本なので
とにかく保存しないとパスが設定しにくい。
次にココをSolarisに。Solarisに最適なUIになります。MayaとかBlenderと同じです。

Solarisにすると、ここがstageになります。Solarisはここで作業します。
初心者のうちはここにへばりついてましょう。

ここをNetwork Viewというらしいです。ノードエディタですね。
USDファイルをリファレンスしてみる🎁
NukeみたいにTabキーを押して、refとタイプしてください。
これがReferenceノード。Mayaでいうリファレンスするやつです。
Referenceノードのパラメータが表示されるので
File patternに先ほど出力した背景のusdを選択します。
(ちなみに.usdcはバイナリです。Mayaの.ma、.mbみたいですね。
メモ帳で読みたい時は.usdaで保存してください📘)
更にちなみに、$HIPはシーンファイル.hipncの保存場所です。
お尻です!🤪
File Patternと書かれた場所を中ボタンクリックで実際のパスが見れるよ。
さて。Scene viewに既にテクスチャ付きで表示されてますね!びっくり!

他のソフトで出したオブジェクトをマテリアル付きで
リファレンスできるってやばくないですか?❤️🔥
Diffuse/Specular/Normal/Roughnessあたりはそのまま来てそうです。
勝ち確定です!
ビューポート操作📽
Mayaみたいに Alt か、Space を押しながらドラックでぐりぐり回せます。
そのまま 右クリック で ズーム、真ん中クリック で パン します。
Space+F で選択オブジェクトに ズーム です。
Scene Viewの右上の [persp] をクリックして、Karma CPU か Karma XPU を選びましょう。
Karma(カルマ) は Houdiniの レンダラー です。
カルマを背負ってCGしましょう!🪬
CPUはCPUだけ、XPUはCPUとビデオカードを使ってレンダリングします。Eeveeみたい。
Viewportでレンダリングできました。ライトが無いとそんなに変わらない?

ライトを置く🔦
先ほどのNetwork viewでtabを押し、domeLight を作ります。
先ほどのreferenceと繋ぎます。

domelightの右端をクリックして 青く しましょう。
これでdomelightがSceneviewに反映します。

Dome LightのTextureの横のボタンを選択します。
Houdiniに付属のHDRIが選べるので、一番下のを選びます。
(HDRIHaven_skylit_garage_2k.rat)
つぎに distant Light(平行灯) を置いてみます。
おなじみなハンドルで角度も好きに変えてください。
ハンドル上で 右クリック>Aligh Handle で Axis も変えれます。
この青なんですが、distancelight1まで考慮されてますよ!ということです。

これだとdomelight1までが見れます。distancelight1は無視されます。
(Nukeを触ったことあるとわかると思うのですが・・・)

colorやexposureをいじったり、ポイントライトやエリアライトを置きました。楽しい!🥰

キャラとカメラもリファレンス👥
他のロボット、女の子もリファレンスしました。
カメラだけBlenderで、Object Typesを カメラ だけにしてexport。
Scene Viewの右上でカメラを選択すると、blenderと同じカメラになりました。
dofまで効いてますね!

ちなみにmergeノードで並列につないでもよいです。
(yを押しながらドラックするとハサミでワイヤーを切れます✂)

レンダリング設定🎛
Karma Render Settingsをつなぎます。
出力パス、どのカメラを使うか、解像度、サンプル数を設定できます。
AOVもボタンポチッで出来ます。
最近付いた Outlines でアニメみたいな輪郭線が入ります。
(Karma XPUは対応してないからKarma CPUに切り替えてね)

そして USB Render ROP、これを繋いで [Render to Disk] を押せば
実際にレンダリングしてディスクにファイルを書き出しできます。
おつかれさまでした、簡単でしょ?!🥳
これでBlenderファイルをSolarisでレンダリングしてみることができました!
あんま初心者向けじゃない部分
一応髪の毛直したけど興味ある人だけ
結構ややこしいのでささっと紹介です。
トラブルはこんな感じで処理していくよ~っていう雰囲気だけ見てください👨🔧
髪の毛は持ってこれないの?
普段はFurとかはHoudiniでやった方が色々できるので持ってきませんが、試しに戦ってみましょう。
まず、Blenderの髪の毛がどんな仕組みはわからないですがCurveとHairも入れてUSDを出力してみます。

女の子をReloadしてみます。リロードボタンで済むのがいいですよね。

おおう・・・🤯
SceneGraphを見てみましょう。本当はシーングラフはものすごい重要なんですが、初心者向けということで思いっきり端折りました。ごめんなさい🙇♂️

目のアイコンをクリックすると、一時的にViewから消せます。これが髪の毛らしいです。BasisCurvesなのでカーブで出来てるみたいですね。そしてこれが持ってるパラメーター群。widthsが空なのが怪しい・・・。幅を見つけられず爆発してるのでは?と目星をつけます。
AttributeWrangleを繋ぎます。
これは初心者は避けていいですが、スクリプトを使えるノードです。
見た感じ8200個のポイントで構成されてるみたいなので、
widthsを8200個、0.15で埋めてみます。
というスクリプトを書きます。

...。
ふはは!スクリプトから逃れられると思ったか!😈
Houdiniも細かいところはガンガンスクリプト頼みです!
顔色直したけど興味ある人だけ
なんか顔色も悪いよね
マテリアルを見てみましょう。Edit Materialを繋ぎます。
Faceに使われてるマテリアルをpathに入れ、loadを押します。
編集できるように、このノードの中にマテリアルを構築してくれます。

edit Materialをダブルクリックしてください。
ノードネットワークができてます。Hypershadeでおなじみですね。

Blenderで同じマテリアルを見てみましょう。diffuse回りを端折ってるのがわかります。

Solarisで繋ぎなおしてもいいんですが、一か八かMaterialXオプションを入れて再度exportしてみます。
あ、直った。
Edit Materialノードをみてみると
先ほどのPreviewだけでなくmtlx_surfaceというのができています。
更に潜ってみると🥽
うーん、めんどくさい!😩
ネットワークを読んでみると、diffuseとsssで同じものを使っていたり、そのままBlenderと同じじゃないみたいです。
この辺はBlender側のusd(MtrlX)出力の仕様だし、バージョンアップ毎に結構変わるのでどうにもならないですね。
ただ、必要な情報は出ているのでスクリプトで直すことはできますし、一度直せば次回からは自動化できます。
マテリアルファイルは軽いので、usdaで出せばテキストなのでpythonで直すこともできます。
Pythonが使えるなら、自力でMaterial Exporterだって書けると思います。
これがFBXなどとは違う点のひとつですね。
Blender->Solarisのマテリアル修正はココもご参照ください。
https://www.notion.so/Blender-Solaris-11f9ec72b1578035bfceef175f53b437?source=copy_link
まとめ
🧡usdを出力してSolarisでライティング、レンダリングする雰囲気はつかめたかと思います。
💛ポリゴンは割と持ってくれるけど、マテリアルは発展途上、でも未来は明るいのもわかっていただけたかと。
💙まあ色々面倒なのでマテリアルはSolarisで組みなおす人も多い。
💚アニメーションは省略したけど、rigじゃなくてキャッシュする感じで持ってこれます。Alembicも読めます。
さらにこの先
⭐マテリアルの作り方、いじり方 ( Blender/Mayaと変わらない😏 )
⭐レンダーレイヤーはどうやるの? ( ←最高に簡単で楽しい🥰 )
⭐ライトリンクのやり方 ( まあまあだけどいいやり方ある )
⭐Substanceみたいにテクスチャをディテールアップ ( やばいぜ😼 )
⭐レンダリングしたあとmovieファイルにしたい。( これもやばいぜ🤯 )
⭐マルチショット!複数シーンもまとめてライティング!( 生産性爆上げ!🤩 )
ここに逆引き時点を置いておきますのでご参照ください。
現在は書きなぐり状態ですが、年末年始で追記したり読みやすくします🙇♂️
それでは。Houdiniコミュニティに恩返しできてると願って。メリクリ~!🎄



















