Die Erkennung von vertikalen Flächen in ARCore

Ich Frage mich, ob jemand identifizieren konnte, in senkrechten Ebenen vor dem Gerät in Echtzeit mit der ARCore SDK.

War ich mit dem erreichten ordentlichen Ergebnis durch die Definition einer Wand mit einer Zeile Gleichung:

z = Multiplier * x + Constant (For every y)

durch „für alle „y“ – Kommentar meinte ich, dass ich das ignorieren der y-Achse(Blick auf die Wand von oben in 2d-mapping eines Raumes) zur Berechnung einer Zeile, definiert die Wand.

der Multiplikator ist die rotation zwischen den Punkten:

let angleDeg = Float((360 - angle + 360) % 360) * Float.pi / 180.0;

Alle Berechnung ist:

let angle: Int = Int((atan2(pointA.z - pointB.z, pointA.x - pointB.x) * 180) / Float.pi) % 360
     yRotation = Float((360 - angle + 360) % 360) * Float.pi / 180.0

    if pointA.x == pointB.x {
         multiplier = Float.infinity
    } else {
         multiplier = (pointA.z - pointB.z) / (pointA.x - pointB.x)
    }
    constant = pointA.z - multiplier * pointA.x
}

Ich jetzt trigger, der Berechnung, während der Benutzer herumlaufen und Proben viele cloud-Punkte.

Die Ergebnisse sind gut, aber nicht so genau wie die horizontale Ebene die Erkennung von ARCore.

  • Interessant. Ein paar Beispiel-videos zeigen Objekte an der vertikalen Wand, so dass ich davon ausgegangen, Sie waren nativ erkannt als gut.
  • Vielen, vielen Dank. Ich werde diese prüfen und aktualisieren den thread als ich Fortschritt
  • Aktualisierungen auf dieser?
  • Noch nicht, ich wurde umgestellt auf eine anderes Projekt für ein paar Wochen. Ich werde wahrscheinlich wieder in 2 Wochen. Was kann ich teilen, ist, dass die iOS Implementierung in ARKit mit dem gleichen Ansatz, und es funktioniert sehr gut für Sie.
  • Um zu erkennen, vertikalen Ebenen mit der ARCore SDK, welche Entwicklungs-Umgebung waren, die Sie verwenden (Java/OpenGL, Unity, Unreal, Web)? Ich bin auf der Suche zu ändern, die Android Studio Beispiel Projekt (developers.google.com/ar/develop/java/getting-started) zu erkennen, die Wände nutzen den code, den Sie geschrieben, bin aber unsicher wohin damit. Jede Hilfe, die Sie bereitstellen können, wäre sehr geschätzt. Danke!
  • Ich bin mit Java und begann auch aus dem Beispielprojekt. Ich schlage vor, Sie Gabel-repository und fügen Sie Ihre eigenen Funktionen, um es. dann verknüpfen Sie Ihre Lösung hier und im main-repository-pull-Anforderung, die ich öffnete.
  • Dies wurde teilweise gelöst, mit der aktuellen Version (ARCore 1.0). Jetzt können Sie Objekte in der vertikalen Flächen (normalen werden für die erkannten Punkte).

InformationsquelleAutor Nativ | 2017-08-31



3 Replies
  1. 1

    Seit ARCore 1.2 wurde veröffentlicht, wir können vier Werte Config.PlaneFindingMode enumeration.

    Hier ist, wie ein code aussieht:

    public static final Config.PlaneFindingMode DISABLED
    //Plane detection is disabled.
    
    public static final Config.PlaneFindingMode HORIZONTAL
    //Detection of only horizontal planes is enabled.
    
    public static final Config.PlaneFindingMode VERTICAL
    //Detection of only vertical planes is enabled.
    
    public static final Config.PlaneFindingMode HORIZONTAL_AND_VERTICAL
    //Detection of both horizontal and vertical planes is enabled.

    Hoffe, das hilft.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.