0基础小白用unity+vuforia实现AR随机抽卡/盲盒功能

您所在的位置:网站首页 unity随机产生物体 0基础小白用unity+vuforia实现AR随机抽卡/盲盒功能

0基础小白用unity+vuforia实现AR随机抽卡/盲盒功能

#0基础小白用unity+vuforia实现AR随机抽卡/盲盒功能| 来源: 网络整理| 查看: 265

unity+Vuforia实现海洋动物随机AR盲盒

目录

Vuforia

一、在vuforia上注册许可证

二、添加识别目标图像数据

三、搭建AR程序

四、随机盲盒的进阶AR程序

Vuforia

这是一种AR平台,由PTC公司开发,允许开发人员在线完成图像数据处理,支持识别单个或多个图片(image target)、圆柱形图案(Cylinder)、多边形图案(Multi)、模型(Object)。不需要编程知识也能轻松实现基础的AR效果。

一、在vuforia上注册许可证

1、打开https://developer.vuforia.com/vui/auth/login,邮箱注册并登录2.点击 Get Basic 3.自定义填写许可证名字(license Name),勾选复选框,点击confirm4.此时出现了刚刚申请的许可证,并点击此行5.恭喜获得AR敲门砖——许可证密码(复制保存备用)

二、添加识别目标图像数据

1、点击Target Manager,点击Add Databaset

2.点击新添加的数据库3.点击Add target4.选择的需要扫描识别的目标类型,上传相关内容,点击添加  (图片要求:Only 8 bit gray scale or 24 bit RGB of file type JPG or PNG are allowed.最大不超过2Mb。尽可能选择特征明显的图片)

5.点击先添加的数据库,可以查看它识别的特征点。(Rating评分越高,代表越容易识别成功) 如果你需要同时识别多个图像,那么你需要在这个数据库添加多个图像数据库,如图添加了图片1和图片26.下载数据库:点击Download Database---选择unity editor----Download 你可以勾选特定的图片,再点击下载。如果你需要识别多张图片,务必全部勾选上,或直接download all。

至此,vuforia网站上的所有准备工作已就绪,接下来打开unity,新建3d project

三、搭建AR程序

1.点击顶部菜单栏window---package Manager---在右上方搜索栏搜索Vuforia Engine AR(注意:我用的是unity2019.4.31f1c1版本,其他版本可能会搜索不到)----点击右下角install

2.安装好后,点击左边Hierarchy侧栏下的“+”号,会出现Vuforia Engine---点击AR Camera  

3.同样的位置Vuforia Engine---点击Image,我们添加一个需要识别的图像(你需要识别多少个就添加多少个,或者复制也可以),添加好后Hierarchy和scene都会出现对应的物品。在Hierarchy双击,画面会放大对应物品。

4.点击AR Camera,在右侧属性栏中点 Open Vuforia Configuration,把之前在Vuforia网站上获取的一串许可证密码(见一、5)粘贴在对应位置。如果你需要同时识别多个图形,还需在同一面板下方修改识别的最大数量(如图)

 5.将之前在Vuforia网站上下载的图像数据库包导入unity,点击import

6.此时再点击左方的image target,右侧属性栏中的Database就可以选择你导入的图片数据库,在Image Target中选择你需要的图片  

7.添加识别需要生成的模型 举一个简单的例子:如果需要生成系统自带的几何体模型,则在Hierarcht下的“+”号点击3D object---选择你想要添加的几何体。点击生成的几何体,可以在右侧Transform那里调整位置,大小,角度。(在场景中显示模型和图像的相对大小和位置就是实际扫描后的情况) 假如你需要显示其他的模型,首先将模型导入unity(方法和导入图像数据库一样,拖入unity下方project库就可以,但是注意是否有关闭演示),然后找到prefab文件(是模型或者绑定了动画的模型),拖进场景中即可,后续步骤与上述相同。

8.最关键的一步:将cube拖入Image Target中,使Image Target成为它的子物体,就大功告成啦,点击上方的播放按键,就会打开电脑摄像头,放置你设置的目标图案,就可以看见对应的模型啦。如果预设模型有绑定动画的话,扫描后也会动噢。(注意:任何操作只有关闭演示的状态下改变才会有效,就是再点击一下播放按钮)

恭喜你完成了入门操作,现在我们来做一个随机盲盒的进阶AR程序:

四、随机盲盒的进阶AR程序

首先我们先来了解一下基础的知识点:每一个物体的主要功能都是由一个个组件进行控制,比如transform组件控制它的大小,角度,位置。animator组件控制它的动画,而sripts(脚本)是用来控制物体更复杂的功能

基础准备:按照上述教程把许可证密码和图像数据库准备好并导入unity

1、点击你需要识别的目标图像,右键右边属性栏中的Default Trackable Event Handler,点击Remove Component。(删除这个脚本)

2、在右侧属性栏中点击Add Component---输入script---点击New script---输入tryaha(脚本名字,可以自己换一个)---点击Creat and Add

 3、在project处双击打开刚刚新建的脚本,输入代码(我这里是用visual studio打开的,前提是你安装unity的时候有安装visual studio,没装的可以去unityhub中补充下载,这个写代码会更方便一些。)

using UnityEngine; using Vuforia; public class tryaha : MonoBehaviour, ITrackableEventHandler { public GameObject[] objects; // 要在跟踪目标上显示的模型数组 private GameObject activeObject; // 当前活动的模型 private TrackableBehaviour trackableBehaviour; // Vuforia跟踪器 private void Start() { // 获取Vuforia的TrackableBehaviour并注册事件处理程序 trackableBehaviour = GetComponent(); if (trackableBehaviour != null) trackableBehaviour.RegisterTrackableEventHandler(this); } private void OnDestroy() { // 解除事件处理程序的注册 if (trackableBehaviour != null) trackableBehaviour.UnregisterTrackableEventHandler(this); } public void OnTrackableStateChanged(TrackableBehaviour.Status previousStatus, TrackableBehaviour.Status newStatus) { if (newStatus == TrackableBehaviour.Status.DETECTED || newStatus == TrackableBehaviour.Status.TRACKED || newStatus == TrackableBehaviour.Status.EXTENDED_TRACKED) { // 找到了跟踪目标 Debug.Log("Trackable " + trackableBehaviour.TrackableName + " found"); OnTrackingFound(); } else { // 丢失了跟踪目标 Debug.Log("Trackable " + trackableBehaviour.TrackableName + " lost"); OnTrackingLost(); } } private void OnTrackingFound() { // 首先清除前一个模型 OnTrackingLost(); // 随机选择一个模型并将其放置在跟踪目标下方 int index = Random.Range(0, objects.Length); activeObject = Instantiate(objects[index], trackableBehaviour.transform); activeObject.transform.localPosition = Vector3.zero; activeObject.transform.localRotation = Quaternion.identity; activeObject.SetActive(true); } private void OnTrackingLost() { // 如果有一个模型正在显示,则销毁它 if (activeObject != null) { Destroy(activeObject); activeObject = null; } } }

 4、在unity中,点击要识别的图像,在右侧面板中的tryaha中,size代表要随机的模型数量,将需要随机出现的模型预设一个个从project拖入场景中,同时,也把这些模型一个个拖入Element中。

5、选中这些模型,在面板中取消勾选,这样运行的时候才会识别到目标图像之后才出现。大功告成啦,试试运行看看!

 PS:此方法不一定是最优解,欢迎各位大佬评论讨论、纠错

创作不易,如果有帮助的话希望得到您的点赞收藏,支持一下噢!



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3