web-dev-qa-db-fra.com

Détecter les plans verticaux

Je me demandais si quelqu'un avait réussi à identifier les plans verticaux en avant du périphérique en temps réel à l'aide du SDK ARCore.

J'ai réussi à obtenir un résultat décent en définissant un mur à l'aide d'une équation à la ligne:

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

par "pour chaque y", je voulais ignorer l’axe des y (regarder le mur par le haut comme dans la cartographie 2D d'une pièce) afin de calculer une ligne définissant le mur.

le multiplicateur est la rotation entre les points:

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

Le calcul total est:

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
}

Maintenant, je déclenche ce calcul pendant que l'utilisateur se promène et échantillonne de nombreux points du nuage de points.

Les résultats sont bons mais pas aussi précis que la détection du plan horizontal de l'ARCore.

8
Nativ

Maintenant fait partie de ARCore, a été publié sur version 1.2.0 pour Android

0
Canato

Vous pouvez vous référer à ce problème sur le repo github officiel de Google AR Core https://github.com/google-ar/arcore-unity-sdk/issues/31 . Cette fonctionnalité est disponible dans ARCore SDK for Unity (v1.2.0) Lien SDK comme indiqué dans le présent numéro. J'espère que cela t'aides :) 

2
Kitwradr