#macro DensityProfile ( VTranslate, VScale) density{ density_file df3 "Sample/sample001.df3" interpolate 1 frequency 0 scale VScale translate VTranslate color_map { [0.0 rgb <0.2, 0.0, 0.0>] [0.5 rgb <0.5, 0.5, 0.0>] [1.0 rgb <1.0, 1.0, 1.0>] } } #end |
box { <-0.99, -0.99, -0.99> <0.99, 0.99, 0.99> hollow pigment {rgbt <1,1,1,0.95>} interior { media { DensityProfile (<-1, -1, -1>, <2, 2, 2>) intervals 1 samples 32,64 method 3 emission rgb 0.3 * <1, 1, 1> absorption rgb 1.0 * <1, 1, 1> scattering { 1, rgb <1, 1, 1> } } } } |
absorption: {COLOR} □{0,0,0} 以外を設定すると、光を吸収するので濃い部分の後ろに影が落ちます。 例えば赤を吸収する物質の後ろは青っぽくなります。 scattering: {type, COLOR, [eccentricity VALUE], [extinction VALUE]} □type で散乱の種類を設定します 1: isotropic 2: Mie haze 3: Mie Murkey 4: Rayleigh scattering 5: Henyey-Greenstein scattering □COLOR で散乱の色を設定します。 □extinction 散乱した分の光は自動的にabsorptionされます。 これを1以外で設定すると、 その分のabsorptionの強弱を変更できます。 □eccentricity: type 5 (Henyey-Greenstein scattering) を選んだときに効くパラメータ マイナスだと後方散乱、プラスだと前方散乱が強くなって、0で等方散乱です。 emission: {COLOR} □{0,0,0} 以外を設定すると、自分で発光します。 光源がなくても見ることができるという意味での発光で、周囲の物体を照らしたりすることはありません。 interval: VALUE □ 物質内の各点でどれだけ光が当たっているか評価する際に、視線方向に何区画で光の評価をするかの設定。大きいほど精確で遅い。 samples: MIN, MAX □ interval 毎に複数点でサンプリングして、ばらつきを見てサンプル数を決める。その際の最小値と最大値を設定する。詳細は難しくてよくわからないけど、大きいほど精確で遅いらしい。 ※)interval と sample の兼ね合いで、interval を少なめに、sample数を多めに取るほうが良いという記述があった。実際、実行時間もそのほうが早いように感じる。 method: type □ 1: サンプルの取り方がランダム 2:サンプルの取り方が等間隔 3:サンプルの取り方がadaptive。adaptive は値が急に変化する場所を細かくサンプリングする賢い実装のようなので、何か問題が起きなければadaptiveを使うのがよさそう。 |