この記事はHoudini Advent Calendar 2019 13日目の記事です.
昨日の記事はK240さんの『HDKでアニメーションをSOPに取り込む』でした.このアプローチでボーンアニメーションで動くポリゴンと干渉するようなエフェクトを柔軟に生成したりもできそうです...!
はじめに
HoudiniにはIndie以上のグレードのライセンスで利用できる,Operatorの追加パッケージ,SideFX Lab(旧GameDevTooks)が存在します.
今回の記事では,その中でも実際に使っていて便利だなあと思ったOperatorを紹介していこうと思います.主にゲームのAssetの制作等のリアルタイム用途で使いやすかったSOPを中心に,どう応用できるか軽い具体例も挟みつつ解説していきます.
SOP
Labs Align and Distribute
接続されているPrimitive(Piece)ごとに重ならないよう並べてくれるSOPです.並べる順番や並べる方向,間隔を設定できます.複数パーツで構成されるモデルを,Substance Painter等でペイントしやすいような配置で書き出す用途に使えます.(TexToolsのExplodeのような感じ)
Labs Axis Align
Geometryをそのバウンディングボックスの大きさにより移動させます.移動方法は各軸ごとにバウンディングボックスの境界や中心を基準に設定できます.わざわざbbox等で計算してtransformしなくて済むので,大変便利な利用頻度の高いSOPです.(今回の記事で一番オススメかも) 左: 入力Geometry,右: Labs Axis AlignでXZ平面に丁度乗るようY軸方向へ動かしたもの
Labs Caluculate Occlusion
入力したMeshのOcclusionをattributeに書き出します.光の当たらない箇所に植物を配置したり,shader側のtextureのブレンドに用いると便利です.
Labs Calcurate Slope
入力したMeshの傾きをattributeに書き出します.HeightField Mask by FeatureのSlope RampのPolygonバージョンです.SOPLabs Caluculate Occlusionと同様な用途で使えます.
Labs Dissolve Flat Edges
平らな複数の面に対してDissolveをかけて一つの面にまとめるSOPです.Houdiniのハードサーフェスモデリングでお世話になっています.ちなみにこのSOPを通すとUVの情報が壊れてしまうので,UV展開前に用いるか,あとからAttribute TransferでUVを他のGeometryから渡す必要があります. 左: 入力Geometry,右: 面を一つにまとめたもの
Labs Distance From Border
ポリゴンの縁(共有されていないエッジ)からの距離でAttributeに値を書き込みます.Rampやブラー等で調整が可能です.汚し等,地面に配置するPropの縁をAlphaで抜いてなじませたりするのに便利でした.
Labs Edge Color
ポリゴンの縁(エッジが共有されていてもOK,NormalではなくEdgeの角度で見てるっぽい)からの距離でAttributeに値を書き込みます.擬似的なSSSのような表現に使えました.Convex/Concave(凹凸)を区別して検出してくれるので,エッジが立った場所の劣化のような表現のmaskにも使えます.
Labs Group Curve Corners
カーブのどのpointが内側/外側かをgroup化してくれます.また角度も計測してpointに書き込みます.ハードサーフェスの,シルエットからコーナーにディティールを追加する用途に便利です.
Labs Group Expand
PointやPrimitiveのGroupの範囲をPolygon上で指定した数だけ広げます.
Labs Min Max Average
Attributeの最小値,最大値等の計測を行い,Detail Attributeに書き込みます.Attribute Promoteを手軽に使いやすくしたSOPです.
Labs Path Deform
PolygonをPathに従って曲げるSOPです.これを用いると道路や柵等がCurveで簡単に編集できるようになります.また,入力するMeshを,入力するCurveとぴったり同じ長さにしたい場合は,arclen("../path/to/curve_op", 0, 0, 1)
等で調整すると便利です.注意点として,長手方向の軸の設定(Base SettingsのAxis)によっては,指定した軸回りに形状が180度回転してしまう場合があるので要調整です.
左: 曲げる対象となる入力Mesh(Curveと同じ長さになるよう調整済み),中央: ガイドになる入力Curve,右: Path Deformをかけた出力
Labs Soften Normals
いい感じにやわらかい表示になるようNormalを計算するSOPです.通常のNormal SOPよりも汚いハイライト,陰が出ないので使いやすいです. 左が通常のNormal SOP,右がLabs Soften Normals SOP
Labs Quick Material
SOPとしてPrinciple Shader,GameDev PBR,GameDev MatCapのMaterialを扱うことができます.Material NetworkにアクセスせずにSOP Network内でサクっとマテリアルのセットアップができるので便利です.
Labs Remove Inside Faces
内側に存在する閉じた面を削除します.BooleanやVolumeのPolygon化の後に使うと便利です 左: 内側にポリゴンを持つMesh,右: Labs Remove Inside Facesの出力
Labs Thicken
Meshに厚みを付けます.表と裏の両面について同時に押し出しを行うことができます.(あと一応裏面のポリゴンリダクション機能付き) 厚みをつける用途ならPolyExtrudeよりも便利かなーと思います.
Labs Trace PSD File
PSDファイルの画像をレイヤ毎にGroup分けされたMeshとして読み込むことができます.実際の活用は以下の動画がわかりやすいです. www.youtube.com
注意点として,PSD側のレイヤー名には日本語は使えないようです.また,レイヤー名の-
(ハイフン)は,Groupでは_
(アンダースコア)に自動で置き換えられるようです.
ROP
Labs CSV Exporter
GeometryのAttributeをCSVとして書き出します. 用途の一例ですが,ゲームエンジン側でCSVをパースしてオブジェクトの配置を行う専用のツールを作成すると,以下のセッションの動画のように,Houdini Engine無しに柔軟にPropの配置を行うフローが構築できたりします. www.youtube.com
Labs Games Baker
Mantraでテクスチャのベイクができます.ベイクできるチャンネルはよくあるPBRのテクスチャタイプについては一通り網羅しています.
個人的に嬉しいのはBase ColorのBakeができる点で(Substanceだと出来ない),このROPで書き出したBaseColorのMapをSubstanceに持っていってテクスチャリングを行っています.このフローだと模様がプロシージャルに生成できるので気持ちよく作業ができますね.
あとアイコンがかわいい.(houdiniのOperatorのアイコンで一番好き)
まとめ
SideFXLabには,もうすでに自分で作ってしまった,もっと早く知りたかった,と思うような便利なOperatorが,今回紹介した以外にも複数パッケージされています. 今まで使ってなかった方もぜひ試しに導入してみてはいかがでしょうか.
Operatorとの良い出会いがありますように🙏
明日の記事はtakavfxさんの『HoudiniをPython3でやる!!!』です.post-EOLの来たるべきPython3の時代に備えていきたいですね.
python2.7をやめろ.いつまで平成気分でいるんだ.
— 𝙩𝙖𝙣𝙞𝙩𝙩𝙖 (@trit_techne) 2019年9月8日
python2.7は何をやってもダメ.見つけ次第頭蓋骨がボコボコに変形するまで殴ること.(n回目)
— 𝙩𝙖𝙣𝙞𝙩𝙩𝙖 (@trit_techne) 2019年10月6日
(たのしみ)python2.7アアアアアア!!!!!!!
— 𝙩𝙖𝙣𝙞𝙩𝙩𝙖 (@trit_techne) 2019年10月6日