妹でもわかるUnrealEngine4

毎日更新? 妹に説明するために書いてるけど、たまにわかってない場合もあるUnrealEngine4を中心としたゲーム制作の話。略すとイモリアル

毎日更新? 妹に説明するために書いてるけど、たまにわかってない場合もあるUnrealEngine4を中心としたゲーム制作の話。略すとイモリアル

水のマテリアル研究⑦ 自分でノーマルマップを作る

「ではノーマルマップを自分で作ってみよう、って話になるんだけど、といってもRGBを法線のベクトルと考えてイラストを描く……なーんてことは、人類にはちょっと難しい」

妹「とすると……ZBrushとかで水面を作るとかしないと駄目なのかなあ?」

「それも含めて、ノーマルマップを作る方法はいくつかある」

(1) ハイポリゴンとローポリゴンのモデルの差をノーマルマップとして生成する3Dソフトを使う(ZBrushとか)
(2) まず白黒のテクスチャ画像(バンプマップ)を作って、それをノーマルマップに変換する
(3) 人類の未知の可能性に賭けて、頑張って色を塗る

「今回は3Dを使うほどのことはなさそうだし、人類はあれなので、(2)の方法でいこうと思う。その白黒のテクスチャの作り方も、例えば写真を加工するというのもあるけど、今回はKritaで描いた」

f:id:una_unagi:20161212204852p:plainだいたいのイメージ
f:id:una_unagi:20161212204857p:plainぼかしたり、ブラシで描き込んだりして、なんか海っぽい感じで頑張る
f:id:una_unagi:20161212204949p:plain縮小していい感じに見えるか確認
f:id:una_unagi:20161212211527p:plainPNG形式で保存して完成

「白いところが高く、黒いところが低くなってるつもりで。Kritaを使ったのはラップアラウンドモードで、繰り返しのテクスチャをつくるのが簡単だから」

妹「繰り返し表示便利だよね」

「今回は最終的にテクスチャのスクロールをさせるわけだから、つなぎ目が目立たないようにするっていうのは最低条件。あとは多分わりと適当でもいけるはず」

f:id:una_unagi:20161212205221p:plain

「できあがったのがこれ。いわゆるバンプマップで使う状態。これだったら人間でもわりと書ける。これをノーマルマップに変換すれば問題ない」

妹「最初からこの白黒のが読み込めるようにしてくれれば楽なのでは……」

「昔はそういうのも多かったんだけど、今は3色のノーマルマップ使うケースが多い気がする。その方ができること多いからかも」

cpetry.github.io

「変換する方法は色々あって、プラグインとかでできるソフトもあるんだけど、Kritaにはないみたいなので、今日はこのインターネットブラウザ上変換できるサイトを使う。ただ古いブラウザだと動かないかも」

f:id:una_unagi:20161212211629p:plain

「白黒の画像を左側の枠にドラッグ&ドロップ。そうすると真ん中に青っぽいノーマルマップ、右に立体化した3Dモデルが出てくる。ノーマルマップの規格に合わせてオプションを選ぶ」

妹「なんで規格がそんなに色々あるの?」

「ソフトによってXYZの扱いが違うのと一緒で、ノーマルマップにもどの色をどの方向と考えるかで違いがある。最初はとりあえずそのまま保存して、何かが逆になってる気配だったら変更して保存しなおす。でもUE4の場合は標準のままでよさそうな感じ」

f:id:una_unagi:20161212212249p:plain

「こういう感じでノーマルマップっぽいものが保存できた。上手く出来てるかどうか、ノーマルマップを作ってテスト」

f:id:una_unagi:20161212212410g:plain
f:id:una_unagi:20161212212443p:plain

「今回作ったノーマルマップだけくっつけて、シンプルなマテリアルを作った」

妹「おお……なんか水面っぽいですな」

「Motion_4WayChaos_Normal関数使えばどんなので良かったような気がしないではないけど……このノードは右クリックメニューからは作れないから、コンテンツブラウザ(エンジンの中)からドラッグするか、別のマテリアルからノードをコピーしてくる」

f:id:una_unagi:20161212214339p:plain

「こっちはMotion_4WayChaos_Normalなし版。動かないし、クレーターみたいになるけど、毛先が粗いブラシで塗ったから、その部分が細かく反射してキラキラしている」

f:id:una_unagi:20161212214937p:plain

「ちなみにKritaには直接ノーマルマップを描く機能もある。線を引く角度とか、ペンタブレットのペンの傾きに連動して色が変えられるペンが付いてる。でもこれがあったとしてもやっぱり人類には難しそうな気がする」