web-dev-qa-db-ja.com

テクニックワールドトラッキングのパフォーマンスはリソースの制約の影響を受けています

ワールドトラッキングを有効にしてARKitセッションを実行している間、Xcodeコンソールにはログメッセージが表示されますが、トラッキングパフォーマンス

TLDR:私はそれらを引き起こしているもの、それらが持つ影響、それらを防ぐ方法、またはそれらが発生したときにそれらに(再)対処する方法を理解したいです。 NB。エラーを単に隠すだけではありません。

[Technique] World tracking performance is being affected by resource constraints [0]
[Technique] World tracking performance is being affected by resource constraints [1]

コンソールアプリは、これらがライブラリ ARKit からのものであり、ロギングカテゴリ Technique に分類されることを示しています。それらは warnings のように聞こえますが、コンソールアプリでは errors としてタイプが表示されます。

ワールドトラッキングの使用中に予想されるように、コンソールアプリはエラーの時間の前後に多くのCoreMotionログを表示しますが、これらの行にはエラー、警告、または診断に役立つその他の情報が含まれていないようです起こっている。

エラーがログに表示された瞬間、デリゲートコールバックはありません、しかし最終的に(5秒または50秒の間のいずれか)、コールバックセッションが失敗すると画面がフリーズします。

Error Domain=com.Apple.arkit.error Code=200 "World tracking failed." UserInfo={NSLocalizedDescription=World tracking failed., NSLocalizedFailureReason=World tracking cannot determine the device's position.}

ARKit source/ documentation は、「リソースの制約」が原因でデバイスの位置を決定できないのヒントを提供しません。

ワールドトラッキングで致命的なエラーが発生しました。

警告が表示されないように(成功せずに)試みました:

  • セッショントラッキングのリセット:まだエラー、

  • すべてのARAnchorsを削除してセッションをリセット:まだエラー、

  • 飛行機の検出を無効にする(不要になった):まだエラー、

ARセッションを一時停止すると、警告が無音になります(デバイスが一時停止中に移動の追跡を停止することを意味するため、意味があります)が、セッションを再開すると、警告が返されます。

セッションを閉じて再作成する場合(つまり、VC and and create)を閉じる)、カメラを移動(または照明を変更)せずに、問題が常に発生するわけではありません。

私の最善の推測は、点滅するTL-lights は、Appleのパフォーマンス警告の追跡の原因です- ワールドトラッキングの仕組みの説明

…視覚慣性オドメトリー。このプロセスでは、iOSデバイスのモーションセンシングハードウェアからの情報と、デバイスのカメラから見えるシーンのコンピュータービジョン分析を組み合わせます。 ARKitはシーン画像内の注目すべき特徴を認識し、ビデオフレーム全体でそれらの特徴の位置の違いを追跡し、その情報をモーションセンシングデータと比較します。

(iPhone 6S、iOS 11 beta 4、他のアプリはバックグラウンドで実行されていません)


質問:

  • 違いは何ですか [0]および[1]

  • これらのエラーの原因は何ですか?

  • ARSessionが(まだ)失敗していない間に、それらにどのような影響がありますか?フレーム更新によって提供される world座標が正確ではないため、「ジャンピー」モデルが表示されると想定しています。NB。 ARAnchor追跡をリセットまたは停止した後、エラーが引き続き発生しました。

  • ARセッションが失敗するかどうか、または予期しないものかどうかを知ることができますか? (繰り返しますが、ARSessionはトラッキング状態が「制限」に変更された直後に失敗しません)

  • これに対処する方法はありますか?言及されたこれらの「リソース制約」を解放しますか、それともまったく発生しないようにしますか?

17
PDK

Portrait Device Orientationのみを許可すると、このエラーは解決しました。

enter image description here

4
Scott Condron

これはxcode 9.1のバグだと思います。 SceneKitを使用している場合:ARSCNViewまたはサブクラスに.backgroundColor = "your color"を設定した場所を見つけます。この行にコメントして、プロジェクトをクリーンアップします。

3
Yao Huela

ストーリーボードに手動でView Controllerを追加し、ARSKViewを追加したため、このエラーが発生しました。これは、デフォルトでUIViewの子ビューであるUIViewControllerに子として追加します。したがって、横向きと縦向きをサポートするには、何らかの理由でこのエラーを引き起こした自動レイアウト制約を追加する必要がありました。

在庫のARプロジェクトを見ると、ARSKViewはView Controllerの直接の子であり、自動レイアウトの制約なしですべてのビューのサイズと向きをサポートしています。このように設定すると、エラーは消えました。

1
inorganik

この問題は、何かをpoしようとしたときに制約を使用した場合にのみ発生したため、これは一種のバッグだと思います。

たとえば、無効にすると、コードの下の制約が期待どおりに機能します。

enter image description here

0
wm.p1us