妹でもわかるUnrealEngine4

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

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

Sonyのなんか凄そうなディープラーニングツールを使ってみる

dl.sony.com

it.impressbm.co.jp


「よくわからないけど、マウス操作でディープラーニングのことが色々できる凄いやつが出たらしいよ」

妹「なにが凄いの?」

「それはよくわからない。でも少なくとも無料なのは凄いと思う」

妹「あ、それは凄い」

www.youtube.com

妹「見たかんじと、UE4のブループリントにちょっと似てるね」

「ノードの種類とかつなぎ方は違うけど、イメージとしてはそんな感じ」

f:id:una_unagi:20170821232049p:plain

f:id:una_unagi:20170821232100p:plain

「ソフトは英語だけど、マニュアルは日本語がついてたから、そこに書いてあるチュートリアルどおりに、まずサンプルプロジェクトを開いてみる」

妹「4と9?」

「数字が手書きされた画像を自動で分別するという、従来式のやり方だけど、ディープラーニングだとわりと精度になるということで、ディープラーニング初心者用の題材としてよく使われてる。それ用のデータもたくさんあるから、いちいち自分で手書きしなくてもいい」

f:id:una_unagi:20170821232438p:plain

「4と9の数字を250個学習して、そのだいたいの特徴を覚えさせる。教師あり学習というやつで、画像ごとにこれは4だとか、9だとか、正しい答えがあらかじめわかってる画像を学習させる」

妹「わからないやつもあるの?」

「ある。人間にはベストな方法がわからないから、コンピュータの方でいい感じの方法を考えてくれってやつ」

妹「考えてくれた方がいいけど、それどうやって考えるんだろ……」

「教師ありの方は学習の理屈はわかりやすい。その教師から画像の傾向を学習したら、次はその判断基準で250個の画像を教師の方見ないで分析してみて、結果が合ってるか試す。横に出てる、0.00とか、0.9とかの数字が判断結果。"4"が0、"9"が1と設定してあるから、"9"っぽい字ほど1に近くなる」

妹「ぽいというのは?」

「両方の特徴を備えてたりするから、判断がむずかしいやつがどうしてもでてくるんだよ」

f:id:una_unagi:20170821232917p:plain

「例えばこういうの」

妹「……どっち?」

「このデータを作成した人は、これが9のつもりらしく、それで学習させてる。判定結果は0.6だから、どちらかというと9かもしれないという感じ

f:id:una_unagi:20170821234944p:plain

「これは"4"だと判断すべきところが、"9"と判断してしまってるので、判定を間違ってる。他にも間違いが250件中12件ある」

妹「それはちゃんと学習できてないのでは?」

人工知能の作り方もあるだろうけど、間違えるのは人間にもよくわかんないやつだからね。実際に人工知能に判定してほしいのは、この250個以外の別の数字だから、この250個に限定しすぎた学習をさせてもよくない」

妹「これって4でも9でもない絵を見せたらどうなるんだろ?」

「その場合も絵の特徴から判断して、どっちなのか無理やり考えて結果を出すことになる。どちらでもない物を別にしたいなら、2択じゃなくて3択のデータとして学習させないといけない」

妹「わたしとしては絵の分別とかじゃなくて、ゲーム用の適度にすごいAIとかが欲しいんだけど」

「これを使って作ったやつをゲームに組み込むというのもできるらしい。C++使わないと駄目そうではあるけど。とにかくディープラーニングがどんなものかっていうのを、マウス操作で試せるっていうだけでも面白いツール」

MixamoのAutoRiggerを使った骨入れ(7) Unity用と普通のやつ

f:id:una_unagi:20170819231402p:plain

「Maximoでダウンロードできるfbxが、今は"FBX For Unity"と"FBX"と2つあるんで、いったいどう違うのかというのをちょっと調べてた。容量もほぼ同じだけど、ファイルの中身はちょっと違うみたい」

妹「どう違ったの?」

「違うけど、何が違うのかはよくわからない」

f:id:una_unagi:20170819232035p:plain

「どっちも普通に、UE4でもBlenderでも読み込めるし、骨の名前とかも全部同じみたいだった」

妹「じゃあUnityだったら?」

f:id:una_unagi:20170819233252p:plain

「Unityの場合だけ、明確に違いが出た」

妹「身長が違うのかな」

「普通FBXの方が一回り小さくなる。あと足元もきっちり地面につかない。Unityの場合はForUnityのやつが良さそうなのはわかった」

妹「Unityじゃない場合は?」

「大きさも同じだった」

妹「Unityじゃなくても困らないんだったら、全部for Unityのやつに統一してもいいような……」

「大きさ以外にも困ることがあるのかもしれないけど、そのへんはよくわからないね。英語の資料調べるにもどうやって検索するの難しそうだし。とりあえずは普通のFBXで良さそうな気がする」

MixamoのAutoRiggerを使った骨入れ(6) ルートアニメーションには対応してない気がする

f:id:una_unagi:20170817234254p:plain

docs.unrealengine.com

「昨日ので足踏み状態のアニメーションにするのは上手くいって、できればルートアニメーションというのにも対応させたいと思ったんだけど、なんか難しそう」

妹「足踏み状態にできれば大丈夫なのでは?」

「そうなんだけど、例えばジャンプ斬りみたいな動作で、その場を動かないアニメと、位置を動かすプログラムと、組み合わせて制御するのはすごくめんどくさい気がする。普通にアニメとして作って、適当にアクターやコリジョンも動いてくれた方が楽ちん」

f:id:una_unagi:20170817234810p:plain

「……と、思ったんだけど、なんか思ったように動かない。骨の構造が違ってるかも。ルートモーションというか、そのルートボーンがそもそもないというか、お尻の骨がそのままルートになってるような」

妹「どういう骨がいいの?」

「お尻のさらに親のボーンとして、何もない空っぽの骨が、足元あたりにあって、身体全体を動かす時にはそこを使うようにしてあれば、上手く動くはずなんだけど。ただやり方が間違ってるという可能性もある」

f:id:una_unagi:20170818000024p:plain

「EnableRootMotionというところにチェックを入れたんだけど、これをしても強制足踏み状態になるだけで、アニメーションに合わせてアクターの座標が動く感じにはなってない」

妹「足踏み状態には出来るんだ」

「出来るけどなんかぎこちない気がするから、Mixamoのサイトで設定した方がいいと思うけど」

Mixamo Animation Retargeting by UNAmedia in Code Plugins - UE4 Marketplace

「以前はMixamoがUE4に正式対応してたってこともあって、なかなか現時点での情報が見つからないんだけど、このプラグインだとMixamoのアニメをルートモーション対応にしたり、グレーマンのボーン構造に合わせたりといったことが出来るらしい。ちょっと費用はかかるけど一番簡単そうに見える」

community.mixamo.com

「こっちはBlenderプラグインで、UE4にインポートする前に直す方法らしい。ルートモーションが使えるようにするだけならこれでもよさそう。無料だし」