曇りガラスを表現してみます。
ページトップの画像において、透明な直方体が白い球体の手前にあるのですが、向かって右側の直方体が、曇っていて、球体がぼんやりと透けています。
Xi-TRACEでは、「物体の表面に微小な凹凸があって、透明な物体に光が入射する時にこの微小な凹凸で散乱し、屈折角度が微妙にばらつく」というモデルを立て、屈折光(と、反射光)を分散させています。
Xi-TRACEでは、「微小な凹凸」を直接指定するのではなく、それによって屈折光と反射光がある角度で散乱する(ばらつく)と考え、ばらつき角度:disdeg°を属性宣言attr内で指定しています。
attr distributed=
{
dupli clear;
option disdeg=10;
};
このdisdegを使う上での注意事項は、パスレイトレーシングを有効にしないとならない、と言うことです。入射した光は、物体表面の微小な凹凸でランダムに散乱するので、本来、同じ入射光に対して複数本の屈折光や反射光を計算し、その平均値をとることで、ランダムなばらつきを表現するからです。
パスレイトレーシングを有効にすることで、屈折光の散乱だけではなく、以下の現象について、ランダムに分散した光線を複数回計算して、表現することができます。
パスレイトレーシングを有効にするために設定すべきパラメータは、cond命令の第5パラメータです。
cond <pix>,<sub>, <raylv>,<shdlv>,<dislv> ;
第5パラメータの<dislv>は、パスレイトレーシングを有効にしない場合には、0としておきます。<dislv>に0より大きな値を設定すると、その回数分だけ、ランダムに視線を発生させ、全ての平均をその点(画素)の色とします。当然のことながら、<dislv>に大きな数値を設定すると、その分多くの計算時間がかかります。逆に、数値が小さすぎると、ランダムノイズが乗った画像となり、ザラついた感じになります。計算時間との取捨選択で決定してください。
最初はクリアに透明だった立方体が、少しづつ曇っていく様子をアニメーションにしましたので、動画とデータをご覧ください。ガラスが登場しきった後、だんだん曇っていくのは向かって右のガラスですので、向かって右に注目です。
Xi-TRACEデータ:kumori_glass.xitr
屈折光がばらつくことで曇るというモデルなので、ある程度屈折光が進む距離が必要です。ですので、ガラスに厚みをつけてみました。薄いガラスにする場合は、その分、散乱角度disdegを大きな角度に設定しないとダメかと。