webentwicklung-frage-antwort-db.com.de

Ist es möglich, Objekte in ARKit wie in Vuforia zu verfolgen?

Ich konnte keine Informationen finden, wenn Apples ARKit 3D-Objektverfolgung (oder sogar Bildverfolgung) unterstützt, wie dies bei Vuforia der Fall ist. Ich möchte kein 3D-Modell irgendwo auf der Welt platzieren. Stattdessen möchte ich ein bestimmtes 3D-Objekt erkennen und AR-Objekte vor und über diesem Objekt platzieren.

Einfaches Beispiel: Ich möchte ein bestimmtes Spielzeugauto in der realen Welt verfolgen und einen Spoiler in der AR-Szene darüber hinzufügen.

Kann mir jemand Auskunft geben, ob das möglich ist oder nicht?

15
Superwayne

Update für iOS 12: In "ARKit 2" (aka ARKit für iOS 12 oder höher) ...

  • Die Bilderkennung wurde auf die Bildverfolgung erweitert, sodass bis zu vier Bilder nicht nur einmal erkannt werden, sondern "live" in jedem Bild aktualisiert werden, selbst wenn sie sich relativ zum Weltraum bewegen. So können Sie ein erkennbares 2D-Bild an Ihr Spielzeug anhängen und den virtuellen AR-Inhalt dem Spielzeug auf dem Bildschirm folgen lassen.

  • Es gibt auch eine Objekterkennung: In Ihrem Entwicklungsprozess können Sie mit einer ARKit-App ein reales 3D-Objekt scannen und eine "Referenzobjekt" -Datei erstellen. Anschließend können Sie diese Datei in Ihrer App versenden und damit das Objekt in der Umgebung des Benutzers erkennen. Dies passt möglicherweise zu Ihrem "Spielzeugauto" -Koffer. Beachten Sie jedoch, dass die 3D-Objekterkennungsfunktion "Erkennung" und nicht "Verfolgung" ist: ARKit folgt dem Spielzeugauto nicht, während es sich bewegt.

Siehe der WWDC18-Vortrag zu ARKit 2 für Details.


Update für iOS 11.3: In "ARKit 1.5" (auch bekannt als ARKit unter iOS 11.3 oder höher) gibt es eine neue Bilderkennungsfunktion in ARKit. Wenn Sie ein bekanntes Bild haben (z. B. ein Poster oder eine Spielkarte oder ähnliches), können Sie es in Ihr Xcode-Projekt aufnehmen und/oder von einer anderen Stelle als ARReferenceImage laden und ablegen es im detectionImages Array Ihrer Sitzungskonfiguration. Wenn ARKit diese Bilder in der Benutzerumgebung findet, erhalten Sie ARImageAnchor Objekte, die Ihnen mitteilen, wo sie sich befinden.

Beachten Sie, dass dies nicht mit dem "marker-basierten AR" vergleichbar ist, das Sie in einigen anderen Toolkits sehen. ARKit findet ein Referenzbild nur einmal und gibt keine Auskunft darüber, wie es sich im Laufe der Zeit bewegt. Es ist also gut, um Erfahrungen mit AR-Inhalten "auszulösen" (z. B. wenn Sie mit Ihrem Handy auf ein Star Wars-Poster in einem Geschäft zeigen und ein Charakter das Geschäft verlässt), nicht aber für AR-Brettspiele, in denen virtuelle Charaktere verbunden bleiben zu Spielfiguren.


Andernfalls...

Es ist möglich, in jedem aufgenommenen ARFrame auf das Kamerabild zuzugreifen. Wenn Sie also eine andere Software haben, die bei solchen Aufgaben helfen kann, können Sie sie in Verbindung mit ARKit verwenden. Das Vision-Framework (ebenfalls neu in iOS 11) bietet beispielsweise mehrere Bausteine ​​für solche Aufgaben: Sie können Barcodes erkennen und ihre vier Ecken finden, und nachdem Sie eine Region von Interesse in einem manuell identifiziert haben Bild, verfolgen Sie seine Bewegung zwischen den Bildern.

28
rickster

Hinweis: Dies ist definitiv ein Hack, fügt ARKit Unity jedoch eine dauerhafte Bildverfolgung hinzu. Die gleiche Idee kann auch auf die Native Lib angewendet werden.

Laden Sie die Betaversion von ARKit 1.5 herunter https://bitbucket.org/Unity-Technologies/unity-arkit-plugin/branch/spring2018_update

Fügen Sie in ARSessionNative.mm diesen Codeblock hinzu:

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

Fügen Sie in UnityARSessionNativeInterface.cs diesen Code unter SessionRemoveUserAnchor hinzu:

private static extern void SessionRemoveAllAnchors (IntPtr nativeSession);

Und das unter RemoveUserAnchor:

public void RemoveAllAnchors() {
        #if !UNITY_EDITOR

        SessionRemoveAllAnchors(m_NativeARSession);
        #endif
    }

Rufen Sie dies dann über ein Update oder eine Coroutine auf:

UnityARSessionNativeInterface.GetARSessionNativeInterface().RemoveAllAnchors ();

Wenn der Anker entfernt wird, kann das Bild erneut erkannt werden. Es ist nicht super glatt, aber es funktioniert auf jeden Fall.

Ich hoffe, Sie fanden dies nützlich! Lassen Sie mich wissen, wenn Sie weitere Hilfe benötigen.

3
Aidan Wolf

ARKit 2.0 für iOS 12 unterstützt nicht nur Camera Tracking Funktion aber auch:

  • 3D-Objektverfolgung
  • Gesichtserkennung
  • Bildverfolgung
  • Bilderkennung
  • Scannen von 3D-Objekten

ARKit 3.0 für iOS 13 unterstützt noch komplexere Funktionen:

  • People Occlusion (RGBAZ-Echtzeit-Compositing)
  • Body Tracking (a.k.a. Motion Capture)
  • Multiple Face Tracking (bis zu 3 Gesichter)
  • Gleichzeitige Verfolgung der Vorder- und Rückseite der Kamera
  • Kollaborative Sitzungen
3
ARGeo