【03】Unity AR 2022Vuforia图片识别超详细案例(小岛动画交互)【含代码】

6 篇文章 9 订阅
3 篇文章 3 订阅

Unity AR Vuforia(拓展)——Vuforia图片识别超详细案例(小岛动画交互)【含代码】

1.环境搭建

环境搭建,包括Vuforia官网的注册登录,密钥获取,在Unity中对Vuforia Engine AR插件的安装等等
这里是在Unity中对Vuforia Engine AR插件的方法https://blog.csdn.net/m0_57495651/article/details/128107903
这里是环境搭建需要完成的其他步骤:https://blog.csdn.net/m0_57495651/article/details/128108242

2.资源导入

我已经在我的个人主页资源中上传(名称同本文章标题)
将FBX文件导入Unity

3.交互之旋转 & 附加代码

(1)Create C# Script

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class rotate : MonoBehaviour {

    float xSpeed = 150.0f;

	// Use this for initialization
	void Start () {
		
	}
	
	// Update is called once per frame
	void Update () {
        if (Input.GetMouseButton(0))
        {
            if (Input.touchCount == 1)
            {
                if (Input.GetTouch(0).phase == TouchPhase.Moved)
                {
                    transform.Rotate(Vector3.up * Input.GetAxis("Mouse X") * -xSpeed * Time.deltaTime, Space.World);
                }
            }
        }
	}
}

(2)再Create C# Script

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class enlarge : MonoBehaviour {

    Vector2 oldPos1;
    Vector2 oldPos2;

	// Use this for initialization
	void Start () {
		
	}
	
	// Update is called once per frame
	void Update () {
        if (Input.touchCount == 2)
        {
            if (Input.GetTouch(0).phase == TouchPhase.Moved || Input.GetTouch(1).phase == TouchPhase.Moved)
            {
                Vector2 tempos1 = Input.GetTouch(0).position;
                Vector2 tempos2 = Input.GetTouch(1).position;

                if (isEnlarge(oldPos1, oldPos2, tempos1, tempos2))
                {
                    float oldScale = transform.localScale.x;
                    float newScalse = oldScale * 1.025f;

                    transform.localScale = new Vector3(newScalse, newScalse, newScalse);
                }
                else
                {
                    float oldScale = transform.localScale.x;
                    float newScalse = oldScale / 1.025f;

                    transform.localScale = new Vector3(newScalse, newScalse, newScalse);
                }

                oldPos1 = tempos1;
                oldPos2 = tempos2;
            }
        }
	}

    //判断手势
    bool isEnlarge(Vector2 oP1,Vector2 oP2,Vector2 nP1,Vector2 nP2)
    {
        float length1 = Mathf.Sqrt((oP1.x - oP2.x) * (oP1.x - oP2.x) + (oP1.y - oP2.y) * (oP1.y - oP2.y));
        float length2 = Mathf.Sqrt((nP1.x - nP2.x) * (nP1.x - nP2.x) + (nP1.y - nP2.y) * (nP1.y - nP2.y));

        if (length1 < length2)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
}

4. Making Animator

由于内容过于简单不进行图文描述

【读者也可跳过此步骤,上述步骤3的代码交互旋转亦可实现,
此步骤是制作动画状态机,不制作动画状态机项目也可以正常运行,
不会产生任何影响】

提醒:读者Making Animator后,记得将状态机挂载至对象上

5.试运行导出APK

【以下内容源自我的第二篇文章(02图片识别教程)6——8步骤】
不了解的读者可以点击【02】2022.11最新超详细Vuforia图片识别教程此链接学习6——8步骤,也可继续阅读下面内容学习,一模一样的,请放心学习!
点击如下图所示,File——Building Settings

选择安卓平台

在这里插入图片描述
选如下图所示红框(Switch Platform)选择该安卓平台

在这里插入图片描述

选择【Build】
在这里插入图片描述

因为是第一次导出APK,会比较慢!请耐心等待!别急!会成功的!

进度条走完后,弹出框如下图所示
(自行命名,我比较喜欢以时间命名来区分,现在是2022.11.27,我就以今天命名了,读者可以自由命名)
命名完后,点击【保存】
在这里插入图片描述
接下来,找到我们刚刚导出的APK,将APK发送到安卓手机上。

6.使用安卓手机下载安装及可能出现的问题

安卓手机接收到APK后,点击接收,再点击安装

这里提醒一下:安卓手机首次安装该apk,会被要求谷歌下载一个东西,根据提示放心下载!!!后面我们做项目将apk导入安卓手机时就不会弹出来了

安装后打开对着刚刚添加的Image,即可看到效果(我们Image Target下面的物体)
注意:这里分享一下常见问题
(1)手机无法安装
(2)点开后黑屏

7.适用的机型及问题的解决方法

(1)适用机型:小米,OPPO, VIVO ,iQOO,一加,联想等安卓手机均可实现
(2)上述两个问题的解决方法:
A1:手机无法安装:IOS系统和华为手机无法使用、含手机管家的需要关闭或不让其扫描或不开启安全安装,选择直接安装
A2:点开后黑屏:没有开启摄像头权限

8.效果展示

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

上述的部分内容源自我的第一篇,第二篇文章中。本文提炼了案例的主干内容,但是所有步骤都已经写明,且当时本文引用的出处已经标记了引自我的哪篇文章哪几个步骤,学习起来也很方便的!
【01】如何在Unity 中 安装 Vuforia Engine AR 插件?(附加检验安装成功方法) https://blog.csdn.net/m0_57495651/article/details/128107903
【02】2022.11最新超详细Vuforia图片识别教程https://blog.csdn.net/m0_57495651/article/details/128108242

  • 15
    点赞
  • 73
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
实现Unity_AR_Vuforia利用Virtual Button虚拟按钮显示图片的相关操作和代码如下: 1. 首先在Vuforia中创建一个Image Target,并在其上添加Virtual Button 2. 在Unity中导入Vuforia插件,并在场景中添加AR Camera和Image Target 3. 创建一个空物体,将其命名为VirtualButton,然后在其中添加一个Quad作为显示图片的载体,并将其缩放为合适的大小 4. 创建一个C#脚本,并将其命名为VirtualButtonBehaviour,并将其添加到VirtualButton物体上 5. 在VirtualButtonBehaviour脚本中添加以下代码: ``` using UnityEngine; using UnityEngine.UI; using Vuforia; public class VirtualButtonBehaviour : MonoBehaviour, IVirtualButtonEventHandler { public GameObject imageObject; public Sprite[] sprites; private int currentIndex = 0; private VirtualButtonBehaviour virtualButtonBehaviour; void Start() { virtualButtonBehaviour = GetComponent<VirtualButtonBehaviour>(); virtualButtonBehaviour.RegisterEventHandler(this); } public void OnButtonPressed(VirtualButtonBehaviour vb) { currentIndex = (currentIndex + 1) % sprites.Length; imageObject.GetComponent<Image>().sprite = sprites[currentIndex]; } public void OnButtonReleased(VirtualButtonBehaviour vb) { // do nothing } } ``` 6. 在Unity中将VirtualButton物体拖放到Image Target物体上,然后将Image Object拖放到VirtualButtonBehaviour脚本的Image Object字段中,并将需要显示的图片拖放到Sprites数组中 7. 运行程序,并在AR Camera中观察Image Target,当手指按下Virtual Button时,图片将会依次显示 以上就是Unity_AR_Vuforia利用Virtual Button虚拟按钮显示图片的相关操作和代码

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值