Как построить трехмерные координаты в реальном мире в двухмерных координатах плана этажа в единстве? - PullRequest
0 голосов
/ 01 ноября 2018

Я работаю над приложением AR, используя ARkit. Я хочу отслеживать пользователя. Я могу сдвинуть координаты x, y и z пользователя. Как отобразить трехмерные точки местоположения пользователя в реальном мире в план 2d этажа . Существуют определенные проблемы, потому что, когда приложение открыто, пользовательская позиция (позиция камеры) равна x, y, z = (0,0,0). Пользовательская позиция - это позиция камеры. Относительно этого, как отобразить в План 2-го этажа. Таким образом, когда пользователь перемещается, его положение может отображаться в плане 2D-этажа.

Я мог бы добавить модели AR и найти расстояние между ними и пользователем. Поможет ли это найти координаты пользователя? Когда я поворачиваю устройство, координаты меняются, поэтому мы не можем полагаться на положение пользователя (положение камеры) для построения графика. .

private Vector3 Campos;
public GameObject chagepos; //Added as a child of camera
private void LateUpdate()
{




//Created a starting point

Campos.x = 246f;//x-Coordinate of the floor plan
Campos.z = 121f;//y-Coordinate of the floor plan
chagepos.transform.position = new Vector3(Campos.x, 0, Campos.z);

Debug.Log(chagepos.transform.position);
}

enter image description here

1 Ответ

0 голосов
/ 01 ноября 2018

Если пользовательская позиция представлена ​​как Vector3, то вы можете просто извлечь компоненты x и z, чтобы получить Vector2:

Vector2 floorPlanPosition = new Vector2(playerPosition.x, playerPosition.z);

Возможно, вам придется перепроецировать floorPlanPosition в локальное пространство объекта плана этажа (поскольку это также предположительно 3d-объект)

Vector3 worldSpacePositionOfPlayerOnFloorplan = floorPlan.transform.TransformPoint(new Vector3(floorPlanPosition.x, 0, floorPlanPosition.y);

Существуют и другие преобразования, которые вам могут понадобиться, например, если игрок не находится на уровне 0,0 в плане этажа, вам может потребоваться выполнить некоторое вычитание смещенных позиций.

...