Как преобразовать 3D-координаты в 2D-координаты в Unity 3D и получить одинаковую длину расстояния - PullRequest
0 голосов
/ 04 мая 2020

Я работаю над проектом в arcore unity3d, где мне нужно создать двухмерный многоугольник из трехмерных координатных точек, построенных с использованием приложения arcore, аналогичного приложению HelloAR, и получить длину между точками. В настоящее время я извлек длину между двумя точками, построенными в 3d, используя следующий код

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

Здесь я зафиксировал свою ось Y на нуле. Как я могу преобразовать полученные трехмерные координатные точки в двухмерные координатные точки и получить ту же длину, что и в 3D.

Редактировать Есть ли способ получить эквивалентную 2d координату при 3d попадании Я пытаюсь следующий код

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);

Но длина не совпадает Спасибо.

...