
text:
Hiroki Tanaka
Unityは、アメリカ発のゲームエンジンでしたが、今では建築分野をはじめとした多くの分野で利用がされています。単純に3Dデータを作成できるだけでなく、アニメーションを付けたり、重力による変形や水の流れなどのシミレーションにも活用されるなど、商業分野だけでなく研究や教育など、これからされに利用が広がること間違いないソフトウェアといえるでしょう。
以前、unityからglbデータを出力する方法を取り上げましたが、新たな出力方法が生まれ、更新されたため、最新版の情報をお届けします!
Unityとは?

Unityとは、ゲームエンジンとして提供されているサービスですが、近年ではUnityReflectなどのサービスも追加されますます活用が広まっているソフトウェアです。
無料の教育版や10万ドルまでの売り上げであれば使用料を支払わなくても利用ができるなど、個人事業主や小規模事業者、学生にとっても使いやすいサービスとなっています。
顧客醸成につながらない施策にお困りですか? V-airならサービスの魅力が伝わるメタバース空間を 提供!
⇒V-airの資料を見てみたい
glbデータ・gltfデータとは

glbデータ、gltfデータは、3Dデータのjpg形式と呼ばれるほど、どのソフトでも利用ができるほか、sketchfabやパソコンでも3Dデータにしっかりマテリアルがくっついた状態でデータも見ることができるデータ形式です。
弊社で提供しているSNSである7kakeでも、3Dデータのシェア機能の搭載を行っていますが、使用できるデータはglbデータ・gltfデータとしています。
iphone12にLidar機能が付くなど、現在のjpgデータのように、3Dデータが普及する際には、このglbデータやgltfデータ形式が広く使われていくと考えられます。
顧客醸成に新しい手段を! 空間デザインに優れた建築デザイナーによる設計で、サービスの魅力が伝わるメタバース空間を提供
⇒資料のダウンロードはこちらから
Unityでglbデータ・gltfデータを作成する方法
unityからglbデータを出力する方法はいくつかありますが、今回ご紹介するのは、次の二つです。
- unigltfで手軽にglbデータを出力する方法
- KhronosGroup/UnityGLTFで高クオリティなデータを出力する方法
一つ目の方法は、unitypackageを用いた手軽な方法です。まだunityになれていない方や、とりあえず形を確認したいなどglbデータのマテリアルに対して高いクオリティを求めない場合の出力にお勧めです。
二つ目の方法は、マテリアルも正確に出力され、かなり高クオリティなglbデータを出力することができます。アート作品などを出力する際におすすめです。一方で、Serializationのビルドを必要とするため、使えるようにするための難易度は少し高めです。
unigltfで手軽にglbデータを出力する方法
Unityでデフォルトの機能ではついていない機能を付けたいときは、Unitypackageを用いて追加機能を付けることが一般的ですが、unigltfを用いてglbデータ、gltfデータを出力する際もそのためのUnitypackageを用います。
そのため、比較的容易に設定をすることができます。
unigltfを用いたデータの出力方法は、以下の記事にまとめられていますので、次の記事をご確認ください。
KhronosGroup/UnityGLTFで高クオリティなデータを出力する方法
UnityGLTFはGLTFデータGLBデータの出力をサポートするプラグインを数多く開発しているKhronosGroupが開発したUnity専用のGLTFデータ出力用プラグインです。
今回は、以下の記事を参照に、弊社で独自に調べた情報も追加して、ダウンロードの仕方から利用できる状態までの設定方法をご紹介します。
参照した記事はこちら
KhronosGroup/UnityGLTFでglbファイルの読み込みを試す – MRが楽しい (hatenablog.com)
今回ご紹介する方法は次の手順で行います。
手順1:UniGLTFをダウンロード

Khronos Group
UnityGLTF
まず以下のリンクから、GitHubのダウンロードページに移ります。
GitHub – KhronosGroup/UnityGLTF: Runtime GLTF Loader for Unity3D
ダウンロードページでは、次の画像のように、GitHubからzipファイルをダウンロードすることができます。

ダウンロードしたZipファイルは好きなフォルダーに展開しましょう。
この後、展開したファイルがUnityのプロジェクトファイルとなるので、Unityのプロジェクトファイルを保存しているフォルダーに展開することがお勧めです。

手順2:UnityをUnitygltfの対応バージョンに変更する
2021/08/01現在 Unity 2018 以降のバージョンでのみメンテナンス/サポートされています。今回動作の確認をしたのは、2019.4.11fと2019.3.86LTSで動作確認を行いました。
バージョン変更を行うときの注意点
Unitygltfをプロジェクトとして開く際に、最初に開く際は2018年バージョンでのみ開けることが確認できています。今回は、2018.4.36f1で最初に開くことができました。
一度、2018年のバージョンで開いてから、そのあとバージョンの変更を行うことで2018年以降のバージョンでもUnitygltfを利用することができます。
Unityのバージョン変更は、unity hubを使った方法が、最も早く確実な方法であるといえます。
Unityが出している次の記事から、unityのバージョンを変更する方法を知ることができますので、2019.4~のunityのバージョンでない方は参考にして、変更してみてください。
https://create.unity3d.com/jp-howoto-update-win
また、すでにUnityの2019.4バージョンを持っている人は、次の画像のようにunity hubから簡単に変更もできます。

Unity Hubを使わずに、もしくはすでに開いてしまったunityプロジェクトの中でバージョンを変更する方法もunityが提示しています。次の記事から確認できますので、必要な方は行ってみてください。
https://docs.unity3d.com/ja/2019.4/Manual/upm-ui-update.html
手順3:GLTFSerializationのビルドする
UnityGLTFを利用するうえでの懸念点を一つ上げるとすると、このビルドを必要とする点です。この手順の難易度が高く、なれていない人には難しいと思います。
なるべくわかりやすく記述するよう心掛けましたので、ゆっくりと手順を踏んで設定をしてみてください。
1.GLTFSerialization.sln を開く
まず、ダウンロードしたUnityGLTFファイルの中にある、GLTFSerialization ディレクトリ下の(フォルダーの中にある )GLTFSerialization.sln を開きます。
似たようなファイル名のデータが入っているのでどこのフォルダーに入っているファイルなのか注意して下さい。
※GLTFSerializer は Unity アセットモデルのシリアライズと GLTF アセットのシリアライズを行うための C#DLL です。

2.ソルーションのバージョンを変更する
ソルーションファイルを開くと次のようなダイアログが環境によっては出てきます。ここで、以下の画像のようにバージョンは2004のものを選びましょう。

上記のようなダイアログが出てこず、バージョンがわからないときは、次のようにGLTFSerializationUWPTests プロジェクトを右クリックして[プロパティ]を開くと確認できます。

3.構成マネージャーの編集
ここまできて初めてビルドの開始ができます。
まずは、ソリューションの構成を Release ビルドに切り替えます。

次に、UWP のビルドを通すため、GLTFSerializationUWPTests プロジェクトの構成を一部変更します。
メニューから ビルド -> 構成マネージャー を開きます。

構成マネージャーを開くと次のようなダイアログが出てきます。
ここで、GLTFSerializationUWPTests のプラットフォームのみ、[ARM]に変更します。

この設定までできた時点で、初めてビルドを開始する準備が整います。
4.ビルドの開始
これまでの手順を踏んで最後にビルドができます。では、ビルドを行っていきましょう!
メニューから ビルド -> ソリューションのリビルド を実行します。

ビルドが完了すると、次のような画面となります。
四つのビルドが完了していれば、めでたくビルドの作業は完了です。

また、この時、以下のようなエラーが出ていても問題はありません。

GLTFSerializationUWPTests ビルドが成功すると、UnityGLTF/Assets/UnityGLTF/Runtime/Plugins 配下にプラグイン類が出力されます。

手順4:UnityGLTFプロジェクトの実行
プラグインの出力が完了したら、UnityGLTFを利用するために、UnityGLTFプロジェクトをUnityで開きます。
UnityGLTF のフォルダを指定して Unity プロジェクトを開きます。
※この時、2018年のバージョンで開くことに注意してください
Unityプロジェクトを開くには、
UnityHubを開き、リストに追加をクリック
UnityGLTF~masterのディレクトリ下にあるUnityGLTFを選択し、開きます。

Unity 2018.4.20f1 を使用して、リストに追加すると次の画像のようになります。

手順5:UnityGLTFを用いてglbデータを出力する
メニューバーで、GLTFを選択し、glbデータで出力したいオブジェクトを選択することで、データを出力できます。
今回のテストでは、タイリングも正確に出力することができました。

空間デザインに優れた建築デザイナーによる設計でサービスの魅力が伝わるメタバース空間を提供! V-airで顧客醸成につながらない施策を解決!
⇒V-airの資料を見てみたい

メタテルで理想のメタバースを構築しよう!
新しいオンラインコミュニケーションツールであるメタバースをご活用企業様の思い通りに、UI、空間、機能をカスタマイズできるシステムです。マーケティング、採用でのメタバース活用に最適なツールとなっています。
サービス詳細