このチュートリアルでは、Blenderでのレンダリングのポストプロダクションを通じて、オブジェクトのエッジを強調し、 Glare タイプのグロウを追加する方法を探求します。
動画の書き起こし
皆さん、こんにちは!
このチュートリアルでは、Blenderでのレンダリングのポストプロダクションを通じて、オブジェクトのエッジを強調し、 Glare タイプのグロウを追加する方法を探求します。
このチュートリアルはBlenderバージョン3.6を使用して作成されましたが、使用されているCompositingノードは少なくともバージョン2.49から利用可能であり、将来のバージョンでも利用可能である可能性が高いです。
Blenderシーン内に配置されたオブジェクトのエッジを強調するには、まずそのオブジェクトをレンダリングから分離する必要があります。これは Cryptomatte を使用するか、私の場合は ID Mask ノードを使用して達成でき、私たちが分離したいオブジェクトに対応する白いマスクを提供します。
このデモンストレーションに使用している3Dモデルには、肋骨に関連する4つの別々のオブジェクトがあります:椎骨、軟骨、肋骨、および胸骨。

例として、軟骨部分のエッジを強調しましょう。
レンダリングを開始する前に、 Object Properties タブの Relations セクション内にある Pass Index フィールドで0以外の値を指定することで、分離したいオブジェクトに固有の数値識別子を割り当てます。
したがって、このフィールドを1の値に設定します。
ポストプロダクション中にこの情報を取得するには、 View Layer タブを開き、 Passes セクションの Object Index ボックスをチェックする必要があります。


これで、 Compositor Editor を開き、 Use Nodes チェックボックスを選択することでノードの使用を有効にすることができます。

Compositing 効果をプレビューするには、 Backdrop チェックボックスも有効にします。
次に、 Layout Reroute ノードと Output Viewer ノードを挿入します。
これにより、 Compositing 結果を Reroute に送信し、そこから同時に Composite と Viewer の両方に送信することができます。

この時点で、最初の Compositing データを取得するために、サンプルが少なくともいくつかの初期レンダリングを実行する必要があります。
これには、 Render Layers ノードの IndexOB 出力から取得できるオブジェクトのマスクが特に含まれます。

レンダリングのプレビューが大きすぎる場合は、Vキーを押して縮小できます。小さすぎる場合は、 ALT + V キーコンビネーションを使用して拡大できます。
さて、次のように Cartilage オブジェクトのみを隔離するマスクを調べましょう: Render Layer と Reroute ノードの間に Convertor ID Mask ノードを接続しますが、 Image 出力の代わりに Index OB 出力を取得します。
ID Mask ノードの Index フィールドで、 Cartilage オブジェクトの Pass Index フィールドに関連付けられた値を指定します。それは1です。

ご覧のとおり、 Cartilage オブジェクトに対応する白いマスクがあります。何らかの方法でこれらの部分だけを強調または変更したい場合、このマスクは優れた出発点となるでしょう。ただし、このマスクのエッジのみを強調したいので、それらを隔離する方法を見つける必要があります。
この場合、 Filter Dilate Erode ノードが私たちを救ってくれます。これにより、マスクを拡大または縮小することができます。
ID Mask と Reroute ノードの間にそれを配置し、 Distance フィールドの値を調整することでその効果を確認できます。

特に、負の値を指定すると、オリジナルのマスクの縮小版が得られます。
これは私たちの問題への解決策を示唆しています。なぜなら、縮小されたマスクをオリジナルから減算することで、エッジのみを取得できるからです!
使用するノードは Convertor Math で、 Subtract モードに設定されます。このノードは、 ID Mask の Alpha 出力および Dilate Erode の Mask 出力から来る数値データで動作するためです。これらの入力と出力のソケットの色を調べることで確認できます。
したがって、 ID Mask の Alpha 出力を Math Subtract ノードの最初の Value 入力と Dilate Erode ノードの Mask 入力の両方に接続します。
Dilate Erode ノードで、 Distance フィールドに-1や-2のような負の値を設定します。
次に、 Mask 出力を Math Subtract ノードの2番目の Value 入力に接続します。その後、 Math Subtract の出力を Reroute ノードに接続して、これまでに得られた結果をプレビューします。

すでにこのマスクにいくつかの操作を行うことができます。例えば、色付きの Glare フィルターを適用することができます。
まず、 Color Mix ノードを使用して Math Subtract ノードの出力を青で掛け合わせることでマスクに色を付けます。
もちろん、モードは Multiply に設定します。
白を掛け合わせる結果は、掛け合わせる色そのものであり、黒を掛け合わせると、それは0を掛け合わせることと同じで、結果として常に黒になります。 私たちの出発点となる画像は、軟骨オブジェクトのエッジ部分のみが白で、他の部分は黒なので、それを青で掛け合わせると、白い部分が青に置き換わり、他の部分はすべて黒になります。

次に、 Color Mix Multiply ノードの出力に Filter Glare ノードを接続します。私の場合、6つのライトストリークを持つ Streaks モードを使用しています。 Threshold の値を0に設定していることに注意してください。
そうしないと、ノードは効果がありません。

効果があまりにも控えめに感じる場合は、 Dilate Erode ノードの Distance の値を減少させてみてください。この調整は、効果をオリジナルのレンダリングに追加するときにも後で行うことができます。
あとは、この結果をオリジナルのレンダリングにオーバーレイするだけです。これを行う方法はいくつかありますが、もっとも簡単なのは、 Reroute ノードの前に、 Factor フィールドの値を1に設定して Screen モードに設定された Color Mix ノードを挿入することです。

Screen ノードの接続の順序に注意してください: Render Layers から来る画像は、最初の Image 入力に接続する必要があります。一方、 Glare ノードや他のマスク効果ノードから来る画像は、2番目の Image 入力に接続する必要があります。
もし Screen ノードの Factor の値が0に設定されていると、出力はオリジナルのレンダリングのみを表示します。
ビデオの始めに示したアニメーションを実現するために、最初は光が見えないが時間とともに増えていくように、最初のフレームで Factor を0に設定し、そのフィールドにアニメーションキーフレームを挿入します。
次に、 Timeline で前進し、 Factor の値を1に設定し、新しいキーフレームを挿入します。

これが最終結果で、選択したオブジェクトのエッジがはっきりと強調され、色付けされ、微妙な輝きを持つようになりました。

このチュートリアルが役立ったことを願っています!また近いうちにお会いしましょう!