Giter VIP home page Giter VIP logo

arproject's Introduction

Positionierung und Verdeckung von AR-Elementen

Diese Implementierung auf Basis des CloudAnchor Beispielcodes von Google zeigt, wie virtuelle Objekte persistent positioniert und von der Umgebung verdeckt werden können.

Einrichtung

Es gelten die gleichen Einrichtungsschritte, wie für das CloudAnchor Beispiel, siehe Get started with Cloud Anchors for Android. Insbesondere muss in Firebase ein Projekt mit Datenbank und CloudAnkor API Zugriff eingerichtet werden. Dort muss dann auch die google-services.json erhalten und in das Projekt eingefügt werden. Das Gerät, auf dem die App ausgeführt wird muss natürlich auch ARCore unterstützen und installiert haben.

Verwendung

Im Folgenden wird grob die Verwendung der App beschrieben.

Ankerpunkt setzen

Der Host Button kann verwendet werden, um einen Ankerpunkt zu setzen. Dazu sollte zunächst die Umgebung gut gescannt werden, sodass ARCore Features in der Umgebung erkennen kann. Ankerpunkte können nur auf erkannten Flächen gesetzt werden. Dazu muss einfach auf eine Fläche getippt werden, um einen Ankerpunkt zu setzen. Danach muss gewartet werden, bis am unteren Bildschirmrand angezeigt wird, dass das Setzen erfolgreich war.

Referenzpunkte und Stereobilder

Wenn ein Ankerpunkt aktiv ist (gesetzt oder erkannt wurde), können Referenzpunkte angelegt werden. Dazu wird das Gerät an eine Stelle bewegt, wo ein Referenzpunkt angelegt werden soll. Dann wird das Gerät langsam und gleichmäßig auf einer geraden Linie ohne Rotation von links nach rechts (Richtung ist wichtig!) bewegt. Wenn man dann ein einer gleicnmäßigen Bewegung ist, löst ein Tippen auf den Save Image Button den Speichervorgang aus (Man kann prinzipiell auch erst auf den Button Tippen, und dann anfangen mit der Bewegung, allerdings verwackelt man den Vorgang dann eher). Dabei sollte das Gerät gleichmäßig weiterbewegt werden, bis am unteren Bildschrimrand der Erfolg verkündet wird. Wenn man den Button drückt, wird dabei das linke Bild aufgenommen. Nach 3,5cm Bewegung wird das mittlere Bild und die Punktwolke gespeichert. Und nach weiteren 3,5cm wird das rechte Bild gespeichert. Die Bilder und Punktwolke werden unter sdcard/Pictures/ARProject abgelegt unter aus dem Referenzpunktnamen abgeleiteten Dateien, wie point_0.png, point_0_l.png, point_0_r.png und point_0.obj. Der Name des nähesten Referenzpunktes wird im UI angezeigt. Der Zähler für die Punktnames wird bei jedem Neustart zurückgesetzt, sodass vorherige Punkte überschrieben werden. Mit dem Clear DPs (clear depth points) Button kann der Zähler auch direkt zurückgesetzt werden. Die gespeicherten Referenzpunktpositionen werden dabei auch gelöscht. Gespeicherte Dateien bleiben jedoch erhalten.

Verdeckungsmodelle hinterlegen

Angefertigte Verdeckungsmodelle werden unter assets/depthimages abgelegt, unter dem gleichen Namen, wie die dazugehörige Punktwolke. Also beispielsweise point_0.obj.

Ankerpunkt erkennen

Mit dem Resolve Button kann ein Ankerpunkt erkannt werden. Nach Antippen des Buttons wird nach dem zuletzt erstellten Ankerpunkt gesucht. Wird der Button gedrückt gehalten, kann in einem Dialog statdessen eine beliebige Ankerpunktnummer eingegeben werden. Das Erkennen funktioniert am besten, wenn die Umgebung bereitsgut abgescannt wurde und ARCore eine genaue Vorstellung von der Umgebung hat. Zur Zeit sind Ankerpunkte mit der CloudAnchor API nur einen Tag verfügar. Danach gibt ein Erkennungsversuch eine Fehlermeldung zurück.

Debugansicht

In der Debugansicht werden Verdeckungsmodelle, Flächen, Punktwolken, Referenzpunkte, Ankerpunkt und Origin angezeigt. Zudem werden einige Debugbuttons und -anzeigen im UI sichtbar. Der Debugmodus kann mit dem Debug Button umgeschaltet werden.

arproject's People

Contributors

visualj avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.