読者です 読者をやめる 読者になる 読者になる

Let's Enjoy Unreal Engine

Unreal Engineを使って遊んでみましょう

マテリアルを触って見た目を変えてみる

前回のユニティちゃんを表示してみるが予想以上に好評だったので、今回はその延長の解説でいきたいと思います。前回の内容は以下からどうぞ。

UE4でゼロからユニティちゃんを表示させるまで

ユニティちゃん諸々のことはユニティちゃんライセンスに基づいて公開されていますので、そこも前回の記事を参考にしてください。

まずマテリアルとは?

知っている人には当然なことだと思いますが、ゲームにおけるマテリアルというのはポリゴンの表面に対して素材となる情報のことです。質感や色の情報、テクスチャーに関する情報など様々なものをマテリアルに格納されています。いわば形そのものとなる情報以外はマテリアルにあるといっても過言ではありません。

UE4ではマテリアルエディターが専用に備わっています。一般的にマテリアルはMaya等のツール上で設定することが多いのですが、UE4ではシェーダーなど専用に作らないといけないようなところも全て設定できてしまうというメリットがあります。

マテリアルエディターを開いてみる

では、早速マテリアルをダブルクリックしてみてマテリアルエディターを開いてみましょう。今回は前回も使ったユニティちゃんが持っているマテリアルの髪に相当するマテリアル、"hair_01_Mat"を開きます。

f:id:alwei:20140418182611j:plain

上のような画面が表示されたと思います。画面中央がマテリアルの情報とそれに関連するアセットデータです。左上はそのマテリアルの表面上の見た目です。左下はそのマテリアルに設定できる詳細情報です。右側はマテリアルエディターを使う時に便利な様々ノード群です。これに関しては後で使います。

主に弄っていく必要があるのは画面中央のノードと左下の詳細情報です。ノードをクリックするとそのノードの詳細情報が表示されるので、切り替わるのを確認してみましょう。

質感をグッと良くなるように変えてみる

では早速マテリアルを弄って質感を変えてみましょう。"hair_01_Mat"のBase Colorを右クリックして、Break Linksを選択してください。次は"Texture Sample"ノードの一番上のピンをドラッグして、"hair_01_Mat"のEmissive Colorに引っ張ってみてください。

シェーダーのコンパイルが走り、カウンターが0になったら質感が変わったと思います。Emissive Colorというのは他の光に影響されない、自分自身が光っているライティングです。クセの強いUEライティングでもその影響を受けないです。

 更にこの値を調節してみましょう。適当な所で右クリックを押して、Searchの中に"Multiply"と入力してみてください。そのままエンターを押すと、新しいノードがでてきたと思います。これの正体はタダのかけ算が出来るノードです。試しにパラメーターを調整するためにこのかけ算ノードを使いましょう。

f:id:alwei:20140418184538j:plain

画像のようにノードを繋ぎ合わせます。そしてMultiplyノードを選択している状態で、左下の詳細情報をみてみると、Const AとConst Bという値があると思います。このConst Bの方を1.0から0.5にしてみましょう。完了したら左上にあるApplyボタンを押して適応します。シェーダーコンパイル後、髪が若干黒くなったと思います。

このようにして、マテリアルの情報を編集し、パラメーターを調整することによって、UE4の中で見た目を完全に調整することが出来ます。もちろん、複雑なノード計算によってもっともっと見た目を変えることが出来ますし、独自のシェーダーを作るのと同じように新しい表現をすることも可能です。

これはプログラマーの力を借りずに独自の表現を作りだすことも可能で、調整も全てUE4上で可能という素晴しいメリットです。そしてそれも全てリアルタイムに確認出来る。ここまでの事は他のゲームエンジンでもなかなか出来ないのでUE4のメリットと言えるでしょう。

スペキュラーマップ、ノーマルマップを使ってみる

公開されているユニティちゃんにはスペキュラー、ノーマル用のマッピングテクスチャーが付属しています。スペキュラーとノーマルに関して平たく言えば、前者は表面の輝きのハイライト、後者は表面の向きを表わすもので、それぞれ質感を表現するために使用します。

配布されているテクスチャーで、"xxx_xx_SPEC.tga"と"xxx_xx_NRM.tga"と言った具合で名前がついているものがあると思いますので、それぞれ前回の記事でもやったようにテクスチャーをインポートしておきます。なお、これらのテクスチャーのマテリアル化は不要ですので、注意してください。

インポートしたらContent Browserからそのままマテリアルエディター上にドラック&ドロップしてください。そしてそれぞれのノードの一番上のピンをドラッグ&ドロップで、"Specular"と"Normal"に繋いでください。画像のように繋げればOKです。

f:id:alwei:20140418191450j:plain

これでスペキュラーマップとノーマルマップが適応されました。正直なところそのままでは微妙かもしれませんが調整をしていけばそれなりにみれるようになってきます。ユニティちゃんには他にも"body_01_Mat"に適応できるテクスチャーがあるので、そちらも一緒にやりましょう。

調整を繰り返していくと…

そんな具合に調整を繰り返していくと自分がやりたい表現がみつかってくると思います。ただし、クセはなかなか強いのですぐにできるかはわかりません。最後に調整前と調整後のユニティちゃんを比較してみましょう。

f:id:alwei:20140418192016j:plain

Before

f:id:alwei:20140418192550j:plain

After

元の見た目よりはかなり見れるものになっていると思います。今回エミッシブライトが強く影響しているので、周りの光の影響を受けていないからというのもあるかもしれません。まぁキャラクター性重視でやればこんなもんでしょう。真面目に調整しようと思ったらまだまだ調整が必要だと思います。

独自の表現を目指して…

UE4のような見た目を完全に制御できるゲームエンジンによって今後はもっと見た目が重視される時代となると思います。これはセンスにもよるものもあるので、あとはツールの使い方さえ覚えれば表現力は一気に広がります。まだまだ日本のゲーム業界ではここが弱いところですが、この情報が少しでも役立ってゲームに活かしてもらえれば嬉しい限りです。

最後に笑顔のユニティちゃんでお別れです。

f:id:alwei:20140418193937j:plain