アセット機能 その2 基本的なアマレコVR用アセットの作成
Unityのインストールについてはこちらを見てください。
使用するUinityのバージョン 2021.1.1f1
1.新規プロジェクトの作成
Unity Hubの左側で「プロジェクト」を選択して 右上の「新しいプロジェクト」をクリックします。

プロジェクトの作成画面が表示されますので、最初にUnity Editorのバージョンから「2021.1.1f1」を選択します。

左側で「全てのテンプレート」を選択
中央で「3D」を選択
右側のプロジェクト名は任意ですが ここでは「asset_projects」としました
プロジェクトファイルの保存先を設定して「プロジェクトを作成」をクリックしたら完了です。

数分待つと 照明とカメラだけが配置されたUnity Editorが起動します。

2.プロジェクトの設定
ツールバーの「Edit」から「Project Settings」を選択して設定画面を表示します。
設定画面の左側で「Player」を選択し 右側のPlayer設定画面でAndroidのタブを選択します。
※ このタブでWindows等を選択していると いくら設定してもアンドロイドの設定ができていないため うまくいきません。確実にアンドロイドを選択してください。

■設定箇所
(1) Color Space
「Gamma」から「Linear」へ変更します。
Gammaでも使えますが 明るいとか白っぽい(安っぽい)印象になってしまいます。

Color Space以外は初期値でとりあえず機能すると思いますが 一応全体を記載します。また、アマレコVR本体の設定例も記載します。

3.Asset Bundle Browserのインストール
つづいて、アセットファイルを作成するのに必要なAsset Bundle Browserをプロジェクトへインストールします。
Unityのマニュアルに従ってインストールしますが、私のところでは「5.Add (追加) をクリックします」のところで 「https://github.com/Unity-Technologies/AssetBundles-Browser.git」がエラーとなるため 以下のように手動でインストールしました。
(1) ダウンロードサイトへアクセス
Microsoft Edge等でダウンロードサイトを表示します。
(2) ダウンロード
緑の「Code」から「Download.zip」をクリックしてインストールに必要なファイルをダウンロードします。

(3) 解凍
ダウンロードした「AssetBundles-Browser-master.zip」を解凍します。
(4) インストール
Unityのツールバーの「Window」から「Package Manager」を選択し Package Managerの左上にある「+」から「Add package form disk」を選択します。

先ほど解凍したフォルダにある「package.json」を選択します。

以上で Asset Bundle Browserがインストールされ Unityのツールバーの「Window」へ「AssetBundle Browser」が追加されます。
Asset Bundle Browserは新しいプロジェクトを作成する度にインストールする必要がありますので、解凍したファイルは分かりやすい場所に残しておくことをお勧めします。

4.アセットファイルの作成
【アセットファイル作成の手順】
(1) アセット化したいファイルをダウンロード(Unity用のシーン、プレハブ、FBX等の3Dモデルなど)
(2) Assetsフォルダへコピー(圧縮されている場合は 解凍したものをコピー)
(3) Unityで (2)をヒエラルキーへドロップしてゲームオブジェクトにする
(4) ゲームオブジェクトをAssetsフォルダへドロップしてプレハブ化する
(5) プレハブ化したものを Asset Bundle Browserへ登録
(6) アセットファイルを Build
(7) 拡張子「assetbundle」をつけて QuestのDownload¥assetフォルダへ転送
(8) アマレコVRで確認
(1) アセット化したいファイルをダウンロード
アセットファイルにしたい3Dモデルなどをダウンロードします。
ここでは私が公開したasset_sample_cube20230505.zipを例に説明します。
ダウンロードページ
私が公開するもの以外でもUnity用のシーンファイルやプレハブファイル、一般的な3DモデルファイルのFBXなどをアセットファイルにすることができます。
さらにUnityの機能を拡張すれば 様々な形式の3DモデルをUnityへ読み込んで アセット化することができます。
(2) Assetsフォルダへコピー
「asset_sample_cube20230505.zip」を解凍してできるプレハブファイル 「Sample_Cube.prefab」をasset_projects\Assetsフォルダへコピーします。

(3) Unityで ゲームオブジェクトにする
Unityを起動して画面下部にあるAssetsから(2)でコピーした 「Sample_Cube.prefab」を選択して ヒエラルキーへドロップします。
既にUnityが起動していてコピーしたプレハブが表示されない場合は Assetsフォルダを指定し右クリックのメニューから「Refresh」することでコピーしたファイルが現れます。

ヒエラルキーへドロップすると自動的にゲームオブジェクトが作成されます。
ゲームオブジェクトの名前がプレハブと同じままだと わかり難いので「Sample_Cube」から 「Test_Cube」に変更します。

作成されたゲームオブジェクトはシーンビューなどで確認できます。
ここで照明を加えたり、全体の向きを調整したりできます。
なにより今回のようにピンクになっている場合は シェーダーに異常があるので修正すべきですが、今回はこのまま次の手順へ進みます。
※ 修正方法は「アセット機能 その3 ピンクになるモデルの修正作業」を参照してください。
(4) ゲームオブジェクトをAssetsフォルダへドロップしてプレハブ化する
作成したゲームオブジェクトを 画面下部のAssetsフォルダへドロップすると新しいプレハブ「Test_Cube.prefab」が作成されます。

この時 オリジナルのプレハブを作るのか 変更箇所を管理したプレハブを作るか問われます。
今回はオリジナルのプレハブを選択します。

(5) プレハブ化したものを Asset Bundle Browserへ登録
Unityのツールバーの「Window」から「AssetBundle Browser」を表示します。
AssetBundle Browserの「Configure」を選択した状態で Assetsフォルダから「Test_Cube.prefab」をドラッグし AssetBundle Browserのウインドウ上でドロップします。

(6) アセットファイルを Build
AssetBundle Browserの「Build」を選択し、Build Targetを「Android」とします。
最後に下部にあるBuildボタンを押したら アセットファイルが作成されます。

(7) 拡張子「assetbundle」をつけて QuestのDownload¥assetフォルダへ転送
アセットファイルはプロジェクトのasset_projects\AssetBundles\Androidフォルダに作成されます。
プレハブと同じ名前で拡張子の無いファイル「test_cube」がアセットファイルです。

test_cubeへ拡張子をつけて「test_cube.assetbundle」とします。
続いて QuestとPCをUSBケーブルで接続し Quest内のDownloadフォルダへ「asset」フォルダを作成します。

「test_cube.assetbundle」を「asset」フォルダへ転送します。

(8) アマレコVRで確認
QuestでアマレコVRを起動し、アセット画面を表示します。

アセット画面からtest_cubeを選択して ピンクの立方体が表示されれば成功です。
表示される位置がHMDの下方1メートルの辺りなので、下の方を向くか、位置Zを調整して下さい。


【テスト方法】
なんどもアセットの修正、 ビルド、 アマレコVRで確認を繰り返す場合は アマレコVRサーバーからアセットファイルを使う方法 をお勧めします。
5.トラブルシューティング
■「対応していないか 既に読み込んでいる」と表示される
アセットファイルを読み込むとき「対応していないか 既に読み込んでいる」と表示されて読み込めない場合は
アセットファイルを作成しているUnityのバージョンが合っていない可能性が高いです。
2021.1.1f1で作成してください。
また、Android用のアセットでない場合や、同じIDのリソースが既に読み込まれている場合にこのメッセージが表示されます。
■色がおかしい(明るい)
Project Settingsの「Player」のColor Spaceが合っていない。
・「Linear」にする
■照明が反映されない
Project Settingsの「Player」のGraphics APIが合っていない。
・「Auto Graphics API」をOFFにする
・「Graphics APIs」リストを「OpenGLES3」だけにする(Vulkanを削除する)
・「Require ES3.2」をONにする
■normal mapが適用されない(テクスチャの表面がまっ平)
Project Settingsの「Player」のGraphics APIが合っていない。
・「Auto Graphics API」をOFFにする
・「Graphics APIs」リストを「OpenGLES3」だけにする(Vulkanを削除する)
・「Require ES3.2」をONにする
■立体視がおかしい(左右の表示位置がおかしい、片目で見れば正常に見える)
XR Pluginを使う場合は「Stereo Rendering Mode」を「Multi Pass」にしてください。
Oculusの場合を例にすると Project Settingsの「XR Plug-in Management」の「Oculus」にある「Stereo Rendering Mode」が「Multi Pass」になっていないと
アマレコVRのレンダリング位置と アセットのレンダリング位置が合わず 立体視に支障がでます。
■ピンクになる
非対応のシェーダーが使われていると アマレコVR内でピンクになります。
スタンダードシェーダーにすることでとりあえず表示できます。
Sample_Cubeはマテリアルを指定していないためピンクになります。新しいマテリアルを作成しゲームオブジェクトへ割り当てることで改善されます。
■非常に重い(カクカク動く) アマレコVRが落ちる
ポリゴン数が多すぎたり、テクスチャで大量のメモリを消費するとまともに動作しません。
Meta Questはコンピュータ的には非常に低スペックです。
PC向けのアセットをそのままQuestで使おうとするとまともに動かない場合があります。
ポリゴン数を減らしたり テクスチャのサイズを縮小してメモリを節約するなどの調整が必要です。