株式会社デジタル・フロンティア-Digital Frontier

Header

Main

  • TOP
  • DF TALK
  • 流体の新アップレゾ手法(研究開発報告)

流体の新アップレゾ手法(研究開発報告)

2016/12/19

Tag: ,

皆さん、こんにちは。開発室の川田です。

過去の記事でも書いたように、DFでは流体における『新しい高解像度化手法』の研究開発を行っておりました!

今回は、その進捗をここで発表いたします。よろしくお願い致します。

▼目次

  1. アップレゾ(高解像度化)とは
  2. 今回の手法の結果動画
  3. 手法のキーアイデア1
  4. 手法のキーアイデア2
  5. 具体的な処理の流れ
  6. 本手法の効果とその特徴
  7. その他の結果
  8. まとめと今後

アップレゾ(高解像度化)とは

アップレゾ(高解像度化)とは、流体シミュレーション(以後、SIM)の入力データを、そのデータが持つ動きや形状を基本的に維持したまま、渦などのディテールを加えた高解像度の情報(高解像度化したSIM)に変換して出力する事です。

高解像度化の一例は以下です。
firsttop
左:低解像度SIM(入力), 右:高解像度化したSIM(出力)

アップレゾの詳しい背景やこれまでの研究開発の経緯については、過去の記事を参照ください。
[DF_talk] 流体シミュレーションのアップレゾ(高解像度化)について

今回はベースとして格子(グリッド)を用いながら、パーティクルも応用した独自の『新アップレゾ手法』について説明します。グリッド法とパーティクル法の基本的な違いについては、以下を参照ください。
[DF_talk] 流体シミュレーションを使った自然現象の表現

今回の手法の結果動画

偉大なる先人達のこれまでの研究に敬意を表しながら、これまで研究開発を行って来ました。前回の記事後、高解像度化の成果として、現在では以下のような結果を得られています。


左:低解像度SIM[x,y,z]=[300,300,300], 右:アップレゾ後(本手法)[x,y,z]=[600,600,600]
左の結果は純粋なSIM結果です。また、今回の手法によるアップレゾ後の解像度は、低解像度SIMの2倍となっています。
※劣化無しの綺麗な状態で見たい方はコチラ

挙動の偏りがなく、動的かつ複雑に変化していく詳細を実現出来ていることが分かります。低解像度SIMでは表現出来ていなかった多くの情報が、高解像度SIMの圧力計算を今回特に近似することで生成出来るようになっています。

挙動の詳しい特徴については、順に説明していきます。

手法のキーアイデア1

今回の研究開発のいくつかのキーアイデアについて、その概要を説明します。数式等ではなく直感的にイメージしやすい言葉で書いたつもりですので、ぜひとも一度読んで見ていただければと思います!

キーアイデア1: 本手法では、低解像度SIM(入力)の特に高周波成分を利用し、その速度場情報をパーティクルに保持させます。そして、それを時間の経過に伴って流動させることを考えます。パーティクルの流動時に様々な処理を施すことで、グリッド計算だけの低解像度SIMにはなかった複雑な挙動のディテールを作り出します。

特に、キーアイデア1によって、本手法は次のような特徴を持つことが出来ます。

    • パーティクルで渦の移動や分離等も表現することで、時間的な連続性を持った詳細を生成
    • エネルギーのカスケード(段階的な状態遷移)を表現するような、動的に変化できる挙動(非定常的な流れを近似)を生成

グリッドだけでは基本的に流れの隣接情報しか扱えませんでした。グリッドだけでなく今回はパーティクルも利用することで、流れの大きさの変化や時間の経過と共に流れのかたまりが運ばれるといった表現が、より明示的に出来るようになりました。

最終的な計算結果である速度場を用いて、密度を流動させて詳細な流れを生成します。全体的なフレームワークについては、具体的な処理の流れにて図で説明しました。

『本アイデアの詳しい説明』

  • 圧力計算の近似
    本来は圧力を高解像度で解く事で表現される詳細を、グリッド手法に加えてパーティクルを応用して、近似的に生成しています。低解像度SIM(入力)の高周波成分は圧力をグリッドで解いた結果なので、本手法ではそれをパーティクルでエンハンスするなどの特徴的かつ効果的な処理を行っています。
    ※これまでは、高解像度の純粋SIMはコストが高すぎること(特に圧力計算)から、ユーザがSIMのイテレーションを稼げない事が常に大きな問題となっていました
  • パーティクルとグリッドを用いる既存手法との違い
    これまでにも例えば、流体計算の各項目(移流項等を参照)についてパーティクルとグリッドを使い分けて解くハイブリッド法は存在しました(代表例としてFLIP法)。それに対して今回は、重要と考える圧力項目にパーティクルとグリッドを同時に用いることにより、高解像度での圧力挙動を近似的に表現したという点が既存手法と異なる特徴的な手法となっています。
  • 低解像度SIM(入力)への一致
    さらに、低解像度SIM(入力)の高周波成分を本手法のアルゴリズムを用いて、詳細として高解像度速度場に合成しているため、低解像度SIM(入力)の動きに比較的一致した結果が得られます。
    ※高解像度の圧力計算を施すと低解像度SIM(入力)から結果がずれてしまう点を、解決出来ることになります
    ※本手法の別のアルゴリズムも用いて一致の精度を更に高めていますが(パーティクル流動領域も利用)、割愛します

 
一方で、アップレゾの代表例として、ウェーブレットノイズを利用した複数の流れを重ね合わせる詳細生成手法があります(下記がその手法の動画例)。 高速で優れている(CGソフトへの機能実装例もある)一方、動的に変化する複雑な特徴をあまり持たず、局所的な範囲での特定の挙動に留まってしまうという事もありました。

Wavelet Turbulence for Fluid Simulation(著者の公式動画)

 

手法のキーアイデア2

キーアイデア2: 1つ目のキーアイデアで考慮する全パーティクルが流動していく領域に対して、よりスケールの小さい成分の詳細を段階的に計算します。

キーアイデア2の具体的内容は、簡潔にまとめると次のようになります。

    • パーティクルの流動空間を時間と共に動的に変化させられる事に着目し、その空間に渦を擬似表現する関数を適用
    • さらに、パーティクルの大きさとその速度場の強度を下げていく形で渦のエンハンスを行い、段階的な乱流の変化を表現

これによって、相互干渉の挙動を考慮した形で様々なスケールをもった渦を作り出せます。また、ここでの段階的処理によって、エネルギーが徐々に小さくなっていく渦を比較的壊すことなく、詳細を自然に生成出来ます。なぜなら、パーティクルとそのライフ情報等を応用して、時間の経過と共に渦の強度等を変化させることが可能だからです。また、流れのスケールに応じた局所的な渦のエンハンスも可能となります。このように、今回のパーティクルの考え方が多くの特徴的な挙動を実現しています。

具体的な処理の流れ

キーアイデア1,2を基に、以下のような流れの処理をフレーム毎に行います。

framework

全体的な処理の流れ

フレーム毎に最終生成される高解像度速度場である、グリッド情報としての High Vel(P処理) を用いて、高解像度の密度を流動させて、その結果をレンダリングします。
※低解像度SIM情報はキャッシュからフレーム毎に取得し、また、仮想 High Velは次のフレームへ継承されることで時間的な連続性が保たれます。また、パーティクルも継承され、速度場へ様々な処理を行いながらライフを終えたものは消滅します。

本手法の効果とその特徴

本手法によって、高解像度の純粋なSIMの約半分程度に計算コストを下げることが可能です。

また、利点として例えば以下が挙げられます。

    • イテレーション回数の削減
      純粋な高解像度SIMでは通常、低解像度SIMの動きに合わせるために多くのイテレーション(試行錯誤の繰り返しの回数)が必要になりますが、本手法は低解像度SIMの挙動に比較的一致させることが出来ます。よって、純粋なSIMに比べてイテレーション回数を大幅に少なくできます。
    • 一時的なキャッシュの削減
      そのため、イテレーション中の一時キャッシュも膨大な蓄積量にならずに済みます。
『本手法のアイデアの特徴』

  • 低解像度SIMとの空間的なズレや時間的断続を解決
    自己参照的に低解像度SIMの高周波成分を利用する大きな長所として、生成した詳細と低解像度SIMとの「親和性」が高くなる点があります。すなわち、空間的なズレや時間的断続性については問題がなくなります。
    ※一方で、他の高解像度SIMの結果を利用するようなデータベース手法を仮に考えるとき、類似したSIMからの学習が必要となります。すなわち、学習データの低解像度SIMへの親和性に十分な注意が必要となります
  • 低解像度のSIMの高周波成分を利用するというアイデア
    低解像度SIMの低周波成分はもとの挙動を変えてしまう可能性がありますが、低解像度SIMの「高周波成分」であれば基本的にそのようなことはありません。そして、この高周波成分をパーティクルと複合的に処理して様々な複雑な挙動を作り出せた点が、今回の新発想の核となる部分になっています。
    ※時間的にも比較的長く、そして空間的にも広い意味で流れの「相関関係」が表現できて、より自然でリアルな挙動が実現出来る事になります
  • 解像度が高くない場合の問題点
    アップレゾ後の解像度があまり高くない場合、計算した詳細成分をグリッドで表現出来なくなる事があります。
    ※一方で、低解像度SIMについて解像度がそもそもかなり高い場合は、充分なグリッドがあれば最終的な詳細表現がさらに向上することも期待できます

 

その他の結果

DFでの研究開発において、前回の時点の手法と今回の手法について比較した結果が以下です。
(いずれも解像度は[x,y,z]=[600,600,600])

左:前回の時点の手法, 右:今回の手法
※劣化無しの綺麗な状態で見たい方はコチラ

今回の手法では、前回の手法のように特定の挙動に偏ってしまうこともありません。また、複数の流れを重ね合わせたような線形挙動ではなく、時間や空間的な変化やその連続性をより考慮する形で、より動的で複雑な詳細を生成できている(非線形な挙動に近づいた、非定常的な流れを近似)ことが分かると思います。詳細の流れが不自然にすぐ減衰することもなく、徐々にスケールが小さくなりながら、渦が自然に微細な成分になっていく挙動も確認できると思います。

また、以下は流動させる密度の濃さを変えて比較したものです。左の方が密度が少し濃いことで詳細が強調されています。
125frdenchangecomparison
左:少し濃い密度、右:もとの密度(どちらも本手法を用いた結果で125フレーム目)

今回の提案手法の効果についての参考に、以下の既存手法の高解像度化例もご覧ください。

Preview-based Sampling for Controlling Gaseous Simulations(著者の公式動画、2:15ごろから3次元の例あり)
この結果では元々の解像度が低いため、最終的に得られる解像度はそれほど高くありません。[x,y,z]=[600,600,600]といった高い解像度でも今回のようにアップレゾの有効性を示した手法はほぼ前例がない事からも、本手法の効果が分かると思います。

まとめと今後

コストが膨大になる圧力計算を行わずに高解像度の純粋なSIMに近づける方法のため、生成できる挙動や物理的な正確さにどうしても限界は存在します。しかしながら、主にパーティクルに着眼したキーアイデア1、2を新規に考案することで、時間や空間的な変化やその連続性をより考慮する形で、動的な挙動をもった複雑な詳細を新たに生成出来るようになりました。

さらに、本手法の特徴であるパーティクルが速度を流動させる空間を効果的に利用することで、特徴的な詳細の存在する領域に特化した形でディテール計算を行えるようにもなっています。パーティクルを応用した本アイデアは、他にも多くの拡張可能性を持つ考え方であると言えます。

今後は、たとえば次のようなことが考えられると思います。

『発展研究の可能性』

  • アップレゾのみならず、詳細生成手法として汎用化する
  • 新たな種類の流体挙動(高解像度SIM特有のものも含めて)を表現するような処理を追加する
  • 解像度アップによる挙動の向上を超える、流体の物理表現の追求を目指す

 
今回の結果で様々な拡張や将来性を持ったアイデアを提示できたと考えており、今後も関連研究を続けたいと思っています。

最後まで記事を読んで頂き、ありがとうございました!

▲目次にもどる


※免責事項※
本記事内で公開している全ての手法・コードの有用性、安全性について、当方は一切の保証を与えるものではありません。
これらのコードを使用したことによって引き起こる直接的、間接的な損害に対し、当方は一切責任を負うものではありません。
自己責任でご使用ください。

コメント

コメントはありません

コメントフォーム

コメントは承認制ですので、即時に反映されません。ご了承ください。

CAPTCHA


 

*