我正在使用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);
}
答案 0 :(得分:0)
如果将用户位置表示为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);
您可能还需要执行其他变换,即,如果播放器不在平面图中,则可能需要减去一些偏移位置。