最近、HoudiniというCGソフトに入門している。
twitter.comThe 3 phases of matter: liquid, solid and gas#Houdini #fluid #FLIP #Vellum #particle #GIF #mantra pic.twitter.com/XVwa07G0tO
— amagi (@amagitakayosi) 2019年2月22日
twitter.comVoronoi Glass Cell #houdini #vellum #voronoi #gif #mantra pic.twitter.com/XWWNhvWDQg
— amagi (@amagitakayosi) 2019年2月21日
twitter.comboolean experiment #houdini #gif #glass #mantra pic.twitter.com/2cQiVYiqdZ
— amagi (@amagitakayosi) 2019年2月20日
twitter.comHoudini面白い!!!!!!!!!!そしてメッチャ重い!!!!!!!!!!!!!!!!!!!!!!!!! pic.twitter.com/hVaPqjEszv
— amagi (@amagitakayosi) 2019年2月8日
業務で水のシミュレーションをする機会があったんだけど、どうやらHoudiniって奴を使うと高品質なシミュレーションができそうということで、今月からHoudini入門することになった。 基本的なところ k2 に教えてもらいつつ、土日も色々さわって遊んでみている。
感想
あんまり体系的に学んでないけど、特徴としては以下のような感じ。
- プロシージャルな表現が得意
- 物理シミュレーションがすごい
- プログラマーフレンドリー
Houdiniでは、基本的なジオメトリーにノードを繋げていって、動きや形状を操作していく。 ので、ある3Dモデルをグリッドに大量に並べたり、ノイズで動かしたり、更にパーティクルだしたり、みたいな事がボタンポチポチするだけで出来る。
TouchDesignerというリアルタイムパフォーマンス向けソフトがあるが、これは実はHoudiniのforkらしく、基本的な操作がよく似ている。 僕は去年からTouchDesignerをちょいちょい使っていたので、勘で操作したら思い通りに動いてくれてとても助かった。
「Houdiniはプログラマーフレンドリー」ということもよく言われている。
これはスクリプトで頂点やattributeを制御できるというのもあるけど、なんというか、勘ビリティ……勘で操作していい感じに動くっていう所が大きい気がする。
例えば、オブジェクトの位置の入力欄に勘で sin($FF)
と入れたらサイン波の動きになったりして、コード書ける人なら適当にいじったら動く。
CG/シミュレーションを学びたい
先日MTRL KYOTOで行われたSPEKTRAのイベントで、ゲストの比嘉さんが「CGを学ぶためにHoudiniを学んだ」と言っていた。 僕も最近まさにCGをちゃんと勉強したいと思っていたので、今回仕事で触らせてもらえてラッキーだと思ってる。
僕はシェーダーからグラフィックスの世界に入って、初歩的なシェーディングやレンダリングパイプラインはなんとなくわかってきたけど、 ゲームCGや、HoudiniやC4Dのようないわゆるプリレンダ系のグラフィックスを見ると、一度ちゃんとグラフィックスを学ばないといけないな~と思っていた所だった。
Houdiniは物理シミュレーションに力を入れていて、水流やパーティクル、炎や煙、布などのリアルなシミュレーションがボタンぽち~で出来る。 別にシミュレーション手法の中身に詳しくなれるわけではないけど、現代のCGのトピックをザッとさらうことができる。 ハリウッドでも使われてる今時のCGってこんな感じなのか~。
公式チュートリアル動画見てると「シニアマセマティシャン」って肩書の人が出てきてビビる。アカデミック~
今回水のシミュレーションを行うにあたって、HoudiniやNVIDIAのライブラリがどういうアルゴリズムを採用してるのか調べていくと、現代の最先端の手法と最新のPCでも、リアルタイムできれいなシミュレーションをするのはまだまだ難しいことがわかってきた。 僕はゲームをやらないので、なんとなく「今時のゲームCGはメチャクチャ高品質だし、リアルタイムシミュレーションもサクサクなんやろな~」と思っていたんだけど、認識の甘さを痛感させられた。 しかし、同時にシミュレーションの世界の奥深さを垣間見ることができて面白かった。
(めっちゃ勉強したらリアルタイムFLIPソルバー実装できないかな……)
なんかオススメのチュートリアルとかあったら教えてください~~