かげさんの111から始まるHistory » Nreal » RGBCameraRecord で指定できるオプションを調べてみた

« 接続されている Nreal グラスが Nreal Light か Nreal Air かを判定する | トップページ | あれ? Nreal Streaming Box につないだ Nreal Air に PC がつながらない »

2022.08.14

RGBCameraRecord で指定できるオプションを調べてみた

| |コメント (0)

 このエントリーをはてなブックマークに追加

どうも、かげさんです(^^)/
あなたがこの記事を読んでいるのは何回目でしょうか?
初めての方、いらっしゃい!
複数回目の方、再訪問ありがとです(・∀・)

NRSDK 1.9.3 で実行中プログラムの見た目を録画ができた! ユニティちゃんが動いてます!(まとめ)」に書いたように Nreal グラス(Nreal Light、Nreal Air)で視界の動画を撮影することができました。

かげさんが作った検証用のプログラムは NRSDK のデモである RGBCameraRecord を参考にして作成しました。

このデモを参考にして録画する時は、録画オプションを指定できます。

この記事では、録画オプションについて調べたことを紹介しますね。

Nrealvideorecordoption

オプションはコンボボックスが3つとチェックボックスが1つで指定します。

上の図は、3つのコンボボックスを全部開いた状態にしたものです。

コンボボックスは左から「解像度」、「録画対象」、「録音対象」となっています。

コンボボックスに隠れているチェックボックスは「useGreenBackGround」です。

解像度について

検証前、一番左は録画品質かなと思ったのですが、実際に録画して確認したところ解像度でした。

解像度コンボボックスの選択による動画録画の影響は下記の通り

コンボボックスの内容 解像度 備考
High 1920 x 1080 標準解像度の1.5倍(フルHD)だが、動作しない
Middle 1280 x 720 標準解像度
Low 640 x 360 標準解像度の半分

正常動作するのは、Middle と Lowで、High は正常動作しない。

High を選択して録画すると、Nreal グラスに何も映らなくなり、スマホでホームボタンを押してもアプリケーションの終了ができない状態になる。

動作しないのになぜ High の解像度が分かったかというと NRSDK のソースを確認したからです。

ヒントになったのは、Middle で 1280 x 720 、Low で 640 x 360 の動画が撮れたことだ。

動画の解像度自体は、VLC Media Player でスクリーンショットを撮って確認した。

この解像度を参考にして NRSDK 内のソースを見てみた。

具体的には、Unity プロジェクトの NRSDK のフォルダのサブフォルダを含めて拡張子 .cs (C#の拡張子)で検索をかけたところ、Assets\NRSDK\Scripts\Capture\NRVideoCapture.cs にあるメソッド SupportedResolutions に 1280 x 720 を標準解像度として、High だと x 3 ÷ 2 つまり、解像度を 1.5 倍にする計算処理があった。( x 1.5 としていないのは、計算結果が浮動小数点型にならないよう整数型を維持させるためだと思う。)

同じメソッド内には、Low だと ÷ 2 つまり、解像度半分にする計算処理があった。

このことから、標準解像度の 1.5 倍のフルHDサイズ(1920 x 1080)が High の解像度と判断した。

で、なぜ High だと動作しないかだが、これはおそらく Nreal Light の RGB カメラの解像度が 1280 x 720 なので、そこまでしか対応できないからじゃないかと思う。
 
こう考えると辻褄が合うんだよねぇ。

録画対象について

続いて録画対象だ。

こちらはコンボボックスの内容を見て想像した通りで下記のようになっていた。

コンボボックスの内容 動作
Blend

RGBカメラで撮影した内容 + プログラムで処理した CG(CG 部分は加算ブレンド)を表示

RGBOnly RGBカメラで撮影した内容のみ表示
VirtualOnly プログラムで処理した CG のみ表示

プログラムで処理した CG を「Virtual(仮想)」と呼んでいるようだ。

MR(Mixed Reality:複合現実)は、AR(Augmented Reality:拡張現実)を発展させたもの何だし、VR(Virtual Reality:仮想現実)みたいな 「Virtual(仮想)」じゃなくても良いんじゃないかと思うんだが…

加算ブレンドとは、真っ黒(R;0、G:0、B:0)を透明として扱い、画像を重ねて表示する方法だ。

Unity 上で背景黒の部分が、透明扱いになって透明になった部分は、背景である RGB カメラで撮影した映像が映ることになる。

なお、撮影された動画では、プログラムで処理された CG の真っ黒以外が半透明ではない状態で撮影されるが、実際に Nreal グラス越しに見えているのは、CG 部分は背景の明るさによっては半透明に見える。

また、Nreal グラスは、サングラス型なこともあり実際に見えている風景は、撮影された風景より暗く見えている。

つまり、実際に Nreal グラス越しに見えているモノと撮影されたモノは、完全一致した状態ではない。

Nreal グラス越しに見えているように見せかけた映像になっているということだ。

実際に使ってみた印象では録画対象で RGBOnly を使うことは無いんじゃないかと思った。

録音対象について

続いて録音対象だ。

こちらはコンボボックスの選択肢が全部は見えていないのでソースを見て補って書いた。

コンボボックスで Application までしか見えていない2つは Assets\NRSDK\Scripts\Capture\NRVideoCapture.cs にある AudioState の enum から ApplicationAudio と ApplicationAndMicAudio だと思われる。

また、この記事を書いた段階では自作アプリでサウンド処理を一切書いていないため、実際の動作確認は不十分である。

コンボボックスの内容 動作
MicAudio Nreal グラスのマイクから録音
ApplicationAudio アプリケーションで鳴らす音を録音
ApplicationAndMicAudio アプリケーションで鳴らす音を録音 + Nreal グラスのマイクから録音

動作確認は、サウンド処理を実装してからになるので後日書きます。

グリーンバック使用について

「useGreenBackGround」は、文字通り、プログラムで処理するCGで透過する背景部分を「緑の背景」で塗りつぶすものだ。

Greenback

用途としては、これと別の動画をブレンド表示するとかで使うんだと思う。

 

結局、画質を上げるオプションは無かったので、画質は、Nreal Light より Nreal Air が上みたい。

ここまではOKだ



最大201インチのシアター級巨大スクリーン(ARグラス越しに4mで130インチ、6mで201インチに相当)で映像をお楽しみいただくことができます。
TUVが認めた目に優しいARグラス:国際的な独立第三者検査・認証機関であるテュフラインランド(TUV Rheinland)からハードウェアレベルの「低ブルーライト・フリッカーフリー」認証を取得しました。


Nreal Streaming Box(エンリアル ストリーミングボックス) NR-7101AGL - ARグラス/スマートグラス Nreal Air 専用/Android・iOS 両対応/Nreal Airにケーブルで接続するボックス

 このエントリーをはてなブックマークに追加

| |コメント (0)

このエントリーへのリンク

このエントリーのリンクを入れるHTML:

コメント

このブログの新着コメントをRSSリーダに登録する為のxml




←名前とメールアドレスは必須です。
URLも記入すれば、URLのみが公開されます。
メールアドレスのみですと、メールアドレスが公開されてしまいますので、御注意ください。

↓コメント本文では、「a href」「b」「i」「br/」「p」「strong」「em」「ul」「ol」「li」「blockquote」「pre」のタグが使えます。絵文字をクリックすると、本文にタグを挿入できます。