我想在 ARCore 识别到平面后立即创建一个对象
I want to create an object as soon as ARCore recognizes a plane
在 ARCore 教程中,识别平面并触摸它会在屏幕上创建一个对象。
但是我想一知道飞机就创建一个对象。
算法过程
识别平面 -> 触摸识别的平面 -> 在触摸的平面创建对象。
这里,对象是从识别的平面生成的。
我想改变这个。
我不知道在这个 ARCore 教程中修改哪一部分。
请帮我....
谢谢。
您可以在相机 "looking" 所在的位置创建对象。因此,一旦检测到飞机并且您的相机指向它,您就可以创建对象。
这可以使用 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);
}
在 ARCore 教程中,识别平面并触摸它会在屏幕上创建一个对象。 但是我想一知道飞机就创建一个对象。
算法过程 识别平面 -> 触摸识别的平面 -> 在触摸的平面创建对象。 这里,对象是从识别的平面生成的。 我想改变这个。
我不知道在这个 ARCore 教程中修改哪一部分。 请帮我.... 谢谢。
您可以在相机 "looking" 所在的位置创建对象。因此,一旦检测到飞机并且您的相机指向它,您就可以创建对象。
这可以使用 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);
}