【发布时间】:2018-05-16 19:20:19
【问题描述】:
在 ARCore 教程中,识别平面并触摸它会在屏幕上创建一个对象。 但我想在知道飞机后立即创建一个对象。
算法过程 识别平面 -> 触摸识别的平面 -> 在触摸的平面中创建对象。 这里,对象是从识别的平面生成的。 我想改变它。
我不知道在这个 ARCore 教程中要修改什么部分。 请帮我.... 谢谢。
【问题讨论】:
在 ARCore 教程中,识别平面并触摸它会在屏幕上创建一个对象。 但我想在知道飞机后立即创建一个对象。
算法过程 识别平面 -> 触摸识别的平面 -> 在触摸的平面中创建对象。 这里,对象是从识别的平面生成的。 我想改变它。
我不知道在这个 ARCore 教程中要修改什么部分。 请帮我.... 谢谢。
【问题讨论】:
您可以在相机“观察”的位置创建对象。因此,一旦检测到平面并且您的相机指向它,您就可以创建对象。
这可以使用 Raycasting 来完成(假设您使用 Unity,因为您使用了 C# 标签)。只需从您的相机中射出一道光线,然后检查您是否击中了检测到的飞机。如果是,只需在该位置创建对象
保留对创建对象的全局引用,以便您只能创建一次
GameObject spawnedObject;
然后进行光线投射
RaycastHit hit;
Ray spawnRay = ARCamera.ScreenPointToRay(new Vector3(Screen.width / 2, Screen.height / 2, 0));
LayerMask selectLayers = 1 << LayerMask.NameToLayer(DetectedPlanesLayer);
if (spawnedObject == null && Physics.Raycast(spawnRay, out hit, Mathf.Infinity, spawnLayers))
{
spawnedObject = Instantiate(objectPrefab, hit.point, Quaternion.identity);
}
【讨论】: