0
点赞
收藏
分享

微信扫一扫

EasyAR4.1平面识别


EasyAR4.1发布以后,官方人员说增加了平面识别的功能,放在了运动跟踪里面。

重新下载了官方示例,安装之后看了下,点击Motion Tracking运动跟踪以后,效果如下。

运行效果

EasyAR4.1平面识别_AR

会多出一个黑色的框在平面上,但是,示例中黑色框只会有一个。点击黑色框以后,会方式一个方块。方块可以在黑框范围内拖动。

一旦放置了方块,就不会在其他位置有黑框了,必须点击按钮“Unlock Plane”之后,才能在新的位置有黑框。

场景设置

EasyAR4.1平面识别_平面识别_02

场景设置和原有的运动跟踪没区别,确实如官方所说是在运动跟踪的功能中增加了平面识别。

关键代码

private void Update()
{
...
//如果VIOCamera存在
if (vioCamera.Device != null && vioCamera.Device.Type() == typeof(MotionTrackerCameraDevice))
{
//按钮处于解锁状态
if (!UnlockPlaneButton.interactable)
{
//判断黑框是否在当前摄像机的视野中
var viewportPoint = Camera.main.WorldToViewportPoint(Plane.transform.position);
if (!Plane.activeSelf || viewportPoint.x < 0 || viewportPoint.x > 1 || viewportPoint.y < 0 || viewportPoint.y > 1)
{
//通过摄像机检测视野中的平面
var viewPoint = new Vector2(0.5f, 0.333f);
var points = vioCamera.HitTestAgainstHorizontalPlane(viewPoint);//关键方法
if (points.Count > 0)
{
//将黑框移动到对应位置
Plane.SetActive(true);
Plane.transform.position = points[0];
Plane.transform.localScale = Vector3.one * (Session.Assembly.CameraRoot.position - points[0]).magnitude;
}
}
}
...
}
}

EasyAR4.1提供的平面识别的示例能够识别水平平面,不能识别垂直平面。效果嘛,至少示例做的没ARCore的好。

视频版地址:https://www.bilibili.com/video/BV1Yp4y1k7yT/


举报

相关推荐

0 条评论