vuforia for unity 入门教程
(一)配置vuforia环境 与 运行简单AR程序
1. 安装unity2017
1)从官网上下载unity2017下载器
2)运行下载器勾选上vuforiasupport选项,其余不变,点击开始安装
2. 创建AR项目与配置AR运行环境
1)打开unity,点击create new project,命好名
点击create project 开始创建
2)点击file->buildsetting 弹出如下窗口
3)先点击红圈标出的Android再点击红圈标出的player setting
4)在右侧的inspector栏中修改Company Name
5)在该inspector中往下找,找到找到other setting 与XR
在other setting中 的identifier
格式为com.<CompanyName>.<ProductName>
其中 company name 是之前填好的company name ,product name 是之前的填的product name如图
6)仍然留在other setting里,往下找到android TV Compatibility
取消对它的勾选
变为下图
7)选择XR setting
勾上 Vuforia Augmented Realit 选项,如下图
3创建AR Object
1) 回到主界面 选择 GameObject->Vuforia->ARCamera,当弹出import对话框选择import
2) 删除原来的MainCamera
3) 选择Gameobject->Vuforia->image
4) 打开Assets->Resource->vuforiaconfigure
将从vuforia官网注册的key复制到下图所示处
要知道怎么注册key,可上网百度,或暂时使用以下key:
AVmMkxX/AAAAmScdKvKW70UhlvDMLLRnNmF8HCouRIvMHw5Q7VcjM0llwDWaXa6V6zvR8kWwx7P2h8rQ7fFvLKlxQ7ZXSW6pATdpRTGifrh7m+Jh6e3bCMhlk6ziQ2Nste6ySF/8y3d+jm2vFP4SNBFUmcavY/9EaJ3+KdVawAz9AKDUFfke/KSIycVa+yc+THhdm/qGnts1M5KbkO/8Z1oNqfu8N1bMJTntXA4XzxPjK1c7mCPol7stMyl+UdP9zwIuyVPvQ7dnPKzn75zaKC6dC3bvdur2r7WRBO06g9XPXqXtU3TP0agrJY9H9N96MRNcrO/2k65khpY3WluqICyKn0bTQ/dZ18bqpS766VHkyaYQXjsqNeDC
5) 在该面版中网下找,找到下图所示选项,并把红圈中所示勾选上
6)修改ARCamera与imageobject的位置关系,使得可以通过ARcamera看到比例适中位置适中的imahetarget
效果在game面板里显示如下图
如果没有显示图片而显示白色的话,就说明图片数据没有加载进来
转到imagetarget inspector面板的Image Target Behavior(script)组件
发现Database 与image Target 均为empty
点击选择,变为下图
这样就能出现如上图game面板的效果了
7)添加一个3d对象,作为imagetarget的子对象调整好位置
如图:
8)在电脑上运行即可
9)要使得在手机上运行,可点击file->build setting->build
选择要保存的apk的文件位置和名字,当生成成功后,将生成的apk安装到手机上运行即可
(二)用自己的图片进行AR识别
1. 在vuforia 官网上传图片生成图片库,下载生成的package到本机并导入
2. 主要过程跟(一)中一样,但在imagetarget 中的imagetarget behavior面板中的database改为我们自己定义的database,将imagetarget改为自己上传的图片
3. 同时在vuforiaconfigure中激活,过程类似于(一)中的第3大步中的第5)小步
(三)翻动书页
1. 创建一个plane ,plane_paging,创建material1,material2, sahder1 ,shader2
2. 创建脚本ButonPut, MyImage
3. ButtonPut 用于监听buttonclick事件
MyImage 用于展现paging动画
4. 为对象更该texture是调用了下面一行代码:
GetComponent<Renderer>().material.mainTexture = (Texture)Resources.Load("Img/ao" + (ButtonPut.num));
5. 具体翻页原理是:
1) 在ButtonPut中定义一个public static intnum 变量,用于记录翻至第几页,定义void pageLeft() 和pageRight()函数用于实现左右翻页,定义public static bool pageright 变量用于记录翻页方向
当点击button后,改脚本可通过Instantiate(planepaging)方法创建一个planepaging 对象
当点击向左翻页的时候,令num++,pageright为false当向右翻页则num--,pageright为true
2) 主要翻页动画在MyImage脚本中实现:
① 当planepaging 对象创建出来,即运行MyImage脚本,首先根据pageright判断plane与pagingplane的贴图(其中资源中共有5章贴图图片)
② 当pageright为true时,planepaging的贴图会变为plane当前贴图的前一张图片 而plane在pagingplane刚创建时不变,到paging结束的时候变为前一张图片,
其中,判断paging是否结束用到了是否旋转了90度,当总共旋转角度超过90度时,这销毁pagingplane对象,并在此时将plane的贴图更换
③ 当pageright为false时,创建pagingplane对象后,令该对象的贴图为plane的当前图片并立刻将plane对象的texture变为它的下一张图片, pagingplane旋转90度销毁即可
3)其中旋转的实现是通过计算机图形学的平移与旋转相结合实现的,因为图片数目有限, ButtonPut.num 也是有限的因此要对其范围加以限制,只有num在一定范围内,button时间才可以被监听处理
6. 效果图:
vuforia for unity 入门教程相关推荐
- 一个非常棒的Unity入门教程(附上学习笔记)
非常适合入门的unity教程,知识点全面,声音清晰,基本没有废话,时间控制得当,UP主Michael还在更很多其他的unity相关教程 视频教程地址:https://www.bilibili.com/ ...
- Unity 入门教程:贪吃射(1) —— Unity 安装和项目创建
**这是一个系列教程,我将通过这个系列教程从零开始教你用Unity制作一个2D的贪吃蛇小游戏.凡事开头难这个教程不会让你马上精通Unity但是会让你对Unity有个初步的认知,好了废话不多说马上就进入 ...
- Unity -- 入门教程三
进入这个页面,按编译器版本进行下载,我用的是2010,所以要下载这个. 安装就不用我教了,下面开始看我是如何导入Unity VS的. 点击Import之后我们会发现并没有发生什么,但是接下来我们按一下 ...
- 【Unity入门教程】 第八章 人工智能【中国大学MOOC游戏引擎原理及应用】
以下均为来自中国大学mooc 游戏引擎原理及应用时的学习笔记,不含商用,仅供学习交流使用,如果侵权请联系作者删除. 文章目录 8.1 自动寻路 8.2 巡逻 8.3 视野 8.4 自动攻击 8.5 追 ...
- OpenCV For Unity 入门教程(一): 实现简单的抠图
1. 需要引入 OpenCVForUnity 命名空间,结构图如下: 2.代码如下: using OpenCVForUnity; using System.Collections; using Sys ...
- Unity制作汽车(入门教程)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 Unity入门教程 前言 一.如何使用Wheel Conllider组件 二.让汽车动起来 1.新建一个脚本TEST_Car 2.完善 ...
- Unity3D打砖块游戏入门教程
今天来实现一个3D打砖块游戏,非常的简单,是正经的入门教程,但是学到的都是Unity游戏开发中重点的内容,下面一起来了解下吧. 新建3D游戏项目 打开Unity Hub软件,我们新建一个3D项目,新建 ...
- 【Unity入门计划】界面介绍(1)-Scene视图
目录 正式记录前的废话 Unity的坐标系 2D/3D视图转换 视图的移动.旋转.缩放 移动 旋转 缩放 选中游戏对象Game Object 单选 多选 设置不允许选中 场景可见性 游戏对象的移动.变 ...
- 从零开始的unity3d入门教程(五)---- 基于Vuforia的AR项目
从零开始的unity3d入门教程(五)---- 基于Vuforia的AR项目 文章目录 从零开始的unity3d入门教程(五)---- 基于Vuforia的AR项目 一.前言 二.Unity与VS环境 ...
最新文章
- 平板python_Wacom平板电脑的Python示例
- 循环队列解决约瑟夫问题
- linux tr命令书上的一个很好的例子
- C语言执行shellcode的五种方法
- 已知三角形三点坐标求角度_细心研磨椭圆焦点三角形,这肯定是最全的解释。...
- Spark初识-Spark基本架构概览使用
- Global.asax.cs中的方法(包括自定义方法)的含义
- 因为不想「被绿」,美国年轻人只想和 iPhone 聊天
- 在鉴定名画真伪这件事上,专家可能要被AI代替了
- 人工智能与人的职业发展
- 什么是自签名证书?自签名SSL证书的优缺点?
- 从青蒿素说一下专利与知识产权[更新]
- 软阈值迭代算法(ISTA)和快速软阈值迭代算法(FISTA)
- 小米2s解决充电过热的方法
- 如何用IED编写股票的量化策略?
- html 垂直底端对齐,CSS vertical-align(垂直对齐)
- c语言指针作用一句话,C语言指针是什么?C语言指针的概念。
- 2022年了,密码该如何保存都不会?
- 计算机教学设计与反思,[信客教案及反思] 信息技术教案课后反思
- 数据库mysql调优(最全整理)