天天看点

AR For Unity3D之HiAR分析

关于AR和Unity的基础知识,请自行前往各自的文档中心进行科普。

基于Hi AR1.2.0 ( hiar_sdk_unity_20160809_v1.2.0_3c0e908.zip  ( 47.4 MB )  )

Unity3D 5.3.5f1 x64

Windows 7 x64

罗技摄像头(硬件),摄像头支架

1. 在SDK的管理后台创建一个新应用,获取应用的Appkey和Secret,在Unity中会用到。

2. 在SDK的管理后台中创建图集,并添加图片,完成之后发布图集

3. 把图集和应用进行关联

4. 在SDK的管理后台中下载本地识别包文件,一般是以图集为命名的unitypackage文件。

我创建的图集名称:xxdata

图集中有以下两张图片:

battleboard.png

card.png

下载的本地识别包文件(xxdata.unitypackage),在导入到Unity中的文件如下:

总结一下就是:

1. 在Editor\ImageTargetTextures\下有以图集命名的文件夹,文件夹中有图集中的图片文件

2. 在StreamingAssets\HiAR\目录下有以图集命名的xml文件和图集命名的文件夹,文件夹下有图片Id命名的db文件

xxdata.xml文件内容如下:

32位key值文件名的db文件

某种格式的文件,从里面可以看到HiScene AR Key,猜测db中存储了图片的识别点数据

图集中每个图片有对应的一个db文件,可知此db文件必然和图片有关联关系。

场景层次(Hierarchy)结构:

AR For Unity3D之HiAR分析

HiAR Camera (SDK的核心,绑定了两个脚本:HiAREngineBehaviour,TargetManagerBehaviour)

​  camera (3D相机,渲染3D GameObject,绑定的脚本:HiARCameraBehaviour)

Imager Target (识别点,可以有多个,绑定的脚本:ImageTargetBehaviour,实现这几个接口ITrackableEventHandler, ILoadBundleEventHandler, IRelativeMoveTarget)

​  识别成功:识别图移动时或者有遮挡时,Transform的属性会发生改变,并且ImageTarget下的Child会显示

​  识别失败:Transform属性无变化,并且ImageTarget下的Child会隐藏

camera source (一个MeshRenderer,硬件摄像头摄像到的图像实时渲染在此(类似于render texture?))

camera background (2D相机,渲染camera source的图形)

重点解释:

 camera (3D相机 Clear Flags为Depth,拍摄场景中的3D GameObject)

AR For Unity3D之HiAR分析

camera background (2D相机,Clear Flags为Solid Clear,渲染物体摄像头拍摄的画面)

AR For Unity3D之HiAR分析

摄像头拍摄的图像显示在camera source(mesh renderer)上

摄像头拍摄的真实画面和引擎生成的三维物体进行叠加。

当识别图识别成功之后,执行一些操作,可以理解为Callback。

HiAR的例子是:识别成功之后,播放视频。

当然你可以在识别成功之后,生成一些模型和场景出来,这样就和开发其它游戏一样,可以对Scene中的GameObject进行控制,比如播放动画,打斗,特效之类的。

把识别图上的图像实时渲染在模型上(Material),类型涂鸦。

添加一个待涂包的模型,添加组件:HiARPaint,Shader:HiARPaint

硬件摄像头拍摄识别图(实时拍摄)

根据识别到的图,提取图像生成Material,动态地渲染。

期间会生成几个识别点

过程中如果有拍摄到其它物体,新生成的材质会实时更新

多图识别,就是在简单识别的基础上添加多个ImageTarget

步骤:

在HiAR Camera(HiAREngine组件) 的属性面板勾选 MuiltTarget

在场景中添加多个ImageTarget,并为每一个ImageTarget选择识别图

动态加载识别目标进行识别跟踪的功能,继承自TartgetDynamic

勾选 ImageTarget (ImageTargetBehaviour组件)的CenterPoint之后,带有物理引擎效果的物体运动就有了中心点。

本文转自赵青青博客园博客,原文链接:http://www.cnblogs.com/zhaoqingqing/p/5893923.html,如需转载请自行联系原作者

<a></a>