UE4の「無料3種の神器」をご存じですか?

1.毎月の月替わり無料アセット

2.Megascans使い放題

3.Datasmith(Unreal Studio)

この3つです。これらのおかげでUE4は1円もお金払わないで爆アドが得られます。多分合計で100万円分くらいアド取れてるんじゃないかな。

1の無料アセットで、毎月数万円分の有料アセットがタダでもらえます。

2のMegascansで、1万以上の高品質なフォトグラメトリアセットが全て無料で使えます。

3のDatasmithはピンと来ないかもしれませんが、これも最強クラスにすごいです。
Datasmithを使うと、CADソフトや3ds Max、Cinema 4D、Sketch upなどのファイルをそのままUE4にインポートできちゃいます。

https://docs.unrealengine.com/ja/Engine/Content/Importing/Datasmith/SupportedSoftwareAndFileTypes/index.html

↑Datasmithで対応してるファイル形式はこちらに一覧されています。

「別にDatasmithとか無くても、FBXファイルに変換すれば何だってインポートできるじゃん?」と思うかもしれませんが、FBXファイルでは元のソフトウェア上のマテリアルをあんまり再現できない事が問題になります。これだと、UE4にインポートした後にマテリアルをアレコレ再調整し直しになって、相当な手間がかかります。

それより何より大きい問題は、例えば3ds MaxとSketch UpとAutoCADのファイルが手元にあって、これをFBXにエクスポートしたいとします。そしたらあなたはこれら全部のソフトを購入した上に使い方を覚えないといけないですよね?それは大変すぎるでしょう?

企業でも、手元にCADデータはいっぱいあるけど、これをUE4でビジュアライゼーションしたくてもCADソフトの使い方が分かんない。みたいなケースもよくありそうです。

そういう問題を解決してくれるのがDatasmithです。

ただし、Datasmithでは元ファイルを直接UE4で読み込める場合と、元ファイル用のソフトにエクスポートプラグインを入れて、udatasmithファイルに変換する必要がある場合の2パターンがあります。
3ds Maxは後者のケースなので、結局3ds Maxのアプリケーションは必要になってしまいます。

Datasmithはかなり神です。これが無料で使い放題ってのは本来ありえません。本来は月額49ドルのサブスクで提供されるはずだったのが、いつの間にか無料になってました。やばい。

個人レベルでDatasmithとか必要なの?

個人レベルでも便利です。

考えてみていただきたいんですが、UnityやUE4を使ってて、例えば日本の街の3Dモデルが欲しいなあと思ったとします。
そしたらアセットストアやマーケットプレイスを探しますよね?それでも見つからなかったらどうしますか?

それなら他のサイトで探すことになりますよね。この時、大抵の3Dモデルはそのままではゲームエンジンで読み込めない、プリレンダー用のモデルなんですよね。
特に3ds Maxのv-Ray向けのモデルが多いです。これが業界のデファクトスタンダードなのでしょうか。

せっかく目的の3Dモデルを見つけても、それが3ds Max向けのモデルだったら、ゲームエンジン向けに変換するのが厄介な作業なので、諦めてしまうかもしれません。でも、Datasmithを使えば諦めずに済みます!

ちなみに、過去の記事でも紹介しましたが、DatasmithでUE4に読み込めるという事はUnityにも持っていける事を意味します。

UE4のアセットをUnityにエクスポートする方法

【禁断のテクニック】UE4のレベルを丸ごとBlenderとUnityに持っていく

UnityユーザーもDatasmithで爆アド!

実際に試してみる

実際にDatasmithを使ってV-Ray for 3ds Max向けのモデルをUE4に読み込んでみましょう。

とりあえず3ds Maxのインストールが必要です。無料で一カ月間体験できます。それ以降は有料サブスクリプションになります。

さらに、3ds Maxに”V-Ray for 3ds Max”プラグインもインストールする必要があります。

https://www.chaosgroup.com/vray/3ds-max

この”V-Ray for 3ds Max”も一カ月間無料体験ができて、それ以降は有料です。年間470ドルします。めっちゃ高いですが、実はDatasmithを使うだけなら期限が切れた体験版のままでOKです。期限が切れるとV-Rayでのレンダリングができなくなるだけで、V-Rayマテリアルは普通に読み込めるからです。

“V-Ray for 3ds Max”プラグインをインストールしたら、3ds Max用Datasmithエクスポータプラグインもインストールします。これは無料。

https://docs.unrealengine.com/ja/Engine/Content/Importing/Datasmith/SoftwareInteropGuides/3dsMax/InstallingExporterPlugin/index.html

ここまで完了したら、インポートしたい3Dモデルを用意します。例として、こちらの無料のおもちゃの3Dモデルをダウンロードしてみます。

3ds Maxを起動して、ダウンロードしたファイルの中のToys.maxを開いてみると、上の画像みたいな感じになってます。

3ds Maxの使い方なにも知らんので、視点の回転方法とかさえよくわかりませんが、Datasmithを使うだけなら何も知らなくて大丈夫です。

ファイル→書き出し→書き出しを選択すると、保存場所選択ダイアログが出ます。ファイル形式は「Unreal Datasmith」を選んで、適当な場所に保存してください。3ds Max上での作業はこれだけで終わりです。

UE4を起動してください。

編集→プラグインを選んで、Datasmith Importerを探して、Enabledにチェックを入れてください。UE4の再起動を要求されるので、再起動してください。

なんかここの所にDatasmithという項目ができてるので、クリックすると、インポートするdatasmithファイルを選択するダイアログが表示されるので、さっき3ds Maxで保存したudatasmithファイルを選択します。

うわ、読み込まれたけど画面が真っ白です。

画面が真っ白なのは3ds Maxのファイルの中のライトがまぶしすぎるせいなので、一旦それらを非表示にします。

おもちゃ達が表示されました!やった!

ただし、例によって完全再現はできてないようです。積み木が黒地になってしまってるものがありますね。(本来は木目)

多少調整は必要そうですが、一発で3ds Maxのデータをそのままインポートできましたね。

ちなみに3ds Max上ではこんな風にすごいややこしいマテリアルが組まれていました。

これをDatasmithはどういう風に変換してくれたのかというと、

こんな風にゴリッゴリにブループリントに変換してくれてます。本来なら手作業で苦労してやんなきゃいけなかったマテリアル変換作業、Datasmithのおかげで一発自動変換です。ありがてえ。

「もっとシンプルなマテリアルにしてほしい」という場合は、この後”マテリアルのマージ”とかでマテリアルを単純化できます。

3ds Max→udatasmith変換の自動化

大量に3ds Maxのファイルが手元にある場合、一つ一つudatasmithに変換するのも面倒です。

3ds Maxではmax scriptというスクリプト言語を使って処理を自動化できます。

というわけで、指定したフォルダ内の3ds maxファイルを順番に読み込んでudatasmithファイルに保存するmax scriptを用意しました。

https://gist.github.com/umiyuki/9a5ff7098a02db73e9f7c87a10cec103

使い方を紹介します。とりあえず上のリンクからスクリプトの内容をコピーしてテキストエディタに貼り付けてください。
そしてスクリプトの6行目のファイルパスの所を、自分のPCの変換したいmaxファイルが詰め込まれてるフォルダに書き換えます。
そうしたらexportdatasmith.msという名前で適当な場所に保存してください。

次に、3ds Maxを開いてスクリプト→スクリプトを起動を選択して、保存したexportdatasmith.msを選択します。

あとは自動で処理してくれます。フォルダ内のmaxファイルが一つずつ読み込まれ、同じフォルダにudatasmithファイルとして保存されます。

便利!

UE4での自動化は?

ここまで来たらUE4でudatasmithを読み込んでUnity用にFBXファイルとしてエクスポートする作業とかも自動化したいですよね?

ですが、残念ながらまだそこは手を付けられてません。もし誰か作ったらやり方教えてください。

とりあえず今は参考になりそうなリンクを貼るだけにとどめます。

https://forums.unrealengine.com/unreal-engine/unreal-studio/1525119-batch-translate-solidworks-headlessly-via-python