2014-01-01から1年間の記事一覧

グローバルイルミネーション(12)散乱位相関数が消える?

散乱の位相関数は計算上(見かけ上は)不要になる??。 関与媒質などを考慮するにはボリュームレンダリング方程式を計算する事になる。 Pが位相関数。 例えばHenyey-Greenstein phase function.で、パラメータgの値によって次式で与えられる。 gが1に近いと…

グローバルイルミネーション(11) 再び表面下散乱

まだ、確信が持てないのだがどうやら実装は正しそう。 と、いうのもこれまでクリームの計算結果が納得できなかった。 クリームの散乱パラメータ[1/mm]は σs=7.38, 5.47, 3.15 σa=0.0002, 0.0028, 0.0163 元々も透明な物体だが上記のような散乱σs(吸収σa)が…

グローバルイルミネーション(10) 再び表面下散乱

やっぱり計算を間違えていたかも知れない。 修正後は こうなった。違いは散乱位置を d = -log(rnd()) / σt ただし 0 < d < distance としていたのを d = -log(1-rnd()* (1-exp(-σt * distance))) / σt とした。当然だけど確率分布(probability distribution)…

グローバルイルミネーション(9) 関与媒質と位相関数

光の進行方向分布を位相関数というらしい。 最も一般的に利用される位相関数が Henyey-Greenstein の位相関数。 それぞれ前方散乱(射光の方向に散乱)、後方散乱(入射光の方向と反対方向に散乱)のシミュレーション結果。(正しい結果なのかは分からないけ…

グローバルイルミネーション(8)

現在の実装状況 機能状況パストレーシング○モンテカルロシミュレーション○準モンテカルロシミュレーション△メルセンヌ・ツイスタ (Mersenne twister)乱数○Next Event Estimation○拡散反射○鏡面反射○屈折・反射○異方性反射○屈折率(波長)○集光模様(caustics…

数値振動からの解放

計算が途中で思わぬ数値振動が発生して発展してしまうケースがあった。 色々と対応策を考えてやってみたが結果は良くなるどころか悪化するだけ。 数値フィルタを使うとうまく行ったが駄目ケースがありフィルタリングを小まめにやるようにした。 しかし、本来…

グローバルイルミネーション(7) 表面下散乱と関与媒質

色々と間違っていたかもしれない。 散乱のイベントは 乱数 < σs/σt でやるようにした。 散乱を考慮した方程式は 細かい記号の説明は省略するとして1項目が散乱を評価する積分、反射が2項目が視点までに届く間に散乱(out-scatterring)と吸収によって最終的に…

グローバルイルミネーション(6) 表面下散乱と関与媒質

パストレが実装できていると追加実装はそれほど難しくない(理屈としてはだけど)。 パストレでは物体から物体あるいは光源にぶつかる度に反射と放射輝度を計算している。 表面下散乱と関与媒質を考慮するには、ある意味忠実に散乱過程をシミュレーションす…

グローバルイルミネーション(5) 表面下散乱

サブサーフェイス・スキャタリング(Subsurface Scattering)の実装 サブサーフェイス・スキャタリング(Subsurface Scattering)は、光が半透明な物体の表面を透過し、内部で散乱した後に表面から出て行くメカニズムのこと。表面下散乱という訳語で呼ばれる…

グローバルイルミネーション(4)

パストレーシング(Path Tracing)における光源に関する問題の答えが分かった。 グローバルイルミネーション(2)で書いたように 位置がすごく高い位置にあるとレイを飛ばすと光源にぶつかる頻度は下がってしまうような気がする。結果的に暗くなる。 と、言うの…

グローバルイルミネーション(3)

光源の問題はまだ未解決でどうしたものか、、、 それでIBLを実装してみた。 ただし、本当にIBLなのかは不明。ただ、多分こういうことだろうな。と予想して実装してみた。 結果的にはなんかそれっぽい出力になった。

グローバルイルミネーション(2)

色々と難問に突き当たっている。 パストレーシング法でやっているが光源の扱いで悩む。 そもそも光源を特別扱いする理由はないはず(だと思っている)。 光源は発光している物体だからシーンに配置した物体にこれが光源とかいう識別は要らないと思っている。…

グローバルイルミネーション

少し前から「グローバルイルミネーション」を作ってみようと思い、勉強を始めたがやはり実装しながら試行錯誤した方が自分にはあっている。 さて、あまり聞きなれない言葉だとおうが、、、物理モデルに基づいて計算されたCGと言うことが出来るが物理的には光…

ソリトン分裂に関して(7)

海底地形は2mメッシュで最低水深10m、最大水深60mで計算してみた。 ちゃんとソリトン分裂が確認できるではないか!!。 非線形長波理論でも分裂が若干確認できるがこれをおそらく数値分散によるものだと思われる。 ソリトン分裂に特有の前傾が起きていること…

ソリトン分裂に関して(6)

格子間隔5m、最大水深10m、最低水深1m、α=0.5、β=0.9で概ね安定して計算が出来た。つまり、この場合は時間ステップを半分にしてやれば修正係数は不要になる。が、格子間隔2m、最大水深90m、最低水深1mではやはり数値発散してしまった。 安定するまでα、βの値…

ソリトン分裂に関して(5)

どうせシロートの作るプログラムだ。分散項の影響精度なんてそんなに必要ない。 と思えば首尾一貫して陽解法でやれるはずだ。 思い出そう。それは時間微分項が無い場合(定常の場合)はうまく解けている。 あ、もちろん精度は別の話。数値発散しないで計算で…

ソリトン分裂に関して(4)

難問に突き当たったがそれはおそらくは「手抜き」にある。 そもそも陰解法でアタックすべき問題を陽解法に拘ったためである。陰解法は大規模な連立方程式を解いて未知量を確定させるのだから首尾一貫して解が確定する。 ※連立方程式が解けるかどうかとかそう…

ソリトン分裂に関して(3)

先日の続き。 数値発散した原因は の評価である事までは明らかだ。しかし、よく見てみると第2項はΔtが掛かっているので時間ステップの調整次第で大きくはならないし、第3項は分母がメッシュサイズの3乗でそれなりに大きくなってこの項が巨大化するのを抑…

ソリトン分裂に関して(2)

先日の続き。 10mメッシュと2mメッシュは殆ど瞬時に数値発散してしまった。原因は直ぐに判ったが非常に悩ましい。(悩ましいという意味については次第に明らかになるので) まず、方程式を見てみる。X方向の流量計算は次のような式になっている。 赤い枠の中…

ソリトン分裂に関して

津波解析では線形長波方程式が簡易評価で使われているが水深の浅い海域等では非線形項が無視できなくなり一般には非線形長波方程式が使われている。 しかし、この非線形長波方程式でもってしてもソリトン分裂等は評価できない。 津波ではソリトン分裂等の現…

隕石衝突((K/T)境界インパクト) Ⅵ

私のこれまでの記事(内容)でいろいろと誤解が生じているようです。 その一つが被害評価です。 誤解の多くはこのシミュレーションが津波だけに限定した評価であることを忘れてしまっているようです。 もう少し書いておくと 直径10kmの彗星が激突した場合は…

隕石衝突((K/T)境界インパクト) Ⅳ

Google Earth用ファイル[download]

隕石衝突((K/T)境界インパクト) Ⅲ

計算結果のレンダリング結果(キャプチャ)です。 アニメーション1 アニメーション2(深い海域に衝突した場合)

隕石衝突((K/T)境界インパクト) Ⅱ

前回の続き。 前回の冒頭にに書いたけど、、、 計算結果はかなり悲劇的かつ衝撃的な内容となった。 なので気分を害しそうな方は読むのを止めて頂きたい。 隕石衝突による津波の発生は概ね次のような段階を踏む 隕石衝突による波動きの発生 クレータへの海水…

隕石衝突((K/T)境界インパクト)

これまでに自作してきた津波シミュレータだが隕石衝突における津波に関しても適用してみるとどうなるか試してみた。 計算結果はかなり悲劇的かつ衝撃的な内容となった。 なので気分を害しそうな方は読むのを止めて頂きたい(今回は基礎的な内容なので大丈夫…