[UE4]UnrealEngineでユニティちゃんを召喚する(前編)

今回はBlenderなどのDCC(Degital Content Creation)ツールで作る、アニメーションのついたFbxデータをUEにインポートしてみたいと思います。
僕もよく記事でお世話になっている、alweiさんの過去記事を参考にしつつ現在のバージョンに合わせた解説も含めてやっていこうかなと。
[こちらの記事を参考にしています](http://unrealengine.hatenablog.com/entry/2014/04/15/184432")
なので、使うモデルは記事にならってUnityのユニティちゃんを使います。
あと、結構画像が多く、長くなってしまったので前後編に分けてお送りいたします。
ではでは、やっていきましょう。環境は Windows10, UE4.22.3、 VisualStudio2017 です。


##そもそもFbxって？
3DCG:　.obj　.3ds　.ply　.fbx　.dae　.abc
3D CAD:　.dwg　.dxf　.3dm　.ifc
ラピッドプロトタイピング:　.stl　.xaml　.m3d
3Dプリンター:　.amf　.3mf
※Wikipediaより抜粋
一口に3Dファイル拡張子と言っても上記のようにたくさんあります。
その中でも、よく使われる有名なファイル形式が、 .obj　.fbx　.stl　です。

###・OBJ
Wavefront Technologyが出した3Dファイル形式。
Mesh、テクスチャという <a style="font-weight: bold">オブジェクトそのもののデータのみ</a> を記録します。
データ量が軽く、動かないオブジェクトの出力に適しています。
適当なテキストファイルで開くとMeshの頂点情報だったりが見れます。
###・FBX
AutoDeskが公開した3Dファイル形式。
objと違い、3Dオブジェクトの骨格の役割をもつ<a style="font-weight: bold">リグデータ</a>を含められます。
<a style="font-weight: bold">なので動く3Dオブジェクトの出力を行うときは、Fbx形式がスタンダート</a>となっています。
バイナリ形式になっているのでテキストファイルで開いても解読できません。そして情報量が多いので容量が大きいです。
###・STL
米国の 3D Systems が公開したフォーマット。
主に3Dプリンタで使用されるフォーマットです。
その中でもUEで使われるのは .obj と .Fbx です。


##素材データの準備
[ここ](http://unity-chan.com/download/releaseNote.php?id=UnityChan)から素材となるUnityちゃんデータの一番新しいバージョンをダウンロードしてください
![000.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/163667/5523c6c6-95b7-9df4-1574-f392cebee643.jpeg)

###Unityちゃんライセンス
本コンテンツは、『ユニティちゃんライセンス条項』に基づいて公開・配布されるものです。本コンテンツをご利用される場合は、ユニティ・テクノロジーズ・ジャパン合同会社が定める『キャラクター利用のガイドライン』をお守りいただく必要があります。


###・Unityプロジェクトでダウンロードしたパッケージをインポート
ダウンロードしたデータは"unitypackage"とうUnity独自の拡張子となっており、使える状態にするには一度Unityプロジェクトでダウンロードしたパッケージをインポートする必要があります。
適当なUnityプロジェクトを作成し"Asset -> ImportPackage -> CustomPackage"で先ほどダウンロードしたデータをインポートしてください。
![001.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/163667/d0e2a8fc-c891-76cf-2882-01885d0f31ec.jpeg)



###・必要データのコピー
使うデータはfbxとテクスチャとなるtgaデータだけでいいので、必要なものを検索して一か所に集めてしまいましょう。
Unityプロジェクトをエクスプローラー、もしくはファインダーで開いて "fbx"と　"tga"で検索し、必要なものをコピーします。
ちなみにUnityの".meta"という拡張子はUnrealでいう ".uasset"と同じメタデータとなってますのでこれは無視してください。

tgaで検索 (モデルのテクスチャデータ)
![003.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/163667/59f6e040-4f36-140c-de01-5754cceb914e.jpeg)



fbxで検索 (モデルデータ)
![004.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/163667/795d1281-220d-6c90-5d04-393614fff058.jpeg)


まぁ全部使うわけじゃないんですけど一応画像のようにコピーしちゃってください。
ただしくコピーできると以下のようなファイル群になっているはずです。
![005.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/163667/40eb9626-f87e-9ed6-6ce0-b686603714b5.jpeg)


これで準備は万全です。それではいざ！UEプロジェクトで読み込んでみましょう！


###プロジェクトの作成
ではいつものようにプロジェクトを新規作成しましょう。名前はなんでもいいですが、僕は"ImportUnityChan"にしておきます。
![006.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/163667/d181de18-745b-feca-9616-665e4d012161.jpeg)

	
早速モデルを読み込みたいところですが、まずはディレクトリを作っておきましょう。
そこまで大量に読み込むわけではありませんが、常に使いやすさを意識していきましょう。
Content下に"Models"、そしてその中に"Materials"と"Textures"フォルダを作成します。
![007.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/163667/6712924c-7ed4-df7b-a044-3ca7a3c00428.jpeg)

次のステップでいよいよインポートします。
	


###ContentBrowserからインポート
ContentBrowserのImportを押して読み込むファイルを選択します。まずはFbxからImportしてみましょう。
UnrealEditorでUnityChanディレクトリをクリックしてフォーカスを合わせてから、先ほどコピーして集めたファイルの中から"unitychan.fbx"を選択します。
![008.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/163667/83425553-a46a-c209-b26b-dc7938526b2f.jpeg)
![009.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/163667/295ef08f-36bc-4b50-72a9-62516100356e.jpeg)


すると以下のようなウィンドウが開くと思います
![010.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/163667/90d2cb61-c0f9-0ea2-47ed-4fb74e3c0797.jpeg)

このMaterialタブの"Material Import Method"を"Do not create material"にしてImportしてください
![011.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/163667/b66ae5ab-de80-3853-35d7-530ff67d3429.jpeg)


この読み込み画面で注目するのは大きく３つ、 "Mesh"、"Animation"、"Material"です。
"Mesh"の"Skelton"項目を"None"にし、Unityちゃん専用のスケルトンを新規作成させます。
"Animation"項目はアニメーションがつけられたモデルを読み込む際にチェックを入れておきます。
"Material" の "Material Import Method"ではモデルの部位に合わせて自動でマテリアルを生成します。今回はテクスチャがあるので新規作成しないようにします。


無事にImportできたら以下のようになっていると思います。
![012.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/163667/0760a4ab-3458-bf54-3ad4-4edf99646a8f.jpeg)


では次にテクスチャをインポートします。今度はTexturesをクリックしてからImportを押します。一括選択して一気に読み込んでしまいましょう！
![013.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/163667/4ecee6a5-70a6-8e8c-486b-94a08e09db81.jpeg)


当然このテクスチャの状態ではモデルに反映できないので、ここからマテリアルを生成します。画面のようにテクスチャを一括選択している状態から"Create Material"を選択してください
![014.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/163667/2abc1882-c1ab-0f7b-dae2-9d22fb564588.jpeg)

マテリアルが生成されます
![015.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/163667/2b75e1a9-0009-cc7f-82cd-2814e0129c2a.jpeg)

<p>これを全部"Materials"ディレクトリに移動させましょう。あー、ディレクトリ内がきれいに整理されていて気持ちいですね！</p>
![016.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/163667/3cf09c1f-1c67-a807-70ba-247c36ddde97.jpeg)



既にお気づきの方もいらっしゃると思いますが、こうやって各インポートしたものや新規作成したもののサムネイルの左下に星マークみたいなのがあると思います
![017.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/163667/bb6d63dc-2a19-e638-ed2a-5954c7968049.jpeg)


これは読み込んだデータはまだメモリ上に存在しているだけで、エクスプローラーやファインダーからは見えない状態だということです。
これを "Shidt + S" で一括保存してみてください。 .uassetという形でエクスプローラー/ファインダーから存在が確認できると思います
Unrealには原則として <a style="font-weight: bold";>"ファイルの移動や消去などは基本的にEditorをから行う"</a>というルールがあります。
なので必要なくなったからといってこの .uassetをEditorから消す以外の方法で削除したりしないように注意しましょう。

###後編に続く
はい、以上でやっと素材周りのインポートが終わり、いよいよマテリアルを反映してUnityちゃんをUEWorldに解き放つ時がきました。
次回ではUnityちゃんを実際にアニメーションさせるところまでいきたいと思います。ではでは。

[後編に続く](https://qiita.com/iwax10/items/e02684583807a199d366)

自分のサイトでも技術Tipsなどをあげているので良ければ遊びに来てください。
https://iwaxlab.com