このチュートリアルでは、PBRマテリアルとテクスチャを使用した3DモデルからNPR(ノンフォトリアリスティックレンダリング)を実現するために作成したノード設定について説明します。
動画の書き起こし
こんにちは、皆さん!このチュートリアルでは、PBRマテリアルとテクスチャを使用した3DモデルからNPR(ノンフォトリアリスティックレンダリング)を実現するために作成したノード設定について説明します。具体的には、電子回路の3Dモデルを使用して、昔読んでいた電子雑誌のイラストに似たレンダリングを取得します。
まず、PBRテクスチャがPrincipledノードに接続された3Dモデルをインポートした場合に得られるレンダリングと、Base Color Textureと適切に設定されたPrincipledノードのみを使用した非写実的レンダリングとの違いを示します。
このチュートリアルはBlender 4.1で作成されており、使用するレンダリングエンジンはCyclesです。
チュートリアルの概要は以下の通りです:
シーン内の既存の照明を無効にします。
Principledノードのデフォルト入力を最初に編集します。
カラーブリーディングやその他の不要なシェーディング効果を排除するために、一部のRay Visibilityオプションを無効にします。
フリースタイルを有効にして、ポストプロダクションでジオメトリにアウトラインを追加します。
最後に、オブジェクトの面のカメラに対する向きに基づいた簡単なシェーディングを作成するために、再度Principledノードの入力を変更し、ジオメトリの外観を単調にしないようにします。
最初に行うことは、シーンの照明を無効にすることです。
初期のPBRレンダリングは、World BackgroundにHDRテクスチャを使用し、Sun光源を配置して作成されましたが、今回はオブジェクト自体が光源として機能し、オブジェクトのすべての部分に均一なシェーディングを提供します。
したがって、シーン内の既存の光源を削除し、Worldの照明強度を0に設定します。
3DビューのRenderedプレビューでは、シーンに光源がないため、何も見えません
次に、Principledノードの接続を変更します。オブジェクトの均一な照明を実現しながら、Albedo Textureの色やテキストを保持したいと考えています。
AlbedoまたはBase Color TextureをPrincipledノードのColor入力から切り離し、Emission入力に接続します。ここで、エミッション強度を1に設定します。
MetallicおよびNormal Texturesは今回の目的には不要なので、これらを削除します。
Roughness Textureも削除し、Principledノードでこのパラメータの値を1に設定します。

これらの操作は、シーン内にあるすべてのマテリアルに対して実行する必要があります。今回の場合は、プリント基板と電子部品の2つです。
3DビューのRenderedプレビューでは、すべての要素がフラットな照明で明確に表示されます。しかし、現時点では照明が均一すぎて、近くのオブジェクトにカラーブリーディング(色がにじむ現象)が発生しており、フリースタイルのアウトラインもありません。これらの問題を一つずつ解決していきましょう。まずはカラーブリーディングから始めます。
プロパティエディターでシーン内のオブジェクトの一つを選択し、Visibilityセクションにアクセスします。
このセクションで、Ray Visibilityタブ内のすべてのオプションを無効にします。ただし、Cameraオプションは有効のままにしておきます。

この操作も、プロジェクト内のすべてのマテリアルに対して実行する必要があります。
この方法で、シーン内の唯一の光線は、表面から放射されカメラに向かうものだけになります。そのため、先ほどまで見られた不快なカラーブリーディング効果はもう発生しません。

3DビューポートのRenderedプレビューでは、すでに興味深い結果が得られていますが、オブジェクトの輪郭を強調するためにいくつかの線を追加することでさらに改善できます。
この目的にはFreestyleモジュールが最適です。プロパティエディター内のRenderタブの特定のセクションでFreestyleを有効にできます。このタブでは、線の太さの実装モードを設定でき、絶対モードの場合、線の太さをピクセル単位で設定できます。
View Layersタブには、Freestyleセクションが表示され、そこで多くの他のパラメーターを設定できますが、ここでは説明しません。このチュートリアルの最初に示したレンダリングは、Freestyleを有効にしてデフォルト設定のままで行ったものです。


しかし、Freestyleは完成したレンダリングに適用されるため、3DビューポートのRenderedプレビューではその効果が見えません。したがって、現時点での結果を観察するために、初期レンダリングを開始しましょう。

オブジェクトの面のカメラに対する向きに基づいたシェーディングを実現するために、Layer WeightノードをFacingモードで使用し、2つの異なるBase Color Textureバージョンのミキシングファクターとして設定します。
最終的なノード設定を実装する前に、Layer WeightノードのFacingモードの効果を、非常に異なる色を持つ2つのEmissionノードを使用し、それらをMix Shaderノードに接続して、Layer Weight Facingをミキシングファクターとして使用することで示します。
Layer Weightノードの出力であるFacingを、Mix Shaderノードのファクター入力に接続することを確認してください。Fresnel出力ではなく、Facing出力を使用します。
ご覧のように、Blend値を変更することで、面のカメラに対する向きに応じて異なるシェーダーを使用できます。
しかし、2つのシェーダー間の遷移があまりはっきりしていません。シャープな遷移を実現するために、FacingノードとFactorの間にMathノードを挿入し、モードをGreater Thanに設定します。

Mathノードの2番目のパラメータは、どのシェーダーに切り替えるかを決定するための閾値として機能します。

Layer WeightノードのBlendパラメータとGreater Thanノードの2つ目のValue入力に同じ値を設定するために、InputグループからValueノードをセットアップに追加し、それらの入力に接続します。
この値を非常に小さな変動でも変更することで、オブジェクトの面に非グラデーションのシェーディングを加えるための良好なミキシングファクターを得ることができます。

このミキシングファクターを使用して、オブジェクトの面の向きに基づいてAlbedo Textureのやや暗いバージョンを作成します。
次に、2つのEmissionノードとMix Shaderノードをセットアップから削除し、PrincipledノードをMaterial Outputに再接続します。
Albedo Textureの暗いバージョンを得るために、Base Color TextureのColor出力をBrightness/Contrastノードに接続し、Brightnessを-0.2に設定します。

Color Mixノードを挿入し、Albedo TextureのColor出力を1つの画像入力に接続し、Brightness/Contrastノードの出力をもう1つの画像入力に接続します。

Greater Thanノードの出力を、セットアップに追加したColor MixノードのFactor入力に接続します。
最後に、Color Mixノードの出力をPrincipledノードのEmission Color入力に接続します。
このセットアップは、シーン内のすべてのマテリアルに対して複製する必要があります。ただし、3DビューポートのRenderedモードで表示されるプレビューは、まだ最終的なものではありません。Freestyle効果が含まれていないためです。
真の最終結果を観察するためにレンダリングを開始しましょう。

新しいシェーディングには、長所と短所の両方があります。
長所は、FreestyleとFacingノードのおかげで、オブジェクトが平坦すぎることがなくなり、そのボリュームをより容易に認識できるようになった点です。
短所としては、このシェーディングがカメラに対するオブジェクトの向きに大きく依存して変化するため、Valueノードの調整やオブジェクトの向きの調整に時間がかかる可能性があります。
また、Greater Thanノードをしきい値ノードとして使用して、面の向きに基づいて色をはっきりと分ける方法は、アニメーションでは魅力的でない結果を生む可能性があります。この場合、Greater Thanノードを削除し、よりスムーズな遷移を実現することを検討してください。
さて、これでこのチュートリアルは終わりです!役に立ったと思っていただければ幸いです!また次回お会いしましょう!