背景透過等の画像処理の完成版です。メインプレイヤーで再生している動画の(動かない)背景部を透明にします。SDKがハンドトラッキングへ対応したのでパススルー機能と同時に使えるようになりました。コメント欄で公開したクロマキー合成も含まれます。一歩踏み込んだミックスドリアリティ体験が可能となります。手前にVR動画といった構成が可能になっています。背景をVR動画、手前もVR動画も可能です。VR動画の背景を透明にする仕組みです。Mattingを使って背景を緑にした動画を作成し、アマレコVRのクロマキー合成を使っています。Matting程ではありませんが、簡易的に済ます場合はアマレコVRの背景透過処理を使うこともできます。次の記事と合わせて見てください。オンラインヘルプを見てください。・ベータ版、アルファ1、アルファ2、アルファ3とは異なるアプリとしてインストールされます。・アマレコVRサーバーはアルファ3と同じです。ベータ版2.1.画像処理メイン画面設定の画像処理メニューから設定します。アマレコVR設定のボタン機能で[メイン画面設定を表示]を割り当てることをお勧めします。より映像内の(動かない)背景部を透明にします。画像処理により指定した背景色を透明にします。・背景バッファクリア現在の画像処理の解析結果を破棄し、ゼロから構築しなおします。クロマキー合成の背景色をクリアします。・シルエットモードメイン画面の映像を単色で塗りつぶします。メイン画面設定の透明度が反映されます。何が表示されているかわからないので、クロマキー合成か背景透過の輪郭解像度を1024にして使って下さい。色はサーバー側の設定ファイルで変更できます(後述)。Playerを選択してください。動きの少ない部分(前のフレームからの変化が少ない領域)を検出し背景画像を作成します。一度のサンプリングでは背景画像の信頼性が低いので数秒間解析を続けて信頼性の高まった背景画像と現在のフレームを比較して透明にします。家具の位置が変わったり、シーンチェンジすると背景画像もアップデートされます。基本的に被写体が映った映像から背景画像を作成しますので被写体と被写体の周辺領域については背景画像の信頼性が高まるまで時間がかかります。そのため、被写体周辺の背景が表示されてしまったり、被写体が退いた後もしばらく背景が表示されることがあります。固定カメラで撮影されたVR映像であることが前提となります。・ぼかし(時間)過去のフレームと加算し映像をぼかす度合いを設定します。ノイズや画質、照明の影響を軽減し安定した処理結果が期待できます。数値が小さいと背景画像の作成に時間がかかるため、なかなか背景が透明になりません。数値が大きいほど映像のノイズや不安定な照明、差分フレームとキーフレームの画質差などを軽減し背景の判定がやり易くなります。動きの少ない被写体も背景と誤判定され消え易くなってしまいます。タイムラグが生じます。低いほど被写体に有利な判定になります。代わりに背景の判定が上手くできず透明になりません。被写体が誤判定され消えやすくなります。3秒間変化が少ない領域を背景として拾います。素早く背景画像を構築できますが、動きの少ない被写体も背景として拾ってしまいます。(透明、不透明のマスクパターン)の解像度を選択します。輪郭を強くぼかして使います。1024は解像度が高く輪郭をくっきり表示したい場合に使います。他の機能と併用すると60fpsを下回ります。fpsの低下が目立つ場合は256を使って下さい。解像度256のみでも約48fpsとなります。輪郭サイズ処理結果(マスクパターン)の輪郭を調整します。お好みで調整してください。する背景色を指定します。画像処理により指定した色に属する画面内で多く使われている色を検出し、透明にします。自動は色を指定せず画面内で最も多く使われている色を背景色とします。そのため、赤い服を着た人がカメラへ近づいて画面全体が赤くなると背景色が赤と判断されてしまう場合があります。Ver2.1.6の青緑は廃止しました。近い色を透明にする際の閾値です。影が見えてしまいます。高いと被写体の一部が透明になってしまいます。・輪郭サイズ輪郭処理を行う大きさを指定します。輪郭部は背景色の成分を除いて半透明にします。Questのハンドトラッキングが「OpenXR」に正式対応したのでパススルー機能とハンドトラッキング機能を同時に利用できるようになりました。アマレコVRのハンドトラキング機能に関する基本的な使い方はオンラインヘルプを参照してください。手のグラフィックを選択できます。手の形で穴を開け後ろのパススルー映像を見えるようにします。スクリーンオブジェクトと干渉します(メイン画面を触れる)。カラーの場合は、手の形でパススルー映像を着色します。半透明:黒、青メインスクリーン等の上に半透明で手を表示します。スクリーンオブジェクトとは干渉しません(常に手前に表示されます)。各色はサーバー側の設定ファイルで変更できます(後述)。【ハンドトラッキングとVR動画の視差】VR(3D映像)の仕組み上、VR動画やハンドトラッキングの手の表示、パススルー映像それぞれに視差があります。アマレコVRではメイン画面設定のステレオ調整で視差の調整が可能です。30cmから50cmほど手を伸ばしたあたりで視差が合いました。メインスクリーンのスケールを50程度(50cm先にスクリーンを配置)にすると、両手を前に伸ばしたあたりでハンドトラッキングの手とメインスクリーンが干渉します。(パススルー映像を使う場合はポジショントラッキングをONにします。何センチ先で合わせるかで変わります。非透過ではスクリーンオブジェクトと干渉しません。■サブカメラ画面へ横型を追加16:9よりさらに横に広い視野の[横型]を追加しました。AmaRecVRServer.iniをメモ帳で編集して変更できます。変更した後はアプリを再起動しなくても、選択項目を変更した際に再度設定値をサーバーから読み込みます。[メインスクリーンを半透明にする]をONにして、透明度を調整することができるようになりました。半透明にすることでVRonVRの奥で再生している動画が見えなくなるのを防ぐことができます。メイン画面の表示範囲を制限することができます。画像処理を改善しレスポンスの向上と背景と判断する部分が増えました。赤い輪郭のマスクパターンを作成したいけど、緑の領域が加わっていたのが改善されます。アルファ3を使っていることが前提です。人はアルファ3の記事も合わせて観てください。今回はアルファ5としてインストールされます。アルファ3、アルファ4とは別アプリとしてインストールされます。2.使い方メイン画面設定の[画像処理]メニューから[自動背景透過]を選択してください。あとはメインプレイヤーで再生されている映像を自動で処理します。Playerを選択してください。Playerなので通常はそのままでOKです)AVProでは利用できません。画像処理の設定が初期値の[処理なし]に戻っています。再度、[自動背景透過]を選択してください。■画像処理メニュー[ぼかし(時間)]過去のフレームと加算し映像をぼかす度合いを設定します。数値が大きいほど映像のノイズや不安定な照明、差分フレームとキーフレームの画質差などを軽減し背景の判定がやりやすくなります。動きの少ない被写体も背景と誤判定され消えやすくなってしまいます。タイムラグが生じます。[背景閾値]低いほど被写体に有利な判定になります。代わりに背景の判定が上手くできず消えにくくなります。被写体が誤判定され消えやすくなります。[輪郭ぼかし]と[輪郭サイズ]判定結果(マスクパターン)の輪郭を調整します。お好みで調整してください。[背景バッファクリア]現在の解析結果を破棄し、ゼロから構築しなおします。設定の変更が反映されない場合にクリアしてください。Ver2.1.7が公開されています。公開パススルー機能が正式版になりました。した調整となっています。クロマキー合成用のVR映像が一般的でないため見送ることにしました。アルファ2の記事と合わせて見てください。オンラインヘルプを見てください。・ベータ版、アルファ1、アルファ2とは異なるアプリとしてインストールされます。同じアプリとして上書きされます。・アマレコVRサーバーも更新されています。ADBコマンドで開発者向けの機能を有効にする必要があります。アルファ1の準備の項を参照してください。Ver2.1.3からパススルー機能が正式版となりました。ADBコマンドなしでパススルー機能を利用できます。※アルファマップに関するファイルは今回からサーバー側に同梱しています。アプリには同梱されていません。Ver2.11アルファ2に同梱していたものと同じです。2.1.VRonVR新しくVR動画(通常の2D動画も可)を再生するための3rdプレイヤーを追加しました。3rdプレイヤーで動画を再生します。メイン画面設定にあるアルファマップAで合成します。アルファマップAの白い部分がメインプレイヤー、黒い部分が3rdプレイヤーの映像になります。その結果とパススルー映像がアルファマップBで合成されます。■3rdプレイヤーの操作コンソール画面で3rdプレイヤーに関する操作ができます。・[向き連動]をONにするとメイン画面の向き調整(メイン画面のチルトなど)と一緒に動くようになります。・3rdプレイヤーのリピートモード■ボタン機能3rdプレイヤーに関するボタン機能が追加されています。1でも動作はしますが、スペック的にQuest2でないと厳しいです。Quest2の場合は4KオーバーのVR動画も利用できますが、VRonVRで複数プレイヤーを使うとリソース不足でアプリケーションが強制終了される場合があります。60fpsのVR動画までの利用を推奨します。アプリ側でサムネイルを自動生成したり、ファイル画面のサムネイル簡易再生等も加わるとリソース不足になる場合が出てきます。自動生成はサーバー側で行うようにしてください。簡易再生にも制限を加えてください。試作版では3ストリームまででしたが、Ver2.1.3から4ストリームに対応しました。メインプレイヤー、サブプレイヤー、3rdプレイヤー、サムネイルプレイヤーを同時に利用できます。■その他3rdプレイヤーはVRフォーマット等を手動で設定できません。ファイル名へタグを入れたり、画像サイズから自動判別できるように準備を徹底してください。サブプレイヤーと3rdプレイヤーは現状AVProで再生するため欠落フレームが生じます。60fpsの動画でも50fps程度の再生となります。最近異なる円周魚眼動画があるようなのでパラメータで調整できるようにしました。歪みが少なく視聴できると思います。200度の魚眼レンズで作成されたVR動画ではスケール-140、PosZ-40あたりでしょうか。■円周魚眼パラメータ・スケールプラス側で調整するとXYZのスケールを調整します。50ならXYZそれぞれ半分の大きさのスクリーン形状に映像を投影して視聴します。Zスケールのみを調整します(スクリーン形状の厚みだけを調整します)。厚みが40%増します。・PosZカメラとスクリーンの距離を調整します。0が標準50なら50cmカメラへ近づける-50なら50cmカメラから遠くへ配置します。・プリセット円周魚眼パラメータメニューからプリセットを変更できます。(古い円周魚眼)■タグスクリーン形状を指定する際の-screen[FishEye]へ円周魚眼パラメータを追加できます。使いこなしてください。省略した場合はアプリ上で最後に手動設定した値となります。画像サイズや比率から自動判定する場合も同様に円周魚眼パラメータを利用できます。基本的にVRとしてのポジショントラッキングは常に有効です。映像を投影するスクリーンの位置とHMDの位置を一定に保つように動作します。いままでは常にONの状態でしたが、今回からOFFにできるようになりました。初期状態をOFFとしました。基本的にはポジショントラッキングをOFFにすることをお勧めします。ポジショントラッキングをONにしてください。■白黒オプション、上下反転オプションプレイヤー毎に白黒(モノクローム化)や表示を上下反転できるようになりました。メイン画面の位置をロードするかどうかのオプションを廃止しました。代わりに、動画ファイルに位置指定タグがある場合はその位置へ(一時的に変更されます)、タグが無い場合は最後に手動設定した位置へ(一時的に変更されていた場合は戻ります)となります。タグがある場合は一時的に変更され、タグが無い場合は最後に手動設定した状態に戻ります。・円周魚眼パラメータ■PCマウスのボタン機能が拡張されています。他のオプションボタンを押した場合へ機能を割り当てることができます。4.サーバーネットワークに関する設定が追加されていますが、基本的にはそのまま使ってください。・最大ストリーム数は4で使ってください。バッファサイズ一度にストレージから読み込むバイト数。小さく設定するとHDD等の場合にストレージの読み込み性能を発揮できません。レスポンスが悪くなります。通常1MBのまま利用してください。分のメモリを確保します。僅かにレスポンスが向上するかもしれません。2以上に設定してください。プロテクト使い終わったバッファを先読みで上書きされないように保護するバッファ数。僅かにレスポンスが向上するかもしれません。0以上に設定してください。通常、プレイヤー側でストリーミング再生の為のバッファリングを行っていますので、その範囲内でシークする場合は(サーバー側のキャッシュと関係なく)素早く処理されます。サーバー側のキャッシュが機能します。メモリーを約128MB使います。アルファ2以降を使っている場合はAmaRecVRServer.exeだけ上書きしてください。アルファ版を使っていない場合はAmaRecVRServer.exeeとalphamapフォルダをコピーしてください。使う場合はAmaRecVRServer213フォルダ内のファイル全てをコピーしてください。■その他Ver200と上位互換です。Ver2.0.0からVer2.1.3まで利用できます。ネットワーク(動画読み込みキャッシュ)に関する設定の変更はサーバープログラムの再起動が必要です。いままでアプリ側に含めていたアルファマップに関するファイルをサーバー側に同梱しています。Ver2.1.1アルファ2に同梱したものと同じです。アルファベットの大文字と小文字を区別しないようになりました。半角スペースとアンダースコア、ハイフンを区別しないようになりました。Ver2.1.7が公開されています。v34のアップデートが11月4日あたりから始まり、v34にすると(開発者向けの?)パススルー機能が使えなくなっているようです。私のことろではQuest1だけv34にアップデートされアマレコVRのパススルー機能が使えなくなっています。v33でパススルー機能を使っている人はv34のアップデートを暫く待った方がいいかもしれません。アマレコVRのアルファ3は1週間程度様子を見て進展が無いようなら、パススルー非対応(実験版のまま)な状態で公開します。v34でアプリのパススルー機能を使えている人もいるのかな?設定項目があるようなニュアンスの発言もあるし、パススルー機能を使えている人がいたらもう少し具体的な情報が欲しい。v34のアップデートも何段階かあって人によって違いが生じているのか、良く判らない状況です。公開2つのVR動画をアルファマップで合成するVRonVR機能の試作版です。VRonVR機能がどんなものか体験してみて見てください。アルファ2の導入が必要です。圧倒的なコンテンツ不足でほぼ出番はありません。そこで、アルファ2公開直前に思いついたのがVRonVRです。アルファ3のメインはVRonVRにとって代わりました。新しくVR動画を再生するための3rdプレイヤーを追加しました。メインプレイヤーと3rdプレイヤーの映像を(メイン画面設定にある)アルファマップAで合成します。アルファマップAの白い部分がメインプレイヤー、黒い部分が3rdプレイヤーの映像になります。その結果とパススルー映像がアルファマップBで合成されます。3rdプレイヤーに関する項目が追加されています。3rdプレイヤーに関する機能が追加されています。3rdプレイヤーに関する機能が追加されています。ホイール機能PCマウスのボタン機能が拡張されています。確認は取れていません。・アルファ2が使えていることが前提となります。アルファ2に含まれるアルファマップを導入してください。アルファ1、アルファ2の記事も合わせて見てください。1でも動作はしますが、スペック的にQuest2でないと厳しいです。・新しいアプリとしてインストールされます。・アマレコVRサーバーは更新なし。・3rdプレイヤーはVRフォーマット等を手動で設定できません。ファイル名へタグを入れたり、画像サイズから自動判別できるように準備を徹底してください。・サブプレイヤーと3rdプレイヤーは現状AVProで再生するため欠落フレームが生じます。・サブプレイヤーとサムネイルプレイヤーを同時に使うことはできません。自主的にサブプレイヤーを使わないか、または、カタログ機能を「リスト」にしてサムネイル機能を使わないようにしてください。現在のアマレコVRサーバーは最大3ストリームまでしか対応していません。次のように割り当てられます。アルファ2の導入が必要です。Ver2.1.7が公開されています。パススルー実験版の第2弾です。アルファマップなどメイン画面設定の強化とサブ画面の強化および、現実感を持たせるため全体をリアルスケールで再構成しました。第二弾をブログで公開しました。サブ画面の位置や向きの調整が可能です。調整中にA,Bまたはスティックを押すとコントローラーの先にサブ画面が張り付きます。アルファ1の記事と合わせて見てください。オンラインヘルプを見てください。アルファ1とは異なるアプリとしてインストールされます。アルファ1からアルファマップの内容が更新されています。同じフォルダへコピーしてください。上書きしないように工夫してください。alphamap.iniを編集して自作のアルファマップを追加できます(rw.miMainPresetNum=5)。・メイン画面のアルファマップアルファマップAとアルファマップBの二枚構成になります。従来通り1枚で理想的なアルファマップを用意して使うことも可能ですが、基本的なパターン2つを組み合わせる方が柔軟性があり簡単に多くのシチュエーションへ対応できます。アルファマップAはメインスクリーンと連動して動く(チルト機能などの向き調整)のに対し、アルファマップBはメインスクリーンとは連動せずパススルー映像の位置に固定されます。アルファマップAはVR動画の見たい部分、アルファマップBはパススルー映像の観たい部分をそれぞれ指定することになります。・メインスクリーンを半透明にする(変更なし)メイン画面へ透明度とアルファマップを適用します。メインスクリーンは常に不透明となります。ボタン機能でもON/OFFを切り替えることができます。・選択▽アルファマップを選択します。アルファマップを無効にしたい場合は、各アルファマップのチェックボックスをOFFにしてください。メインスクリーンを白黒で表示します。・パススルーパススルー映像をON/OFFします。・ブラックマスクアルファマップAはブラックマスクとして使うことができます。ブラックマスクにすると透明になる代わりに不透明な黒になります。VR映像内の見たくない部分を隠すのが主な目的です。アルファマップを常に正面へ表示します。・アルファ値ゲインアルファマップの値を調整します。オフセットが自動で設定されます。アルファ値ゲインの調整により次のようなことができます。白黒を反転することで代用できます。片方」を組み合わせます。グラデーションの位置と向きを調整できます。旧アルファマップ4は「丸」とアルファ値ゲインをマイナスに調整した「丸」を使います。丸の大きさや位置を調整できます。・メイン画面のスケール設定VR映像を投影するスクリーンを大きくしたり、小さくします。基本的にスケールを変更しても見た目はほとんど変わりません。表示される画像の大きさは変わらない)違いが出るのはパススルー映像とVR映像の位置ズレです。遠くの映像の位置が合うようになります。スケールを50から100程度にすることで近くのパススルー映像とVRに映っている人物の位置が合うようになります。ポジショントラッキングの影響を大きく受けるため画像が歪みます。パススルー映像と合成する際に遠くの方が大きくズレてしまいますので、遠くをアルファマップで隠したり、中心位置から動かないようにするなどの配慮が必要となります。通常は240で使って下さい。240に設定すると半径2.4mの球へVR動画を投影します。・自動向き調整ONにすると各サブ画面がHMDの方へ向くようになります。今までは常にONでした。今回からOFFにできるようになりました。今回からONの場合は各サブ画面の回転設定が無効になります。・メイン画面と連動メイン画面のチルト機能などをサブ画面へも適用します。いままでは常にONでした。今回からOFFにできるようになりました。パススルー映像を表示します。映像端を半透明にします。サイズで半透明にする幅を設定できます。動画視聴中(プレイ画面)、コンソール画面、サブ画面設定画面で使えます。ボタンを押しながらスティックの上下で位置前後、左右でスケールを調整できます。調整中スティックや他のボタンを押すと、VRコントローラーの先にサブ画面が張り付きますので、パススルー映像に映っている部屋のテレビなどへ簡単にサブ画面を設置することができます。スティックを使うため、この機能をスティックへ割り当てないでください。向きの調整はできません。サブ画面設定の[自動向き調整]と[メイン画面と連動]をOFFにすることをお勧めします。これらは位置や向きが意図せず変わります。Ver2.1.7が公開されています。進捗アマレコVRのパススルー実験版は3段階での開発を予定しています。APIはOpenXR版のOVRPluginを使う必要があります。OVRPluginはハンドトラッキングをはじめいくつか未対応な状態です。優先的に対応したいところですが、Oculus側の進捗を待つことになると思われます。アルファ3に間に合うといいなと思っています。APIを利用したアマレコVRの実験版です。ミックスドリアリティ体験ができます。インストールの項を見てください。QuestとPCをUSBケーブルで接続してからADBコマンドで開発者向け機能を有効にする必要があります。無効に戻ってしまうので、その都度ADBコマンドで有効にする必要があります。ベータ版とは別のアプリとしてインストールされます。そのためVer2.0.0の環境を崩すことなく実験することができます。Ver2.00を共通で利用します。同じフォルダへコピーしてください。3.使い方パススルーに関する機能は[メイン画面設定]に集約されています。・メインスクリーンを半透明にするメイン画面へ透明度とアルファマップを適用します。メインスクリーンは常に不透明となります。パススルーの映像が見えなくなってしまいます。パススルー映像を表示する部分を指定します。アルファマップの白い部分へVR動画、黒い部分へパススルー映像を表示するようになっています。アルファマップ用のPNGファイルは差し替えることができます。周囲をパススルー映像にします。[拡大]でVR動画を表示する領域を調整してください。周囲をVR動画にします。[拡大]でパススルー映像を表示する領域を調整してください。下のほうを不透明にします。[拡大]でVR動画を表示する領域を調整してください。下の方を半透明にできます。[アルファマップ4]上の方の一部を半透明にします。[アルファマップ5]天井や床をパススルー映像にします。アルファマップを常に正面へ表示します。4.ボタン設定パススルーに関する機能が追加されています。従来からありますが、メイン画面設定を直接表示する[メイン画面設定を表示]をお勧めします。On/Off]は本体のボリュームボタンへ割り当てることをお勧めします。・ハンドトラッキングに関する機能は使えません。v31以降でないと使えません。OFFにすることはできません。・設定画面のマウスボタン設定でホイール機能が選べない不具合を修正しました。・アマレコVRアプリによりサムネイル画像を作成すると白っぽい画像になってしまいます。サムネイル画像の自動生成はサーバー側で行ってください。・アルファマップにも視差があります。VR動画の視差と合わず、見づらくなりますので注意してください。・位置合わせVR動画とパススルー画像の位置をぴったり合わせようとするときに「ちょっと遠い」、「ちょっと近い」場合は[位置Z]と[Stereo調整]で行います。Stereo調整で合わせることができるならStereo調整を優先してください。Ver2.1.7が公開されています。0あまラボへようこそこのブログでは自作ソフトの最新情報やtips、PC動画に関する話題を掲載していきます。各記事へは下にあるカテゴリからアクセスして下さい。