未来を創る、テックコミュニティー

代表技術通信~Unreal Engineで点群表示③ まずはUE4のチュートリアル(4)

草場代表
2020/10/22

こんばんは。代表の草場です。

今回は、オンラインコースのUnreal Editor の基本 – マテリアルについてです。チュートリアル紹介みたいになってきましたね。

物理ベース レンダリングの概要

今回は、明るく照らされている環境と暗い環境が含まれているプロジェクトを取り上げます。明暗両方の空間でのものの見え方を観察できるからです。
Unreal Engine公式の物理ベースのマテリアルがとてもよくまとまっているので参照とのことです。
物理ベースのマテリアルのサーフェスはすべて、ベースカラー、ラフネス、メタリック、スペキュラの4つのパラメタで定義できます。

サーフェスはベースカラーで構成されており、これをアルベドと呼びます。アルベドはマテリアルシステムでベースカラーに入力します。これはあらゆるサーフェスのアルベドを実際にキャプチャできるからです。
メタリックサーフェスもRGBベースカラーがあります。
アルベドを定義したのち、サーフェスは2種類あります。1つは誘導体サーフェスです。基本的にはメタリックではないサーフェスのことです。もう一つはメタリックサーフェスです。
これらのサーフェスはアルベド値(ベースカラー)とラフネスで定義されます。ラフネスはサーフェスのなめらかさを表し、ラフネス値が0のときは完全につるつる、1のときは完全にざらざらです。完全にざらざらとは、非常に汚れていたり酸化していたりという状態です。

3つ目のパラメタ、メタリックはサーフェスが金属かどうかを表します。多くの場合はブール値で示します。0が非金属で、1が金属です。Unreal Engine初心者は、このメタリックに0.5とか0.7とか入れたがりますが、これはよくある間違いです。基本は0か1です。誘導体サーフェスの場合は0、金属サーフェスの場合は1を入れてください。

最後はスペキュラ値です。スペキュラ値のデフォルトは0.5であることが多く、スペキュラ値を全く使わない場合も多いです。0.5以外の値が必要な場合は、ガラス、プラスティック、石英、氷です。これらには透過性があり、特定のスペキュラ値をとるからです。

マテリアル エディタ

では、マテリアルエディタについてみていきます。説明にはブループリントマップを使用します。Epic Game Launcherのラーニングタブに行って探すと、見つかります。日本語ではブループリンツです。

無料をクリック、プロジェクトを作成をクリック、フォルダ選んでクリエイト。インストールが開始されます。追加されたらダブルクリック。

さて、いくつか追加します。画面左下の新規追加をクリック、機能またはコンテンツパックを追加を選び、コンテンツパックタブからStarter Contentをインポートします。代表技術通信~Unreal Engineで点群表示③ まずはUE4のチュートリアル、でやりましたね。

インポートされたら、スターターコンテンツのPropsフォルダを開き、SM_MatPreviewMesh_02を選んであるので、これをビューポートにドラッグ&ドロップします。

マテリアルメッシュ球です。これを使うメリットは、マテリアルエディタで作成したマテリアルを、このマテリアル球に適用して観察できることです。このマップを選んだ理由は前に物理ベースのレンダリング(PBR)とシェーディングについての説明したときに触れたように、このマップは陰影が強いためです。明るい場所、暗い場所にマテリアルを配置して、PBRの効果を確認できます。
早速マテリアルを作成します。
コンテンツフォルダに戻り、Materialsという新規フォルダを作成します。Materialsフォルダ内で、右クリック、マテリアルをクリックで作成できます。名前はM_MasterMaterialにしました。ダブルクリックでマテリアルエディタが開けました。

マテリアルエディタの専門家がいるほど、リッチな操作ができます。
一番上のメニューシステムで、ファイル>保存などできます。詳細タブなどを誤って消してしまった場合は、ウィンドウメニューから再度選べます。
ツールバーはボタン一発で保存などできます。ビューポートにはマテリアルが写っています。▽ボタン押すと、ビューポートのフィードバックがリアルタイムかどうかを設定できます。
豆知識。このビューポートの背景はEpicの本社らしい。
ビューポートの右下で、ビューポートに映っている物体の形は変更可能です。さらに、コンテンツフォルダの例えばStarter ContentフォルダのPropsフォルダで、岩を選び、マテリアルエディタのビューポートの右下の一番端を選ぶと、岩になります。

詳細パネル、これが非常に重要です。例えば右のパレットタブからConstant Vector 4をマテリアルエディタにドラッグ&ドロップすると、その詳細タブが開きます。

もう一つ重要なのが、右側のパレットタブです。これがマテリアルの基本セットです。すべてのノードが選べます。カテゴリーが二つに分かれています。マテリアル式と関数式。
マテリアル式は様々な種類のノードがあり、マテリアルエディタ内で使用できます。これがさらにカテゴリ分けされています。例えば、カラーノード、定数ノード、座標ノード、深度ノード、関数、ランドスケープ、マテリアル属性、演算にはCoil Clamp Cosine Divide Fracなど、あらゆるノードがあります。任意のノードをつかんでエディタにドラッグ&ドロップできます。
もう一つが関数。パレットタブから何かの関数をエディタにドラッグし、それをダブルクリックすると、その関数を構成しているネットワークを確認できます。

最初のマテリアル P1

では一つ目のマテリアルを作ります。
パレットでConstant Vector 4を選び、エディタにドラッグします。これはRGBAの基本的なカラーノードです。これに色を代入していきます。Constant Vector 4の詳細タブで、カラーピッカーで色を選択。0.5、0.5、0.5で灰色に。そして、色相(ヒュー、H)、彩度(S)、明度(V)の増減も出来ます。今はVを0.5にします。色は保存できます。16進法の線形値(Hex Linear)、SGRB値フィールド(Hex sRGB)もあります。Photoshopなどの16進法のツールを使ってここに入力できます。
さて、このConstant Vector 4をM_MasterMaterialのベースカラーとつなぎます。すると金属のボールが50%灰色になります。

ベースカラー、Metalic、スペキュラー、ラフネスをいじります。

実際にデータを使って進めます。そのためにConstantノードをドラッグします。それをMetalicとつなぎます。Constantノードの詳細タブで値を大きくすると、金属っぽくなります。ちゃんと保存するために、Applyをクリックします。

マテリアルエディタの便利な点は、これらのノードをパラメタ化してマテリアルエディタ外で使用可能にできることです。
ノード上で右クリック、パラメタへ変換、があるのでクリック、名前を付ければOKです。すると、パラメタノードに変換します。

Constantノードも同じ手順でパラメタノードに変換、値は0に戻しておきます。

次はスペキュラーをいじります。定数ノードではなく、スカラーパラメタを作ります。パレットからもって来るやり方ではなく、エディタ上で右クリック、検索窓でScalarを検索するやり方にします。Specularと名付けます。それをSpecularと接続します。スペキュラのデフォルト値は0.5なのでそのままにします。

パラメタノードの作り方はほかにもあります。MasterMaterialのラフネスで右クリック、パラメタへ昇格でできます。

ラフネスは0.3にします。マテリアルの光沢の反射が和らぎました。ちゃんと保存するように。

メニューバーのブラウズを押すと、このマテリアルがコンテンツフォルダのどこにあるかが出てきます。作ったマテリアルを直接ビューポートのSM_MatPreviewMesh_02にドラッグ&ドロップします。さらに、それを一つ複製します(Alt押しながら軸をずらす)。
M_MasterMaterialで右クリック、マテリアルインスタンスの作成、インスタンスができました。MI_Metalと名前を付けます

MI_Metalをダブルクリック、以下が開きます。

このインスタンスを、複製した球にドラッグ&ドロップ。MI_Metalインスタンスの詳細タブでBase_color、メタリック、ラフネス、スペキュラのボックスにチェックを入れると、リアルタイムでこのパラメタを変えることができます。
例えばメタリックを1にすると、、メタルっぽくなりました。

ベースカラーをオレンジにして金色みたく、ラフネスは0に近づくほど、、表面の凹凸がなくなるので光沢が強くなります。ラフネス1の場合と0の場合。

メタリック1、ラフネス0.5、スペキュラ0.5にして、球を複製します。先ほどのインスタンスをコピーして、MI_Plasticと名付けます。ダブルクリックでMI_Plasticを開き、メタリックを0に、それを複製した球にドラッグします。これでプラスティック球ができました。

ラフネスを小さくして、光沢を弱くします。
注目すべき点は、メタリックなマテリアルインスタンスの反射の色がマテリアルの色に染まっていることです。プラスティックの場合は白です。これは現実世界の実際の物理特性です。
他は、メタリックサーフェスで多くの屈折が発生していることです。
メタリックサーフェスは視差が生じているが、プラスティックでは生じていないです。

 

この記事を書いた人
草場代表
エディター