オブジェクトのレイを制御する方法
マテリアルでレイ (Ray) を制御するのではなく、オブジェクトそのもので制御する方法です。
例えば、どうしてもカメラのビューに入り込んでしまうオブジェクトをレンダリングには入れたくない場合や、カメラには入り込んではいないが光沢オブジェクトの映り込みから外したい場合や、モノは見せいたいがその影を落としたくない場合など、いろいろなケースで使ってあげると大変便利な機能です。
ちなみに、Light Path シェーダを利用してマテリアルでもレイを制御することは可能です。
しかしマテリアルで制御すると、当然のことながら、別のマテリアルに変えた時にまた同様の設定が必要になるし、同じマテリアルを他のオブジェクトでも利用しているとそのオブジェクトにも影響が出てしまいます。
だったら、そのオブジェクト用に個別にマテリアルを作成してあげれば良いこと…なのですが、マテリアルでノードを組むよりも直接的に制御できるので楽だというのと、レンダリング時にそのレイの処理からスキップされるので、マテリアルで制御するよりもレンダリング時間が短くすむというメリットもあります。
(ライトパス の「レイの可視性」も参照してください)
Ray Visibility
オブジェクトのレイの設定は、Object パレットの Ray Visibility にあり、Camera, Diffuse, Glossy, Transmission, Shadow のレイが制御できます。
パレット
Sample
レイを制御してレンダリングしてみました。
レイを制御するオブジェクトを囲うように 3 つ平面を作成し、それぞれに以下のマテリアルを割り当ててあります。
- 赤い平面 : Hex:FFFFFF の Diffuse BSDF
- 緑の平面 : Hex:FFFFFF の Glossy BSDF
- 青い平面 : Hex:FFFFFF の Glass BSDF
- レイを制御するオブジェクト : Hex:0000FF の Diffuse BSDF 0.2 x Hex:FFFFFF の Glass BSDF 0.8 の Mix


On は該当レイだけを表示 (On) にし、Off は該当レイだけを非表示 (Off) にすると以下のようになります。
ちなみに、マテリアルで同様にレイを制御しようとすると以下のような構成になります。

※オブジェクトそのものを Transparent BSDF で非表示にすれば、レンダリング結果としては同じになりますが、レイを制御しようとするとこうなるという例です
レンダリング結果はほとんど同じですが、オブジェクトによる制御ではレイの走査時にスキップされるためレンダリング時間は短く済んでいますが、マテリアルによる制御ではレイの走査時でスキップされないため時間がかかっているようです。
- 最終更新:2012-10-23 17:14:33