Fluid、主にグリッドベースの気体エフェクトのワークフローに関しての諸々の問題、疑問

みなさま賀正でございます。

誰もやらないので思わずやってしまいました。後悔はしていない。

さて、気をとりなおして、皆様Fluidお使いでしょうか。
ここで言うFluidは主にFumeとかMayaFluidに関してなのですが、どうですか。
問題なく使えてますか?

僕は問題だらけですorz

なのでその問題を少しでも解決したいので、なにが問題かをあれこれまとめてみよう、というポストです。例によって何かの答えとかではないです。むしろただの問題提起。サーセン。


まずFluidを使う際に、FumeやらMayaFluidやら関係なく共通して大きな問題なのが、
低解像度グリッドでのシミュレーション結果と高解像度グリッドでのシミュレーションが全く異なる、という点。
最近ではWavelet Turbulenceという技術により、ローレゾの動きをそのままに、プロシージャル処理で後からディテールを追加することが出来るようになりましたが、これはこれで限定的なケースでしか使えないので根本的な解決にはなりません。
なのでこれはもうグリッドベースの流体を扱う際には仕方ないことみたいですね、解像度問題。

で、個人的にはこれが最初にして最大の大問題だと思っています。
というのは、今までやっていたトライ&エラー方法の根本をくじかれるからなのです。

レンダリングなら解像度下げて、パーティクルアニメーションはパーティクル数減らして、などなど、
基本的にCGの作業というのはローレゾでざっくり調整してハイレゾで微調整、なはずなのです。
それがFluidではその限りではない。解像度あげたらパラメータもいじらないといけない。
もちろんエミッタの位置だったりなんだかんだの大まかなものはある程度設定可能なのですが、
細かい調整は大問題です。

これってでかくないですか??
しかもFluidエンジン毎にどこいじればいいかとかは違うし、それぞれのケースによっても異なる。
もう死にそうです。

領域限定するなどして、重要な箇所だけを本レゾでシミュレーションしてトライ&エラーとか、そういうことぐらいしか思いつきません。解決策ってそういうもんしかないかもしれませんが、設定面倒だったりキーフレーム動かしたりしなきゃいけないとかありそうで、まぁあまりやりたくはないのが本音、、、

みなさまどうやって切り抜けられてるのか是非お聞きしたいです。

この先の話になりますが、まずベースとなるパラメータの意味を徐々に、最終的には全部把握出来れば良いなと思っています。
その為には様々な条件下でいろんな実験をして、知識を蓄えてやらないといけないと思っています。
時間はかかりますが一番確実で一番の近道。
仕事の空き時間とかを探して少しずつやっていこうと思います。。
ただし実戦絡まないと覚えないので、必要ないことはなるべくやらないようにもしたいところです。
時間は有限・・・!!!

なんか良いサイトあるよ!とか、ここが参考になるよ!とか、おれの秘蔵のデータをあげよう、、、という方が入れば是非情報共有してくださいませ:D

 
ほんで次。キャッシュが重い。
でもこれはローカルにキャッシュとるとかネットワークでモゴモゴするとか、各々の環境によって違うと思うので、特にどうにかなる問題ではないという気がしています。
Fluidの出現によって、エフェクトは全行程で一番のストレージ喰い虫かつハイスペックマシン要求虫です。これは今後も続くでしょうね。。

さらに次。特にMayaに関してですが、プレビューが鬼。
MayaはFumeみたいにいい感じのプレビューシステムがないので、ビュー上で常に確認し続けないとなりません。
これはマジで鬼。100とか200とかになった時点でもうビューが回らなくなってくるじゃないですか。前に試しに400とかやったらもうほぼ待ち時間みたいになってしまいました。どうにか軽く出来ないもんでしょうか。
プレビューOFFにすればいいんですが、それじゃ結果がわからんわけで、、。
まぁ本番シミュレーションはそれでもいいんですが、作業中に何か良い手はないものでしょうか。
キャッシュとりながらプレイブラストしてくれるような、そういうのとかでもいいんですが、可能なんですかね・・・?(CreativeCrashに何かそういうスクリプトがあった気もしますが、ちゃんと確認してません:P)
MayaFluidのプレビュー問題は本当に死活問題です。軽いうちはサクサクプレビュー出来てとてもいいんですが。

そういえばこの間PPIの方々に、コマツの作ったデータは重くて開かん、と言われました。
そうでしょうそうでしょう。
頑張ってFluidのレゾゴリッと上げてたんだぜ!(キリッ
本当にごめんなさい。

というわけでこれもどうにか解決方法を見つけたいところです。
 
あとはまとめてシミュレーション投げるためのシステムだったり(FumeはBackburner使えばOKかも)、シミュレーションサーバの導入だったり、あれやこれやと、快適なFluid生活への道は遠く険しい気がしています。

とにかく解像度と各種パラメータの関係を自分なりにクリアにして、かつどんどんバシバシと並列で計算を行えるようなワークフローを、出来るだけ早く作らないといけないなーと思います。

Fumeは前述のとおりBackburnerがあるので、シミュレーションもバンバン回せるので、並列化に関してはハードウェア的な意味でのシステムの増強が必要なぐらいですが、Mayaはそういうの一切無いしシミュレーションごとにライセンスも要求されるのであれこれ不利ですね。。

出来ることならMayaはMayaで置いといても、Fumeの為にMax買うのは損じゃないと言いたいです。Fumeはマジで速えぇっす。画面上にスライスつくってプレビューとかもしないのでビューだってぐるぐる回ります。
各フレームの計算がどのぐらいかかったかもログを出してくれるので便利です。何時間かかるかの予想もだしてくれます。非常にナイスであります。
ただしシェーダに関してはMayaの圧勝です。雲とか作るのもMayaの方がやり易いです。
という具合で一長一短なので、どっちも使えるとベストなんですけどね。
まぁどっちか選べと言われたら間違いなくFume選びます僕は:P

あ、Fume使ってて気付いたんですが、MayaのデフォルトのキャッシュだとDensityとVelocityを両方キャッシュする形になっているのですが、FumeだとVelocityは何か理由がないと入れないようになっています。
例えばWaveletかけるとかだとVelocity必要なのでキャッシュを行います。
あとはパーティクルをアドベクションする際とかもVelocityは必要なのでキャッシュします。
そうすると使用メモリが一気に増えて、メモリに乗る最大グリッド数が一気に減ってしまいます。

もしかするとMayaでも同じ現象が起きているかもしれないので、その後何かに再利用する必要がなければVelocityはOFFにしてやるのがいいかもしれません。
ちょっとこれはいずれテストしてみたいところです。

 
こういう情報はどんどん共有をしていきたいところ。
何かまた面白い物出来たらUPしたいと思います。

本当にただの問題提起ばっかりですみませんでした。
何か良い情報お持ちの方、よろしくどうぞ:D

「Fluid、主にグリッドベースの気体エフェクトのワークフローに関しての諸々の問題、疑問」への5件のフィードバック

  1. >低解像度グリッドでのシミュレーション結果と高解像度グリッドでのシミュレーションが全く異なる、という点。

    コレが嫌でエフェクトアーティストの一線を退きましたw

  2. 俗にバタフライ効果と呼ばれるやつだね。
    それだけ、物理的に正しい複雑な計算式を使ってるという証だと思うけど。
    で、使いこなせないのであれば無理に使うことは無いのでは?と思う。
    素のままで何とかしようとしたけどはまった挙句に時間切れみたいな話しも聞くし、
    上手く行っているところは色々と改造して使ってるみたいだし。
    ということで、他の扱い易いソフトでやることを薦めます。

  3. >はじめさん
    いやー、良く分かります。
    日本にもうちょっと早く専業制の会社が増えてたら違う道に行ってたかも、と思いますw
    ちょっと前までシェーダシェーダ言ってましたしね。
    行けてたかどうかは別として:P
     
    >kussyさん
    バタフライ効果!あれですかね、カオス理論のやつですかね。詳しくは知らないのですが、、
    物理的に正しい方程式を解く関係上、サンプリングが低ければ近似の結果が遠くなってしまうのも頭ではわかっています。
    ですが!それでもやはりこうやったらこうなって欲しいよね!と思ってしまうのです・・・!!
    今までやってきた方法論が通じない、というのがなかなかしんどいです。
    しかしFluidに代わるものって現状存在しませんし、仕方なくとは言わないまでも、
    腹を決めてやっています。
    すぐにものにできるものとも思っていませんし、徐々に扱えるようになっていったらなぁと思っています!
    Fluidは扱いづらいですが、結果はかっこいいのでなんとかものにしたいです:)

    がんばりまーす!

  4. >シロクロさん
    コメントありがとうございます。
    リンク多数だったためSPAMフィルタに反応して引っかかってました、、
    なので返信遅くなってしまいました。気づくのが遅くなってすみません。。
     
    SOuPは良く存じてます。
    実際に使った方からも話聞いたりしたので、非常に良いツールと思っています。
    なのですが、これは実はこのエントリーでまさに触れたWavelet Turbulenceという技術を使用しているので、同じ問題にぶつかってしまいます。
     
    頭では分かっているけどなんとかならんかと思うこの都合の良さ・・・!!
    多分解像度問題というよりは速度問題なんでしょうね。
    仕方ないのでGPU対応などを待とうかなと思います。
    3年あれば何か変わってますかね・・・?

コメントを残す

メールアドレスが公開されることはありません。