繁体   English   中英

如何将现实世界中的3d坐标统一绘制为平面图的2d坐标?

[英]How to plot 3d coordinates in the real world into 2d coordinates of a floor plan in unity?

我正在使用ARkit开发AR应用程序。我想跟踪用户。我可以按用户的x,y和z坐标。如何将现实世界中用户位置的3d点映射到2d平面图中。某些挑战是因为打开应用程序时用户位置(摄像机位置)是x,y,z =(0,0,0)。用户位置是摄像机位置。关于此在2d平面图中的映射因此,当用户四处移动时,他的位置可以显示在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);
}

在此处输入图片说明

如果用户位置用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);

您可能还需要执行其他转换,即,如果播放器不在平面图中,则可能需要减去一些偏移位置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM