アルファ付きVR動画作成ツール rvm_alpha公開
RVMはAIを使って画像内の人物を抽出できるので それをアルファ画像とし魚眼VR動画の端に書き込みます。
Robust Video Matting公式サイト

アルファ付き動画は私が公開しているMeta Quest版 アマレコVRで利用できます。
VR動画の人物のみを残し パススルー映像やほかの動画と合成することができます。
【主な内容】
・通常のVR動画からアルファ付き動画またはグリーンバック動画の作成
・連番PNGファイルからアルファ付き動画の作成
・オーディオストリームのコピー
・バッチファイルへ動画をD&Dするだけで利用可能
・4KのVR動画に対し GTX1080で15fps、RTX4090で30fps程度の処理能力
【動作条件】
・Windows10,Windows11
・4GB以上のnVIDIA製ビデオカード
・Python 3.11.4
1.インストール
1.1.実行に必要なもの
rvm_alpha.zipをダウンロードし解凍してできるフォルダへ 次のファイルをコピーしてください
ダウンロードページ
■RVM公式サイトから次の2つ
・modelフォルダ一式
・rvm_mobilenetv3.pth


■ffmpegから2つ
・ffmpeg.exe
・ffprobe.exe
https://github.com/GyanD/codexffmpeg/releases/tag/2020-12-20-git-ab6a56773f
ffmpeg-2020-12-20-git-ab6a56773f-full_build.zip
全てコピーするとこうなります

1.2.Pythonのインストール
このツールはPython用のスクリプトになっていますので、Pythonをインストールしていない場合はPython公式サイトからダウンロードしてインストールしてください。
・python-3.11.4-amd64.exe

※ AppStore版も使えますがAppStore版は若干遅いようなのでデスクトップ版をお勧めします。
インストール画面ではカスタマイズを選択し Pythonへパスを通すオプションをONにしてください。


インストールが終わったらPCを再起動します(再起動しないとパス設定が有効にならない)。
Windows PowerShellを起動してPythonが使えることを確認します。Pythonから抜けるには[Ctrl] + [Z]。

※ AppStoreのPythonのページが表示されるようなら パスの設定ができていません。
インストーラーで修復か再インストールしてください。
1.3.実行するのに必要なPythonモジュールをインストール
rvm_alpha同梱のmodule_install.batをWindows PowerShellで実行してください。
最後にCUDAに対応したPyTorchをインストールします。
PyTorchの公式サイトから PCの環境等を選択するとインストールコマンドが表示されますのでコピーしてWindows PowerShellで実行します。
※ PyTorchは2GB程度あるので インストールに数分かかります。
すぐに終わってしまう場合は 既に別のPyTorchがインストールされていてCUDA版のインストールがキャンセルされています。
次のようにオプションを指定して 強制的に再インストールしてください
例
pip install --upgrade --force-reinstall torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu117
2.アンインストール
rvm_alphaにはアンインストールはありません。ダウンロードしたファイルを削除してください。
Pythonについては 本体をアインインストールしても 追加したモジュールファイルが数ギガバイト単位で残ります。
「python 完全にアンインストール」で検索して 必要に応じて残ったファイルの削除の仕方を調べてください。
3.使い方
drop here alpha.batへ動画ファイルをD&Dするとrvm_alphaフォルダへ アルファ付きの動画を作成します。
drop here green.batで背景を緑にした動画を作成します。
drop hear pngへpngの連番ファイルを保存したフォルダをD&Dすると アルファ付きの動画を作成します。
バッチファイルは デスクトップ等へショートカットを作って使うことができます。
[esc]キーで終了。[S]キーで現在処理している画像を確認できます。
4.注意事項
・アルファ付き動画は魚眼サイドバイサイドのVR動画専用です
・CPU処理も可能ですが遅すぎるので 実質CUDAで使って下さい

deviceの項目がcudaならCUDAを使って処理しています。cpuとなっていたら CUDAは使っていません。
5.主なエラー原因
・CUDAが使えない →ビデオカードのドライバーを最新のものにアップデートするなど
・ビデオメモリが足りない →4K動画を扱うなら4GB以上必要
・PyTorchでエラーがでる →CUDAに対応したPyTorchを強制再インストールする
・画像サイズが適合しない →4KやFHD、HDなどで使ってください
6.ダウンロード
ダウンロードページ
アマレコVR Ver2.4.1 クロマキーとアルファ付き動画
いずれも背景を透明にして ほかの動画やパススルー映像と組み合わせて使うことができます。
クロマキー映像およびアルファ付きVR動画はコンテンツがほぼ無いに等しいため優先度は低めでしたが、3Dゲームの動画作成機能やUnity、Blenderと言ったアプリケーションを使い個人でVR動画を作成するケースが増えてきているようなので今回の更新となりました。

アルファ付きVR動画の例
通常のVR動画として扱えますが、画像の隅にあるアルファ値(赤い部分)を使って登場人物だけを綺麗に抽出することができます。
【更新内容】
・クロマキー処理を刷新
・アルファ付きVR動画へ対応
・アセット機能へVR用のスクリーン追加
・アセット機能へ物理系のコンポーネント追加
・アセット機能へVisual Scriptingの基本的なUnit追加
・アセット機能のレンダリング範囲を10cm100mから3cm60mへ変更
・パススルーポータル機能を廃止
1.使い方

メイン画面設定の画像処理部が更新されています。
背景透過処理の「モヤっと」、「キリっと」、「幽霊」の変更はありません。
1.1.クロマキー
背景が緑や青などのいわゆる”クロマキー映像”の場合に使います。
今まではRobust Video Mattingのテスト用でしたが実際にクロマキー撮影した映像および、CG等のレンダリングした際のアンチエリアシングを想定し根本的に作り替えました。
簡単に扱えるようにできるだけ自動で処理し、綺麗にまとめることができたと思います。
使い方

画像処理をONにして、「クロマ」(クロマキーモード)を選択し、
閾値を10から30程度の範囲で調整して使って下さい。
一般的なクロマキー映像であれば閾値の調整だけで対応できると思います。
詳細な調整
閾値の調整だけでうまくいかない場合は以下のように調整してください。
(1) 最初に、閾値、色補正、輪郭すべて0にする。透明度補正はOFF。
(2) 閾値を少しずつ上げて 輪郭に少し背景色が残るように調整する。
10から30くらいが目安。
閾値は背景色がなくなるまで上げないこと。色補正や輪郭調整の余地が無くなってしまいます。
(3) 輪郭を少しずつ上げて 輪郭に乗った背景色が目立たないように調整する。
目安は1から20程度。
輪郭調整はアンチエリアシングのような効果がありますので 背景色が目立たない場合でも1以上に設定することをお勧めします。
(4) まだ、背景色が目立つ場合は色補正を少しずつ上げて調整する。
0から20程度が目安。
色補正を上げ過ぎると色味が変わってしまうので注意。
色補正をちょっと上げただけで色味が変わってしまう場合は 閾値が大きすぎます。
閾値を少し下げて 色補正の余地を確保してください。
各設定項目
■メニュー:背景色
具体的にどの色を透明にするかは画像解析により自動で設定されます。ここでは特定の色だけを処理するための条件を設定します。
ここで「赤」を選択したからと言って真っ赤な画素を透明にするわけではありません。
画像内で使われている赤成分の強い色の中から多く登場する具体的な色が選択され透明になります。それは青っぽい赤(紫系)かもしれないし、緑っぽい赤(黄色、オレンジ)かもしれません。
現在選択している具体的な色(解析結果)はメイン画面設定の左下に表示されています。
なお、クロマキー処理では黒背景や白背景には対応していません。それらは背景透過の幽霊モードを使って下さい。
・自動
特に制限を設けず画像内で多く使われている色を選択します。
水色や黄色なども選択されます。
白、黒、グレーなど色味が無いものは選択されません。
・赤、緑、青
それぞれの色に近いものが選択されます。
・青or緑
青または緑に近い色が選択されます。青と緑が混ざった水色は選択されません。
通常のクロマキー映像は人物と区別するために青背景または緑背景を使いますのでこの設定にしてください。
■閾値
背景色に近い画素を透明にする際、どこまで透明にするかの閾値を設定します。
■色補正
背景色に近い画素から 背景色の色成分を除きます(脱色)。
■輪郭
輪郭部をアンチエリアシングのように半透明にします。
また、背景色に近い場合は 色補正の設定に関わらず強く色補正されます。
■透明度補正
色補正の代わりに透明度を補正します。
実験用です。通常のクロマキー映像ではOFFにしてください。
1.2.アルファ付きVR動画
魚眼VR動画の隅にアルファ情報を記録した特殊なVR動画で使います。
使い方

コンソール画面でメインプレイヤーのVRフォーマットを魚眼・サイドバイサイドにし メイン画面設定で画像処理をON、「アルファ」(アルファモード)を選択してください。
通常、調整は不要です。
各設定項目
画像処理メニュー
画像処理メニューはありません。
■上限
アルファ値の上限を設定します。
下限から上限までの範囲を0(完全透明)から100(完全不透明)にマッピングします。
画像が半透明に透けてしまう場合に上限を下げて調整します。
下限より大きく設定してください。
【例】
下限30、上限94の場合は次のようになります。
記録されているアルファ値が0%から30%までを完全透明。
30%から94%を透明から不透明にリニア補完。
94%以上を完全不透明。
■下限
アルファ値の下限を設定します。
輪郭に背景が目立つ場合に下限を上げて調整します。
上限より小さく設定してください。
■輪郭
輪郭に背景が少し残ってしまう場合に調整します。
下限の調整を優先し、それでも残ってしまう場合に輪郭を調整してください。
0から10あたりで使ってください。
2.アセット機能
■VR用のスクリーン追加
VRスクリーン用に「#AMScreenVR」を追加しました。
既存の「#AMScreen」は動画のアスペクト比に応じてゲームオブジェクトのスケール値が変更されますが、
「#AMScreenVR」はスケール値を変更しません。
■物理系のコンポーネント追加
HingeJointなどを追加しました。
今後も随時コンポーネントを追加していきます。
■Visual Scriptingの基本的なUnit追加
ゲームオブジェクトの移動や三角関数、タイマーなど基本的なUnitを追加しました。
今後も随時追加していきます。
■レンダリング範囲変更
手前10cmから遠く100mだった範囲を3cmから60mへ変更しました。
ゲームオブジェクト(キャラクター)に近づくと消えてしまうので、なるべく近くまでレンダリングするように調整しました。
その代り、遠くが表示できなくなっています。
3.サンプル動画
サンプル動画は5秒程度と短いのでメインプレイヤーのリピートモードを「File」にして使ってください。
ダウンロード ページ
■毛の生えた鉄球
毛の生えた鉄球とキューブのサンプル動画です。
アルファモードにして クロマキー処理では難しい髪の毛などの複雑なケースでの効果を確認します。
アルファ付きVR動画でも輪郭部分がわずかに表示されてしまうので、背景は目立たないように暗くするのが望ましいです。

■花の種まくミュータント
背景付きのサンプル動画です。
アルファモードにすることで背景があっても登場人物だけ抽出することができます。
画像処理をOFFにすれば通常のVR動画として視聴できます。

足の部分の背景が明るくアルファモードにした際 輪郭が目立つので、下限を60あたりで調整します。
それでもわずかに残るので輪郭を10あたりで調整します。


左:調整前 上限94、下限30、輪郭0
右:調整後 上限94、下限60、輪郭10
4.アルファ付きVR動画の作成方法
魚眼、サイドバイサイドのVR動画へアルファマップを40%に縮小して 所定の位置の赤プレーンへ挿入します。
現状、自力でなんとかするか、海外の動画サイトのフォーラムでVR動画とアルファマップ動画を別々に用意して合成するツールが公開されています。
5.ダウンロード
ダウンロード ページ
サンプル動画
アマレコVR ダウンロードページ
■アマレコVR for Meta Quest
2023/7/15
アマレコVR Ver2.4.1 アルファ版 for Quest
記事
■アマレコVR for Pico4
2023/7/22
アマレコVR Ver2.4.1 アルファ版 for Pico4
記事
2022/12/26
アマレコVR Ver2.3.3 アルファ版 for Pico4
記事
■アマレコVRサーバー
2022/10/25
アマレコVRサーバー Ver2.21
記事
■アセットファイル
asset_sample_theater20230505.zip
動作確認用の映画館
asset_sample_cube20230505.zip
立方体1つだけの最小構成のアセットファイル
アセットファイルの作成が上手くできない場合に参考にしてください
asset_sample_pudding20230621.zip
物理処理のデモンストレーション
アセット機能 その6 物理処理
■プレハブ
asset_sample_theater_prefab20230602.zip
映画館のプレハブファイル
アセット機能 その4 映画館を作る
■その他
2023/7/15
sample_alpha_movie.zip
アルファ付きVR動画のサンプル
2023/8/12
rvm_alpha1_0_0.zip
アルファ付きVR動画作成ツール
記事
アセット機能 その6 物理処理
Unityの物理処理は重力による落下や、物体同士の衝突など 様々な目的で使用されますが、ここでは「やわらかいプリン」を手で触ったり、揺らしたり、持ち上げたりといったデモンストレーションをします。
1.使い方
(1) ダウンロードと転送
sample_pudding.zipをダウンロード。
解凍してできる 「sample_pudding.assetbundle」をQuestへ転送します。
ダウンロードページ
アセット機能の使い方
(2) スロット1
アマレコVRを起動し アセット画面からスロット1へ 「sample_pudding」をロードします。

初期状態だと 読み込んだプリンは重力で落下して すぐに見えなくなります。
(3) スロット1のプリンをテーブルに変える
sample_puddingにはプリンのほかに複数のアイテム(プレハブ)が含まれていますので、スロット1のアセットメニューから 「table」を選択します。

テーブルは重力で落下しないように設定されていますので、目の前に固定されます。

テーブルが視界内に見えない場合は 位置と向きをリセットしてください。
また、環境光と平行光もONにしてください。OFFだと全て真っ黒になり視認できない場合があります。
(4) スロット2
続いてスロット2も sample_puddingをロードします。
こんどはテーブルがあるのでプリンはテーブルの上にとどまります。

(5) 手で触る
アマレコVRのコンソール画面の下部から ハントラの表示をONにします。

ハンドトラッキングの手が表示されたら プリンを触ったり動かしたり、ひっくり返すことができます。
手が表示されない場合は Quest側のハンドトラッキング機能が無効になっているので Quest側の設定を行ってください。
(6) そのほか
・落下してしまったプリンは アセット画面のリロードから復活させることができます。
・カスタードプリンは回転(ひっくり返る)します。持ち上げるにはひっくり返らないよう両手で支える必要があります。
・ノーマルプリンは回転しません。回転しないので指先一つで持ち上げることができます。
・テーブル ムーブはテーブルが上下に動きます。テーブルの動きにより プリンが揺れます。
・無理な力を加えるとプリンは壊れます。リロードしてください。
2.プリンの作り方
アセットファイルのほかにプレハブ等、アセットの作成に必要なファイルを同梱していますので興味がありましたら以下を確認してみてください。

2.1.プリンの3Dモデル(FBX形式)を作る
Blenderを使って主に以下のように作りましたが、FBXファイル(Resources/pudding.fbx)を同梱するので詳細は割愛します。
(1) メッシュの円柱を追加する
(2) 円柱をプリンのような台形に変形させる
(3) 縦の辺を4つに細分化する
(4) アーマチュアを設定する
(5) FBX形式でエクスポートする
2.2.Unityエディタでプリンの3Dモデルへ物理処理を仕込む
アーマチュア内の各Boneへ 物理処理の基本となる「Rigidbody」、当たり判定のための「Box Collider」、各Rigidbodyを繋ぐ「Configurable Joint」を追加します。
一通り設定したプレハブがResources/Pudding.prefabとなりますのでUnityエディタで確認してみてください。

※ Jointには様々な種類が用意されていますが、現時点のアマレコVRで使えるのは「Configurable Joint」のみです。
2.3.プリンと カスタードプリン
ノーマルのプリンは回転しないように(ひっくり返ったり、斜めになったりしないように) 基礎となるBoneのRigidbodyの「Constraints」で回転凍結をONにしています。
これにより 基礎となるBoneが回転しなくなります(斜めに傾いたりしません)。
なお、そのほかのBone.xxxの回転凍結はOFFとします。なので斜めに揺れたりします。

一方、カスタードプリンの回転凍結はOFFとなっています。この場合 物理処理によりBoneが回転し 全体がひっくり返ったりします。

2.4.テーブルを作る
Unityエディタの3Dオブジェクトのキューブへ「Rigidbody」と「Box Collider」を追加して作ります。
一通り設定したプレハブがResources/Table.prefabとなりますのでUnityエディタで確認してみてください。
2.5.動くテーブル
Unityのアニメーション機能でトランスフォームのPositionを上下に動かします。
アニメーションファイルがResources/move_anim.animです。
ゲームオブジェクトからアニメーションを管理するコントローラーがResources/move_controller.controllerです。
テーブルのゲームオブジェクトへコントローラー「Resources/move_controller.controller」を追加することで上下に動きます。
最終的な動くテーブルのプレハブはTable_Move.prefabとなります。
3.アセットの作成(複数のプレハブ)
ここでは複数のプレハブをまとめて 一つのアセットファイルにする方法を説明します。
キャラクターの色違いや服の違い、髪型の違いなど同じキャラクターだけどバリエーションがある場合などに有効です。
(1) 新しいアセットを作る
Unityのツールバーの「Window」から「AssetBundle Browser」を表示します。
AssetBundle Browserが無い場合は「アセット機能 その2 基本的なアマレコVR用アセットの作成」を見てください。
「Configure」タブを選択し右クリックのメニューから「Add new bundle」を選択します。

(2) 名前を sample_puddingにする

(3) アセット構成リストへプレハブを追加する
アセットファイルへ加えたいプレハブファイルを「AssetBundle Browser」の右側のリストへドラッグ&ドロップし追加します。

以下のように プレハブ4つと その構成要素が一つのリストになっていればOKです。

(5) ビルド
ビルドの仕方は「アセット機能 その2 基本的なアマレコVR用アセットの作成」を見てください。
【テスト方法】
なんどもアセットの修正、 ビルド、 アマレコVRで確認を繰り返す場合は アマレコVRサーバーからアセットファイルを使う方法 をお勧めします。
(6) アマレコVRからプレハブを読み込む
アマレコVRのアセット画面でアセットファイルをロードした後、右側のアセットメニューから アセットファイルに含まれているプレハブを選択できます。

アセット機能 その5 スクリーンオブジェクトとVR動画
また、VR動画とアセット機能についても紹介します。
1.スクリーンオブジェクト
基本は3DオブジェクトのQuadを使って平面スクリーンとして使いますが、キューブやシリンダーなど立体的なオブジェクトを使うことも可能です。
また、Blenderなどを使って(私はUVマップの兼ね合いでShade 3Dを使いました)VR用のスクリーンを作ってUnityへ読み込みアセットにすればアマレコVRが対応しないVR形式の視聴も可能となります。


ただし、動画のアスペクト比に応じて アマレコVR側がスクリーンオブジェクトのスケール値を変えてしまうので 立体的なオブジェクトの場合は対策が必要です。
例えば、スケールが(1,1,1)で正常に表示される3Dオブジェクトへ16:9の動画を表示すると、スケールは(16/9,1,1)に書き換えられ 3Dオブジェクトが横に延ばされてしまいます。
対策として空のゲームオブジェクトを用意して そのスケールを(9/16,1,1)とし、 その中に名前を「#AMScreen」とした3Dオブジェクトを入れて スケールを(16/9,1,1)にします。

これで、16:9の動画を再生すると 2つのゲームオブジェクトのスケール値が掛け合わさり (1,1,1)で3Dオブジェクトが表示されます。
2.VR動画とアセット機能
アセットでVR動画用のスクリーンも 作れることを紹介しましたが、通常のVR動画であればアセット内のスクリーンオブジェクトは不要です。
3rdプレイヤーで再生するだけで、アセットで作った3DオブジェクトとVR動画の合成が可能です。
簡易的にはsample_theaterを読み込んで、サブプレイヤーをファイル画面から停止(スクリーンオブジェクトが消える)し、3rdプレイヤーでVR動画を再生することで体験できます。
このとき、主観映像などで近くの被写体を見るような映像はアセットの視差と合わず まともに視聴できません。
10mくらい先を見渡すような屋外撮影のVR映像でお試しください。
応用としては、昨年末にAbemaTVが実施したサッカーワールドカップのVR中継アプリのようなことが可能です。
サッカーのVR映像とスタジアムや観客席のアセットを用意し、3rdプレイヤーでサッカーの動画を再生、3Dオブジェクトで作られた観客席のアセットを読み込むといった感じです。

参考記事 AV Watch
PICO 4でワールドカップ決勝を見よ! “スタジアムの貴賓席”で見る感動
アセット機能 その4 映画館を作る
プレハブを用意しましたので、作るというより一つ一つの構成要素を確認する感じになります。
確認した後、座席数を調整したり、好みの3Dオブジェクトへ差し替えるなどして 自分なりの映画館に作り変えて楽しんでいただければと思います。
前半はプレハブをダウンロードしてアセットファイルを作るところまでを説明します。
後半は映画館の構成要素を説明します。
Unityの使い方やアセットファイルの作り方を理解されている方は 後半だけ見てください。
1.映画館の作り方 前半:ダウンロードからビルドまで
(1) プロジェクトの準備
最初にUnity 2021.1.1f1でアセット作成用のプロジェクトを用意します。
アセットの作成が初めての場合は「アセット機能 その2 基本的なアマレコVR用アセットの作成」を参照して asset_projectsを用意してください。
以下、asset_projectsを例に説明します。
(2) プレハブのダウンロードとコピー
映画館作成用のプレハブファイルを用意しましたので ダウンロード してください。
ダウンロードした sset_sample_theater_prefab.zip を解凍してできるフォルダ内にある「Sample_Theater」をプロジェクトのAssetsフォルダ「asset_projects\Assets」へコピーします。


(3) Unityで ゲームオブジェクトにする
Unityでasset_projectsを開いて (2)でコピーしたSample_Theaterフォルダ内にあるsample_theater.prefabをヒエラルキーへドロップします。
自動的にゲームオブジェクトが作成され シーンビューへ表示されます。

ゲームオブジェクトの名前をわかりやすいようにtest_theaterに変更します。

(4) 他のゲームオブジェクトを無効にする
シーンビューで確認する際に邪魔になったり、照明の影響を受けるため、他のゲームオブジェクト(この例では Directional Lightと Test_Cube)を無効にします。
なお、Main Cameraは影響が無いので無効にしなくて大丈夫です。
無効の仕方は ヒエラルキーでゲームオブジェクトを選択して 右側のインスペクターでチェックボックスをOFFにします。

(5) Unity Editorの照明設定
Unity Editorの環境照明等を無効にします。
これもシーンビューで確認する際に影響を受けて Questで実際に使うときの見た目と違ってきてしまうため 無効にします。
ツールバーのWindowのRenderingにある「Lighting」を選択して Lighting設定画面を表示します。

■ Lighting設定画面
「Environment」タブを選択し 以下を設定します。
・SkyBox Materialを None
・Sun Sourceを None
・Environment LightingのSourceを Color
・Environment LightingのAmbient Colorを 黒

以上を設定したら 試しにゲームオブジェクト「test_theater」内の照明を無効にし シーンビューの表示が真っ黒になればOKです。
test_theaterの照明を有効にもどして次に進んでください。

真っ黒にならない場合は 何かしらの照明が残っています、test_thater以外のゲームオブジェクトを確認したり、 Lighting設定画面を確認してください。
(6) ゲームオブジェクトを プレハブ化する
ゲームオブジェクト「test_theater」を画面下部のAssetsフォルダへドロップして新しいプレハブ「test_theater.prefab」を作成します。
プレハブのタイプはオリジナルで結構です。

(7) プレハブをAsset Bundle Browserへ登録
Unityのツールバーの「Window」からAssetBundle Browserを表示します。
AssetBundle Browserの「Configure」タブを選択した状態で Assetsフォルダから(6)で作った「test_theater.prefab」をドラッグし AssetBundle Browserの左側の「アセットリスト」部へ ドロップします。

既にtest_cubeが登録されているので、test_cubeとtest_theaterの2つのアセットが登録された状態となります。
このままでも問題ないですが、test_cubeが不要な場合は test_cubeを選択して右クリックのメニューから 「Delete test_cube」で登録を解除できます(ここではtest_cubeを登録したまま説明を続けます)。
【注意】
AssetBundle Browserの右側の「アセットの構成要素」部へ プレハブをドロップすることができます。
その場合、一つのアセットファイルの中に複数のプレハブを格納することになってしまうため 今回は誤りです。
間違えた場合は 左のアセットリストの間違えたアセットを選択して 右クリックのメニューから アセットの登録を解除し 再度プレハブをアセットリストへ登録してください。
(8) アセットのビルド
AssetBundle Browserの「Build」タブを選択し、Build Targetを「Android」とします。
最後に下部にあるBuildボタンを押したら アセットファイルが作成されます。
test_cubeとtest_theaterの2つのアセットが登録されている場合は それぞれのアセットファイルが作成されます。
なお、構成要素に更新がなかったアセットに関しては ビルド処理は行われません。
※ 「Force Rebuild」をONにすると 更新が無くても常にビルドするようにできますが、特に理由がなければOFFでいいと思います。
(9) 確認
「 アマレコVRサーバーからアセットファイルを使う方法 」を参照してください。
2.映画館の作り方 後半:構成要素
Sample_Theaterは次の5つで構成されています。
・照明
・座席
・フロア
・スクリーン オブジェクト
・視点 オブジェクト

(1) 照明
最初に Unity Editorのシーンビューの見た目と Questで実際に使った場合の見た目をできるだけ近づけるために Unity Editorの照明を無効にしてください。
Sample_Theaterの照明が暗いようなら 強くしたり(Intensity)、範囲(Range)を広げてください。

全体的に明るくしたい場合はDirectional Lightを追加してください。

※ 照明を増やすとパフォーマンスが低下する(アマレコVR全体のFPSが低下します)ので気を付けてください。
(2) 座席
3DソフトのBlender等で自作するか ネットで公開されている3Dモデル(主にFBX形式)をダウンロードして使うことができます。
Meta Questのスペックは非常に低いためポリゴン数を節約する必要があります。
Sample_Theaterでは 座席一つが約1000ポリゴンとなっています。
映画館全体では 65席となっています。
ざっくりですが 視界内のポリゴン数が10万を超えると 60fpsの維持が難しくなる印象です。
後で座席の数を調整するために 何個かの座席を一つのゲームオブジェクトへ配置してそれをプレハブ化します。
Sample_Theaterでは3席「Chairs3.prefab」と7席「Chairs7.prefab」のプレハブを作っています。
そのプレハブを3席、7席、3席と並べたゲームオブジェクトを作り 1列分のプレハブ「ChairsLine.prefab」としています。
Sample_Theaterでは これを5列並べて 完成です。
(3) フロア
Sample_Theaterでは 3Dオブジェクトのキューブを組み合わせて作っています。
(4) スクリーン オブジェクト
アマレコVRの動画を表示するスクリーンになります。
3DオブジェクトのQuadを追加し 名前を「#AMScreen」としてください。

アセット内に複数のスクリーン オブジェクトを配置することができます。
スクリーン オブジェクトはサブプレイヤーで動画が再生されていないとき ゲームオブジェクトが無効(非表示)になります。
基本的には3DオブジェクトのQuadを使いますが、立体的なメッシュも可能です。
ただし 現状 再生する動画のアスペクト比に応じてゲームオブジェクトのスケール値が変更されますので、そのあたりを考慮してください。
(5) 視点 オブジェクト
ヘッドマウントディスプレイの位置へアセットを移動するための 視点を指定します。
映画館の前列に座って映画をみたり、後列へ移動したりといった使い方をします。
名前を「#AMHeadPositon<home>」としたゲームオブジェクトの位置が視点となります。
Sample_Theaterでは3Dオブジェクトのキューブを使っていますが、空のゲームオブジェクトでも構いません。
位置のほかに回転も反映されますが Y軸だけ設定してください(Y軸以外は0にしてください)。
カッコ内でメニューや視点ボタンへ表示する 視点名を設定できます。homeは初期視点となります、そのほかは好きな名前を設定してください。

視点オブジェクトは読み込んだ際 自動的にゲームオブジェクトが無効(非表示)になります。
スロット1へ読み込んだアセットに「#AMHeadPositon<home>」が含まれている場合は 読み込んだ際に自動で移動します。
スロット1以外や 「#AMHeadPositon<home>」が含まれていない場合はメニューや視点ボタンから指示された時だけ移動します。
アセット機能 その3 ピンクになるモデルの修正作業
前回使用したSample_Cube.prefabもピンクでした。今回はこれを修正する「アセットの修正作業」を紹介します。
また、これらの作業で必須の アマレコVRサーバーからアセットファイルを使う方法 も紹介します。

1.ピンクになる主な原因
オブジェクトがピンクになる主な原因は次の3つでしょうか
・シェーダーが含まれていない
・シェーダーが含まれているけど 使えない(機種依存で使えない)
・マテリアルの問題
前回のSample_Cube.prefabではマテリアルそのものが含まれていない為 ピンクで表示されてしまいます。
ですので修正作業は以下のようになります。
【修正作業】
(1) マテリアルを作成する
(2) マテリアルのシェーダーと色を設定する
(3) キューブのゲームオブジェクトへマテリアルを設定する
(4) キューブのプレハブへ変更を適用する
(5) アセットをビルド
※ ピンクになる原因の多くがマテリアルに問題はなくシェーダーによるものですので(1)と(3)は不要です。ピンクになるマテリアルでスタンダードシェーダーを指定することでとりあえず表示できるようになります。
2.修正作業
(1) マテリアルを作成する
前回作成したasset_projectsを開いて、画面下部のAssetsフォルダ内で右クリックのメニューから「Create」→「Material」と選択し、新しいマテリアルを作成します。

(2) マテリアルのシェーダーと色を設定する
作成したマテリアルのインスペクターでシェーダーを選択し、色を好みで設定します。
シェーダーはとりあえず「Standard」としてください。
新しく作成したマテリアルは最初からStandardとなっていると思いますのでそのままで結構です。色だけ好みで設定してください。

(3) キューブのゲームオブジェクトへマテリアルを設定する
ヒエラルキーで「Test_Cube」を選択し、右側のインスペクターのメッシュレンダラーのElementへ(1)で作成したマテリアルをドロップします。

これでシーンビューの色が変わります。

(4) キューブのプレハブへ変更を適用する
つづいて現在のゲームオブジェクトの状態をプレハブへ適用します。
ヒエラルキーで「Test_Cube」を選択し、インスペクターのPrefabの「Overrides」から「Apply All」を選択します。

これでAssetsフォルダにあるTest_Cube.prefabへマテリアルの修正が適用されます。
※ 今回は異常が解決したからか サムネイル画像が更新されましたが、赤いマテリアルから青いマテリアルに変更するなどでは
サムネイル画像は更新されません。

(5) アセットをビルド
Unityのツールバーの「Window」から「AssetBundle Browser」を表示します。
Test_Cube.prefabを登録しますが、既に登録済の場合はBuildタブでBuildボタンを押すだけで新しいアセットファイルが作成されます。
ビルドの仕方はこちらを見てください。
3.アセットのテストについて
通常はアセットファイルをQuestの内臓ストレージへ転送して使いますが、修正作業などテストのたびに転送するのは面倒ですので 暫定的ですが、AmaRecVR Serverから利用できるようになっています。
また、この方法であればアマレコVRを起動したまま アセットファイルの更新ができます。
(1) AmaRecVR Serverの設定
AmaRecVR Serverの設定で画像ファイルの拡張子に「assetbundle」を追加します。

(2) アセットファイルをコピー
サーバーがアクセスできるフォルダ(動画や画像が保存されているフォルダ)へ アセットファイルをコピーします。
このとき、他のファイルと混ざらないよう アセット専用のフォルダを作って管理するのが望ましいです。
また、ビルドした拡張子なしのアセットファイルをサーバーのフォルダへ拡張子を付けてコピーするバッチファイルを作成すると便利です。
【バッチファイルの例】

(3) アマレコVRでアセットを使う
アマレコVRのファイル画面で(2)のフォルダを表示してアセットファイルを再生します。
再生するとアセットメニューが表示されますので 使うスロットを選択するとアセットファイルが読み込まれます。

4.AmaRecVR Serverでアセットを使う場合の注意事項
■サムネイルの作成がエラーになる
サムネイルの作成ができないので エラー用の黒いサムネイルになります。
■ファイルサイズが大きいと数十秒読み込むのに待たされる
10MB程度のアセットファイルを読み込むのに1秒程度、それに加え圧縮されている場合はさらに解凍処理に1秒程度かかります。
100MBを超えると10秒以上待たされます。
読込が終わるまで (ファイル画面を閉じるなど)他の操作をしないでください。
■アマレコVRが管理するファイルIDが作成される
アマレコVRサーバーでは動画ファイルや画像ファイルを特定するために ファイルIDを作成して管理しています。
アセットファイルでもファイルIDが作成されますが、同じファイル名でもファイルサイズが異なると別のファイルとして認識される為、何度もアセットファイルをビルドすると その都度IDとサムネイル画像が作成されてしまいます。
基本的に問題はないですが、明らかに無駄なIDですので、必要に応じてdata\AmaRecVRServer.txtをメモ帳で開いて アセットファイルに関するレコードを削除してください。
アセット機能 その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で使おうとするとまともに動かない場合があります。
ポリゴン数を減らしたり テクスチャのサイズを縮小してメモリを節約するなどの調整が必要です。
アセット機能 その1 Unityのセットアップ
第一回はUnityのセットアップを解説します。
【連載予定】
・Unityのセットアップ
・アセットファイルの作り方
・映画館の作り方
・キャラクターとアニメーション (mixamo編)
・ステートマシーン
・物理処理
・他のゲーム用のアセットを移植する
1.はじめに
(1) Unityについて
Unity Technologies が開発したゲームエンジンです。
ここで単にUnityと言ったら Unity Editorと呼ばれる主に2D、3DおよびVRのアプリケーション開発に使われる開発環境を指します。
アマレコVRもUnityで開発されており、アプリケーションだけでなく この連載の中心となるアセットファイルもUnityで作成することができます。
(2) アセットについて
ここでは ゲームなどで使う画像や3Dデータ、キャラクター、音声、およびプログラムなどを まとめたものを指します。
主に、開発用のものと 完成したアプリケーションに後から追加するUnity Asset Bundleの2つがあります。
この連載では後者のUnity Asset Bundleが中心となり、アマレコVRへ利用者自身で用意したアセットを追加することができます。
2.Unity Hubのインストール
Unityには様々なバージョンが存在します。必要に応じて新しいバージョンを使ったり、意図的に古いバージョンを使うこともあります。そこで、複数のUnityのバージョンをインストールし管理するのがUnity Hubとなります。

(1) Unity Hubのダウンロード
Unityのダウンロードページ からWindows用のUnity Hubのインストーラー「UnityHubSetup.exe」をダウンロードしてください。

(2) Unity Hubのインストール
ダウンロードしたUnityHubSetup.exeを実行してUnity Hubをインストールしてください。
【アカウントとライセンス】
インストールの途中でUnityアカウントとライセンスの選択を求められます。
Unityのアカウントを持っていない場合はアカウントを取得してくしてください。
ライセンスの選択では私はパーソナルライセンスを選択しました。内容をよく見て該当するライセンスを選択してください。
インストールが終わり Unity Hubが起動したら歯車のアイコンのpreferencesから日本語にすることができます。


3.Unity Editorのインストール
Unity Hubの準備ができたら 本題のUnity Editorをインストールします。
インストールするバージョンは アマレコVRの制作に使ったのと同じ2021.1.1f1です。
(1) Unity 2021.1.1f1のインストール
Unity Hubの左側から「インストール」を選択、続いて 右上の「エディターをインストール」をクリックするとインストールするUnityのバージョンが表示されます。
しかし 推奨バージョンに「2021.1.1f1」は無いので、「アーカイブ」タグを選択し 「ダウンロード アーカイブ」をクリックします。


(2) ダウンロード アーカイブから Unity 2021.1.1f1 を選択
「ダウンロード アーカイブ」をクリックすると UnityのWebサイトが開くので「Unity 2021.x」タブを選択します。
※ UnityのWebサイトが表示されない場合は https://unity.com/releases/editor/archive へアクセスしてください。

「Unity 2021.x」タブを選択すると 2021年版が大量に表示されますので
Unity 2021.1.1 March 22,2021の項目にある「Unity Hub」をクリックします。
(沢山ありますが 下から2番目です 上から探していくと Ver2021.1.11と間違いやすいです)

「Unity Hub」をクリックすると 確認メッセージが表示されますので「開く」をクリックします。

(3) インストールするモジュール選択
Unity Hubに戻ると Webサイトで選択したバージョンのインストールの準備が始まります。
モジュールを加える画面が表示されますので「Android Build Support」をONにして「次へ」をクリックします。
※ アマレコVRはAndroid用のアプリとして作られていますので アセットファイルもAndroid用にするために このモジュールが必要となります。

(4) インストール開始
Microsoft Visual StudioとAndroidの契約画面が表示されますので内容を確認し同意するとインストールが始まります。
インストールには結構な時間がかかりますので待ちましょう(20分から30分くらい?)。
Unity Editorのインストールは以上となります。
【あとからAndroid Buildモジュールを追加する】
既にインストールされているUnity EditorにAndroid Buildモジュールが含まれていない場合でも Unity Hubを使ってあとから 追加することができます。
Unity Hubの左側の「インストール」を選択すると 既にインストールされているUnity Editorの一覧が表示されますので、目的のバージョンの歯車から「モジュールを加える」を選択します。
モジュールを加える画面が表示されますのでAndroid Build SupportをONにして「次へ」をクリックします。
これで、Android用のアセットやアプリを開発するのに必要なモジュールを追加することができます。
アマレコVR Ver2.4.0 アッセット機能 アルファ版
Unityで作成した様々なアセットをアマレコVRの世界へ持ち込むことができます。
なお、現状アマレコVR(AndroidのVRアプリ)に対応したアセットはほぼ出回っていないと思われますので 利用者自身でUnity Editorを使って作成する必要があります。ですので、実質 Unityを扱える人が対象の機能となります。

動作確認用のアセット 「サンプルシアター」
1.更新内容
【主な更新内容】
・アセット機能追加
・ミラー機能追加 (リンク機能の後継機能)
・サブ画面をメイン画面の後ろに配置するオプション追加
・ハンドジェスチャーのトラッキング範囲を拡大
手のひらをHMDへ向けた状態(システム操作状態)でもトラッキングするようになった

2.アセット機能の概要
2.1.アセットの例
・3Dで作成された映画館などの3Dオブジェクト
・アバター(人体モデルおよびアニメーション機能)
・音声データ
・ステートマシーン(プログラム制御)
・そのほか コライダー、物理シミュレーション、照明など豊富なUnityの基本機能
2.2.ステートマシーン
Unityのステートマシーンによりゲームオブジェクトやコライダーの衝突判定、音声データを制御できるため かなり広範なことがアマレコVRの機能に依存せずに実現できます。
この「アマレコVRの機能に依存しない」というのが CGやアバターを表示するだけにとどまらない アセット機能の特徴となっています。

Unityのステートマシーンの例 (コライダーが衝突したら ○○する)
2.3.Unity Editor
アセット機能により様々なことが可能となりますが、アマレコVRは動画を視聴することを目的としたアプリですのでクリエイティブな作業には向いていません。
例えば アマレコVRで映画館のアセットを読み込んで、さらにキャラクターのアセットを読み込んで、座席に移動して、座らせて・・・なども可能ですが、(最初は色々試す意味で大いにやってほしいですが)最終的にはUnity Editor上で映画館の座席にキャラを配置して個別にアニメーションを設定した 「完成したコンテンツ」を用意してご利用ください。
ですので Unity Editorの活用が必須となります。
3.アセット機能の使い方
(1) アマレコVRを起動する前に QuestのDownloadフォルダへassetフォルダを作成する
USBケーブルでPCとQuestを繋ぐか、Quest上のファイラーで操作してください

(2) 一緒に公開しているアセットファイル asset_sample_theater.zip をダウンロードして解凍する
(3) 解凍してできる sample_theater.assetbundle を(1)のassetフォルダへ転送する

(4) アマレコVRを起動して コンソール画面の下部からアセット画面を表示
頻繁にアセット機能を使う場合はボタン設定でアセット画面を割り当てると便利です


(5) スロット1のファイル名欄をクリックして sample_theaterを選択する
sample_theaterが出てこない場合は (1)-(3)をよく確認してください。
読み込みが終わると 座席等が表示されます。

(6) アセット画面を閉じてサブプレイヤーで動画を再生すると アセット内のスクリーンへ映像が表示されます
なお、メインプレイヤーはアセットの手前、3rdプレイヤーはアセットの後ろ に表示されるようになっています。
アセットと組み合わせて表示できるのはサブプレイヤーのみとなっています。

(7) 元に戻したい場合(アセット機能を終了したい場合)は アセット画面のスロットのアセットメニュー▽から 「Remove Asset」
4.アセット画面

■位置
各項目を左右にドラックすることで アセットワールド内の視点の移動や向きの調整ができます。
また、ボタン設定で各ボタンへ割り当てることもできます。
現状チルトはうまく機能しません。おかしいなと思ったら「向き リセット」してください。
(表示 位置や向きがおかしい、移動物が動かない ズレるなど)

■照明
環境光と平行光源のOn/Offができます。
■スロット
各スロットへ アセットファイルをロードして アセットワールドへ追加します。最大4つのアセットを組み合わせて使うことができます。
■ファイル名
アセットファイルを選択します。
アセットファイルは QuestのDownloadフォルダへassetフォルダを作成し、そのassetフォルダへ転送してください。


■アセットメニュー▽
アセットファイルに含まれるプレハブを選択したり、読み込んだアセットをアセットワールドから削除できます。
また、向きとチルトをリセットできます。
アセットに視点情報が含まれる場合は視点を選択することができます。
■リロード
アセット(プレハブ)を初期状態に戻します。重力により奈落の底に落ちてしまったり コリジョンにより爆発した場合などに位置や状態を回復します。
■アニメーション
アセット内の人型のゲームオブジェクトへアニメーションを適用します。
現状、複数の人が含まれる場合 全員に同じアニメーションが適用されます。
assetフォルダ内にanimatorフォルダを作成し、アニメーション用のアセットファイルを転送して使います。
■照明
アセットに照明が含まれる場合に On/Offします。
■体、顔
アセット内の人型のゲームオブジェクトの体や顔をHMDの方へ向けます。
現状、複数の人が含まれる場合 全員に適用されます。
■位置、向き、チルト
アセット毎にローカル位置を調整します。
現状チルトはうまく機能しません。
アセットメニュー▽で向きとチルトをリセットできます。
■視点
スロット1のアセットに視点情報が含まれる場合に その位置へアセットワールドを移動します。
sample_theaterでは 前の方の席、後ろの方の席、横の席の3か所が選べます。
スロット1以外や 視点が4以上の場合はアセットメニュー▽で選択できます。
■頭コライダー
HMDの当たり判定を有効にします。キャラクターの内部へ侵入したり すり抜けを防止するのに使います。
■プリセットメニュー
現在のアセット構成をAmaRecVR Serverへ保存したり 読み込むことができます。
現状 暫定機能です。とりあえず使っているアセットファイルやプレハブと位置情報を保存するようになっています。
Questの機種を変更した場合に、アセットファイルに差異があると 機能しない可能性があります。
5.その他
5.1.光源とパフォーマンスについて
sample_theaterには点光源が含まれます。
点光源はパフォーマンスの低下(fpsの低下)を招くので、アセット側の光源はOffにして環境光と平行光源だけで使うことをお勧めします。
■Quest1の場合
sample_theaterで点光源を使うと60fpsを下回る場合があります。環境光と平行光源だけで使ってください。
■Quest2の場合
sample_theaterの点光源と環境光、平行光源の3つ全てをOnにすると60fpsを下回る場合があります。点光源か平行光源のどちらか1つで使ってください。
環境光はパフォーマンスに影響しないと思われます。
※ サブプレイヤーはもともと60fpsでの動画再生ができません。60fpsできっちり再生できるのはメインプレイヤーでAmaRec Playerを使った場合だけです。
6.アセットファイルについて
【主な適合条件】
・比較的新しいUnityで作成されたもの(2021.1.1f1 推奨)
・android用に作成されたもの(Windows用は不可)
・Graphics APIs OpenGLES3.2
・VR用に作成されたもの(Stereo Rendering Mode が Multi Pass)
・プレハブのみ対応?(シーンは不可?)
6.1.アセットファイルの作成方法(要点のみ)
ここではUnityを使ったことがある人を対象に要点だけ示します。
Unityのバージョンは2021.1.1f1を使っています。これより新しければ大抵大丈夫だと思いますが、上手くいかない場合は2021.1.1f1を用意してください。
また、ここではUnityのasset bundles browserを使います。インストールされていない場合は Unity Editorを起動してパッケージマネージャからインストールしてください。
新規で3Dプロジェクトを作成しアセット化したいプレハブをassetsフォルダ配下に用意した後
Project SettingsのPlayerとXR Plug-in ManagementのAndroidタブを以下のように設定します。

ツールバーのWindowからAssetBundl browserを表示して
Configureタブで アセット化したいプレハブを登録した後
Buildタブを以下のように設定し Buildします。

AssetBundles\Androidフォルダへ拡張子なしのファイルが作成されます。
拡張子 assetbundleを付けて 完成です。
7.ダウンロード
・アマレコVR Ver2.4.0 アルファ版 for Quest
・アマレコVRサーバー Ver2.21
■アセットファイル
・asset_sample_theater20230505.zip
動作確認用の映画館
・asset_sample_cube20230505.zip
立方体1つだけの最小構成のアセットファイル
アセットファイルの作成が上手くできない場合に参考にしてください
・asset_sample_pudding20230621.zip
物理処理のデモンストレーション
アセット機能 その6 物理処理
■プレハブ
・asset_sample_theater_prefab20230602.zip
映画館のプレハブファイル
アセット機能 その4 映画館を作る