Doc:JA/2.6/Manual/Physics/Fluid/Technical details

提供: wiki
< Doc:JA‎ | 2.6‎ | Manual‎ | Physics‎ | Fluid
移動先: 案内検索
Page status (reviewing guidelines)

Page reviewed and in good shape

技術的詳細

物理的正確さ

“My cup runneth over”, created with Blender and Yafray.

流体アニメーションは制作に非常に時間がかかりますが、内部の仕組みをよく理解するほど、仕上がりを予想しやすくなるでしょう。Blenderの流体シミュレーションに使われるアルゴリズムは格子ボルツマン法(Lattice Boltzmann Method、LBM)といわれるものです。流体アルゴリズムには他にもナビエ-ストークス(Navier-Stokes、NS)エンジンや、平滑化粒子流体力学(Smoothed Particle Hydrodynamics、SPH)などがあります。LBMはこの二つの中間のような方法です。

一般的にいって、現在のコンピュータでは1メートルのタンクの水ですら正確にシミュレートするのは非常に困難です。街の中を暴れまわる波をシミュレートなどしようと思ったら、手に入る最も高価なスーパーコンピュータが必要で、それでも不足かもしれません。上に挙げたどのアルゴリズムを使ってもです。したがって、本当に思ったとおりの効果を生み出すためには、考え方を変えてみる必要があります。映画製作者たちがアナログ時代から(非常に効果的に)やってきたのと似た考え方、つまり、「それっぽくでっちあげよう!」ということです。

満足できるイメージを作り上げるためには、品質の良い流体シミュレーションが非常に重要です(それがすべてではありませんが)。まず、基礎となるべき流体シミュレーションを計算するというコンピュータ的汚れ仕事をBlenderにやってもらい、それから見る人が「現実の災害」だと納得するようなディテールを慎重に考えて付け足しましょう。

たとえば、以下のようにして巨大な都市を襲う津波を表現できます。小さなモデルを作り、小さな波を高解像度で作り、そして100mの波と1mの波の違いに誰も気づかないように祈ります(実際、気づかないでしょう)。波には大量のノイズと雲でカラーに変化を加えたテクスチャを貼りましょう。波がぶつかるいろいろな部分には煙(または霧)のエミッターをたくさん追加し、衝突にあわせた時間と、衝突から考えられる方向に放射されるように調整します。車やごみ(そしておぼれる人々…)を波先に浮いて動いているようにアニメート(そしてベイク)します。上に向けた霧エミッターを波頭に配置し、波頭から空中に上がるしぶきを再現します。カメラをどこに置くのか、ズームレンズを使うかワイドレンズを使うか、などもよく考えます(見る人がかわいそうな俳優たちを見下ろしている感じにするのか? それともいっしょにおぼれている感じにするのか?)。このように、流体シミュレーションに加えて細部への気配りをすることで、作品の出来がぐっと上がるのです。

BlenderのLBMエンジンにとって以下のようなことは計算を難しくします。

  • 巨大なドメイン
  • 長い時間
  • 低い粘度
  • 大きな速度

水の粘度はもともと非常に低いので、特に低い解像度の場合は乱流が正しくとらえられないかもしれません。現在のところはまだ、コンピュータグラフィックスにおける流体シミュレーションのほとんどは、じっくり見れば現実の水とは違うところがあります。基本として、物理的な設定を当てにしすぎないほうが良いです(たとえばドメインの大きさやアニメーションの秒数)。低い解像度でなるべくすべての動きが正しくなるように調整したあと、できるだけ(または必要なだけ)高い解像度でシミュレーションしましょう。

謝辞

流体シミュレーションの統合はGoogle Summer-of-Codeのプロジェクトとしてなされました。エンジンについての詳細は www.ntoken.comで見られます。以下のアニメーションは流体エンジンがBlenderに統合される前に流体エンジンで作られました: Adaptive Grids, Interactive Animations。Blender-SoCプロジェクトをとりまとめてくれたChris Want、プロジェクトを導いてくれたJonathan Merritに謝意を表します。そしてもちろん、これらすべての発端であるGoogleにも感謝します。SoCの進行はここにポストされています: SoC-Blenderfluid-Blog at PlanetSoC

エンジンそのものはドイツ・エルランゲンのDepartment of Computer Science 10 (System Simulation, LSS)において、Nils Thuereyによって、以下のかたがたの協力、監修のもとで開発されました:U. Ruede, T. Pohl, C. Koerner, M. Thies, M. Oechsner and T. Hofmann。

http://www10.informatik.uni-erlangen.de/~sinithue/img/lsslogo.png http://www10.informatik.uni-erlangen.de/~sinithue/img/unierlangenlogo.png