web-dev-qa-db-ja.com

VuforiaのようにARKitでオブジェクトを追跡することは可能ですか?

AppleのARKitがVuforiaのように3Dオブジェクト追跡(または画像追跡)をサポートしている場合、情報を見つけることができませんでした。世界のどこかに3Dモデルを配置したくありません。代わりに、特定の3Dオブジェクトを検出し、ARオブジェクトをそのオブジェクトの前面および上部に配置します。

簡単な例:現実の世界で特定のおもちゃの車を追跡し、ARシーンでその上にスポイラーを追加したい。

誰かが私に可能かどうかの情報を提供できますか?

15
Superwayne

iOS 12のアップデート:「ARKit 2」で(iOS 12以降のARKit)...

  • 画像検出は画像追跡にまで拡張されているため、最大4つの画像が一度だけ検出されるのではなく、ワールド空間に相対して動いていてもフレームごとに更新されます。そのため、認識可能な2D画像をおもちゃに添付し、仮想ARコンテンツを画面上のおもちゃに追従させることができます。

  • また、オブジェクト検出もあります。開発プロセスでは、1つのARKitアプリを使用して、実際の3Dオブジェクトをスキャンし、「参照オブジェクト」ファイルを生成できます。次に、そのファイルをアプリに入れて、それを使用してユーザーの環境でそのオブジェクトを認識できます。これはあなたの「おもちゃの車」の場合に当てはまるかもしれませんが、3Dオブジェクト認識機能は追跡ではなく検出であることに注意してください。ARKitはおもちゃの車の動きに追従しません。

詳しくは、 ARKit 2のWWDC18トーク を参照してください。


iOS 11.3のアップデート:「ARKit 1.5」(iOS 11.3以降ではARKit)には、ARKitに新しい画像検出機能があります。既知の画像(ポスターやトランプなど)がある場合は、Xcodeプロジェクトに含めるか、他の場所から ARReferenceImage として読み込んで置くことができます。セッション構成の detectionImages 配列にあります。次に、ARKitがユーザー環境でこれらの画像を見つけると、 ARImageAnchor オブジェクトがどこにあるかを示します。

これは、他のツールキットで見られる「マーカーベースのAR」とはまったく異なります。ARKitは参照画像を1回だけ検出し、時間の経過とともにどのように移動するかを示しません。したがって、ARコンテンツエクスペリエンスを「トリガー」するのに適しています(ストアでスターウォーズのポスターに携帯電話を向けて、キャラクターが出て行くプロモーションなど)。ただし、たとえば、仮想キャラクターが接続されたままのARボードゲームには適していません。ゲームピースに。


さもないと...

キャプチャされた各ARFrameのカメラ画像にアクセスできるため、そのようなタスクを支援できる他のソフトウェアがあれば、ARKitと組み合わせて使用​​できます。たとえば、 Visionフレームワーク (iOS 11の新機能)は、このようなタスクのいくつかの構成要素を提供します。バーコードを検出し、四隅を見つけることができます。画像、フレーム間の動きを追跡します。

28
rickster

注:これは間違いなくハックですが、ARKit Unityに永続的な画像追跡を追加します。同じ考えをネイティブライブラリにも適用できます。

ARKit 1.5ベータ版をダウンロード https://bitbucket.org/Unity-Technologies/unity-arkit-plugin/branch/spring2018_update

ARSessionNative.mmで、次のコードブロックを追加します。

extern "C" void SessionRemoveAllAnchors(void* nativeSession) {
    UnityARSession* session = (__bridge UnityARSession*)nativeSession;
    for (ARAnchor* a in session->_session.currentFrame.anchors)
    {
        [session->_session removeAnchor:a];
        return;
    }
}

UnityARSessionNativeInterface.csで、SessionRemoveUserAnchorの下に次のコードを追加します。

private static extern void SessionRemoveAllAnchors (IntPtr nativeSession);

そして、これはRemoveUserAnchorの下にあります:

public void RemoveAllAnchors() {
        #if !UNITY_EDITOR

        SessionRemoveAllAnchors(m_NativeARSession);
        #endif
    }

次に、更新またはコルーチンからこれを呼び出します。

UnityARSessionNativeInterface.GetARSessionNativeInterface().RemoveAllAnchors ();

アンカーが削除されると、画像が再び認識されます。非常に滑らかではありませんが、確実に機能します。

これが役立つことを願っています!さらにサポートが必要な場合はお知らせください。

3
Aidan Wolf

ARKit 2.0 iOS 12では、Camera Tracking機能だけでなく:

  • 3Dオブジェクトトラッキング
  • 顔追跡
  • 画像追跡
  • 画像検出
  • 3Dオブジェクトスキャン

ARKit 3.0 iOS 13の場合、さらに高度な機能がサポートされます。

  • People Occlusion(RGBAZリアルタイム合成)
  • ボディトラッキング(別名モーションキャプチャ)
  • 複数の顔追跡(最大3つの顔)
  • フロントカメラとバックカメラの同時追跡
  • 共同セッション
3
ARGeo