これは、Blender 4.3用のコンポジティングノードグループを分析し、使用する方法を解説する2つのチュートリアルのうちの2つ目です。このノードグループを使用すると、特定のオブジェクトやマテリアルのみを元の色でレンダリングし、それ以外のすべてをグレースケールでマスキングしつつ、エッジやキャビティを強調することができます(オプション)。
動画の書き起こし
皆さん、こんにちは!これは、Blender 4.3用のコンポジティングノードグループを分析し、使用する方法を解説する2つのチュートリアルのうちの2つ目です。このノードグループを使用すると、特定のオブジェクトやマテリアルのみを元の色でレンダリングし、それ以外のすべてをグレースケールでマスキングしつつ、エッジやキャビティを強調することができます(オプション)。
最初のチュートリアルでは、このノードグループの使い方を説明しました。このノードグループは、説明欄のリンクから無料でダウンロードできます。この2つ目のチュートリアルでは、ノードグループの内部を見て、各エフェクトがどのように実装されているかを確認していきます。
他の多くのビデオチュートリアルと同様に、このチュートリアルのPDF版も説明欄のリンクから無料で入手できます。ぜひ、この機会にチャンネル登録と通知をオンにして、今後のチュートリアルをお見逃しなく!
TABキーでノードグループを開くと、エフェクトがノードの左側のカラムに実装されていることがわかります。これらのノードの一部は、実際にはノードグループになっています。右側のノードは、画像にエフェクトを順番に追加するために使用されています。

前回のチュートリアルで説明したように、このノードグループは基本的に3つの処理を行います。まず、特定のオブジェクトまたはMaterialを選択し、それをカラーのまま保持しながら、その他の要素をグレースケールに変換します。
2つ目のエフェクトとして、レンダーからAmbient Occlusionの情報を取得し、キャビティやエッジを強調します。
3つ目のエフェクトとして、フィルターを使用して、ジオメトリではなくTexturesに含まれる細かいディテールをさらに強調します。
入力されたIDと一致する要素を画像の他の部分から分離し、それらをカラーのまま保持するために、元の画像にID入力からのマスクを乗算します。次に、同じIDマスクをAlpha透過として使用することで、この段階では透明な背景上にカラーでレンダリングされた一部の要素のみが残ります。

元のレンダリング全体をグレースケールで取得するために、Imageの情報とGrayed Contrast、Grayed BrightnessのデータをGrayed Baseサブグループに送信します。
このサブグループ内では、Hue Saturation Valueノードを使用して画像の彩度を0に設定し、画像をグレースケールにします。その後、Brightness Contrastノードを使用して、明るさとコントラストを調整します。

こうして得られた画像には、Ambient OcclusionやLaplace filterを使用して取得したディテールレイヤーが順番に適用されます。これらについては後ほど詳しく見ていきます。
追加のエフェクトを適用した後の最終的なグレースケール画像は、Grayed入力によって強度がパーセンテージで制御されます。この入力は0から100の数値で表され、100で割ることでAlpha OverノードのFactorとして使用できるようになります。
このAlpha Overノードでは、最初のImage入力は完全な透明画像(黒色でAlphaが0)となっています。Grayedの値が0のときは、この完全な透明のみが使用されます。値が100%のときは、100で割った結果Factorが1となるため、グレースケール画像のみが使用されます。中間の値では、これら2つの間のブレンドされた画像が出力されます。

このAlpha Overノードの出力画像は、グレースケールのベースとして使用され、そこにIDが一致するカラー画像を適用します。これには、2つ目のAlpha Overノードを使用します。
これで処理の流れが明確になったので、次にAmbient OcclusionとLaplace From Imageサブグループの処理を確認しましょう。これらはエッジやキャビティの強調に使用されます。
詳しく分析する前に説明しておくと、これらのサブグループは、グレースケールのレンダリングと順番に乗算される白黒のマスクを生成します。画像を別のグレースケール画像と乗算すると、乗算された画像が暗い部分ほど元の画像が暗くなります。
乗算のFactor入力の前にあるDivideノードは、入力値を0から1の範囲に戻すために使用されています。これは、操作を簡単にするためにパーセンテージで値を設定しているためです。それでは、残りの2つのサブグループを詳しく見ていきましょう。
Ambient Occlusionサブグループの処理手順と出力を確認するために、その出力を直接メイングループの出力に接続します。
Ambient Occlusionグループは、Render LayersからのAmbient Occlusionデータと、Gamma Boostという数値入力を受け取ります。このGamma Boostを使うことで、Ambient Occlusionマスクを強調することができます。

Ambient Occlusionデータは、まずDenoiseノードに送られ、ノイズを低減します。その後、FilterノードのLaplaceモードを通過し、エッジを強調します。
Laplaceの結果では、エッジが明るく、背景が暗くなっています。しかし、乗算を使用してエッジ部分をさらに暗くするためには、これを逆にする必要があります。そのため、Laplaceの出力をInvert Colorノードに送り、さらにGammaノードを使って、ユーザーが設定したGamma Boostパラメータに基づいて暗い領域をさらに強調します。

次に、Dilate Erodeフィルターを適用し、暗い領域をわずかに拡張して、エッジの線が途切れないようにします。

ここで、Ambient Occlusionサブグループから出て、Laplace From Imageサブグループの出力を直接メイングループの出力に接続し、その処理手順と最終結果を確認します。
Laplace From Imageサブグループの内部構造は、Ambient Occlusionサブグループと非常によく似ています。ここでも、Filter Laplace、Denoise、Invert Color、Dilate Erodeノードが使用されており、Ambient Occlusionサブグループと同じ処理が行われています。

ただし、この場合、最初のステップとしてHue Saturation Valueノードを使用し、Saturationを0に設定して入力画像をグレースケールに変換します。このステップは、Ambient Occlusionには不要でした。なぜなら、Ambient Occlusionの情報は元々グレースケールだからです。
グレースケールに変換された画像は、Laplace filterで処理され、その後Denoiseノードでノイズを除去します。

このサブグループの2つ目の特徴的な要素は、Greater Thanノードです。これは基本的にしきい値のように機能し、非常に低い値以下のグレー部分をすべて黒に、それ以外の部分を白に変換します。

マスクは黒い背景に白いエッジを持っているため、Invert Colorノードを適用し、その後Dilate Erodeノードを使用して、エッジが途切れないように補正します。この処理は、Ambient Occlusionサブグループと同じです。

まとめると、画像はGrayed Baseサブグループによってグレースケールに変換されます。

その後、得られた画像に対して、Ambient OcclusionサブグループとLaplaceサブグループが生成したマスクを順番に乗算します。


最終的に得られた画像は、Alpha Overノード内でGrayed入力によって透明度が調整されます。

正しい数値IDを持つオブジェクトまたはマテリアルのカラー画像が、この結果の上に重ねられます。

これで今回のチュートリアルは終了です!お役に立てたなら嬉しいです。また次回お会いしましょう!