Mantraで特定のオブジェクトだけをレンダリング


こんにちは篠島です。

シーンが複雑になり、オブジェクトのディスプレイフラッグをONやらOFFにして作業して、いざ本番レンダリング・・・。と思いきや不必要なオブジェクトが表示されていた、ライトの設定が違う・・・等のミスは毎回手動でレンダリングの設定をしている限り必ず起こります!

なので手動による人為的なエラーを無くす方法です。

今回のサンプルファイルです。
MantraObject.zip

今回はレンダリングしたいオブジェクトの設定の仕方を説明しようと思います。MantraはデフォルトでシーンのDisplay Flagを元に何をレンダリングするかを決めます。Candidate Objectsというところに * が入っていますが、要は全オブジェクトの中でDisplay FlagがONのオブジェクトだけレンダリングされます。Candidate Lights も同様です。なので間違ったDisplay flagの設定をしているとそれがそのままレンダリングされてしまうわけですね。

mantrascene

なので下のようにオブジェクトとライトが複数ある場合はForce ObjectsとForce Lightsの所でオブジェクトを指定してやると、Display Flagに関係なくそのオブジェクトがレンダリングされるようになります。

sceneforcesetting

Force Matteでオブジェクトを指定すると、そのオブジェクトをマットとしてレンダリングするので、アルファもくっきりと抜けています。forcematte

Force Phantomにオブジェクトを指定すると、そのオブジェクトはレンダリングされずに影だけが表示されます。そのオブジェクト自体はレンダリングされませんが、他にオブジェクトに反射などの映り込みはちゃんとします。phantom

Exclude Objectsにオブジェクトを指定すると、そのオブジェクトをレンダリングしないようになります。Force Objects と Exclude Objects の両方で同じオブジェクトを指定した場合は、Exclude Objects の方が優先されてレンダリングされなくなります。

 

この事から分かる通り、レンダリングするオブジェクトの数だけMantraノードを用意します。Mantra毎にどのオブエジェクトをレンダリングするかを予め設定しているので、間違ったオブジェクトをレンダリングしてしまうというエラーを未然に防ぐことができます。
ライトなどは別Mantraで書きださなくてもレンダーパスを使ってライトごとのパスを作ることが可能です。レンダーパスについては別の機会で詳しく書いてみます。
mantras

次回はノードのパラメーターの設定をMantra毎に変えてみます。