Ist es möglich, die Entfernung zwischen zwei HitResult
zu berechnen?
Oder wie können wir echte Entfernung (z. B. Meter) mit ARCore berechnen?
In Java sind ARCore-Welteinheiten Meter (ich habe gerade festgestellt, dass wir das vielleicht nicht dokumentieren ... aaaund sieht aus wie Nope. Hoppla , Fehlerfeld). Durch Subtrahieren der Übersetzungskomponente von zwei Pose
s können Sie den Abstand zwischen ihnen erhalten. Ihr Code würde etwa so aussehen:
Beim ersten Treffer als hitResult
:
Beim zweiten Treffer als hitResult
:
Unter der Annahme, dass diese Trefferergebnisse nicht im selben Frame vorkommen, ist die Erstellung von Anchor
wichtig, da die virtuelle Welt bei jedem Aufruf von Session.update()
umgestaltet werden kann. Wenn Sie diesen Ort mit einem Anker statt nur mit einer Pose halten, wird seine Pose aktualisiert, um das physische Feature über diese Umbauten hinweg zu verfolgen.
Sie können die beiden HitResult
Posen mithilfe von getHitPose () und vergleichen Sie dann deren Übersetzungskomponente ( getTranslation () ).
Die Übersetzung ist definiert als
... der Positionsvektor vom Ziel (normalerweise Welt) Koordinatenrahmen an den lokalen Koordinatenrahmen, ausgedrückt in Ziel (Welt) Koordinaten.
Was die physische Einheit betrifft, konnte ich keine Bemerkung finden. Mit einer kalibrierten Kamera sollte dies mathematisch möglich sein, aber ich weiß nicht, ob sie tatsächlich eine API dafür bereitstellen.