web-dev-qa-db-ja.com

ARKitでカメラの品質を向上させる方法

シーンの写真を撮りたいARKitアプリを作っています。 ARCameraビューの画質は、iPadProで写真を撮るのに十分ではないことがわかりました。

標準カメラ画像:Standard camera image

ARCamera画像:ARCamera image

Appleフォーラムの投稿で、これはiPad Pro 10.5固有であり、固定レンズ位置に関連している可能性があると述べています( https://forums.developer.Apple.com/message/262950#26295 )。

設定を変更する公的な方法はありますか?

または、AVCaptureSessionを使用して通常の写真を撮り、それをsceneView.scene.background.contentsに適用して、写真が撮られた時点でぼやけた画像を高解像度の画像に切り替えようとしましたが、AVCapturePhotoOutputをARKitで動作させることができません

11
Edward Ford

更新:提出した人におめでとうございます 機能リクエスト ! iOS 11.3(別名「ARKit1.5」)では、キャプチャ設定の少なくとも一部を制御できます。そして、デフォルトでオートフォーカスが有効になっている1080pを取得できるようになりました。

ARWorldTrackingConfiguration.supportedVideoFormatsARConfiguration.VideoFormatオブジェクトのリストを確認します。各オブジェクトは、解像度とフレームレートを定義します。リストの最初は、現在のデバイスでサポートされているデフォルトの(そして最良の)オプションです。したがって、利用可能な最高の解像度/フレームレートが必要な場合は、何もする必要はありません。 (また、パフォーマンス上の理由で videoFormat を設定してステップダウンする場合は、ハードコーディングサイズではなく、配列の順序に基づいて行う方がよいでしょう。)

IOS 11.3ではデフォルトでオートフォーカスがオンになっているため、サンプル画像(被写体がカメラに比較的近い)の方がはるかに良く見えるはずです。何らかの理由でオフにする必要がある場合は、 そのためのスイッチがあります


ARKitが使用する基になるキャプチャセッションのカメラ設定を変更するためのAPIはまだありません。

WWDCに戻ったエンジニアによると、ARKitはカメラキャプチャ機能の限られたサブセットを使用して、CPUとGPUの使用への影響を最小限に抑えながら高フレームレートを確保します。高品質のライブビデオを作成するには処理のオーバーヘッドがありますが、ARKitを機能させるコンピュータービジョンとモーションセンサーの統合システムにも処理のオーバーヘッドがあります。オーバーヘッドが大きくなりすぎると、レイテンシーが追加され始めます。また、ユーザーに自分の世界の「ライブ」拡張ビューを表示することになっているテクノロジーの場合、「拡張」部分がカメラの動きを複数のフレームだけ遅らせることは望ましくありません。 (さらに、アプリがカメラビューの上に洗練された3Dコンテンツをレンダリングするために、CPU/GPUの時間を残しておく必要があります。)

状況はiPhoneとiPadデバイスで同じですが、画面が非常に大きいという理由だけでiPadでより多くのことがわかります。720pビデオは4〜5インチの画面ではそれほど悪くはありませんが、ひどく引き伸ばされているように見えます。 10〜13インチの画面に入力します。 (幸いなことに、iOS 11.3ではデフォルトで1080pを取得しますが、見栄えが良くなるはずです。)

AVCaptureシステムは、ビデオキャプチャ中に高解像度/高品質の静止画を撮影することを提供しますが、ARKitは内部キャプチャセッションを公開しないため、AVCapturePhotoOutputを使用することはできません。 (セッション中に高解像度の静止画をキャプチャすることは、おそらく良いままです 機能要求 。)

13
rickster
config.videoFormat = ARWorldTrackingConfiguration.supportedVideoFormats[1]

設定の設定方法をしばらく探す必要があったので、誰かに役立つかもしれません。

0
Michael Reder