如何在unity 3d中将3D坐标转换为2D坐标并得到相同的距离长度

问题描述 投票:0回答:1

我正在arcore unity3d中开发一个项目,其中我需要使用类似于HelloAR应用程序的arcore应用程序绘制的3D坐标点创建2D多边形,并获取点之间的长度。 目前我已经使用以下代码提取了 3d 中绘制的两点之间的长度

Vector3 dir = pointB.transform.position - pointA.transform.position;
float len = Mathf.Round(dir.magnitude * 1000) / 10 //in centimeters

这里我已将 Y 轴固定为零。
如何将此处获得的 3D 坐标点转换为 2D 坐标点并获得与 3D 中获得的长度相同的长度。

编辑
有没有办法在 3d 命中时获得等效的 2d 坐标
我尝试过以下代码

var anchor = hit.Trackable.CreateAnchor(hit.Pose);
GameObject obj = Instantiate(PrefabMarker, hit.Pose.position, hit.Pose.rotation);
Vector3 x_axis = detectedPlane.CenterPose.rotation * Vector3.forward;
Vector3 z_axis= detectedPlane.CenterPose.rotation * Vector3.right;
float x = Vector3.Dot(obj.transform.position, x_axis);
float y = Vector3.Dot(obj.transform.position, z_axis);

但是长度不匹配

谢谢你。

c# unity-game-engine arcore
1个回答
0
投票
© www.soinside.com 2019 - 2024. All rights reserved.