妹でもわかるUnrealEngine4

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

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

SustancePainterによるドーナツ作り

f:id:una_unagi:20181211224501p:plain

ドーナツとの戦いの歴史
imoue.hatenablog.com
imoue.hatenablog.com

妹「またドーナツ作り始めてる……」

「ドーナツとのつらく厳しい戦いは終わらないので。今回はSubstancePainterを使って戦うことにする。ただ、これ自体にポリゴンモデルを作る機能はないので、まずはBlenderで土台を作ってから、それをSubstancePainterにもってくる」

f:id:una_unagi:20181211225050p:plain
初期型

妹「これは失敗ですな」

「まずBlender上でスムージング設定してなかったからカクカクのままで。着色を物理ペイントをというのをやってみようとしたんだけど、なんか思ったようにいかず」

妹「物理ペイント?」

「3Dモデルにそってこぼれ落ちる的な。まあこれはちょっと勉強しないとやり方がわかんないので、いったん諦めて再チャレンジ。ちなみにBlenderは練習を兼ねて2.80のβ版を使ってみている」

f:id:una_unagi:20181211225259p:plain
ちょっと表面をつぶしてみた

「ドーナツ写真を見てると、そんなにきっちりしたトーラスではないなあと。光が反射に違和感がある。断面が円じゃなくてもうちょい四角よりというか。なので、プロシージャル編集で下方向に移動させて調整。念のためすこしポリゴン数も増やして、スムージングをかける」

f:id:una_unagi:20181211225611p:plain
アイシング

「あとで色の塗り替えがしやすいように、塗りつぶしレイヤーでピンク一色のレイヤを作って、マスクでくりぬいていく感じにした。塗った部分は色だけじゃなく高さを増やす設定だから」

妹「なんかボコボコしてるね」

「ちょっと塗り残しがあった。高さ表現が効いてるのは確認できた」

f:id:una_unagi:20181211230134p:plain
手作り感を出すために、高さに変化をつける

「ドーナツ部分とアイシング部分で高さが違うのは当然として、アイシング部分自体にも高さの変化が欲しいと思ったので、もう1枚レイヤを追加。この時点でアイシングをレイヤーフォルダに入れて、レイヤーにあったマスクをフォルダの方にコピーして使用」

妹「たしかに立体感はあるね。何かを塗ったくったような。塗り残しはそのままだけど」

「そこはアイシング用のマスクがかかってる部分だから。マスクがかかってないと、うっかりはみ出した時にドーナツの生地が盛り上がってしまうので。生地自体に変化をつけるにしても、別レイヤでやった方がわかりやすい気がする」

f:id:una_unagi:20181211230544p:plain
ディテールの追加

「砂糖がかかってる感を出したかったから、白いレイヤをうっすらかぶせて、濃淡をつけてみた。これはいまいちだったかも」

妹「レイヤを重ねていくあたりはお絵かきソフトっぽいね」

f:id:una_unagi:20181211230757p:plain
ベースカラーのみの表示・レイヤ一覧

「レイヤとしてはこんな感じ。レイヤが分かれてれば別々に修正できる。あとで色を変えるというのもあるし、模様とか質感とかを加えるにも便利だから。普通に色だけ見るとこんな感じだから、高さ効果が出てる」

f:id:una_unagi:20181211231458p:plain
プラスチックに金属をまぶしたドーナツ

「塗りつぶしレイヤーを使ってるから、質感がいまいちだなと思ったら別のマテリアルに変えてもいい」

f:id:una_unagi:20181211231740p:plain
砂糖のつぶつぶ

「例のつぶつぶも、色と高さで表現できる。粒を増やすのはタブレットで短い線を描くだけだし、消すのも簡単。ポリゴンも増えなくて済む」

f:id:una_unagi:20181211231924p:plain

「あくまでテクスチャでそういう風に見せてるだけなので、見る角度によっては、変だとバレちゃうんだけど、ゲーム中に登場する小物とかにはこれぐらいでじゅうぶんじゃないかなと思う。なにより作るのが簡単」

妹「簡単なんだ」

「若干操作に慣れる必要はあるけど、ポリゴンを一度操作すると、元に戻したり違う風にするの大変だけど、レイヤを消せばなかったことに出来るし・元の形がシンプルだから、マテリアルを変えるだけですぐ違う味にチェンジもできそう」

VRoid -> Blender -> AutoRig Proで動かせるようにする実験

確認したバージョン
Blender 2.79
AutoRig Pro3.40

blendermarket.com

「SubstancePainterで材質の件はいいとして、どうやって動かすのかという問題が未解決。そこでBlenderのAutoRig Proというアドオンを購入」

妹「そういうのもう買ってなかったっけ?」

「AllRight Rigは、動かせる状態のキャラクターをUE4上で動かすやつだから。動かせるようにするのに使う」

妹「名前が紛らわしい……」

「この手のプラグインはRigって名前に付いてるの多いから。これはBlenderからUE4という流れを想定したプラグインだから、鬼門になってるFBXのやりとりもスムーズにできるという利点もある。ゲームエンジン対応はComplete版じゃないと駄目だけど」

f:id:una_unagi:20181207231516p:plain
MakeHumanのキャラ。関節の位置などをマーカーで指定

f:id:una_unagi:20181207231549p:plain
指以外は問題ないんだけど

「とりあえずなんでもいいから骨入れたいなということで、まず思いついたのがMakeHuman。標準のボーンはあるけど、AutoRigProで設定できれば、データを加工した後に骨の入れ直しが出来るなあと。でも指の認識が上手くできず……」

妹「指の認識?」

「関節の位置を設定していくと、手首の先にあるポリゴンを指だと認識してくれる。手動で直せばいいんだけど、この指のとこにボーンを入れるのが大嫌いだからAutoRig Proを買ってるわけで、こんなぐちゃぐちゃになったら意味がない。MakeHumanの標準ポーズだと、手のひらが下を向いてなかったり、指を閉じてたり、あんまり認識しやすいモデルじゃなかった」

imoue.hatenablog.com
前回VRoidのキャラを読み込んだ時の

github.com
このアドオンを使う

「そこでVRoidのモデルを使ってみることにした。Blenderに読み込むところまでは前回と一緒。手が下を向くように、VRoid上でTポーズに設定してからエクスポート。マテリアルはやっぱりちょっとおかしいけど、そのへんは今回目をつぶる。ボーンは上手く読み込めてないっぽい状態で入ってるから、いったん消してメッシュだけ残す」

http://www.lucky3d.fr/auto-rig-pro/doc/auto_rig.html
マニュアルが英語なので、なんとなく雰囲気でやる

youtu.be

「Smartモードを使うと、関節の位置をアバウトに設定するだけで、全身の骨が入るという、まあなんというか、Mixamoのやつみたいなモードなんだけど。首、顎、肩、手首など、指示にしたがって関節の位置を調節していく。関節ってどのへんだろ? みたいなのは、動画を見るとわかる」

f:id:una_unagi:20181207233437p:plain

youtu.be

「その時選択中のオブジェクトだけが表示されて、関節の認識にもその部分を使う。だから細かいパーツとかは選択しない方が骨がスッキリ入りそうな気がする。あと今回スカートだったんで、ワンピースがじゃまで股関節の位置がわからなくなる。なので服も別オブジェクトにして、Smartモードの途中では表示しない方が簡単だった」

f:id:una_unagi:20181207232755p:plain

「問題だった指は問題なし。VRoidのもそんなに指開いてないんだけど、これぐらいスキマがあれば大丈夫なのかなあと。自作モデルを作る時の参考用に」

妹「なんでスキマが要るの? ポリゴンは分かれてるわけだし」

「どうもポリゴンの流れじゃなくて、ボクセル的な判定で、手首の先に指っぽいかたまりがあるかどうかって判定になってるみたい。ポリゴンの流れとは関係ないから、指輪とか爪とか別オブジェクトになってても、指同士にスキマがあれば大丈夫なんじゃないかと思う」

f:id:una_unagi:20181207234339p:plain

「骨がズレてたら適当に調整してから、リグで操作できるようにする。この手順は、Blender上でアニメーションを作らないんだったら不要かもしれない」

f:id:una_unagi:20181207234739p:plain
バインドする

「骨や関節の位置が決まったので、それに連動してオブジェクトが動くようにバインドするという処理がある。これをやらないと、いくらリグを動かしてもオブジェクトが反応しない」

f:id:una_unagi:20181207234542p:plain
どうにか動くようになったけど……

「バインドまでうまくいくと、リグをポーズモードで動かしたら、それにあわせてメッシュも変形するようになる。ただ、ここが実はよくわかってないところなんだけど、バインドの処理にすごく時間がかかる。服だけならすぐ終わったんだけど、胴体には30分ぐらいかかった。フリーズしたかと思ってた」

妹「30分……なかなかつらい気が」

「PCの性能でも違うだろうと思うけど。髪の毛のバインドに至っては、3時間待っても終わらなかったから諦めた」

妹「そういうものなの?」

「それはわからないけど。ポリゴン数が多いと遅くなるっていうのはありそう。ただポリゴン数だけでは説明がつかない。ポリゴン数削減してボディと同じぐらいにした状態でも時間変わらなかったから。Blender2.8でも実験しようとしたけど、こっちはまだAutoRigProのSmartモードに対応してないみたいだったので断念。また何か手を思いついたら再開するけど、現時点ではここまで。VRoidじゃなくて自作モデルだったら問題なさそうだし」

Interior ToolkitにSubstancePainterで着色する

f:id:una_unagi:20181204005536p:plain
Interior Toolkit(Demonstration_Map)

UE4マーケットプレイスで無料アセットのラインナップが、12月になったから更新されてたんで、そのうちの1つ Interior Toolkit というのを眺めてみる。名前の通りインテリアのアセットで、ベッドとかタンスとかのスタティックメッシュが入ってる。それを適当に配置して部屋を作るというやつで、サンプルのマップデータも付いてる」

妹「なんか前回の変なグレーマンがいるような」

「同じプロジェクトで試したらそのままだった……それはそれとして、今回もSubstancePainterの実験をする」

imoue.hatenablog.com

「同じような手順で、今回はスタティックメッシュのカーテンの色を変えてみようかと」

f:id:una_unagi:20181204010716p:plain

「元々はこういう白いカーテン。真っ白ではなくて、生地の模様というか、布っぽいマテリアルになってるんだけど」

f:id:una_unagi:20181204011516p:plain
SubstancePainterに送って、適当なテクスチャを貼り付け

f:id:una_unagi:20181204011645p:plain
さらに変更

「このように、適当なマテリアルで塗りつぶすとカーテンの材質が変わる。この部屋は明るめのライティングになってるから、SubstancePainterの表示より明るい。材質を色々用意しておけば数分で塗りかえできる。UVマッピングが変だと面倒なことになるけど」

妹「絵も描けるんだよね?」

「できるよ。落書きしたり、金の縁取りをつけたり。単純に色を変えるだけならマテリアル側の調整でもいいと思う。今はSubstancePainterの実験も兼ねてるからあれだけど。もっと沢山材質を準備しておけば、色々と融通が効きそう」