漁港近くの食堂

たまに行く漁港の近くにある食堂へお昼を食べに行った。
今日はお刺身と天ぷら定食。
全て近海でとれた新鮮な魚なので最高に美味しかった。


そのあとは海を見ながら1年の疲れを癒す。食後のコーヒーを飲みたかったが
近くに喫茶店は一軒もないため缶コーヒーを購入した。

波を見ながら、これをCGで作ったら大変だよな~と思った。

Avatar the way of water

映画「Avatar 2」を観てきた。

個人的には今年観た映画の中でベスト1かも。
映像の美しさはさることながら、
ある種の普遍性がテーマ自体にあるので
作品に入り込みやすかった。

視覚効果を担当しているのはニュージーランドのWētā FX(旧Weta Digital)。
Wētāの技術力は凄まじいものがあり、
今回の水の表現のために流体計算を行うためのソルバを新規で開発したらしい。
ハリウッド映画の中には大規模な水の表現をCGで再現したものはいままでもあったが、
アバター2はそれらとは一線を画す完成度だった。
また、キャラクターの顔の表情も素晴らしかった。

以下、ニューヨークタイムズの記事から抜粋。
How ‘Avatar: The Way of Water’ Solved the Problem of Computer-Generated H2O
https://www.nytimes.com/2022/12/16/movies/avatar-2-fx-cgi.html

・全編で視覚効果が使われていないショットは2つだけ
・Wetaが手がけた3,240の視覚効果ショットのうち2,225が水に関わるもの
・アバター1が1ペタバイトを必要としたのに対し本作では18.5ペタバイトのデータを保存

劇場で販売しているパンフレットを購入したが
ほぼ設定資料集になっており内容が濃い。

Avatar3は公開が決まっているらしいが
今度はKiriが主人公になるのかな?

ビル破壊シーン バージョン2

先日Houdiniで作成した破壊シーンのバージョン2の動画をアップ。
カメラワークを一部修正。

レンダリング中はマシンの発熱がすごい。
デロンギのオイルヒーターくらいの温度になるので、
レンダリング中はPCが暖房器具になる。

作業PCは天板から放熱するエアフローのため
寒い日にはエルがよくPCに乗って暖を取っている。

Houdini Skyscraper Destruction(高層ビル破壊)

今回、映画「トランスフォーマー3」のあるシーンを参考にして
ヘビ型のロボットを高層ビルに巻き付かせてビルをなぎ倒すシーンを作ってみた。

モデリング、アニメーション、シミュレーション、レンダリングはすべてHoudiniで行った。
コンポジットはNuke。

ヘビ型ロボット(劇中では”Driller”という名前)の基本的な動きはVEXでプログラム制御し、
さらにロボットの微震のためにVellumも使用した。

高層ビルのアセットは自分が書いたHoudini本(SOP&VEX編)を見ながら作成した。

今回のシーンはデータサイズが巨大だったため、キャッシュサイズだけでも3T以上となった。
データの規模的には以前作成した水のキャラクターを超えたと思う。

レンダリングはKarma XPUを今回始めて使用。
ベータ版ということで一部未実装な部分はあるが、今回のシーンでは問題なく使用できた。
使用感としては「とにかく速い!」の一言。
Karma XPUは数秒で最終的な絵に近い状態で確認できるため、作業効率の向上につながった。

ただ、レンダリングフレームによってはGPU側のメモリ割り当てのエラーが出て
自動的にCPUのみのレンダリングとなった。
これは使用しているグラボのメモリが8GBしかないため、GPU側のメモリに必要なデータが
全て転送できなかったためだと思われる。

今回はHoudiniのRBD、Vellum、POP、Pyroをフル活用して作ったが、
一昔前に比べてダイナミクス周りは格段に使いやすくなっている印象を受けた。
また今回の制作では「いかに壊すか」よりも「いかに壊さないか」に時間を費やした。
(そもそもHoudiniを使えば「壊す」ことは簡単にできるので…)

▼制作環境
CPU : Ryzen Threadripper 3970X(32コア)
GPU : GeForce RTX 3070
メモリ : 128GB
ストレージ : 12TB

ちなみに以下の動画は同じテーマで5年前にチャレンジしたもの。
5年間でそれなりに進歩はしたと思う。

Houdini Spider リグ

Houdiniで蜘蛛のリグを作ってみた。

ベースは2年前に作ったものをカスタマイズ。
KineFXをベースにして、蜘蛛の足の運びを作るためにサイクロイド曲線をVEXで実装して使用した。
また、リグに対する外装パーツ装着のためにジョイントのベクトルを操作する必要があったため
そこでもVEXを使用した。

以下は作業画面。
手動で動かすのは頭頂部分だけで、残りのパーツは全て連動して動くようになっている。
キャラクターのリグが複雑になればなるほど、Houdiniのプロシージャルな制作手法のメリットが
享受できる。

以下は2年前に作成したもの。

サブスタンスペインター 自作アルファの追加

ここ最近はHoudiniを使ってRBD(Rigid Body Dynamics)のシーンを作っている。

今回は転がる球体のテクスチャーをサブスタンスペインターで作成したので、その備忘録。

サブスタンスペインターのアルファには日本語フォントが1種類用意されているが、
あまり格好の良いフォントではないので、今回は漢字のアルファ画像をPhotoshopで作成した。
アルファ画像にするファイルは白黒画像をpngファイルで保存すればOK。

以下のように作成した画像ファイルをサブスタンスペインターのアルファセクションへ
ドラッグ&ドロップで追加して、読み込み設定を行う。

読み込みモードには以下の3種類がある。

  1. 現在のセッション : 今回の作業のみで使用
  2. プロジェクト 「ファイル名」 : プロジェクトファイル内だけで使用
  3. ライブラリ 「your_asset」 : ライブラリに登録して毎回使用

以下のようにブラシに読み込んだアルファ画像を設定し、
ジオメトリをクリックして漢字ペイントを行った。

 

Houdini FLIP その9

Houdiniを使った流体シミュレーションその9。
今回はタコ型のクリーチャーを作ってみた。


タコのモデリング、アニメーション、シミュレーション、レンダリングは全てHoudiniで行った。
テクスチャーはSubstance Painterを使用。コンポジットはNuke。

今回作成したタコのサイズはかなり大きいため、FLIPシミュレーションのプールサイズは
100m x 40m x 100mの巨大サイズになった。


流体のパーティクル数はFLIPが約2500万、ホワイトウォーターが約2000万。
さらにタコの触手から放出される自前で実装したホワイトウォーターに3500万程度を使用した。

作業PCのメモリは128GBだが、この規模のシミュレーションでは全然足りなかったため
様々な最適化を行って計算が回るように調整した。

また、FLIPシミュレーションのプール周辺付近におけるサーフェイスの連続性をキープするために
VEXで補正プログラムを書いた。

幼さ

本日撮ったエルの写真。

エルは今年の10月で10歳になるが
顔立ちには子猫時代の幼さがずっと残っている。


もちろん猫なので「全てわかっています」的な
達観した表情も見せるが、全体としては幼さが目立つ。
多分、ずっと変わらないんだろうな。