Я полагаю, что в настоящее время ARCore в настоящее время поддерживает только отслеживание вертикальной и горизонтальной плоскостей.
Существует открытый GitHub FR для добавления поддержки обнаружения общей плоскости, но пока вы можетеВы должны самостоятельно проанализировать облако точек и подобрать плоскости.
Я подозреваю, что это будет дорого и / или шумно без фильтрации по основным направлениям, что объясняет, почему это еще не реализовано.
Тем не менее, если вы точно знаете, что самолет, который вы ищете, всегда будет на 30 градусов по сравнению с полом, вы, вероятно, могли бы сделать нечто подобное.
Вы должны быть в состоянии найтиоблако точек, использующее статическое свойство PointCloud
объекта Frame
.Вот как ARInterface делает это для ARCore:
public override bool TryGetPointCloud(ref PointCloud pointCloud)
{
if (Session.Status != SessionStatus.Tracking)
return false;
// Fill in the data to draw the point cloud.
m_TempPointCloud.Clear();
Frame.PointCloud.CopyPoints(m_TempPointCloud);
if (m_TempPointCloud.Count == 0)
return false;
if (pointCloud.points == null)
pointCloud.points = new List<Vector3>();
pointCloud.points.Clear();
foreach (Vector3 point in m_TempPointCloud)
pointCloud.points.Add(point);
return true;
}
( полный источник )
Теперь у вас есть облако точек, вынужно подогнать свои самолеты к нему. Этот урок может дать вам некоторое представление о том, как это сделать, он охватывает базовую посадку на плоскости с помощью 3 точек и более надежную многоточечную посадку на плоскости с использованием RANSAC.Вы также можете посмотреть этот ответ и этот ответ .