我想在ARCore识别出一个平面后立即创建一个对象

时间:2018-05-16 19:20:20

标签: c# arcore

在ARCore教程中,识别平面并触摸它会在屏幕上创建一个对象。 但是我想知道飞机后立即创建一个物体。

算法流程 识别飞机 - >触摸识别的平面 - >在触摸的平面中创建对象。 这里,从识别的平面生成对象。 我想改变它。

我不知道在这个ARCore教程中要修改哪个部分。 请帮我.... 感谢。

1 个答案:

答案 0 :(得分:0)

您可以在相机所在的位置创建对象"查看"在。因此,只要检测到平面并且摄像机指向它,就会创建对象。

这可以使用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);
}