2017-01-24 3 views
2

Wir entwickeln unsere eigene Android-basierte Hardware und möchten Vuforia (entwickelt über Unity3D) für bestimmte Anwendungen verwenden. Wir haben jedoch Probleme damit, Vuforia mit unseren aktuellen Einstellungen für die Kameraausrichtung gut arbeiten zu lassen.Falsche Kameraausrichtung mit Android & Vuforia

Auf unserer Hardware, wenn die Kamera horizontal platziert wird - alles funktioniert gut. Das heißt, wenn die Kamera parallel zur Platzierung des Displays ist. Allerdings müssen wir die Kamera vertikal oder mit anderen Worten mit einem 90-Grad-Unterschied zur Platzierung des Displays platzieren. Dies sind alle Hardwareeinstellungen. Unser Kernel wird entsprechend dieser Einstellungen programmiert und jedes andere Programm, das die Kamera verwendet, arbeitet kompatibel mit allem, einschließlich unserer IMU-Sensoren. Apps, die mit Vuforia entwickelt wurden, verhalten sich jedoch völlig seltsam, wenn die Kamera vertikal platziert wird.

Wir gehen davon aus, dass das Problem mit Vuforias Algorithmen zur Verarbeitung von Rohkameradaten zu tun hat, sind uns jedoch nicht sicher. Außerdem wissen wir nicht, wie wir die Situation beheben können. Für weitere Details kann ich auflisten:

-Wenn "Enable Video Background" aktiviert ist, ist das projizierte Bild verzerrt und kein Video-Feed ist verfügbar. Die AR-Projektion erscheint auf einem schwarzen Hintergrund mit verzerrten Abmessungen.

-Wenn "Video Hintergrund aktivieren" aktiviert ist und das Gerät gedreht wird, wird der schwarze Hintergrund durch flackernde Volltonfarben ersetzt.

-Wenn "Enable Video Background" deaktiviert ist, hat die AR-Projektion normale Abmessungen (keine Verzerrung), wird jedoch mit falschen Achseneinstellungen verfolgt. Wenn sich das Ziel beispielsweise in der realen Welt nach links bewegt, bewegt sich die Projektion nach oben.

-Wenn "Video-Hintergrund aktivieren" deaktiviert ist und das Gerät gedreht wird, ist die AR-Projektion größer als bei der Anzeige, wenn sich das Gerät im Standardzustand befindet.

Ich werde Ihnen gerne weitere Informationen zur Verfügung stellen, die Sie benötigen.

Vielen Dank, einen schönen Tag.

PS: Wir haben herausgefunden, dass Anwendungen, die die Kamera als Hauptzweck verwenden (Kamera-Apps, Barcode-Scanner usw.) gut funktionieren, während Apps, deren Kameranutzung eine zusätzliche Qualität hat (wie manche Spiele), die gleichen sind Problem wie Vuforia. Dies lässt mich glauben, dass Apps, die auf die Kamera zugreifen, direkt funktionieren, während diejenigen, die Android API und Klassen verwenden, aus irgendeinem Grund scheitern.

Antwort

1

Zuerst verstehen, dass jede Plattform mit Kameras anders beschäftigt und dass darüber hinaus verschiedene Android-Handy-Hersteller mit diesen auch unterschiedlich umgehen. In meinem Test OHNE Vuforia musste ich das Flugzeug umwandeln, indem ich den Video-Feed auf 0, -90,90 für Android/iPhone und -270, -90,90 für das Windows-Surface-Tablet umwandelte. Danach wurde die iPhone Rückfahrkamera gespiegelt, die Android Frontkamera wurde ebenso gespiegelt wie die Frontkamera. Das ist leicht zu erklären, aber ein nerviges Problem ist, dass die Front-Kameras von Google Pixel und Samsung über die y gespiegelt wurden (wie ALLE iOS auf der Rückkamera), aber das Nexus 6p wurde über das x gespiegelt. Worauf ich hier hinaus will ist, dass es eine Menge an Geräten gibt, die mit Android in Verbindung gebracht werden können, also versuche mehr als nur dieses eine Gerät. Vuforia hat bisher mit meinem Pixel und 4 meiner iOS-Geräte gut gearbeitet.

Was, wie Ihr Problem zu beheben:

Ihre Player-Einstellungen in der Einheit gehen und bei der Orientierung suchen. Es gibt ein paar Optionen hier und meine Anwendung verwendet nur Porträt, so erzwinge ich Porträt und es scheint gut zu funktionieren (keines der Probleme, die ich mit dem oben genannten Szenario zu erklären hatte).Vuforia hat die automatische Rotation bisher NICHT unterstützt, deshalb müssen Sie sicherstellen, dass Sie die neueste Version haben, da es so klingt, als ob Sie es brauchen. Wenn das automatische Drehen eingestellt ist und es nicht richtig funktioniert, müssen Sie möglicherweise dieses spezielle Gerät berücksichtigen (tun Sie dies nicht für alle Geräte, bis Sie diese Geräte getestet haben). Um dieses Gerät zu berücksichtigen, verwenden Sie ein if (oder konstruieren Sie eine case-Anweisung, wenn Sie mehrere Instanzen dieses Problems mit verschiedenen Geräten haben) und spiegeln Sie sie bei Bedarf oder übersetzen Sie sie. Cross-Plattform-Entwicklungssysteme (wie Einheit) erhalten nicht immer alles perfekt, da es im Grunde keinen Standard gibt. In diesen Fällen müssen Sie sie direkt berücksichtigen, indem Sie eine Methode und eine case-Anweisung in diesem Fall erstellen, damit Sie alle erforderlichen Geräte sauber und modular bearbeiten können. Es ist ein Schmerz, aber es ist besser, für alle Geräte getrennt zu entwickeln.

Noch eine Sache ist, stellen Sie sicher, dass Sie die Vuforia-Konfigurationsdatei überprüfen, da es einige Einstellungen wie Kamera Spiegel und Richtung Einstellungen dort hat. Diese scheinen öffentliche Einstellungen zu sein, daher sollten Sie auch in der Lage sein, diese in Ihrer Case-Anweisung zu skripten, falls Sie "Horizontal spiegeln" für ein Telefon verwenden müssen, aber nicht für ein anderes.