前段时间花了几天粗略的看了一本书,作者都挺牛的(文章最后在向大家推荐这是什么书哦!!),本人在公司里负责过一段时间的AR项目的开发,自认为对AR还算了解,
废话不多扯了,进入正题:
首先介绍一下国外的Vuforia(这是大家都知道的吧)
开发环境:
在Vuforia官网注册好之后,下载Unity的SDK,新建一个Unity工程,直接将下载好的SDk导入就Ok了
Vuforia详细介绍:
建议大家可以先下载Vuforia中的官方案例,里面包含所有的识别,
然后我们介绍一下Vuforia开发吧:首先,你得在官网注册你的开发者,复制License中的Key,在你新建的项目中将project视图下的高通的预设点开,将ARcamera拉倒层级视图中(记得删除你的maincamera),将key值赋给Camera;(觉得自己好啰嗦,说了一大堆众所周知的东西,尴尬脸)
所以接下来我们加快进度,像图片识别、文字识别这种我就不废话了,主要是来说说自己遇到的坑:做立方体识别上传的是真实的数据(注意是以厘米为单位的),在本人跳过这个坑,果断进入下个坑,以为圆柱识别也是厘米呢,但其实人家是以米计算的(真是要哭倒了),上传的同样也是真实的数据;
视屏播放本人下载了Easy Movie Texture插件,注意:该插件不支持PC端播放的,只支持Android和ios平台;
云识别,说白了就是你不用下载你上传的图片的unity包了,直接可以生成的client Access key就可以了;
再来谈谈智能地形,和图片识别一起,你可以在扫描时出现一块地形,接下来的发挥就看你自己了;
然后是虚拟按钮,与图片识别一起,实现的功能就是,两个虚拟的按钮,你的手点击哪里,出现一个东西
还有我的代码:
using UnityEngine;
using System.Collections;
using Vuforia;
public class VirtualButtonTest : MonoBehaviour,IVirtualButtonEventHandler {
private GameObject Cube;
private GameObject Sphere;
// Use this for initialization
void Start ()
{
Cube = transform.FindChild("Cube").gameObject;
Sphere = transform.FindChild("Sphere").gameObject;
Cube.SetActive(false);
Sphere.SetActive(false);
VirtualButtonBehaviour[] vbs = GetComponentsInChildren<VirtualButtonBehaviour>();
for (int i = 0; i < vbs.Length; i++)
{
vbs[i].RegisterEventHandler(this);
}
}
public void OnButtonPressed(VirtualButtonAbstractBehaviour vb)
{
switch (vb.VirtualButtonName)
{
case "Cube":
Cube.SetActive(true);
break;
case "Sphere":
Sphere.SetActive(true);
break;
}
}
如果你的图片的识别度非常的低,那么你可以使用帧识别了;
自定义识别就是当你点击屏幕中的Button触发摄像机,接下来你就可以拍摄你想要识别的,然后就可以识别你刚刚拍摄的并出现物体。
国内的AR技术:HiAR、Wikitude、VoidAR,大家都可以去了解了解,不过据我的了解,目前支持3d实体识别的好像只有高通,国内某家好像是要出,但是还在测试当中,期待国内的崛起!!
书名《AR与VR实战开发》