オブジェクトのレイを制御する方法

マテリアルでレイ (Ray) を制御するのではなく、オブジェクトそのもので制御する方法です。

例えば、どうしてもカメラのビューに入り込んでしまうオブジェクトをレンダリングには入れたくない場合や、カメラには入り込んではいないが光沢オブジェクトの映り込みから外したい場合や、モノは見せいたいがその影を落としたくない場合など、いろいろなケースで使ってあげると大変便利な機能です。

ちなみに、Light Path シェーダを利用してマテリアルでもレイを制御することは可能です。
しかしマテリアルで制御すると、当然のことながら、別のマテリアルに変えた時にまた同様の設定が必要になるし、同じマテリアルを他のオブジェクトでも利用しているとそのオブジェクトにも影響が出てしまいます。
だったら、そのオブジェクト用に個別にマテリアルを作成してあげれば良いこと…なのですが、マテリアルでノードを組むよりも直接的に制御できるので楽だというのと、レンダリング時にそのレイの処理からスキップされるので、マテリアルで制御するよりもレンダリング時間が短くすむというメリットもあります。
(ライトパス の「レイの可視性」も参照してください)

Ray Visibility

オブジェクトのレイの設定は、Object パレットの Ray Visibility にあり、Camera, Diffuse, Glossy, Transmission, Shadow のレイが制御できます。

パレット


Sample

レイを制御してレンダリングしてみました。

レイを制御するオブジェクトを囲うように 3 つ平面を作成し、それぞれに以下のマテリアルを割り当ててあります。
bmps_ObjectRay_obj.pngbmps_ObjectRay_node.png

On は該当レイだけを表示 (On) にし、Off は該当レイだけを非表示 (Off) にすると以下のようになります。
Ray On Off
Camera bmps_ObjectRay_Cam.jpg bmps_ObjectRay_-Cam.jpg
Diffuse bmps_ObjectRay_Dif.jpg bmps_ObjectRay_-Dif.jpg
Glossy bmps_ObjectRay_Gls.jpg bmps_ObjectRay_-Gls.jpg
Transmission bmps_ObjectRay_Trs.jpg bmps_ObjectRay_-Trs.jpg
Shadow bmps_ObjectRay_Sdw.jpg bmps_ObjectRay_-Sdw.jpg
All bmps_ObjectRay_Full.jpg bmps_ObjectRay_Non.jpg

ちなみに、マテリアルで同様にレイを制御しようとすると以下のような構成になります。
bmps_ObjectRay_Non_byMat_node.png
※オブジェクトそのものを Transparent BSDF で非表示にすれば、レンダリング結果としては同じになりますが、レイを制御しようとするとこうなるという例です

オブジェクト設定による全レイ非表示 マテリアル設定による全レイ非表示
bmps_ObjectRay_Non.jpg
RenderTime:04m47.69s
bmps_ObjectRay_Non_byMat.jpg
RenderTime:13m48.44s
レンダリング結果はほとんど同じですが、オブジェクトによる制御ではレイの走査時にスキップされるためレンダリング時間は短く済んでいますが、マテリアルによる制御ではレイの走査時でスキップされないため時間がかかっているようです。



コメントを投稿するには画像の文字を半角数字で入力してください。


画像認証

  • 最終更新:2012-10-23 17:14:33

このWIKIを編集するにはパスワード入力が必要です

認証パスワード