glTF ExporterでUnreal EngineからglTFデータ・glbデータをエクスポートする方法
はじめに
Uneral Engineは、主にゲーム向けのリアルタイム3D制作ツールになります。最近はゲームだけでなく、映像制作や建築にも使われるようになってきました。
最近はメタバースブームもあり、Web上での3D制作の需要が増えつつあります。Web上の3D制作ではglTF形式の3Dモデルを扱うことが多いです。
しかし、Unreal EngineにはデフォルトではglTF形式のエクスポート機能を持っていません。行うためにはglTF Exporterなどの外部プラグインを使用する必要があります。
この記事では、glTF Exporterの使い方を中心に
- Unreal Engineの準備
- glTF Exporterのインストールの仕方
- glTF Exporterの使い方
- レベル全体をエクスポート
- レベルから選択したアセットをエクスポート
- コンテンツブラウザのアセットをエクスポート
- glTF Export Optionsで確認する項目
- 実際にエクスポートしたglTF形式のデータの確認の仕方
についてご紹介します。
Unreal Engineが初めての方にもわかりやすい説明を心がけます。
用語説明・glTFデータとglbデータ
glTFデータ、glbデータは、3Dデータのjpg形式と呼ばれるほど、どのソフトでも利用ができるほか、sketchfabやパソコンでも3Dデータにしっかりマテリアルがくっついた状態でデータも見ることができるデータ形式です。
用途としては、Webブラウザ上で3Dモデルを扱う際に用いられるよく使われるフォーマットです。
glbデータはglTFのバイナリ形式であり、テクスチャを外部ファイルを参照することなく同梱することができます。
Unreal Engineの準備
Unreal EngineはEpic Games Launcherというアプリからインストールします。
こちらから取得します。
glTF Exporterを使用できるバージョンは4.25~4.27になります。
UE5では2022年4月現在では使用できないので、バージョン4.27を使用しましょう。
glTF Exporterのインストールの仕方
Unreal Engineではマーケットプレイスから外部Pluginをインストールすることができます。
こちらにアクセスし
- ランチャーで開く
- エンジンにインストールする
- 4.27など、自分が使用しているバージョンを選択
でインストールしましょう。
ボタンを押したら[ライブラリ]のタブからインストールされている確認しましょう。
glTF Exporterプラグインを有効にする
では、glTF書き出ししたいプロジェクトを開きましょう。
Unreal Engineではプロジェクトごとに使用するPluginを有効する必要があります。
メニューバーの[Edit]>[Plugins]を選択し、Pluginsウィンドウを開きます。
ALLを選択し、検索窓で「glTF」で検索し、
- glTF Exporter
- glTF Importer (glTFのimportが必要ならば)
の Enabledをチェックして Unreal Engineを再起動します。
glTF Exporterの使い方
では、glTF形式で出力しましょう。2つの使い方があります。
- レベル全体(UnityでいうScene)のアセットを出力
- 選択したアセットのみ出力
レベル全体(UnityでいうScene)のアセットを出力
まず、出力したいレベルを開きます。
そこから、メニューバーから[File]>[Export All]をクリックします。
ファイルの種類でglTFまたはglbを選択します。
今回は1つのファイルにまとまって欲しいのでglbを選択しました。
すると、[glTF Export Options]ウィンドウが開きます。
このまま何も設定を変えずにExportしてもよいのですが、よく触る設定を共有します。
選択したアセットをglTFにエクスポートする
シーン全体ではなく、一部をエクスポートしたいときもあります。
例えば、この机と椅子と小物をワンセットでglTFエクスポートしたいとしましょう。
そのためには
- エクスポートしたいActor (UnityでいうGameObject)を選択する
- [File]>[Export Selected]を選択する。
あとは先ほどの手順と同じでエクスポートできます!
コンテンツブラウザからglTFにエクスポートする
Unreal EngineのコンテンツブラウザはUnityでのProjectブラウザに当たります。
エクスポートしたいアセットを選択し [右クリック]>[Asset Actions]>[Export] を選択します。
glTF Export Optionsで確認する項目
基本方針は、データサイズを軽くするために、不要な項目は入れない、不必要にデータサイズを大きくしない、といった方針が妥当だと思います。
特にWebブラウザ上の表現を行う場合はデータサイズやテクスチャサイズなどに気を付けましょう。
- General
-
Export Uniform Scale
- デフォルトでは0.01で問題ないが、Scaleが違う場合は調整する
-
Export Uniform Scale
- Material
-
Default Material Bake Size
- Webに活用する場合は適切にサイズダウンした方がいいと思っています。
- WebARの場合、全体ファイルサイズを10MB程度目安
- Webに活用する場合は適切にサイズダウンした方がいいと思っています。
-
Default Material Bake Size
- Mesh
-
Default Level Of Detail
- LODの設定をしている場合確認する
-
Default Level Of Detail
- Scene
-
Export ○○
- 含めたくないものにチェックが入っていないか確認します。
-
Export ○○
実際にエクスポートしたglTF形式のデータの確認の仕方
エクスポートしても、どんな見た目かすぐにはわかりません。
Viewerと呼ばれるWebサイトやアプリを使うことで確認することができます。
例えば
など、私は使用しています。
試しに Babylon.js Sandboxを開き、ドラッグ&ドロップすると以下のように表示されます。
レベル全体をエクスポートしたデータはこちら。
部分的にエクスポートしたデータはこちら。
ちなみにglTF形式の場合、このように複数のファイルが生成されるのですが
- gltfファイル
- .binファイル
- Textureファイル群
をすべて、ドラッグ&ドロップすることでViewerで見ることができます。
注意点・今後の課題
Unreal Engineを使っている人にとっては便利な機能なのですが、時と場合によりエラーが発生する場合があります。
例えば、今回のデータでも"VALUE_NOT_IN_RANGE"といったエラーが出ています。これはUnreal Engineのパラメータの範囲とglTFが定めているパラメータの範囲が違うために起きるエラーです。
このようなエラーの対応に対しては今後調査していきます。
{
"uri": "Desk.glb",
"mimeType": "model/gltf-binary",
"validatorVersion": "2.0.0-dev.3.5",
"validatedAt": "2022-04-27T10:27:07.352Z",
"issues": {
"numErrors": 3,
"numWarnings": 0,
"numInfos": 9,
"numHints": 0,
"messages": [
{
"code": "VALUE_NOT_IN_RANGE",
"message": "Value 2 is out of range.",
"severity": 0,
"pointer": "/materials/0/emissiveFactor/0"
},
{
"code": "VALUE_NOT_IN_RANGE",
"message": "Value 2 is out of range.",
"severity": 0,
"pointer": "/materials/0/emissiveFactor/1"
},
{
"code": "VALUE_NOT_IN_RANGE",
"message": "Value 2 is out of range.",
"severity": 0,
"pointer": "/materials/0/emissiveFactor/2"
},
...
Discussion