[英]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.