如何利用Vuforia6.2.10,在Unity2017中来实现AR中的虚拟按钮功能
来源:互联网 发布:淘宝宝贝规格怎么设置 编辑:程序博客网 时间:2024/09/21 06:37
我们在开发一些AR应用的时候有时候会需要与识别图进行一些简单的交互,这就可以利用.Vuforia自带的VirtualButton功能来利用识别图和虚拟物体有一个简单的交互
步骤:
1.首先导入Vuforia,这里使用的是Vuforia6.2.10的版本,Unity2017.1.0f3。
2.将识别图的数据包导入该工程。
3.删除原始场景中的MainCamera,再从Vuforia-Perfabs中将ARCamera和ImageTarget拖到场景
4.在ARCamera的Inspector中 找到其上的VuforiaBehaviour组件,并点击OpenVuforiaConfiguration进入编辑界面。 在AppLicenseKey 中输入LicenseKey,并将Datasets中的LoadxxDatabase勾选(xx为你的DatabaseName),其余设置可按需要设置。
5.然后设置ImageTarget。
(白色的ImgTarget
,
这里需要在Assets-Editor-Vuforia-ImageTargetTextures-xx(DatabaseName) 中,找到识别图,将其TextureShape改成2D即可
)
)
6.将Vuforia-Perfabs 中的VirtualButton 拖到场景中,拖到指定的位置。图中浅蓝色的位置是按下VirtualButton可以生效的位置。
7.假设我们需要按键来控制方块的颜色,首先新建脚本,这个脚本目的是来控制VirtualButton。
8.设置一个tag,为了便于找到目标立方体,也就是图中的黄色立方体,需要在脚本中控制他的颜色。建立这个脚本名字为VirtualBTCtrl,同时也是这个类的名字,需要用到命名空间Vuforia, 这个类不仅需要继承自MonoBehaviour,还需要实现接口IVirtualButtonEventHandler,
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Vuforia;
public class VirtualBTCtrl :MonoBehaviour,IVirtualButtonEventHandler
{
...
public void OnButtonPressed(VirtualButtonAbstractBehaviour vb)
{
}
public void OnButtonReleased(VirtualButtonAbstractBehaviour vb)
{
}
}
其中需要实现
public void OnButtonPressed(VirtualButtonAbstractBehaviour vb)
{
//Code
}
public void OnButtonReleased(VirtualButtonAbstractBehaviour vb)
{
//Code
}
这两个方法 ,这两个方法用来监听虚拟按键按下和释放的事件。为了触发这个事件,我们要将之前添加的VirtualButton对象注册到时间系统。所以需要在Start方法中寻找所有的VirtualButtonBehaviour组件并利用其RegisterEventHandler方法将当前对象,也就是重载了上面两个函数的脚本的对象 作为参数传入。
在Start方法中获得所有子物体(这个脚本挂在ImageTarget上,VirtualButton是其子物体)的VirtualButtonBehaviour组件:
VirtualButtonBehaviour[] vbBehaviours =this.GetComponentsInChildren<VirtualButtonBehaviour>();
for (int i = 0; i < vbBehaviours.Length; i++)
{
vbBehaviours[i].RegisterEventHandler(this); //注册所有的vb事件
}
之后便可以在OnButtonPressed 和 OnButtonReleased 中实现我们需要的功能
不过在判断是哪一个按键被按下时需要用一个switch-case结构,判断按下的按键的名称(VirtualButtonName),这个VirtualButtonName 在每个VirtualButton上的Inspector面板中的VirtualButtonBehaviour面可以修改。
public void OnButtonPressed(VirtualButtonAbstractBehaviour vb)
{
//mat是在start方法中获得的立方体的材质
switch (vb.VirtualButtonName)
{
case "VirtualButton_R": mat.color =Color.red;
break;
case "VirtualButton_G": mat.color =Color.green;
break;
case "VirtualButton_B": mat.color =Color.blue;
break;
default:
break;
}
}
public void OnButtonReleased(VirtualButtonAbstractBehaviour vb)
{
mat.color = Color.yellow;
}
9.最后把我们写的VirtualBTCtrl脚本拖到ImageTarget下。
10.结果
注:
虚拟按键的位置尽量在识别图中的识别点比较多的地方,这样识别效果会比较好。
本文内容参考加速想象力出版的AR与VR开发实战教程。
- 如何利用Vuforia6.2.10,在Unity2017中来实现AR中的虚拟按钮功能
- 举例说明如何在android中利用Service来实现后台发送邮件功能
- #游戏unity#AR中奇妙的虚拟按钮
- .NET在Global中利用Timer与Application来实现网站定时器功能
- 如何在unity3d中实现AR镜头全包裹和AR镜头不包裹效果
- vuforia6.2 在unity中图片识别播放视频流程
- vuforia6.2 在unity中图片识别教程
- 在C#中如何利用正则表达式来获取网页中的所有链接的链接标题
- 利用Unity和高通实现简单的AR功能
- AR中的文件如何被AvrStudio仿真及如何在IAR中生成.hex文件
- 在页面中,我们经常看到,一个button按钮,如果属标点击,就会触发一个窗口的显示,如果二次点击并可以隐藏,那么如何通过JAVA配合html来实现这一功能呢?
- 本实例创建Swing窗体,单击窗体中的“写入文件”按钮实现写入功能,单击“读取文件”按钮实现从文件中读取信息显示在文本框中
- 在ASP.NET中,如何通过点击子框架的按钮来实现整个框架页面的关闭?
- 如何实现在当前jsp页面中通过点击按钮来跳转到上一个次访问的页面
- 在jsp中按钮实现界面跳转的功能
- 高通 AR Unity 虚拟按钮
- 高通 AR Unity 虚拟按钮(译)
- 高通 AR Unity 虚拟按钮
- PHP错误与异常
- Fixing the Java Memory Model, Part 1
- 朴素贝叶斯(MLE&MAP)
- Oracle用户密码过期处理方法
- 跨域CORS
- 如何利用Vuforia6.2.10,在Unity2017中来实现AR中的虚拟按钮功能
- ajax技术以及json格式转换
- [BZOJ2404]最长链
- 获取中文字符串的第一个大写字母
- POJ 3648Wedding (2-SAT 输出路径)
- java 字符串,字符数组,list间的转化
- jdbc的连接
- Jenkins 使用QR-Code生成二维码 ImportError: No module named PIL
- Servlet、listener、filter、InitParam注解