kumori_glass.jpg


曇りガラス

 曇りガラスを表現してみます。
 ページトップの画像において、透明な直方体が白い球体の手前にあるのですが、向かって右側の直方体が、曇っていて、球体がぼんやりと透けています。
 Xi-TRACEでは、「物体の表面に微小な凹凸があって、透明な物体に光が入射する時にこの微小な凹凸で散乱し、屈折角度が微妙にばらつく」というモデルを立て、屈折光(と、反射光)を分散させています。

disdeg.png

 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を大きな角度に設定しないとダメかと。


home

download

gallery