(一)配置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. 效果图: |