在ARCore教程中,识别平面并触摸它会在屏幕上创建一个对象。 但是我想知道飞机后立即创建一个物体。
算法流程 识别飞机 - >触摸识别的平面 - >在触摸的平面中创建对象。 这里,从识别的平面生成对象。 我想改变它。
我不知道在这个ARCore教程中要修改哪个部分。 请帮我.... 感谢。
答案 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);
}