3D CG(レンダリング)
平行光源が出来たので(理解が間違っていた) 以前は「グローバルイルミネーション(6) 表面下散乱と関与媒質 」だった。 今回は こうなった。
平面光源だと こうなる。計算方法に手間取ったが平行光源が実装できた(出来立てなのでまだ間違っているかもしれません。) こうなった。本当に拡散せずに光が差し込んでいるか媒質を入れてみると こうなった。 うまくできているっぽい。色々と分かった事が…
平面の光源が平行光源だと思ってた。 面光源では影がシャープにならないのでなんか違うという気がしていた。 勉強不足だ。 まだまだ分からない事が沢山あるし気が付いていない事もある。 そろそろ専門書を買うときがきたかなぁという感じだ。
ちょっと太陽光が暗いかもしれない、、、 ランプが変、、、 細かいところでまだまだな結果だが 僕的には今までの中では実写に近いOutputになっている気がする。 This 3Dmodel was modeled by Guillermo M. Leal Llaguno http://graphics.cs.williams.edu/dat…
テクスチャのαチャンネルの対応について。 葉っぱは単純な四辺形だがα=0ならレイは交点を持たずそのまま突き抜けるというロジック 交点があるとそこで何らかの反射がある
テクスチャのαチャンネルに対応した。 これで複雑な形状を単純化できる。例えば葉っぱは単純な四辺形だがα=0ならレイは交点を持たずそのまま突き抜けるというロジック(で良いと思うのだが)。 そうやってレンダリングしたのが下のヤツ。 グローバルイルミネ…
散乱の位相関数は計算上(見かけ上は)不要になる??。 関与媒質などを考慮するにはボリュームレンダリング方程式を計算する事になる。 Pが位相関数。 例えばHenyey-Greenstein phase function.で、パラメータgの値によって次式で与えられる。 gが1に近いと…
まだ、確信が持てないのだがどうやら実装は正しそう。 と、いうのもこれまでクリームの計算結果が納得できなかった。 クリームの散乱パラメータ[1/mm]は σs=7.38, 5.47, 3.15 σa=0.0002, 0.0028, 0.0163 元々も透明な物体だが上記のような散乱σs(吸収σa)が…
やっぱり計算を間違えていたかも知れない。 修正後は こうなった。違いは散乱位置を d = -log(rnd()) / σt ただし 0 < d < distance としていたのを d = -log(1-rnd()* (1-exp(-σt * distance))) / σt とした。当然だけど確率分布(probability distribution)…
光の進行方向分布を位相関数というらしい。 最も一般的に利用される位相関数が Henyey-Greenstein の位相関数。 それぞれ前方散乱(射光の方向に散乱)、後方散乱(入射光の方向と反対方向に散乱)のシミュレーション結果。(正しい結果なのかは分からないけ…
現在の実装状況 機能状況パストレーシング○モンテカルロシミュレーション○準モンテカルロシミュレーション△メルセンヌ・ツイスタ (Mersenne twister)乱数○Next Event Estimation○拡散反射○鏡面反射○屈折・反射○異方性反射○屈折率(波長)○集光模様(caustics…
色々と間違っていたかもしれない。 散乱のイベントは 乱数 < σs/σt でやるようにした。 散乱を考慮した方程式は 細かい記号の説明は省略するとして1項目が散乱を評価する積分、反射が2項目が視点までに届く間に散乱(out-scatterring)と吸収によって最終的に…
パストレが実装できていると追加実装はそれほど難しくない(理屈としてはだけど)。 パストレでは物体から物体あるいは光源にぶつかる度に反射と放射輝度を計算している。 表面下散乱と関与媒質を考慮するには、ある意味忠実に散乱過程をシミュレーションす…
サブサーフェイス・スキャタリング(Subsurface Scattering)の実装 サブサーフェイス・スキャタリング(Subsurface Scattering)は、光が半透明な物体の表面を透過し、内部で散乱した後に表面から出て行くメカニズムのこと。表面下散乱という訳語で呼ばれる…
パストレーシング(Path Tracing)における光源に関する問題の答えが分かった。 グローバルイルミネーション(2)で書いたように 位置がすごく高い位置にあるとレイを飛ばすと光源にぶつかる頻度は下がってしまうような気がする。結果的に暗くなる。 と、言うの…
光源の問題はまだ未解決でどうしたものか、、、 それでIBLを実装してみた。 ただし、本当にIBLなのかは不明。ただ、多分こういうことだろうな。と予想して実装してみた。 結果的にはなんかそれっぽい出力になった。
色々と難問に突き当たっている。 パストレーシング法でやっているが光源の扱いで悩む。 そもそも光源を特別扱いする理由はないはず(だと思っている)。 光源は発光している物体だからシーンに配置した物体にこれが光源とかいう識別は要らないと思っている。…
少し前から「グローバルイルミネーション」を作ってみようと思い、勉強を始めたがやはり実装しながら試行錯誤した方が自分にはあっている。 さて、あまり聞きなれない言葉だとおうが、、、物理モデルに基づいて計算されたCGと言うことが出来るが物理的には光…
Hisuiで実験的に作ってみた。こんな機能は使い道があるのか良くわからない。
以前、MPU法によるフィッティングの実装について色々と掲載したのだが どうも、、正直不満の残る結果だった。 というのも論文の主張を完全には再現できなかった点にある。 MPU法では鋭角がピッと出ると言うのが大きな利点の一つだろうと思うのだが この点に…
Hisui上で。 ブルーの線はパッチ境界 赤の線が展開後に外周境界となる線。 先日までの展開アニメもこのHisui上で生成したもの。
先日と同様。 genus=2 のケース。 計算時間:20分、、、遅すぎる、、、。 まぁ、なにも考えずにひたすらカットを試行しているから仕方が無い。 しかも綺麗なループになっていない。 参考論文 Xianfeng Gu, Steven J. Gortler, and Hugues Hoppe. Geometry im…
種数(genus)=1 旨くカットを入れてやれば平面に展開できる。 ※CPUの力技でループするカットを探した。 Xianfeng Gu, Steven J. Gortler, and Hugues Hoppe. Geometry images. InProceedings of SIGGRAPH 2002 http://www.cs.princeton.edu/courses/archive/f…
問題点が明確になった。 前回書いたように 1)処理速度が遅い 2)メモリ使用量の増大 これに加えて 3)空中に浮いた形状が残る という問題。3)はソリッド集合演算(CSG)だけでやったために浮き彫りになった。 本来なら削られてどこかに吹っ飛ぶか落ちて…
レンダリングをリアルにしてみた。
前回、といってもかなり前だがソリッド集合演算で加工シミュレータを作り始めていたのだがようやくある程度形になった。 とにかく言い出したらきりが無いくらい問題が多発、それらを根気よく解決してようやくここまできたという感じ。まだ処理速度が遅いのと…
理屈は単純。 微小に移動させながら論理和をとっていく集合演算をひたすら繰り返す。 微小な移動なので殆ど接触したような状態で集合演算が旨くいくかをテストできるがソリッドの掃引体を作る方法としては実用的では無いなぁ。 処理速度が今の100倍くら…
DICOMビューアを作ってみた。 http://pubimage.hcuge.ch:8080/Thumbnails/BREBIX.jpgAlias Name: BREBIX Modality: CT 64 File Size: 60 MB Description: Hypernephroma, arterial and venous acquisitions. サンプルデータは以下のサイトから。 DICOM sampl…
なかなか良い感じになってきた。 株式会社カタッチさんのユーザーサポートによるアドバイスで結構助かった。 C#の勉強にもなった。まぁ、C#初心者なので意味不明なところもあるが、、 デリゲートだのラムダ式だの、、、 CADのフレームワークという位置づけら…
あけましておめでとうございます。 年末年始は0歳の長女と女房の手助けを徹底するという気持ちで休む事は二の次に、という気持ちで奮闘したつもりだ。どれだけ楽に過ごさせてあげられたかわからないが、、、 そういう中で夜なべをして少しの時間だが若干の…