我正在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);
但是长度不匹配
谢谢你。
您可以使用
Camera.ScreenToWorldPoint
:
https://docs.unity3d.com/ScriptReference/Camera.ScreenToWorldPoint.html