一、准备工作
1.打开Unity新建一个空场景,将场景中默认的“Main Camera”删除掉
2.Hierarchy->XR->AR Session Origin 创建AR Session Origin组件
3.Hierarchy->XR->AR Session 创建AR Session组件
二、平面检测管理
您可以指定检测模式,可以是水平,垂直或两者兼有。一些平台需要额外的工作来执行垂直平面检测,因此,如果仅需要水平平面,则应禁用垂直平面检测。
三、可视化平面
1.Hierarchy->XR->AR Default Plane 创建AR Default Plane
2.将AR Default Plane 制作成Prefab 并且将 Hierarchy 面板中 AR Default Plane 删除掉
3.AR Plane组件负责该平面各类属性事宜,
4.将ARPlaneManager->Plane Prefab 设置成 AR Default Plane
5.打包并且运行
四、隐藏和显示平面显示
ps:这里只是通过改变材质球的透明度来达到显示和隐藏平面的效果
private ARPlaneManager m_ARPlaneManager = null;
private Color m_DefaultPlaneColor = new Color(112f / 255f, 253f / 255f, 60f / 255f, 80f / 255f);
private Color m_TransparentPlaneColor = new Color(112f / 255f, 253f / 255f, 60f / 255f, 0);
private void Awake()
{
m_ARPlaneManager = FindObjectOfType<ARPlaneManager>();
}
private void SetPlanesActive(bool value)
{
if (value) m_ARPlaneManager.planePrefab.gameObject.GetComponent<MeshRenderer>().material.color = m_DefaultPlaneColor;
else m_ARPlaneManager.planePrefab.gameObject.GetComponent<MeshRenderer>().material.color = m_TransparentPlaneColor;
foreach (var plane in m_ARPlaneManager.trackables)
{
if (value) plane.gameObject.GetComponent<MeshRenderer>().material.color = m_DefaultPlaneColor;
else plane.gameObject.GetComponent<MeshRenderer>().material.color = m_TransparentPlaneColor;
}
}
五、动态设置平面检测模式
private ARPlaneManager m_ARPlaneManager=null;
private void Awake()
{
m_ARPlaneManager = FindObjectOfType<ARPlaneManager>();
}
//设置只检查水平平面
m_ARPlaneManager.detectionMode = PlaneDetectionMode.Horizontal;
//设置只检查垂直平面
m_ARPlaneManager.detectionMode = PlaneDetectionMode.Vertical;
//设置检查水平平面和垂直平面
m_ARPlaneManager.detectionMode = PlaneDetectionMode.Horizontal | PlaneDetectionMode.Vertical;