modoでオブジェクトの形状をハイライトように見せる表現について書いてみます。作りかけの不完全な内容ですが、興味があれば試してみてください。
アニメやNPR表現では特長的なスタイライズドされたハイライトが使用されることがあります。こういう表現を使用したい場合、従来はテクスチャを使用するのが一般的ですが、今回はReycastノードを使用してオブジェクトの形状をハイライトのようにレンダリングしてみました。
スケマティックはこんな感じです。
Reycastの「ヒットした色」をマテリアルの「ディフューズ色」に入力すると、反射のようなディフューズ色を設定用することができます。
「ヒットした色」を「ディフューズ色」に直接入力すると環境色も完全に反射してしまうため、条件式の「AはBより大きい」を使用してReycastの「ヒットした距離」が一定以上離れている場合は、任意の色に置き換えるという処理にしてます。
距離が近い場合はTrue値としては「ヒットした色」をそのまま出力し、距離が離れてる場合はFalse値として任意の色を出力します。
反射してるオブジェクトはルミナンスを設定使用して、シェーディングしない単色になるように設定しています。
このままの方法だと近くにあるオブジェクトが全て反射してしまうので、反射対象のオブジェクトを制限する方法を追加する必要があります。今回はそこまで考えていないので、興味があるひとは続きを作ってみてね。
オブジェクト形状を使用する方法はテクスチャと異なり、カメラが近づいても荒くならないというメリットがあります。またリグを組んでアニメーションできるというのも面白いと思います。Reycast以外にUV Transformを使用する方法でも似た表現ができるような気がします。
3dsMaxにはShape Mapというスプラインをテクスチャでレンダリングする機能があり、リグを組めば表情用のテクスチャを動的に作ることがでそうだなと思ってましたが、Mayaで再現してる人を見かけました。modoもシーン内のパスやオブジェクトからテクスチャ作れたら似たようなことができて夢が広がりそう。
2023年3月3日 追記
modo 16.1で追加されたSurface Probe Textureを使用すると、手軽に同様のことが出来るようになりました。
modo 16.1のSurface Probe Texture機能。オブジェクトを指定して投影できるので、トゥーンシェーダーのハイライト形状制御に使えそう pic.twitter.com/x1W0KXEJ4w
— kai (@_kai3) March 3, 2023
cool !!
Thank you!:-)