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),勾选复选框,点击confirm
4.此时出现了刚刚申请的许可证,并点击此行
5.恭喜获得AR敲门砖——许可证密码(复制保存备用)
二、添加识别目标图像数据
1、点击Target Manager,点击Add Databaset
2.点击新添加的数据库
3.点击Add target
4.选择的需要扫描识别的目标类型,上传相关内容,点击添加
(图片要求:Only 8 bit gray scale or 24 bit RGB of file type JPG or PNG are allowed.最大不超过2Mb。尽可能选择特征明显的图片)
5.点击先添加的数据库,可以查看它识别的特征点。(Rating评分越高,代表越容易识别成功)
如果你需要同时识别多个图像,那么你需要在这个数据库添加多个图像数据库,如图添加了图片1和图片2
6.下载数据库:点击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<TrackableBehaviour>();
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:此方法不一定是最优解,欢迎各位大佬评论讨论、纠错文章来源:https://www.toymoban.com/news/detail-809449.html
创作不易,如果有帮助的话希望得到您的点赞收藏,支持一下噢!文章来源地址https://www.toymoban.com/news/detail-809449.html
到了这里,关于0基础小白用unity+vuforia实现AR随机抽卡/盲盒功能的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!