Epicは、UE4のマーケットプレイスの有料アセットを毎月月替わりでいくつかチョイスして無料配布しています。

2020年5月の今月の無料アセットはこちら

Drivable Cars Basic Pack: 3D assets +

↑かっこいい車のアセット。6476円→無料

Materialize VFX

↑なんかエフェクトのアセット。2354円→無料

Modern City Downtown with Interiors Megapack (Urban Building / Buildings)

↑まるごと一つの街のステージ!17666円→無料

Sci Fi Robot

↑ロボットのアセット。1411円→無料

The Targeting System

↑照準システム。1293円→無料

合計27907円の5つのアセットが無料です!これはゲットするしかない!
特にModern City Downtown with Interiors Megapackがオススメ中のオススメ。普段なら17666円するのに無料!公園やビル、地下鉄の階段を下りれたりハンバーガーショップの中に入れたり、マケプレのアセットの中でもトップクラスにすごいアセットです。今月中に絶対手に入れよう!

ちなみに5/21までEpic GamesであのGTAVも無料配布されてます。Epicのアカウントを持ってるとUE4無料アセット以外にも、無料配布のゲームを大量に入手できます。私ももらいすぎてまったく遊びきれてません。(よく思うんだけど、遊びきれないほどゲームがタダでもらえる時代に自分が作ったゲームを遊んでもらうのって大変だよね)

話が逸れましたが、UE4ユーザーの方はもちろん、今はUE4さわってなくても将来的に触るかもしれない方にも是非毎月の無料アセットをゲットしてもらいたい。
将来UE4やUE5(基本的にUE4と互換あるらしい)を触る時に、アセットを全然持ってない状態で始めるのと、数十万円分のハイクオリティなアセットを入手済みの状態で始めるのとでは、ドラクエで言えばゲーム開始時に装備してるのが、「ひのきのぼう」と「はじゃのつるぎ」くらいの格差がありそうです。

「オレはUnity一筋だからUE4のアセットなんて関係ないね」なんて思ってるUnityユーザーのあなたにも是非手に入れてもらいたい。
何故なら、UE4アセットの3DモデルはUnityに持っていける(場合がある)からです。

UE4マケプレの利用規約でも、マケプレのアセットはUE4以外(例えばUnity)で使用しても基本OKみたいな事が書かれています。(ただしEpic公式アセットは基本UE以外で使うのはNG)
ちなみに逆にUnityアセットストアのアセットをUnity以外で使うのも最近OKになりました。

つまり、UE4アセットの3Dモデルは実質Unityアセットとして使えるということです。

この記事ではその方法を紹介します。

シンプルな例

とりあえずUE4を開いて先ほどの街のアセットをDLしてインポートしてみます。

UE4のアセットをUnityに持っていくといっても、エクスプローラで見ると、UE4では3Dモデルもテクスチャもuassetという謎のファイル形式になってるのでそのままではUnityで開けません(親切なアセットはFBXファイルも同梱してくれてたりするらしいです)

例えばこのハンバーガーの看板をUnityに持っていきたいとします。

看板のアセットを選択して、詳細タブ→Static Meshの虫眼鏡アイコンを押して、コンテンツブラウザ上の元アセットを見つけます。

元アセットを右クリックして、アセットアクション→エクスポートを選ぶと、指定した場所にFBXファイルとして保存できます。簡単ですね。
直接Unityプロジェクトのアセットフォルダの中にエクスポートすれば手っ取り早いです。

これでFBXはエクスポートできましたが、マテリアルはエクスポートされない事に注意してください。UE4では複雑なノードで作られたマテリアルが作れますが、FBXファイルには複雑なマテリアルは互換性が無いためにそのような仕様になってるようです。

今回のアセットのマテリアルを確認すると、単に各テクスチャを出力に突っ込むだけのシンプルな作りだとわかります。

マテリアルはUnityで再設定するとして、次はテクスチャをUnityにエクスポートします。
詳細のMaterialsのテクスチャボタンを押して、コンテンツブラウザ上のテクスチャを探します。

マテリアルに設定されてた4枚のテクスチャを選んで右クリック→アセットアクション→エクスポートを選択して、各テクスチャの保存場所(FBXファイルと同じ場所)を指定します。

必要なものはエクスポート完了したので、Unityエディタを開きます。

さっきエクスポートしたFBXファイルがインポートされてるので、とりあえずMaterials→LocationでUse Embedded MaterialsになってるのをUse External Materialsに変更してマテリアルを編集可能にします。

マテリアルにアルベド、ノーマルマップ、エミッションマップを設定します。赤いテクスチャは使い道がわからなかったのでとりあえず放置します。

FBXのオブジェクトをシーンに配置すれば、ちゃんとハンバーガーショップの看板をUE4からUnityに持ってくる事ができました。

一つや二つのアセットならこの手順で十分ですが、全部のアセットをUnityに持っていきたいとなるとなかなか手間です。

UE4エディタの操作はPythonを書く事で自動化できるらしいです。ここでは手順は説明できませんが、自動化すれば全てを一括自動エクスポートさせる事も可能かもしれません。

ややこしい例

上の例ではシンプルなアセットを選びましたが、もっとややこしいアセットだと上の方法では難しくなります。

例えば、アセットが複数のマテリアルを使ってる場合や、沢山のオブジェクトに分かれているアセットの場合や、一番問題なのが、複雑なノードで組まれたマテリアルの場合です。複雑なマテリアルは単にUnityでテクスチャを割り当てるだけでは再現できません。

こういうややこしいケースの場合もUE4は対応可能です。

例えばこのビル一つを丸ごとエクスポートする事を考えてみます。

すっごい大量のオブジェクトに分かれてるし、マテリアルも沢山持ってるし、マテリアルのノードもさっきより複雑です。
さっきの方法でやろうとしたら地獄を見そうです。

このヤバい状況をなんとかするのが「アクタのマージ」機能です。
これはUnityで言えばMesh Bakerというアセットのような機能で、複数のオブジェクトを一つにマージしてくれて、マテリアルもマージしてくれるし、テクスチャもベイクしてくれます。すごい!

マージしたいオブジェクトをすべて選択した状態で、ウインドウ→デベロッパーツール→アクタをマージを選択します。

「アクタのマージ」の設定画面が開きます。

とりあえずLOD選択タイプを「Use specific LOD level」に変更し、特定のLODを0に設定。
マテリアルのマージにチェックを入れ、テクスチャサイズを設定します。今回は4096にしました。ターゲットライトマップ解像度もテクスチャサイズと同じサイズを設定してください。
とりあえず今回は法線マップとスペキュラマップを出力しようかなという感じでそれらのチェックをオンにします。(ほかに欲しいテクスチャがあればそれも選択する)
メッシュライトマップUVの再使用という項目については、これはオンの場合とオフの場合を両方試してもらえばわかりやすいんですが、オンだと元のUVを再使用する感じになって、オフだと新たに自動UV展開される感じになります。結果が良い方を使うといいと思います。今回はオンにしました。

「アクタのマージ」を実行すると、ちょっと処理に時間がかかりますが、完了するとコンテンツブラウザにマージされたFBXやテクスチャが出てきます。

あとはこれらを先ほどと同じようにUnityにエクスポートすればOKです。

ジャーン!

あんなにややこしかったUE4のアセットを簡単にUnityに持ち込めました。ちなみにスペキュラマップは結局単なるグレーだったので出力する意味が無かったのでアルベドとノーマルマップだけ設定してます。

こんな風にUE4のアセットをUnityに持ち込んで使える事が分かったので、ぜひUnityユーザーもUE4のアセットを積極的にゲットしましょう!

今回紹介した方法が100%うまく行くわけでは無いことに気を付けてください。何らかの原因でアクタのマージが失敗したり、表示がおかしくなったりするケースもあります。その場合は…残念ですがあきらめましょう!

さらに、今回のアセットは多分大丈夫ですが、メチャメチャでかいデータに対してアクタのマージをするとメッチャメモリ消費してUE4が落ちる事がありました。この場合、PCの仮想メモリをあらかじめ大量に割り当てておいたら成功するケースもありました。(200GBくらい仮想メモリ食ってました)

そのような注意点もありますが、UE4のアセットをUnityでも使いたい!という方は是非チャレンジしてみてください。