博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Unity5+Vuforia实现一个AR小Demo (2)
阅读量:2359 次
发布时间:2019-05-10

本文共 1617 字,大约阅读时间需要 5 分钟。

前言

上学期担任了导师一门选修课的TA,课程是关于VR和AR的,所以就设计了一个简单的AR小Demo实验,其实都是网络上用Unity+Vuforia做的AR效果,这里只是整理归纳一下步骤而已,分为两部分,第一部分是显示模型,第二部分是对模型进行简单操作。由于这个实验操作说明是面向没有接触过Unity和Vuforia的同学,所以会特别详细(啰嗦)。第一部分的内容请看。下面开始第二部分的讲述。

效果

能够对显示的模型进行交互。

步骤

17.在Hierarchy视图中选中ImageTarget,在Inspector视图中找到Default Trackable Event Handler脚本,在名字上右键,选择Edit Script打开了编辑界面。

17_1
首先解释一下这个脚本,这个脚本是程序用来检测摄像头视野范围内是否追踪到识别图。

17_2

Start函数是Unity的固定函数,只在程序开始时执行一次,所以在这里进行的一般是变量的初始化。
另外还有一个Update函数,也是固定函数,会在每一帧被调用,我们对模型的操作会在Update这个函数里进行。

17_3

OnTrackableStateChanged函数是在追踪状态发生改变时执行相应的操作,在追踪到识别图,就会进入if语句,调用OnTrackingFound函数把模型绘制出来。在追踪不到识别图时就会进入else语句,调用OnTrackingLost函数取消模型的显示。

18.开始我们的编程,放心,代码量不大,而且逻辑很容易。首先设置几个变量:

18
chopper是一个GameObject类型变量,用来表示程序中的一个对象
originScale和newScale都是Vector3类型,有三个分量x,y,z,用来表示三个方向的缩放因子
isTracked是一个bool变量,用来表示识别图是否被追踪到。

19.在Start函数中初始化变量:

19_1
GameObject.Find是用来找到我们的目标对象,参数是对象的名字,我们的目标对象就是模型,所以是模型的名字,这个名字可以在Hierarchy中看到
19_2
获取模型后,把模型的原始缩放因子存储起来,其中chopper.transform就是指下图这个组件
19_3
它包含着position(位置信息),rotation(旋转信息),scale(缩放信息),所以我们通过chopper.transform.localScale得到表示模型缩放因子的3维向量,值是[0.04,0.04, 0.04]。
最后初始追踪状态isTracked设为false表示没有追踪到。

20.更新追踪的状态,直接利用现有的OnTrackableStateChanged函数,在对应情况下设置isTracked的值。

20

21.最后编写Update函数,根据追踪的状态和鼠标事件更新模型。

21_1
在Start函数下面添加一个Update函数。
当追踪到了识别图,利用Input.GetMouseButtonDown函数监听鼠标的点击事件,参数0表示鼠标左键,如果点击了鼠标左键,那么Input.GetMouseButtonDown(0)就会返回true,这时如果新的缩放因子newScale不小于0.01(避免过度缩小),我们减小newScale,然后让模型的缩放因子等于newScale,这就实现了缩小模型。
当追踪不到识别图,要把模型的缩放因子重置为原始的缩放因子,不然下次显示时仍是缩小后的模型。
最终的效果如下:
21_2
21_3

得到上面的结果就完成了第二部分对模型进行简单操作。以上演示的是PC端的,因为Vuforia是移动端的一个SDK,所以发布成PC端的程序会无法运行。如果是做APP的话,那就得配置好JDK跟Android SDK,交互方式也会不一样,因为移动端没有键盘和鼠标,所以需要其他的交互方式,比如监听触摸事件或是额外添加按钮等UI元素,这些内容可以在网上搜到很多资料,就不详细描述。

你可能感兴趣的文章
(记录贴)Docker搭建GitLab代码管理
查看>>
(记录贴)记Docker搭建PXC集群的一个坑点
查看>>
手写一个简单RPC
查看>>
安卓虚拟定位实现与反作弊思路
查看>>
[记录]内部方法之间调用AOP无效解决方法
查看>>
三分钟掌握synchronized锁升级过程
查看>>
服务治理
查看>>
做一个文字识别小程序原来这么简单?
查看>>
三分钟掌握ACID、脏读、幻读、不可重复读、事务隔离级别
查看>>
三分钟掌握数据库缓存双写一致性
查看>>
sql 分组统计topN
查看>>
三分钟理解ThreadLocal的弱引用与内存泄露
查看>>
cms重新标记和g1最终标记的区别
查看>>
K8S环境中NAS卷添加noresvport方法
查看>>
使用Quick BI连接AnalyticDB for PostgreSQL数据源
查看>>
开源背后 | 面对端侧推理引擎的挑战,阿里工程师如何应对?
查看>>
容器十年 ——一部软件交付编年史
查看>>
面向未来的黑科技——UI2CODE闲鱼基于图片生成跨端代码
查看>>
千亿级的数据难题,优酷工程师怎么解决?
查看>>
阿里云环境中TLS/SSL握手失败的场景分析
查看>>