Blackmagic Design Intensity Pro 4K記事執筆の時点で一般向けに市販されていた唯一の2160p 30fps録画対応ビデオキャプチャカード。このフォーマットをサポートすることから理論上はOculus Rift CV1のHDMI 映像信号をキャプチャ可能な筈であるが、ドライバがサポートしていないためキャプチャできなかった

Oculus Riftのスクリーンショットが欲しい!

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

by [2016年9月06日]

筆者の手元に届いてからそれなりの時間が経過したOculus Rift CV(Consumer version)1。

この新しい映像出力デバイスを何とか使いこなすべく、日夜思案やら工夫やらを行っている筆者ですが、そんな筆者にとって悩みのタネになっていることがありました。

それは、「Oculus Riftにせよ、Steam VRにせよ、2D画面キャプチャ手段が標準では提供されていない」ということです。

アプリによっては、Windows側のディスプレイ上にウィンドウ表示でOculus Rift側に表示されている映像を2D変換、あるいはそのままで出力してくれる親切な設計のものも幾つかあるのですが、例えばOculusが標準で提供しているホーム画面などは一切Windowsのデスクトップ上では表示されません。

このため、筆者のような立場の人間が自分の書く記事上でどうにかしてその映像出力を静止画像の形で取り込み紹介できるようにしたいと考える場合、必然的に実際にOculus Rift本体に送り込まれている映像信号を何とか横取りして取り込めないだろうか、と考えるのはある意味当然の成り行きと言ってよろしいでしょう。

そこで今回は、Oculus Riftの映像出力をどうすればキャプチャできるのかについて考えてみることにしましょう。

3つある基本的な考え方

Oculus Riftの出力映像をキャプチャする手立てとしては、3つの方法が考えられます。

 1つは、Oculus Rift本体の接眼レンズ部にカメラを取り付けて実際の映像を「撮影」する方法
 2つ目は、Oculus RiftのHDMIコネクタとパソコンのグラフィックスカードのHDMIコネクタの間に何らかのビデオキャプチャデバイスを介在させ、映像信号を「録画」する方法
 3つ目は、Oculus RiftのソフトウェアがDirect Xを基礎として動作していることに着目し、ソフトウェア的に映像データを「横取り」する方法

他にも何か手がありそうな気もしますが、とりあえずはこの3つで考えてみることにしましょう。

労多くして得られるものが少ない「撮影」

まずは非常にアナログな感じの「撮影」から。

この方法の場合、問題となるのはまずどのようなカメラを用意し、どう撮影するかです。

ドイツ・ノイマン KU100 製品紹介ページスタジオ・業務用マイクを中心とする放送機材メーカーであるノイマン社が製造販売しているダミーヘッドマイクの例。大変凝った造りになっていて機能的にも充実しているのだが、その分大変に高価である

ドイツ・ノイマン KU100 製品紹介ページ
スタジオ・業務用マイクを中心とする放送機材メーカーであるノイマン社が製造販売しているダミーヘッドマイクの例。
大変凝った造りになっていて機能的にも充実しているのだが、その分大変に高価である

理想となるのは、バイノーラル録音で用いられるダミーヘッドマイクのように、人の頭を模した部品(ダミーヘッド)の目の位置にカメラを仕込んで、そのダミーヘッドにOculus Riftを装着させて撮るというやり方です。

Oculus Riftの表示部とカメラの位置関係からするとこれが恐らくベストの撮影方法で、そもそもOculus Rift自体の接眼部の上にマイクロスイッチを内蔵していて、装着しこのスイッチが押し込まれなければ映像出力が行われない仕組みとなっていることも考え合わせると、確実性の点でもこれ以上のやり方はないと言えます。

もっとも、ダミーヘッドを作成しその中に適切なサイズ・性能のカメラを内蔵し…という手順を考えればこれは大変な手間のかかる方法(※注1)で、しかも一旦アナログの映像として出力したものを再度ある固有の光学特性を備えたレンズや撮像素子を介して「撮影」することから、得られる画像の画質劣化も避けられません。

 ※注1:ちなみに録音用ダミーヘッドマイクでも製作に手間がかかるのは同じことらしく、業務用として市販されているノイマン社製のダミーヘッドマイクの中には何と100万円もの高額のプライスタグが付されている機種があったりします。

また、ゲームのプレイ動画・スクリーンショットなどを撮影したい場合には、このダミーヘッドカメラの出力映像を見ながらプレイということになって、実際にOculus Riftを装着する場合と同様の操作を行うことが難しいという問題もあります。

それではもっと簡便に済ませるためにダミーヘッドなしで直にカメラを当てて撮影すればどうかという話になるのですが、その場合にも先に触れたマイクロスイッチを確実に押し込んだ状態のままで固定しつつ、しかも撮影用カメラとOculus Riftの接眼レンズの位置関係が狂わないようにしながら撮影するための工夫を行わねばならず、どうにも良い手ではありません。

1枚、どうしても必要なスナップショットを撮るだけならこのやり方でも何とかなりますが、そもそもこの状態ではプレイ中の状態の記録ができませんから、そうした用途には使えません。

色々難しい問題のある「録画」

次は、「撮影」よりは良い画質が期待できる「録画」です。

Blackmagic Design Desktop Video UtilityBlackmagic Design社製ビデオキャプチャカードであるIntensity Pro 4Kに提供されている入出力設定変更ユーティリティ。この状態ではOculus Rift CV1のための映像出力を受け取っているはずなのだが…

Blackmagic Design Desktop Video Utility
Blackmagic Design社製ビデオキャプチャカードであるIntensity Pro 4Kに提供されている入出力設定変更ユーティリティ。この状態ではOculus Rift CV1のための映像出力を受け取っているはずなのだが…

これは仕組みとしては至って単純で、パソコンのHDMI出力端子とビデオキャプチャデバイスのHDMI入力端子を、Oculus RiftのHDMIコネクタケーブルをビデオキャプチャデバイスのHDMI出力端子にそれぞれ接続する、あるいはパソコンのHDMI出力端子からHDMI分配器に接続し、主となるHDMI出力端子をOculus RiftのHDMIコネクタケーブルに、分配先となるHDMI出力端子のいずれかをビデオキャプチャデバイスのHDMI入力端子に接続する、といった結線によってパソコンが出力する映像信号をビデオキャプチャデバイスによって録画しようというものです。

Intensity Pro 4Kのドライバにバンドルされている純正録画編集ユーティリティである Media ExpressOculus Rift CV1とパソコンの間の接続に挿入したにもかかわらず、このIntensity Pro 4Kがパソコンから新たに接続されたフルHD解像度ディスプレイとして認識され、その画面がキャプチャされてしまっている

Intensity Pro 4Kのドライバにバンドルされている純正録画編集ユーティリティである Media Express
Oculus Rift CV1とパソコンの間の接続に挿入したにもかかわらず、このIntensity Pro 4Kがパソコンから新たに接続されたフルHD解像度ディスプレイとして認識され、その画面がキャプチャされてしまっている

この方式にも幾つか問題があって、まず1つは、ビデオキャプチャデバイスのHDMI入力からHDMI出力への経路がいわゆるスルーになっていないと、つまり一旦キャプチャした映像を出力する方式になっていると、パソコンのグラフィックカード側が自動でそのキャプチャデバイスの入力側を通常のディスプレイ相当のデバイスとして認識してしまい、Oculus Riftのドライバがその先にあるOculus Rift本体を見失ってVR映像出力を行わなくなってしまうこと(※注2)です。

 ※注2:筆者が後述するIntensity Pro 4Kでテストしてみたところ、その時点で利用可能なビデオ向けの解像度(具体的には直前に使っていた1080i 59.94fps)で接続されてIntensity Pro 4Kが解像度1,920×1,080ピクセルの新たなディスプレイとしてパソコン側に認識されてしまいました。つまり、この機種の入力端子と出力端子はスルー接続ではないということになります。

接続方法としてパソコン側映像出力信号の分配を挙げたのは、内部的に入力と出力がスルー接続になっていない/できないビデオキャプチャデバイスで、この問題を回避するためです。

しかし、こうしてこの問題を回避しても、2つ目の問題があります。

それは、そもそもOculus Rift CV1の映像出力が2,160×1,200ピクセル 90fpsという既存の他のデバイスにない、極めて特殊なフォーマットとなっていることです。

Sapphire R9 290 4GB GDDR5 DP HDMI 2DVI PCIEAMD RADEON R9 290搭載グラフィックスカードの例。Oculus Rift CV1の推奨動作環境の最下限に位置するカードであるが、このRADEON R9 290がハードウェア的にHDMI 1.4までしかサポートしていなかったことが、Oculus Rift CV1の画面解像度を変則的なものとした可能性がある

Sapphire R9 290 4GB GDDR5 DP HDMI 2DVI PCIE
AMD RADEON R9 290搭載グラフィックスカードの例。Oculus Riftの推奨動作環境の最下限に位置するカードであるが、このRADEON R9 290がハードウェア的にHDMI 1.4までしかサポートしていなかったことが、Oculus Rift CV1の画面解像度を変則的なものとした可能性がある

これは恐らく一部の対応グラフィックスカードで搭載されていたHDMI 1.4規格対応のHDMI出力端子で許容できる帯域をフルに使い切れるように定められたフォーマットであると推測されます(※注3)。

 ※注3:Oculus Rift CV1の開発がなされていた当時、その対応機種とされたAMDのRADEON R9 290・290XにはHDMI 1.4a対応のHDMI端子が搭載されていました。そのため、この2機種をサポートする限りはこの規格で許容される上限値となる3,840×2,160ピクセル(2160p) 30fpsのデータ転送量の枠内に収まるようなフォーマットとせねばならず、またVR酔い対策として画面の高リフレッシュレート化も求められたことから、結果として2,160×1,200ピクセル 90fpsという特殊なフォーマットが選定されたと推定できます。というのは、この解像度ならば乱暴に言って3フレーム分の映像情報(3,600×2,160ピクセル相当)を2160p 30fpsの1フレームに押し込むことで、結果的に2,160×1,200ピクセル 90fpsを実現できるためです。なお、RADEON R9 290と同じくOculus Rift CV1の対応最下限とされたNVIDIAのGeForce GTX 970は2160p 60fpsをサポートするHDMI 2.0対応でした。

もっとも当然ながらこの解像度は通常の液晶ディスプレイやビデオキャプチャデバイスが「知っている」ものではなく、またHDMI経由でのデータ転送量的にもいわゆる1080p 60fpsのそれを超えるため、大半の機種が1080p 30fpsまでしか対応しない、あるいは対応している製品でも内部的にはリフレッシュレートを半分に間引き処理し1080p 30fpsに変換して録画することでデータ転送量を低減させている、一般的なビデオキャプチャデバイスでは正常に認識できません。

つまり、Oculus Rift CV1に入力される映像信号を録画するには、性能的に最低でもHDMI 1.4の上限解像度、つまり2160p 30fpsをサポートするクラスのビデオキャプチャデバイスが必要であるということになります。

Blackmagic Design Intensity Pro 4K記事執筆の時点で一般向けに市販されていた唯一の2160p 30fps録画対応ビデオキャプチャカード。このフォーマットをサポートすることから理論上はOculus Rift CV1のHDMI 映像信号をキャプチャ可能な筈であるが、デバイスドライバがサポートしていないためキャプチャできなかった

Blackmagic Design Intensity Pro 4K
記事執筆の時点で一般向けに市販されていた唯一の2160p 30fps録画対応ビデオキャプチャカード。このフォーマットをサポートすることから理論上はOculus Rift CV1のHDMI 映像信号をキャプチャ可能な筈であるが、デバイスドライバがサポートしていないためキャプチャできなかった

記事執筆時点で一般に市販されている民生向けビデオキャプチャデバイスでこの条件を満たすのは、Blackmagic DesignのIntensity Pro 4Kという4レーンのPCI Expressに対応するビデオキャプチャカード位のもので、これもデバイスドライバレベルでOculus Rift CV1の2,160×1,200ピクセル 90fpsという変則フォーマットをサポートしていません。

実際に接続しても正しく検出されませんでしたから、このため残念ながら少なくとも記事執筆時点では、このIntensity Pro 4Kを用いてOculus Rift CV1のためのHDMI映像信号をキャプチャすることはできないと判断せざるを得ません(※注4)。

 ※注4:Intensity Pro 4Kはスペック的にHDMI 1.4bでの録画をフルサポート可能なハードウェア設計となっているため、デバイスドライバレベルで対応していれば、理屈上はOculus Rift CV1の映像信号をキャプチャできることになります。このあたりはBlackmagic Designの対応次第ということになりますから、どうしてもこのカードでOculus Rift CV1の映像信号をキャプチャしたい方はBlackmagic Designのサポートにリクエストしてみると良いかも知れません。

あるいは今後、VRデバイスが普及してくれば、それらをサポートしたことをセールスポイントとするビデオキャプチャデバイスが市販される様になる可能性も当然あります。また、この方法だと録画をIntensity Pro 4Kを挿した別のパソコンが行うため、Oculus Riftが本来直接接続されている筈のパソコンのCPUに負担をかけないというメリットもあります。そのため、「録画」については今後のビデオキャプチャデバイスメーカー各社の対応に期待としておきましょう。

Windows 10限定だがお手軽な手段のある「横取り」

最後は純粋にソフトウェア的な手段による「横取り」です。

Oculus RiftのソフトウェアやSteam VRがその3Dグラフィックス描画機能をDirect Xの標準的なAPIに依存していることから、そのAPIを利用することで出力直前のグラフィックス画面データを横取りしキャプチャすることも可能なのではないか、という考えによるこの手法、通常ならばそのためのアプリを自分で書いて用意するか、その機能を備えたフリーソフトウェアがないか探してみるかする必要があるのですが、非常に都合の良いことにはWindows 10限定でOSの機能として提供されているユーティリティを用いれば簡単に行えるようになっています。

Xboxアプリの「ゲームバー」で選択したウィンドウのアプリをゲームとして設定すると、Windowsキー+Gで右下のようなバーが現れ、画面録画キャプチャやスクリーンショット取得ができるようになる。ただし、できない画面・環境・アプリもあって現状では完全ではない

Xboxアプリの「ゲームバー」で選択したウィンドウのアプリをゲームとして設定すると、Windowsキー+Gで右下のようなバーが現れ、画面録画キャプチャやスクリーンショット取得ができるようになる。ただし、できない画面・環境・アプリもあって現状では完全ではない

実は、Windows 10にバンドルされているXboxアプリの1つであるゲームバーという画面キャプチャ・録画ユーティリティを用い、Oculus Riftのコンテンツを動作させる際にデスクトップ上で起動するアプリを「ゲーム」として認識させることで、画面キャプチャや録画が可能なのです。

ゲームバーの設定から選択したアプリを「ゲーム」として個々に認識・登録する手順が若干繁雑で、しかもデフォルトではOculus Riftの操作のために手はXboxコントローラなどのコントロールデバイスで埋まっているにもかかわらず、キーボードによって録画などの各種操作を行う必要があるのですが、それでも特別なハードウェアを必要としない、この簡便さは他に代えがたいものがあります。

ただ、この方式にも2つ難点があって、1つは結局Oculus標準のホーム画面やライブラリなどのキャプチャが正しく行えないこと、もう1つは録画処理もOculus Riftが動作しているパソコンのCPUが行うため、CPU性能面で不足のあるマシンだと処理落ちが起きてしまう恐れがあることです。

前者は結構困った問題で、これならば普通に起動しWindowsのデスクトップにウィンドウを開くRift対応アプリを手動でキャプチャするのと大差ありません。

また後者については、例えば筆者の愛機であるHewlett Packard Z800は搭載CPUコア数もスレッド数も共に一般的なデスクトップパソコンを上回るハードウェア構成となっているのですが、CPUのシングルスレッド性能が足りないためにOculusの推奨環境を満たせていません。こうした微妙に性能の足りないマシンでOculus Riftの画面録画とそのための画像圧縮をリアルタイムで行うと、CPUの性能不足から処理落ちなどの問題が生じる可能性があるのです。もちろん、筆者のZ800のように多CPUコアでスレッドが手待ち状態となっているような状況だと、これは恐らく問題とならない筈なのですが…。

完全にキャプチャするためにはビデオキャプチャデバイスの対応を待つ必要がある

以上、記事執筆時点でのOculus Riftの画面キャプチャ事情について見てきましたが、結局の所現時点では完全にOculus Rift CV1の画面キャプチャを行う手段は無い、ということになりそうです。

無論、自分でOculus Riftのドライバから画像を横取りしてしまうようなアプリが書ければ、それで解決してしまいそうな話なのですが、先にも触れたホームやライブラリなどを含む全ての画面をキャプチャするとなると、やはりIntensity Pro 4Kをはじめとする対応可能性のある/対応できる性能を備えたハードウェアを用いる必要がありそうです。

▼参考リンク
Georg Neumann GmbH – Products/Current Microphones/KU 100/Description
Blackmagic Design: Intensity Pro 4K

タグ:
PageTopへ