Согласно ARCore-2020, размещение якоря в том месте, где в данный момент находится камера, может быть выполнено с помощью
session.createAnchor(camera.getPose());
or
session.createAnchor(camera.getDisplayOrientedPose());
Поскольку размещение якоря в
float[] pos = {0,0,-1};
float[] rotation = {0,0,0,1};
session.createAnchor(new Pose(pos, rotation));
создает привязку в глобальном источнике (где начался ваш сеанс).
Если ваш результат попадания не может дать вам отслеживаемый объект, такой как плоскость или точка, вы не можете создать якорь на безликой стене.
Если ваше приложение разработано для конкретного варианта использования, вы можете сделать некоторые предположения о среде и сформулировать некоторую векторную связь между привязкой, которая находится в выделенной области, и желаемой привязкой в области без функций.
Например. Если вы хотите разместить анкер на стене, у которой нет никаких особенностей. (При условии, что камера всегда находится в состоянии слежения).
Сначала я бы поставил якорь на любые 3 стены a, b, c, где, как я знаю, определенно есть характерная точка, которую можно отслеживать.
Создайте самолет, используя эти 3 точки, математические расчеты для которых можно найти здесь.
https://sites.math.washington.edu/%7Eking/coursedir/m445w04/notes/vector/equations.html
Теперь, чтобы получить уравнение линии вдоль направления, в котором смотрит камера - ›
если поза камеры = X = {x, y, z} и Q = {qx, qy, qz, qw}, Тогда уравнение линии = {x, y, z} + LAMBDA (Q. {0,0, -1})
где LAMBDA - случайная величина вдоль линии. и Q. {0,0, -1} означает поворот {0,0, -1} с кватернионом Q
Итак, теперь, если вы хотите разместить анкер на стене. Вы найдете точку пересечения между линией камеры и плоскостью стены.
person
Varun Bachalli
schedule
07.09.2020