Choose your operating system:
Windows
macOS
Linux
フィルムやシネマティックスを作成する場合は、キャラクターのシルエットを適切にハイライトする方法が必要になることが多いです。このライティング技術はリム ライティングやエッジ ライティングと呼ばれることが多く、 キャラクターのシルエットをバックグラウンドから一段と際立たせるためにライトをさらに追加します。この方法はフィルムでは非常に素晴らしく機能するものの、3D シーンにライトを追加すると、 複雑になってすぐに管理がやっかいになります。アンリアル エンジン4 (UE4) には、これに対するソリューションがあります。すなわち、キャラクターのマテリアルを使用して同様の基本エフェクトをアーティストがシミュレーションできるようにします。 こうすることでアーティストはエフェクトのルック&フィールに対する制御を強め、それを使用してライティングなしのオブジェクトにライティングを追加することさえ可能であり、パフォーマンスを抑えます。
Fresnel
フレネル とは、ライトを見るアングルに応じて、ライト反射の強度がどのように変わるかを表すために使う言葉です。 例えば、真下にプールを見ながらプール上に立っていると、水の中での反射はほとんど見えません。 頭を動かしてプールの中の水が目線と平行になればなるほど、水中での反射が多くなることがわかります。
UE4 では、Fresnel マテリアル式ノードは表面法線の dot product (内積) とカメラの方向に基づいてフォールオフを計算します。 サーフェス法線が直接カメラに向いている時、 0 の値が出力されます。つまり、フレネル エフェクトが何も起きていないことを表します。 サーフェス法線がカメラに垂直に向き合っている時は、 1 の値が出力されます。つまり、フレネルがフル エフェクトで実行されています。 結果は [0,1] にクランプされるため、真ん中にネガティブ カラーを持ちません。以下の画像はこの概念を表しています。
球体の中央、0 の位置で、フレネル エフェクトが何も適用されていないことがわかります。これは、カメラがサーフェス法線を直接ポイントしていることが原因です。 サーフェス法線がカメラに対してますます垂直になる、すなわち 1 に近づくにつれて、フレネル エフェクトは一段と目立つようになります。 ここで望んでいるのは、まさにこのタイプのエフェクトです。
Fresnel ノードの内容
フレネル マテリアル式を検索するときに、Utility および Vector Ops にフレネルがあることがわかります。 この 2 つのマテリアル式は、名前と機能は同じですが、使用するためのセットアップ方法が異なります。
Fresnel Utility
Utility にある Fresnel の方がセットアップと使用方法が簡単です。この操作ガイドでは、こちらの Fresnel を使用します。 まずは Utility の Fresnel から使い始めて、ノードの機能の仕組みをよく理解してからもう 1 つの Fresnel を使うことを 強くお勧めします。
プロパティ |
説明 |
---|---|
ExponentIn |
フレネル エフェクトのフォール オフを制御します。 |
BaseReflectFrctionIn |
サーフェスをまっすぐ見た時のスペキュラ反射の割合を指定します。値 1 に設定するとフレネルを事実上無効にします。 |
法線 |
フレネル エフェクトがどのようにレンダリングされるかに影響を及ぼす法線を入力できます。このプロパティは法線マップまたは Vector 3 入力のいずれかを入れて設定できます。 |
フレネルのマテリアル式の値を調整するための 2 つのオプションがあります。
マテリアル グラフでフレネル マテリアル式を選択し、[Details (詳細)] パネルで入力値を選択します。
Constant ノードまたは Scalar ノードをマテリアル グラフに追加し、それぞれの入力を接続します。
法線マップを使用する場合は、必ず Transform 表現式ノードを追加してください。これにより、法線マップをタンジェント空間からワールド空間に変換します。この変換が行われないと、法線マップは意図したようにフレネルに影響を及ぼさないかもしれません。
Fresnel Vector Ops
Vector Ops にあるフレネルはカスタマイズの自由度が非常に高いフレネルのバージョンであり、フレネルがどのようにレンダリングされるかという多様な側面に影響を及ぼすことができます。 しかし、こうした追加の機能は欠点もあります。設定やセットアップを誤るとアーティファクトを生じたり、フレネル エフェクトのレンダリングでエラーを生じることがあります。 このノードは、Utility にあるフレネルで望んでいる結果が得られない場合に限り使用するようにしてください。
プロパティ |
説明 |
---|---|
Normal Vector (V3) |
ここでは、法線を入力し、フレネル エフェクトがどのようにレンダリングされるかに影響を及ぼすことができます。このプロパティは法線マップまたは Vector 3 入力のいずれかを入れて設定できます。 |
Camera Vector(V3) |
これはカメラと表面法線との間の Dot Product (内積) を決定するために使用するカメラに影響を及ぼすことができます。 |
Invert Fresnel(B) |
フレネルのエフェクトを反転させることができます。これはフレネルを中央のみまたはエッジのみに適用する場合に役立ちます。 |
Power(S) |
フレネル エフェクトの累乗を制御できます。入力する数字が大きいほど、影響を及ぼすエリアが限られます。逆に、入力する数字が小さいほど、フレネルの影響範囲が広がります。 |
Use Cheap Contrast(B) |
このプロパティを使うと、フレネルは負荷の軽い方法で明暗のコントラストを計算することができます。 |
Cheap Contrast Dark (S) |
フレネルの暗さを制御します。ただし、Use Cheap Contrast が有効な場合に限り効果があります。 |
Cheap Contrast Bright (S) |
フレネルの明るさを制御します。ただし、Use Cheap Contrast が有効な場合に限り効果があります。 |
マテリアルでフレネルを使用する方法
以下のステップに従って、フレネルを使用するマテリアルを作成します。
この例では新規マテリアルを作成しますが、学習した内容は必要に応じて既存のマテリアルにも適用することができます。 新規マテリアルを作成するには、コンテンツ ブラウザ で 右クリック し、Create Basic Assets リストからマテリアルを選択します。 マテリアルを作成したら、「Fresnel_Material」 と名前を付けます。
作成した新規マテリアルを開くには、コンテンツ ブラウザ でそのマテリアルを マウスの左ボタン で ダブルクリック します。 マテリアルが開いたら、パレット 検索メニューで検索して必要なマテリアル式ノードを探します。 マテリアル式ノードをマテリアル グラフに配置するには、最初に配置するノードを マウスの左ボタン で選択し、マウスの左ボタン を押したままの状態でそのノードをマテリアル グラフにドラッグします。 このマテリアルでは以下のノードのタイプと数が必要です。
ノード名
数
Vector Parameter Node
2
Scalar Node
2
Fresnel Node
1
完了すると、マテリアル グラフは以下のようになります。
フレネル マテリアル式を検索すると、2 つの異なるタイプが選択可能であることがわかります。この操作ガイドでは、Utility にあるフレネルだけを使用します。
必要なマテリアル式ノードはマテリアル グラフに追加されたので、次は全てを接続し、パラメータのベース値を入れていきます。 この例では、以下のパラメータ名とデフォルト値を使用します。
名前
値
Base_Color
0.5, 0.5, 0.5
Roughness
0.5
Fresnel_Color
1.0, 0.0, 0.0
Fresnel_Exp
0.8
完了すると、マテリアル グラフは以下のようになります。
すべてを接続したら必ず Apply (適用) し、マテリアルを Save (保存) するようにします。マテリアルを保存したらマテリアル エディタを閉じることができます。
マテリアルをコンパイル、保存して閉じたら、そのマテリアルを コンテンツ ブラウザ で探し、マウスでその上を 右クリック します。 ポップアップするメニューから [Create Material Instance (マテリアル インスタンスを作成)] オプションを選択します。これを行うと、新規マテリアル インスタンスが作成されます。 上記を完了すると、コンテンツ ブラウザ は以下のようになるはずです。
新規作成したマテリアル インスタンスを開くには、 コンテンツブラウザ でその上を マウスの左ボタン で ダブルクリック します。 マテリアル インスタンスが開いたらマテリアル インスタンスのパラメータの調整を開始することができます。これを行うには最初にパラメータ名の隣にあるグレイアウトされたボックス上でクリックして編集したいパラメータを有効にします。 こうすることで、パラメータを編集できるようになります。例えば、Fresnel_Exp パラメータを有効にするとフレネルがサーフェスに及ぼすエフェクトを増加、減少させることができます。
Fresnel_Exp に大きな数字を入れるほどフレネル エフェクトはエッジに近づき、小さな数をいれるほどエフェクトは中央に近づきます。
以下は、様々な値の Fresnel_Exp 値がでフレネルに何が起こるかを示した例です。
以下の例のように、数字が大きくなるほどフレネルエフェクトがどんどんメッシュのエッジに近づくことがわかります。
フレネルと法線マップ
法線マップをフレネルの法線入力に入力すると、非常に興味深い多様な効果をサーフェスに与えることがわかります。 これは、法線マップがサーフェス法線に影響を及ぼすからです。以前学習したように、フレネルはサーフェス法線がカメラに対して垂直であるか否かを確認することで機能します。 カメラに対して垂直であると、フレネル エフェクトが起こります。滑らかな球体では、オブジェクトのエッジでのみフレネルが起こることを意味します。 しかし、法線マップを使用すると、サーフェス法線は滑らかではなくなり、サーフェス法線が滑らかであったら起こらないような場所に フレネル エフェクトをもたらすことができます。
何が起こるかについての視覚的例として、サーフェス法線がフレネルにもたらすエフェクトを示している以下の画像をご覧ください。 左側の (画像 1) は、フラットなサーフェス法線でフレネル ノードが何を出力するかを示しています。右側の (画像 2) を見てみましょう。 この画像では法線マップが入力されています。これは、サーフェス法線を抜本的に変更します。 サーフェス法線はどこでもフラットではなくなるため、より多くのフレネルが表示されることになります。
以下の画像では、異なる法線マップが様々な方法でフレネルに影響を及ぼしている様子がわかります。
上記の画像を作成するために使用したマテリアルは、以前作成したマテリアルと同じですが、以下の修正を加えました。
マテリアルの [Blend Mode (ブレンド モード)] を [Opaque] から [Translucent (透過)] に変更しました。
Emissive Color 入力に接続されたフレネルの最終出力は Opacity 入力にも接続されました。
新しい 2D テクスチャ サンプラが追加され Normal 入力に接続されました。スターター コンテンツの Tech_Hex_Tile_N を法線テクスチャとして使用しました。
新しい Scalar Parameter が追加されました。これは、Texture Coordinates 表現式で乗算処理され、基本的な均一タイリングを法線マップで実装します。
フレネル マテリアル式には、フレネルのレンダリング方法に影響を及ぼす法線マップを入れることができます。 フレネルを使用してマテリアルにエネルギー シールドのようなものを表示させつつ、シールドが有効でなければマテリアルは通常どおりに見えるようにしたい場合に特に役立ちます。 これを行うには、上記のマテリアルを使用し、以下の手順に従います。
まず [Volumetric Non Directional] から [Surface Translucency Volume] に変更して [Translucency Lighting Mode] を更新します。
スターター コンテンツから T_Brick_Clay_New_D テクスチャを使用するために、[Base Color (基本色)] と [Roughness (ラフネス)] を変更します。
次に Normal 入力を変更し、スターター コンテンツにもある T_Brick_Clay_New_N を使用するようにします。
次にパレットで Transform 式ノードを検索し、それをマテリアル グラフに追加します。タンジェントからワールド空間に変換するように必ず設定してください。
古い法線マップ テクスチャ ノードを Transform ノードの入力に接続し、その出力を Fresnel ノードの法線入力に接続します。完了するとマテリアルは以下のようになります。
フレネルとは何の関係もない煉瓦の見え方を確認してください。 Multiply と Constant 式ノードを追加し、それを使用してフレネル エフェクトの強度を制御することで一歩進めることもできます。 以下の画像は、上記からのマテリアルに追加した場合にどのように見えるかを示しています。
追加した Constant を調整すると、フレネルがサーフェスに及ぼすエフェクトを制御できます。 数字を 0 に設定するとエフェクトをオフにし、他の数字にすると以下のように次第にエフェクトが表れ始めます。
フレネルの他の用途
フレネルが機能する仕組みによって、単なるリム ライティング以外に他の用途に使用できます。 以下はフレネル ノードを使用してリム ライティング以外のものを行う例です。
Input Blending フレネルを Lerp (Linear Interpolate:線形補間) のアルファとして使用して、Lerp への入力をどのように組み合わせるかを制御することができます。
まとめ
フレネルをマテリアルに追加すると、キャラクターのシルエットをうまく照らしたり、エネルギー シールドの特殊効果を表すのに役立ちます。 フレネルは視野角とサーフェス法線に基づき機能することを覚えておいてください。そのため、フレネルに面白いディテールを加えたければ、少しランダムなノイズを持つ法線マップを使用してみてください。 また、フレネル マテリアル式を使用して、炎や煙などのビジュアル エフェクトで非常に効果的である 2 種類の入力のブレンドを行うこともできます。