
Viele Entwickler verwenden AR seit langem in ihren Anwendungen. Eine gute Hilfe hierfür sind Lösungen von Drittanbietern wie OpenCV oder Wikitude. Mit der Veröffentlichung von iOS 11 haben Programmierer Zugriff auf das ARKit-Systemframework. Mal sehen, wie gut diese Bibliotheken sind und welche für Ihr nächstes Augmented Reality-Projekt verwendet werden sollten.
ARKit
Zu den unbestrittenen Vorteilen von ARKit gehört seine Ursprünglichkeit. Die Integration und Konfiguration dauert nur wenige Minuten. Xcode erledigt freundlicherweise die Hälfte der notwendigen Operationen für Sie, wonach das Framework "einfach funktioniert". Es ist sehr einfach, die Interaktion zwischen ARKit und anderen Systemframeworks (SpriteKit, SceneKit, Metal, CoreLocation usw.) zu organisieren.
Die Bibliothek ist gut optimiert und nutzt die Hardwarefunktionen der neuesten iPhone- und iPad-Modelle maximal aus. Eine Vielzahl von Berechnungen, die unter der Haube stattfinden, haben fast keine Auswirkungen auf die UX. Ich bin zufrieden mit der Genauigkeit, mit der das Framework Ebenen und Markierungen erkennt. Weder schlechte Beleuchtung noch plötzliche Bewegungen des Geräts stören dies. Dank der komplementären Technologien von VIO (Visual Inertial Odometry) und IMU (Inertial Measurement Unit), die die Grundlage von ARKit bilden, gelang es den Apple-Mitarbeitern, Berechnungsfehler zu minimieren.
Natürlich nicht ohne Nachteile. Erstens ist ARKit nur auf Geräten mit iOS 11+ verfügbar und wird nur auf iPhone 6s und jünger, iPad Pro (9.7, 10.5 oder 12.9) unterstützt. Leider kann dies Kunden entfremden, die Angst haben, einen Teil ihrer Zielgruppe zu verlieren.
ARKit ist so konzipiert, dass Informationen über die Objekte der umgebenden Welt und die Position des Geräts darin ständig kalibriert werden. Aus diesem Grund wird zu Beginn der Sitzung, obwohl die Daten nicht genau genug sind, ein Gefühl der "Instabilität" der Arbeit erzeugt, das noch nicht beseitigt werden kann. Wenn die Sitzung lang genug und geringfügig ist, werden sich anscheinend Fehler in den Anzeigen der Sensoren ansammeln und deutlicher.
Beim Erkennen von Bildern treten Probleme bei der Positionierung des AR-Objekts auf, das Objekt schwebt und ist am angegebenen Punkt nicht klar fixiert. Ein ähnliches Verhalten wird in dem
von Apple veröffentlichten Beispiel beobachtet. Ein Objekt, das an einem bestimmten Punkt im Raum platziert ist, bewegt sich jedoch praktisch nicht.
In einigen Fällen (kleine Schwarzweißbilder von nicht sehr guter Qualität) wird der Marker erkannt, aber das System ermittelt seine Koordinaten falsch. Infolgedessen wird das AR-Objekt an der falschen Stelle gezeichnet.
ARKit ist sehr einfach zu erlernen. Um loszulegen, benötigen Sie ein Mindestmaß an Wissen. Eine relativ große Anzahl von Schulungsartikeln und Codebeispielen wurde bereits im Web veröffentlicht, und die Community ist groß und reaktionsschnell, sodass es nicht schwierig sein wird, Antworten auf Fragen zu finden, die beim Schreiben von Code auftreten.
Opencv
Die in C ++ geschriebene OpenCV-Bibliothek wird kostenlos verteilt und bietet Ihnen die Möglichkeit, das
iOS SDK von der offiziellen Website herunterzuladen oder selbst zu kompilieren.
Bereits in der Phase der Einführung der Fans wartet Swift auf eine faszinierende Suche, um Kompilierungsfehler zu beseitigen, die sich über mehrere Stunden auszudehnen drohen. Glücklicherweise sind im Web schrittweise Anleitungen verfügbar, die von unseren Kameraden veröffentlicht werden, die bereits ein hartnäckiges Framework überwunden haben (z. B.
OpenCV mit Swift - Schritt für Schritt ).
Nachdem Sie es endlich geschafft haben, das Projekt mit der verbundenen Bibliothek zu starten, stellt sich die Frage, was als nächstes zu tun ist. Vielleicht entscheiden Sie sich, auf der offiziellen Website nach Tutorials zu suchen. Dort warten iOS-Entwickler auf drei Beispiele für die Verwendung der alten Version des Frameworks in Projekten, die sich auf iOS 8 konzentrieren. Es gibt nicht so viele moderne Artikel zur mobilen Entwicklung mit OpenCV. Anscheinend liegt dies daran, dass jeder, der diese Bibliothek beherrschen möchte, dies vor langer Zeit getan hat und keine Erklärungen mehr benötigt.
Anfänger haben jedoch immer noch die Möglichkeit, dieses zweifellos leistungsstarke Werkzeug zu beherrschen. Es wird jedoch viel Zeit und Mühe kosten. Wie jede andere Bibliothek auf niedriger Ebene erfordert OpenCV gründliche Studien, eine detaillierte Analyse der Dokumentation, das Durchsuchen von Tausenden von Diskussionen in Foren auf der Suche nach einer Antwort auf Ihre Frage und endlose Experimente.
Vergessen Sie übrigens nicht, etwas mehr Zeit hinzuzufügen, um den Universitätskurs in Mathematik im Speicher wiederherzustellen, da OpenCV die Formeln nicht für Sie anzeigt.
Wikitude
Zunächst ist Wikitude ein bezahlter und keineswegs
billiger Rahmen. Die kostenlose Version enthält Wasserzeichen, sodass Sie sie nicht für Release-Builds verwenden können.
Trotzdem ist die Bibliothek das Geld wert. Im Gegensatz zu ARKit werden auch ältere Geräte und Systemversionen unterstützt. Das Produkt ist gut dokumentiert, enthält viele Artikel, Lektionen und Codebeispiele, sodass die Integration und Implementierung der einfachsten Aufgaben für einen unvorbereiteten Programmierer nur wenige Stunden dauert.
Der Hauptbereich der Bibliothek ist die Markererkennung. Als letztere können beliebige Bilder ohne Alphakanal verwendet werden. Zwar funktioniert Wikitude nur mit nativen Formaten. Markierungsbilder müssen im WTC-Format verpackt sein, 3D-Modelle müssen in WT3-Dateien konvertiert werden. Fairerweise sollte beachtet werden, dass Wikitude auf seiner Website Konvertierungstools bereitstellt.
Im Allgemeinen kommt das Framework seiner Aufgabe gut nach: Markierungen werden erkannt, AR-Objekte werden dort platziert, wo Sie es geplant haben, schwimmen nicht, wenn Sie den Betrachtungswinkel ändern oder die Kamera bewegen. Das Posten eines Bildes, Videos oder 3D-Modells ist nicht schwierig, ebenso wie die Interaktivität sicherzustellen. Die gleichzeitige Arbeit mit mehreren Markern wird unterstützt. Bei der Konfiguration von Bibliotheksklassen ist es jedoch besser, deren Anzahl zu begrenzen, um die Leistung zu verbessern.
Ich stelle jedoch fest, dass bei schlechten Lichtverhältnissen sowie bei ungenauen Bewegungen des Geräts Probleme bei der Erkennung von Markern auftreten, selbst wenn für deren Erstellung hochwertige Quellbilder verwendet wurden.
Wikitude unterstützt JS und die native Version des SDK.
Wenn Sie sich für die JS-Version für die Integration entscheiden, lehnen Sie das bequeme Swift oder Objective-C ab, das Ihnen am Herzen liegt, und konzentrieren Sie sich auf das Schreiben von JavaScript-Code. Und da letzteres bei der Arbeit mit Xcode sehr schmerzhaft ist, installieren Sie Sublime oder einen seiner Ersatzprodukte gleichzeitig. Und versuchen Sie sofort zu schreiben, da das Debuggen und Beheben von Fehlern nicht einfach ist.
Ein weiterer Punkt betrifft die Optimierung. Wenn Sie längere Zeit mit JS AR-Objekten interagieren, verlangsamt sich die Version des Frameworks merklich, und fps wird stark beansprucht, was jedoch nicht überraschend ist.
Die native Version des SDK ist bei aller Freundlichkeit praktisch frei von „Magie“. Tatsächlich benachrichtigt es Sie nur, dass der Marker erkannt wird, meldet seine Kennung und Koordinaten im Raum und gibt anschließend die Flagge an Sie weiter. Anschließend können Sie Ihr Lieblingswerkzeug, z. B. OpenGL, zum Zeichnen von AR-Objekten verwenden.
Fazit
Wenn Sie also ein Anfänger sind, der sich für Augmented Reality entschieden hat, hängt alles von Ihrem Kunden und seinen Bedürfnissen ab. Wenn es dem Kunden nicht leid tut, mehrere tausend Euro für ein qualitativ hochwertiges kostenpflichtiges Framework auszugeben, und Sie keine Angst vor JavaScript oder OpenGL haben, nehmen Sie Wikitude. Andernfalls beginnen Sie mit ARKit. Dank zahlreicher Beispiele und Community-Unterstützung können Sie schnell einfache Aufgaben implementieren und diese Technologie „testen“. Wenn Sie dann anfangen zu verstehen, was was ist, und sich ein wenig daran gewöhnen, ist es möglich, das OpenCV auf niedriger Ebene zu stürmen und zuvor unzugängliche Spitzen zu erobern.