虚拟按钮超详细教程【含代码】目录
(1)Image Target
我们在前面已经讲述了Vuforia02教程,完成了图片识别的基础。
这里就不再重复赘述了
(若不了解,可以阅读练习一下Vuforia02图片识别教程:【02】2022.11最新超详细Vuforia图片识别教程)
以下源于我之前发布的Vuforia教程02图片识别
(若已经完成,可以跳读)
【前提:Unity 2019.4.34 + Visual Studio 2019 +Vuforia 8.1.12】
现在,我们先创建一个Unity 3D 项目,项目名称例如(AR Third),进入后
我们开始以下步骤完成环境搭建
首先,我们先Install Vuforia Engine AR 8.1.12:
先点击Window——Package Manager

进入后,耐心等待(切记!此时得有网络),下滑后选择【Vuforia Engine AR】
点击Install

导入后,即已经安装好此插件
上述步骤若有明白,可参考学习我曾经分享的教程【01】如何在Unity 中 安装 Vuforia Engine AR 插件?(附加检验安装成功方法)
接下来,我们继续探索Vuforia
(1)搜索官网
:Vuforia官网
(2)注册并登录
【如下图所示】

(3)登录后点击Develop——Get Basic
【如下图所示】

License Key获取及注册
(1)选择License Manager——填入License Name(刚刚在Unity创建的项目名称)
点击By Checking this box,IXXXXXXXXXXX
选择Confirm
【如下图所示】

(2)复制密钥
【如下图所示】

AR Camera
点击Game Object 创建AR Camera,在视图中粘贴上一步骤的License Key

图片选择条件与图片上传
(1)返回官网,选择Target Manger

(2)选择【Add DataBase】

(3)完成如下图所示操作
(1.红色框,输入DataBase Name,可以自行命名)
(2.蓝色框,选择Device)
(3.绿色框,选择Create)

(4)点击刚刚创建的DataBase,点击如图所示的【Add Target】

(5)选择类型——Image
(6)导入图片;填width:1;填Name(随意);最后点击Add
【步骤5——6 如下图所示】

(7)完成后,3星及以上便于识别,等级越高越好(星越多越好);
点击左边红色框的【Target Name】前的选项,
再点击一堆橙色箭头指向的【Download Database】
【如下图所示】

(8)选择【Unity Editor】,再选择【Download】
【如下图所示】

(9)完成最后一步操作:导入刚刚下载的Database(我命名的是 MyFirst)
直接将其拖入unity中,选择Import

到此,我们已经完成了Vuforia的环境搭建,为案例1图片识别奠定了基础
鼠标在Hierarchy视图右键后,Create Image

选择Image Target 点开,在Database选择刚刚导入的(MyFirst)

【上述内容为我们回顾【02】Vuforia图片识别教程,即1.前期工作Image Target】
现在开始进入虚拟按键的关键环节
(1)在Hierarchy视图中点击Image Target
(2)在Inspector视图中点击Advanced展开
(3)点击Add Virtual Button
(4)完成步骤3,两次操作,得到2个Virtual Button
(因为本教程,我们需要创建2个Virtual Button)
【如以下图片所示】

(1)在Hierarchy视图中,右键Create——3D Object——Cube
(2)在Hierarchy视图中,右键Create——3D Object——Sphere
因为后面需要用代码给这些button注册事件,所以便于判断这两个button是哪个,则通过自定义的两个button名字的不同

(1)由于虚拟按钮是透明的,为方便测试,我们可以在Virtual Button下添加一个plane
(2)同时新建一个材质球,选择不同的两个颜色进行Virtual Button的区分
根据1和2的两个小tips,
即:1让Virtual Button更明显了;2让两个Virtual Button便于区分
(1)在Assects中新建一个C#脚本
(2)Rename:VirtualButtonControl
点击脚本后,即进入编写。会弹出VS 2019
以下是脚本(含必要性注释便于读者理解):
using UnityEngine;
using Vuforia;
public class VirtualBtnController : MonoBehaviour, IVirtualButtonEventHandler
{
public GameObject cube;
public GameObject sphere;
void Start()
{
VirtualButtonBehaviour[] vbs = GetComponentsInChildren<VirtualButtonBehaviour>();
for (int i = 0; i < vbs.Length; ++i)
{
//在虚拟按钮中注册TrackableBehaviour事件
vbs[i].RegisterEventHandler(this);
}
cube.SetActive(false);
sphere.SetActive(false);
}
//继承了IVirtualButtonEventHandler的方法
public void OnButtonPressed(VirtualButtonBehaviour vb)
{
switch (vb.VirtualButtonName)
{
case "showCube":
cube.SetActive(true);
break;
case "showSphere":
sphere.SetActive(true);
break;
}
}
//继承了IVirtualButtonEventHandler的方法
public void OnButtonReleased(VirtualButtonBehaviour vb)
{
switch (vb.VirtualButtonName)
{
case "showCube":
cube.SetActive(false);
break;
case "showSphere":
sphere.SetActive(false);
break;
}
}
}
本步骤过于简单不进行图文描述,看小标题即可理解
详见【02】2022.11最新超详细Vuforia图片识别教程导出安卓版本AKP
【以下源于【02】2022.11最新超详细Vuforia图片识别教程讲述的导出安卓版本AKP方法】
导出安卓版本AKP
点击如下图所示,File——Building Settings

选择安卓平台

选如下图所示红框

选择【Build】

因为是第一次导出APK,会比较慢!请耐心等待!别急!会成功的!
进度条走完后,弹出框如下图所示(自行命名,我比较喜欢以时间命名来区分,现在是2022.11.27,我就以今天命名了,读者可以自由命名)
命名完后,点击【保存】

接下来,找到我们刚刚导出的APK,将APK发送到安卓手机上。



在虚拟按钮试验中,我们发现尽量用更大的物体去覆盖虚拟按钮的面积区域,识别成功度越高,便于本次试验的成功
如何在buildr项目中使用Ruby?我在很多不同的项目中使用过Ruby、JRuby、Java和Clojure。我目前正在使用我的标准Ruby开发一个模拟应用程序,我想尝试使用Clojure后端(我确实喜欢功能代码)以及JRubygui和测试套件。我还可以看到在未来的不同项目中使用Scala作为后端。我想我要为我的项目尝试一下buildr(http://buildr.apache.org/),但我注意到buildr似乎没有设置为在项目中使用JRuby代码本身!这看起来有点傻,因为该工具旨在统一通用的JVM语言并且是在ruby中构建的。除了将输出的jar包含在一个独特的、仅限ruby
在rails源中:https://github.com/rails/rails/blob/master/activesupport/lib/active_support/lazy_load_hooks.rb可以看到以下内容@load_hooks=Hash.new{|h,k|h[k]=[]}在IRB中,它只是初始化一个空哈希。和做有什么区别@load_hooks=Hash.new 最佳答案 查看rubydocumentationforHashnew→new_hashclicktotogglesourcenew(obj)→new_has
我的主要目标是能够完全理解我正在使用的库/gem。我尝试在Github上从头到尾阅读源代码,但这真的很难。我认为更有趣、更温和的踏脚石就是在使用时阅读每个库/gem方法的源代码。例如,我想知道RubyonRails中的redirect_to方法是如何工作的:如何查找redirect_to方法的源代码?我知道在pry中我可以执行类似show-methodmethod的操作,但我如何才能对Rails框架中的方法执行此操作?您对我如何更好地理解Gem及其API有什么建议吗?仅仅阅读源代码似乎真的很难,尤其是对于框架。谢谢! 最佳答案 Ru
我的假设是moduleAmoduleBendend和moduleA::Bend是一样的。我能够从thisblog找到解决方案,thisSOthread和andthisSOthread.为什么以及什么时候应该更喜欢紧凑语法A::B而不是另一个,因为它显然有一个缺点?我有一种直觉,它可能与性能有关,因为在更多命名空间中查找常量需要更多计算。但是我无法通过对普通类进行基准测试来验证这一点。 最佳答案 这两种写作方法经常被混淆。首先要说的是,据我所知,没有可衡量的性能差异。(在下面的书面示例中不断查找)最明显的区别,可能也是最著名的,是你的
几个月前,我读了一篇关于rubygem的博客文章,它可以通过阅读代码本身来确定编程语言。对于我的生活,我不记得博客或gem的名称。谷歌搜索“ruby编程语言猜测”及其变体也无济于事。有人碰巧知道相关gem的名称吗? 最佳答案 是这个吗:http://github.com/chrislo/sourceclassifier/tree/master 关于ruby-寻找通过阅读代码确定编程语言的rubygem?,我们在StackOverflow上找到一个类似的问题:
我目前正在使用以下方法获取页面的源代码:Net::HTTP.get(URI.parse(page.url))我还想获取HTTP状态,而无需发出第二个请求。有没有办法用另一种方法做到这一点?我一直在查看文档,但似乎找不到我要找的东西。 最佳答案 在我看来,除非您需要一些真正的低级访问或控制,否则最好使用Ruby的内置Open::URI模块:require'open-uri'io=open('http://www.example.org/')#=>#body=io.read[0,50]#=>"["200","OK"]io.base_ur
前言作为一名程序员,自己的本质工作就是做程序开发,那么程序开发的时候最直接的体现就是代码,检验一个程序员技术水平的一个核心环节就是开发时候的代码能力。众所周知,程序开发的水平提升是一个循序渐进的过程,每一位程序员都是从“菜鸟”变成“大神”的,所以程序员在程序开发过程中的代码能力也是根据平时开发中的业务实践来积累和提升的。提高代码能力核心要素程序员要想提高自身代码能力,尤其是新晋程序员的代码能力有很大的提升空间的时候,需要针对性的去提高自己的代码能力。提高代码能力其实有几个比较关键的点,只要把握住这些方面,就能很好的、快速的提高自己的一部分代码能力。1、多去阅读开源项目,如有机会可以亲自参与开源
嗨~大家好,这里是可莉!今天给大家带来的是7个C语言的经典基础代码~那一起往下看下去把【程序一】打印100到200之间的素数#includeintmain(){ inti; for(i=100;i 【程序二】输出乘法口诀表#includeintmain(){inti;for(i=1;i 【程序三】判断1000年---2000年之间的闰年#includeintmain(){intyear;for(year=1000;year 【程序四】给定两个整形变量的值,将两个值的内容进行交换。这里提供两种方法来进行交换,第一种为创建临时变量来进行交换,第二种是不创建临时变量而直接进行交换。1.创建临时变量来
之前说过10之后的版本没有3dScan了,所以还是9.8的版本或者之前更早的版本。 3d物体扫描需要先下载扫描的APK进行扫面。首先要在手机上装一个扫描程序,扫描现实中的三维物体,然后上传高通官网,在下载成UnityPackage类型让Unity能够使用这个扫描程序可以从高通官网上进行下载,是一个安卓程序。点到Tools往下滑,找到VuforiaObjectScanner下载后解压数据线连接手机,将apk文件拷入手机安装然后刚才解压文件中的Media文件夹打开,两个PDF图打印第一张A4-ObjectScanningTarget.pdf,主要是用来辅助扫描的。好了,接下来就是扫描三维物体。将瓶
1.postman介绍Postman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大。2.下载安装官网地址:https://www.postman.com/下载完成后双击安装吧,安装过程极其简单,无需任何操作3.使用教程这里以百度为例,工具使用简单,填写URL地址即可发送请求,在下方查看响应结果和响应状态码常用方法都有支持请求方法:getpostputdeleteGet、Post、Put与Delete的作用get:请求方法一般是用于数据查询,