fc2ブログ
 

アマレコVR3 Ver3.0.2 背景透過V3 完成版

背景透過V3の実装を一通り終えた完成版となります。
ピクセル処理を実装したので被写体周辺に残った四角いエリアも徐々に消えていきます。
なので、被写体が映ったシーンから再生を開始しても数分視聴しているうちに大体の背景が消えるようになっています。

411area_map_v300_20231019002920ce0.png 411area_map_v302.png
左:Ver3.0.0 エリア処理のみ            右:Ver3.0.2 エリア処理とピクセル処理


1.更新内容
・背景透過V3 実装完了(ピクセル処理など)
・背景透過V3 メニューへ輪郭設定追加
・背景透過V3 OU(Top and Bottom)へ対応


2.使い方
基本的な使い方は下記を見てください
アマレコVR3 Ver3.0.0 背景透過V3 公開
アマレコVR3 Ver3.0.1 背景ぼかしEX




■背景透過V3メニュー
v3menu.png

輪郭サイズの設定ができます。
1が標準です。
白い背景の場合などで輪郭が目立つ場合に 輪郭サイズを2や3に設定して小さくしてください。



3.パフォーマンス
背景透過V3はQuest3でぎりぎり動作するよう調整されています。
8KのVR動画+背景透過V3(輪郭調整なし)+パススルーで 72fpsぎりぎりOK
4KのVR動画+背景透過V3(輪郭調整あり)+パススルーで 72fpsすこし余裕
4KのVR動画+背景透過V3(輪郭調整なし)+パススルー+サブカメラ+3rdプレイヤーで 72fpsすこし余裕

8Kの動画再生、輪郭調整、パススルー機能はそれぞれ負荷が大きく 同時に使うと72fpsを下回ります。

Quest2では4KのVR動画でも背景透過V3を使うと50fps程度となります。動作はしますがfpsの低下にご留意ください。


4.ダウンロード
ダウンロードページ


アマレコVR3 Ver3.0.1 背景ぼかしEX

1.更新内容
・背景ぼかしEX
・AmaRec Playerが90fps、120fpsへ対応
・Y軸回転追加
・SDKをQuest3対応版へ変更

■背景ぼかしEX
背景透過処理の「背景ぼかし」オプションを更新しました。
被写体と背景を別々のスクリーンへ投影します。
それぞれ位置(距離)が異なるので3D効果が得られます。

※ Quest2では60fpsの維持ができません。
(Quest2では 3K60fps、輪郭0、パススルーOFF、60Hz、ハンドジェスチャーをQuestの設定で無効にする でなんとかといったところです)


■AmaRec Playerが90fps、120fpsへ対応
Quest2で120fps
Quest3で90fpsと120fpsの動画に対応しました。
詳しくは下記を参照してください
アマレコVRでの90fps 120fps動画の再生について


■Y軸回転追加
パススルー映像とVR動画の横の位置関係を調整するのに使います。
以下の3つを追加しています。
・コンソール画面の下方にホームポジションのY軸回転(全体を横に調整する)
・メイン画面設定にメイン画面のY軸回転(メイン画面だけ調整する)
・ボタン機能にメイン画面の「[Drag] 正面リセット : 向き 横」(ドラック操作で直接調整する)



2.ダウンロード
ダウンロードページ


アマレコVRでの90fps 120fps動画の再生について

サンプル動画(krkr.zip)を作ってテストしてみました。
ダウンロードページ


アマレコVR3 Ver3.0.0およびVer3.0.1で内臓ストレージに保存したサンプル動画を再生して目視で確認

アマレコVR3
ディスプレイ動画Ver3.0.0Ver3.0.1
Quest2Quest3Quest2Quest3
60Hz30fps非対応非対応
60fps非対応非対応
72Hz72fps
90Hz90fps
120Hz60fps
120fps


現状Quest3は60Hzを受け付けない

△60Hz30fpsおよび120Hz60fps(動画fpsの整数倍のリフレッシュレート)
動いている物体の輪郭がぼやけたり二重に見える(60fpsの動画なら 120Hzより60Hzのほうが映像としては良いのではないか)

120fpsの動画は再生する能力がないとおもわれる(タイミングが取れない 98fpsくらいが限界?)
アマレコVR3 Ver3.0.1で120fpsの動画に対応しました。


90Hz90fpsはQuest2であれば問題ないように思います。
Quest3ではなぜか80fps強までしか出ない。映像はガクガク、音声ともずれる。
アマレコVR3 Ver3.0.1でQuest3の90fpsの動画再生に対応しました。


アマレコVR3 Ver3.0.0はQuest3に対応する前のSDKで開発しています。
SDKをQuest3に対応したものに差し替えれば解決ならいいけど、それ以外の原因だと対応は難しいかもしれません。


追記 2023.10.26
SDKの更新では改善されませんでした。
AmaRec Playerのタイミング調整を修正して対応しました。
Ver3.0.1は週末の公開を予定しています。





アマレコVR3 Ver3.0.0 背景透過V3 公開

Meta Quest3用に開発していた背景透過処理のアルファ版になります。
SoCの性能向上を念頭にPCのPaythonでテストしていましたが、諸般の事情から今回はPython版の半分程度の実装でまとめました。半分程度ですが背景透過V3の効果を十分体験していただける内容となっています。

000motionmap_v3.png


1.更新内容
画像処理が背景透過V3になりました。
ほかに更新はありません。
アマレコVRサーバーの更新はありません。Ver2.21をご利用ください。

100setting_image_processing.png



2.使い方
インストール等 基本的な使い方はオンラインヘルプを参照してください。
アマレコVR Ver2.0.0 オンラインヘルプ
アマレコVR Ver2.2.0 オンラインヘルプ

既存のアマレコVRとは異なるアプリ「アマレコVR3」としてインストールされますので既存のアマレコVRと共存することができます。




2.1.背景透過処理の使い方
(1) メインプレイヤーでVR動画を再生
(2) メイン画面設定のポジトラON、パススルーON、スケールを被写体の距離(50cmから100cm程度)に調整
(3) 画像処理で「背景透過v3」を選択
(4) 動きのない背景が徐々に消えていきます

人物が小さく感じる場合は メイン画面設定のステレオ調整を+10や+20に増やしてください。
通常の視聴に戻す場合はもう一度「画像処理v3」を押すか「無効」ボタンを押してください。

200setting_v3.png


【プレイヤーの選択】
アマレコVRの設定画面のプレイヤー設定でAmaRec Playerを選択してください。
(初期値でAmaRec Playerになっています)
AVProでは使えません。

【ディスプレイ周波数】
背景透過処理を使う場合は Questの処理能力的にぎりぎりになりますので、リフレッシュレートを最も低く設定してください。
アマレコVRの設定画面のデバイス設定でディスプレイ周波数を次のように設します。

Quest3 72Hz
Quest2 60Hz
(初期値で60Hzとなっています、Quest3では60Hzに対応していないため 60Hzに設定した場合72Hzで動作します)




2.2.そのほか
・背景画像がおかしくなってしまった場合は 「クリア」ボタン
背景透過V3に画像処理メニューはありません。
Ver3.0.2で輪郭サイズの設定が追加されました。
・観たい箇所が凄い下にあるなど視聴しにくい、または背景透過で消えてしまう場合は サブカメラで小窓に写すことができます。
・パススルーに飽きたら、サードプレイヤーで2D動画を再生して メインプレイヤーの登場人物と一緒に映画鑑賞するなど 他のコンテンツと併せて使ってください。
パススルー機能と集約されていますが パススルーやVRコンテンツはどうしても飽きると思うので VR動画の背景を透明にして2D動画をメインに視聴することをお勧めします。
・背景透過V3の背景をボカスをONにすると被写体はくっきり、背景はぼんやりにできます。背景透過が上手くいけば被写体が際立って今まで観てきたVR動画の印象が変わります。
Ver3.0.1で背景ぼかしEXになりました。

2.3.未実装
今回の背景透過V3は未実装な部分があるため次の点に留意してください。

・被写体周辺の背景画像を作成できません
部屋に誰もいない状況から再生するか、被写体が適度に動いて 背景を見せてくれる動画で利用してください。
Ver3.0.2で対応しました。

・画面の端で被写体が見切れるようなシーンが数秒間続くと うまく処理できません
VRカメラへ被写体が近づく場面では 被写体が消えやすいです。

・OU(TB)には対応していません
2DまたはSBS(サイド・バイ・サイド)で使ってください。
Ver3.0.2で対応しました。


3.設定
■背景時間
背景時間を作成する判定時間を設定します。
5なら最低5秒間変化のなかった領域を背景とします。
数値が小さいほど早く背景画像を作成できますが、動きの少ない被写体を背景と誤認する可能性が高まります。
被写体が消えやすい場合は 時間を長めに設定して下い。
通常3秒から5秒くらいで設定してください。
初期値 3秒

■背景閾値
背景を判定する閾値を設定します。
大きくすると背景と判定されやすくなり 早く背景画像を作成できますが、被写体を背景と誤認する可能性が高まります。
背景がなかなか消えない場合は大きめに、被写体が消えやすい場合は小さめに設定してください。
通常10%から20%くらいで設定してください。
初期値 20%

■輪郭調整
輪郭を調整します。
0または 10から20くらいで設定してください。
0以外では負荷が高くなります。
初期値 0 (輪郭調整なし)

■背景透過V3メニュー
v3menu.png

輪郭サイズの設定ができます。
1が標準です。
白い背景の場合などで輪郭が目立つ場合に 輪郭サイズを2や3に設定して小さくしてください。



4.背景透過処理について(動作原理)
背景透過処理は再生中の動画をリアルタイムで解析し背景を透明にすることができます。
動画の動かない部分から背景画像を作成し、背景画像と現在の画像の一致する部分を透明にすることで実現します。

400motion_map.png
背景透過V3 Python版


4.1.適用条件
背景透過処理はVR動画を想定してデザインされていますので、以下の条件を満たす動画で利用してください。

(1) 背景が完全に止まっている(固定カメラで撮影されている)
(2) 被写体は適度に動いている
(3) 照明が安定している(太陽光はNG)
(4) 背景と被写体のコントラスが高い (同じ色や 同じ明るさだと区別できません)
(5) 壁等から被写体が離れていて 影ができない
(6) 被写体が画面端までいかない(カメラに近づきすぎない 画面の大半を被写体が覆わない)


4.2.背景画像作成処理について
縦横16分割した領域(いまのところ1つの領域は32x32画素)ごとに処理する「エリア処理」と
従来の画素単位で処理する「ピクセル処理」の2つにより背景画像を作成します。

■エリア処理
エリア処理は大きな領域(多くの情報)で判断するため ピクセル処理より正確な判断が可能となっています。そのため短い時間で判断しても高い信頼性が得られます。
一方、エリア内に被写体が含まれていると そのエリアの背景画像を作ることができないデメリットがあります。
また、エリア処理はエッジ画像で判定するため 色の変わる照明の影響を受けにくい特徴があります。
壁や天井の色が変わっても輪郭に変化がなければ「変化なし」と判断されます。

410area_map_20231019002922209.png
エリア処理の様子


■ピクセル処理
ピクセル処理は逆に信頼性が低い(少ない情報で判断する)ため時間をかけてじっくり背景画像を作成します。
時間はかかりますが被写体の近くまで背景画像を作ることができます。


4.3.背景透過V3 Ver3.0.0
twitterで公開したオウムのサンプル動画(背景透過V3 Python版)では両方の処理を行っていますが
今回のVer3.0.0ではQuest3の処理能力の関係からエリア処理のみとなっています。
そのため 被写体周辺に四角い領域が残ってしまいます。

411area_map_v300_20231019002920ce0.png 411area_map_v302.png
左:Ver3.0.0 エリア処理のみ            右:Ver3.0.2 エリア処理とピクセル処理

被写体の居ない部屋からはじまる動画を視聴するか、被写体が適度に動いて背景をちゃんと見せてくれるような動画で使って下さい。
Ver3.0.2でピクセル処理を実装しました。被写体の居る状態から再生しても少しずつ背景を消すことができます。


4.4.処理能力(パフォーマンス)について
背景透過V3はQuestの処理能力的にギリギリで動作しています。
そのためアマレコVRの様々な機能と併用すると処理が間に合わなくなる場合があります。
(処理が間に合わないと トラッキングが一瞬固まるなどの症状が発生します)

■Quest3
8KのVR動画+背景透過V3(輪郭調整なし)+パススルーで 72fpsぎりぎりOK
4KのVR動画+背景透過V3(輪郭調整あり)+パススルーで 72fpsすこし余裕
4KのVR動画+背景透過V3(輪郭調整なし)+パススルー+サブカメラ+3rdプレイヤーで 72fpsすこし余裕

8Kの動画再生、輪郭調整、パススルー機能はそれぞれ負荷が大きく 同時に使うと72fpsを下回ります。

■Quest2
Quest2では4KのVR動画でも背景透過V3を使うと50fps程度となります。動作はしますがfpsの低下にご留意ください。



4.5.そのほか
・事前に準備する必要はありません
・高性能なPCは必要ありません
・Meta Quest3またはQuest2単体でも利用できます
・処理はすべてリアルタイムで行われます
・AIはまだ使っていません
・100本程度VR動画を試せば数本、または数シーン これなら使ってもいいかなと思える打率です



5.ダウンロード
ダウンロードページ


アルファ付きVR動画作成ツール rvm_alpha公開

rvm_alphaは Robust Video Matting(RVM)を使って通常のVR動画からアルファ付きVR動画を作成するPython用のスクリプトです。
RVMはAIを使って画像内の人物を抽出できるので それをアルファ画像とし魚眼VR動画の端に書き込みます。
Robust Video Matting公式サイト

rvm_alpha.png


アルファ付き動画は私が公開している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

rvm_model.png rvm_mobilenetv3_pth.png


■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

全てコピーするとこうなります
file_20230812051441a64.png


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

download_python.png


※ AppStore版も使えますがAppStore版は若干遅いようなのでデスクトップ版をお勧めします。


インストール画面ではカスタマイズを選択し Pythonへパスを通すオプションをONにしてください。

python_install_custom.png python_install_path.png

インストールが終わったらPCを再起動します(再起動しないとパス設定が有効にならない)。

Windows PowerShellを起動してPythonが使えることを確認します。Pythonから抜けるには[Ctrl] + [Z]。
power_python.png


※ 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で使って下さい

rvm_alpha_use_cuda.png

deviceの項目がcudaならCUDAを使って処理しています。cpuとなっていたら CUDAは使っていません。



5.主なエラー原因
・CUDAが使えない →ビデオカードのドライバーを最新のものにアップデートするなど
・ビデオメモリが足りない →4K動画を扱うなら4GB以上必要
・PyTorchでエラーがでる →CUDAに対応したPyTorchを強制再インストールする
・画像サイズが適合しない →4KやFHD、HDなどで使ってください



6.ダウンロード
ダウンロードページ






アマレコVR Ver2.4.1 クロマキーとアルファ付き動画

クロマキー処理を刷新しました。また、画像の隅にアルファ情報を記録する特殊なVR動画形式へ対応しました。
いずれも背景を透明にして ほかの動画やパススルー映像と組み合わせて使うことができます。

クロマキー映像およびアルファ付きVR動画はコンテンツがほぼ無いに等しいため優先度は低めでしたが、3Dゲームの動画作成機能やUnity、Blenderと言ったアプリケーションを使い個人でVR動画を作成するケースが増えてきているようなので今回の更新となりました。


sample_mutant.png

アルファ付きVR動画の例
通常のVR動画として扱えますが、画像の隅にあるアルファ値(赤い部分)を使って登場人物だけを綺麗に抽出することができます。



【更新内容】
・クロマキー処理を刷新
・アルファ付きVR動画へ対応
・アセット機能へVR用のスクリーン追加
・アセット機能へ物理系のコンポーネント追加
・アセット機能へVisual Scriptingの基本的なUnit追加
・アセット機能のレンダリング範囲を10cm100mから3cm60mへ変更
・パススルーポータル機能を廃止


1.使い方
mainscreen_setting_20230715231951859.png

メイン画面設定の画像処理部が更新されています。
背景透過処理の「モヤっと」、「キリっと」、「幽霊」の変更はありません。



1.1.クロマキー
背景が緑や青などのいわゆる”クロマキー映像”の場合に使います。
今まではRobust Video Mattingのテスト用でしたが実際にクロマキー撮影した映像および、CG等のレンダリングした際のアンチエリアシングを想定し根本的に作り替えました。
簡単に扱えるようにできるだけ自動で処理し、綺麗にまとめることができたと思います。



使い方
chromakey_setting.png

画像処理をONにして、「クロマ」(クロマキーモード)を選択し、
閾値を10から30程度の範囲で調整して使って下さい。
一般的なクロマキー映像であれば閾値の調整だけで対応できると思います。



詳細な調整
閾値の調整だけでうまくいかない場合は以下のように調整してください。

(1) 最初に、閾値、色補正、輪郭すべて0にする。透明度補正はOFF。

(2) 閾値を少しずつ上げて 輪郭に少し背景色が残るように調整する。
10から30くらいが目安。
閾値は背景色がなくなるまで上げないこと。色補正や輪郭調整の余地が無くなってしまいます。

(3) 輪郭を少しずつ上げて 輪郭に乗った背景色が目立たないように調整する。
目安は1から20程度。
輪郭調整はアンチエリアシングのような効果がありますので 背景色が目立たない場合でも1以上に設定することをお勧めします。

(4) まだ、背景色が目立つ場合は色補正を少しずつ上げて調整する。
0から20程度が目安。
色補正を上げ過ぎると色味が変わってしまうので注意。

色補正をちょっと上げただけで色味が変わってしまう場合は 閾値が大きすぎます。
閾値を少し下げて 色補正の余地を確保してください。



各設定項目
■メニュー:背景色
具体的にどの色を透明にするかは画像解析により自動で設定されます。ここでは特定の色だけを処理するための条件を設定します。
ここで「赤」を選択したからと言って真っ赤な画素を透明にするわけではありません。
画像内で使われている赤成分の強い色の中から多く登場する具体的な色が選択され透明になります。それは青っぽい赤(紫系)かもしれないし、緑っぽい赤(黄色、オレンジ)かもしれません。
現在選択している具体的な色(解析結果)はメイン画面設定の左下に表示されています。
なお、クロマキー処理では黒背景や白背景には対応していません。それらは背景透過の幽霊モードを使って下さい。

・自動
特に制限を設けず画像内で多く使われている色を選択します。
水色や黄色なども選択されます。
白、黒、グレーなど色味が無いものは選択されません。

・赤、緑、青
それぞれの色に近いものが選択されます。

・青or緑
青または緑に近い色が選択されます。青と緑が混ざった水色は選択されません。
通常のクロマキー映像は人物と区別するために青背景または緑背景を使いますのでこの設定にしてください。


■閾値
背景色に近い画素を透明にする際、どこまで透明にするかの閾値を設定します。

■色補正
背景色に近い画素から 背景色の色成分を除きます(脱色)。

■輪郭
輪郭部をアンチエリアシングのように半透明にします。
また、背景色に近い場合は 色補正の設定に関わらず強く色補正されます。

■透明度補正
色補正の代わりに透明度を補正します。
実験用です。通常のクロマキー映像ではOFFにしてください。



1.2.アルファ付きVR動画
魚眼VR動画の隅にアルファ情報を記録した特殊なVR動画で使います。


使い方
alpha_setting.png

コンソール画面でメインプレイヤーの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動画でも輪郭部分がわずかに表示されてしまうので、背景は目立たないように暗くするのが望ましいです。

sample_cube.png



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

sample_mutant.png


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

sample_mutant_before.png sample_mutant_after.png

左:調整前 上限94、下限30、輪郭0
右:調整後 上限94、下限60、輪郭10



4.アルファ付きVR動画の作成方法
魚眼、サイドバイサイドのVR動画へアルファマップを40%に縮小して 所定の位置の赤プレーンへ挿入します。
現状、自力でなんとかするか、海外の動画サイトのフォーラムでVR動画とアルファマップ動画を別々に用意して合成するツールが公開されています。

 



5.ダウンロード
ダウンロード ページ
サンプル動画












アマレコVR ダウンロードページ


■アマレコVR for Meta Quest
2023/11/10
アマレコVR3 Ver3.0.2 アルファ版 for Quest
記事:背景透過V3 完成版

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動画作成ツール
記事


2023/10/20
krkr.zip
プレイヤーのベンチマーク用サンプル動画 滑らかに再生できているかを確認できます
記事:90fps動画の再生について



アセット機能 その6 物理処理

今回はアマレコVRのアセット機能で使えるUnityの物理処理を紹介します。
Unityの物理処理は重力による落下や、物体同士の衝突など 様々な目的で使用されますが、ここでは「やわらかいプリン」を手で触ったり、揺らしたり、持ち上げたりといったデモンストレーションをします。


1.使い方
(1) ダウンロードと転送
sample_pudding.zipをダウンロード。
解凍してできる 「sample_pudding.assetbundle」をQuestへ転送します。
ダウンロードページ
アセット機能の使い方



(2) スロット1
アマレコVRを起動し アセット画面からスロット1へ 「sample_pudding」をロードします。
100asset_load.png

初期状態だと 読み込んだプリンは重力で落下して すぐに見えなくなります。


(3) スロット1のプリンをテーブルに変える
sample_puddingにはプリンのほかに複数のアイテム(プレハブ)が含まれていますので、スロット1のアセットメニューから 「table」を選択します。
110asset_table.png

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

テーブルが視界内に見えない場合は 位置と向きをリセットしてください。
また、環境光と平行光もONにしてください。OFFだと全て真っ黒になり視認できない場合があります。


(4) スロット2
続いてスロット2も sample_puddingをロードします。
こんどはテーブルがあるのでプリンはテーブルの上にとどまります。
130pudding.png


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

ハンドトラッキングの手が表示されたら プリンを触ったり動かしたり、ひっくり返すことができます。
手が表示されない場合は Quest側のハンドトラッキング機能が無効になっているので Quest側の設定を行ってください。


(6) そのほか
・落下してしまったプリンは アセット画面のリロードから復活させることができます。
・カスタードプリンは回転(ひっくり返る)します。持ち上げるにはひっくり返らないよう両手で支える必要があります。
・ノーマルプリンは回転しません。回転しないので指先一つで持ち上げることができます。
・テーブル ムーブはテーブルが上下に動きます。テーブルの動きにより プリンが揺れます。
・無理な力を加えるとプリンは壊れます。リロードしてください。




2.プリンの作り方
アセットファイルのほかにプレハブ等、アセットの作成に必要なファイルを同梱していますので興味がありましたら以下を確認してみてください。
200file_list.png


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エディタで確認してみてください。
200hierarchy.png

※ Jointには様々な種類が用意されていますが、現時点のアマレコVRで使えるのは「Configurable Joint」のみです。


2.3.プリンと カスタードプリン
ノーマルのプリンは回転しないように(ひっくり返ったり、斜めになったりしないように) 基礎となるBoneのRigidbodyの「Constraints」で回転凍結をONにしています。
これにより 基礎となるBoneが回転しなくなります(斜めに傾いたりしません)。
なお、そのほかのBone.xxxの回転凍結はOFFとします。なので斜めに揺れたりします。
210pudding.png

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


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」を選択します。
300add_new_bundle.png


(2) 名前を sample_puddingにする
310rename.png


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

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


(5) ビルド
ビルドの仕方はアセット機能 その2 基本的なアマレコVR用アセットの作成を見てください。

【テスト方法】
なんどもアセットの修正、 ビルド、 アマレコVRで確認を繰り返す場合は アマレコVRサーバーからアセットファイルを使う方法 をお勧めします。




(6) アマレコVRからプレハブを読み込む
アマレコVRのアセット画面でアセットファイルをロードした後、右側のアセットメニューから アセットファイルに含まれているプレハブを選択できます。
350asset_menu.png








アセット機能 その5 スクリーンオブジェクトとVR動画

前回の映画館を作るで説明したスクリーンオブジェクトについて応用例を紹介します。
また、VR動画とアセット機能についても紹介します。


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

100screen_object_cube.png

102playing.png


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

対策として空のゲームオブジェクトを用意して そのスケールを(9/16,1,1)とし、 その中に名前を「#AMScreen」とした3Dオブジェクトを入れて スケールを(16/9,1,1)にします。

110screen_object_169.png

これで、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オブジェクトで作られた観客席のアセットを読み込むといった感じです。

200abema_world_cup.png

参考記事 AV Watch
PICO 4でワールドカップ決勝を見よ! “スタジアムの貴賓席”で見る感動



アセット機能 その4 映画館を作る

今回はsmple_theaterを例にアマレコVR用の映画館の作り方を紹介します。
プレハブを用意しましたので、作るというより一つ一つの構成要素を確認する感じになります。
確認した後、座席数を調整したり、好みの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」へコピーします。

200prefab.png 210copy_to_projects.png


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

220drop_hierarchy.png


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

230rename.png



(4) 他のゲームオブジェクトを無効にする
シーンビューで確認する際に邪魔になったり、照明の影響を受けるため、他のゲームオブジェクト(この例では Directional Lightと Test_Cube)を無効にします。
なお、Main Cameraは影響が無いので無効にしなくて大丈夫です。

無効の仕方は ヒエラルキーでゲームオブジェクトを選択して 右側のインスペクターでチェックボックスをOFFにします。

240disable.png



(5) Unity Editorの照明設定
Unity Editorの環境照明等を無効にします。
これもシーンビューで確認する際に影響を受けて Questで実際に使うときの見た目と違ってきてしまうため 無効にします。

ツールバーのWindowのRenderingにある「Lighting」を選択して Lighting設定画面を表示します。
250Lighting.png


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

260Lighting_env.png


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

270_all_light_off.png


真っ黒にならない場合は 何かしらの照明が残っています、test_thater以外のゲームオブジェクトを確認したり、 Lighting設定画面を確認してください。


(6) ゲームオブジェクトを プレハブ化する
ゲームオブジェクト「test_theater」を画面下部のAssetsフォルダへドロップして新しいプレハブ「test_theater.prefab」を作成します。
プレハブのタイプはオリジナルで結構です。

280_make_prefab.png


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

290drop_browser.png


既に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つで構成されています。
・照明
・座席
・フロア
・スクリーン オブジェクト
・視点 オブジェクト

300sample_theater_20230602035523640.png


(1) 照明
最初に Unity Editorのシーンビューの見た目と Questで実際に使った場合の見た目をできるだけ近づけるために Unity Editorの照明を無効にしてください

Sample_Theaterの照明が暗いようなら 強くしたり(Intensity)、範囲(Range)を広げてください。
310light.png


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


※ 照明を増やすとパフォーマンスが低下する(アマレコ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」としてください。

320amscreen_quad.png


アセット内に複数のスクリーン オブジェクトを配置することができます。
スクリーン オブジェクトはサブプレイヤーで動画が再生されていないとき ゲームオブジェクトが無効(非表示)になります。

基本的には3DオブジェクトのQuadを使いますが、立体的なメッシュも可能です。
ただし 現状 再生する動画のアスペクト比に応じてゲームオブジェクトのスケール値が変更されますので、そのあたりを考慮してください。



(5) 視点 オブジェクト
ヘッドマウントディスプレイの位置へアセットを移動するための 視点を指定します。
映画館の前列に座って映画をみたり、後列へ移動したりといった使い方をします。

名前を「#AMHeadPositon<home>」としたゲームオブジェクトの位置が視点となります。
Sample_Theaterでは3Dオブジェクトのキューブを使っていますが、空のゲームオブジェクトでも構いません。
位置のほかに回転も反映されますが Y軸だけ設定してください(Y軸以外は0にしてください)。
カッコ内でメニューや視点ボタンへ表示する 視点名を設定できます。homeは初期視点となります、そのほかは好きな名前を設定してください。

340head_position_button.png


視点オブジェクトは読み込んだ際 自動的にゲームオブジェクトが無効(非表示)になります。

スロット1へ読み込んだアセットに「#AMHeadPositon<home>」が含まれている場合は 読み込んだ際に自動で移動します。
スロット1以外や 「#AMHeadPositon<home>」が含まれていない場合はメニューや視点ボタンから指示された時だけ移動します。




 
 
あまラボへようこそ
このブログでは自作ソフトの最新情報やtips、PC動画に関する話題を掲載していきます。各記事へは下にあるカテゴリからアクセスして下さい。

ファイルのダウンロードはホームページの方でお願い致します。

質問・要望・不具合報告はこちら
アマレコTV
アマミキ!
アマレココ
アマレコ・ライト
ファンタジーリモート
AMVコーデック



ホームページ
カテゴリ
最新コメント
カレンダー
02 | 2024/03 | 04
- - - - - 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31 - - - - - -
最新記事
最新トラックバック
ブログ内タグ

アマレコTV ビデオキャプチャ アマレコVR AMVコーデック Oculus アマレココ Quest アマミキ! コーデック gQuest SC500 動画配信 Pico GO ファンタジーリモート 4K アマレコライト Unity プラグイン G2 AMV4 oculus SC512 ライブ機能 パススルー機能 Passthrough デスクトップキャプチャ AVX2 リモートソフト FAQ アセット機能 質問コーナー DirectShow HDキャプチャ ニコニコ動画 Asset 120Hz 背景透過 レゴ 遅延 可変再生速度 組み換え 解説動画 LEGO MetaQuest Meta VR GV-USB2 2 XL2420T Pico4 Quest3 液晶モニター 倍速液晶 AMV2MT デインターレース ベンチマーク アマステ Pro 背景透過V3 PS4 VRonVR MonsterX3A Intensity VideoKeeper2 designs インストール Alternate AVX XCAPTURE-1 31024 GV-USB SD-USB2CAP4 ffmpeg 32ZP2 31006 RDT233WX-Z 画像処理 60fps Robust Matting RGBキャプチャ Rift Video Shadow Play WindowsMR RYZEN UtVideo T2 HDMI NVEnc HDCP QSV LameACM OBS 音遅延 MP3 Haswell 電源オプション 音ズレ 録画 オーバーレイ XCapture-1 MonsterXU3.0R フィギュア ハイパースレッディングテクノロジー HT 31021 MPC 液晶テレビ DirectShowFilter プレビュー 擬似NTSCキャプチャ SD-USB2CUP4 Livetube AtomでHDキャプチャ キャプチャーツール シンクライアント イベント IntensityPro DC-HD1 額縁遅延 REGZA ZP3 倍速補完処理 32ZP32 Kabelake リプレイ機能 モノステ 倍速駆動 ゲームスムーズモード LAVFilters SkyBox Hand Tracking 2.0 ファイルマネージャプラス pytorch APIパススルー機能 API python ハンドジェスチャー パカラーススルー機能 アルファ付き動画 アルファ付きVR動画 RVM クロマキー ダウンロード AssetBundle 物理処理 download passthrough 検証 Preferred Filter Tweaker SteamVR GPU使用率 可逆圧縮 SKnet GV-USB3 キャプチャカード VR動画 フレーム間圧縮 新プレイヤー機能 AMPlayer 60Hz 新アマレコVR 90Hz VRコントローラー MR Windows SSE 

ブログ内検索
月別アーカイブ
アマレココに関するリンク
お世話になっているソフトのリンク
RSSリンクの表示
管理画面
  • 管理画面