在 Android 中通过点击按钮加载 AR 模型

Load AR-model through button tap in Android

我已经使用 Unity 和 Vuforia 制作了一个基本的 AR 应用程序并将其导出到 Android,因此我可以在那里添加一些活动。当我在应用程序中使用 AR 相机扫描图像时,会弹出一个模型。没有什么新鲜事。

我想要实现的是,当用户点击某些 activity 中的按钮时,假设按钮上的文本是 "Elephant",应用程序中的 AR 相机打开,扫描图像并加载大象模型。

我的问题是:这可能吗?是否可以根据用户输入加载模型?如果可能的话,搜索有关它的一些文档的最佳位置是什么?我已经在互联网上搜索过,但找不到这么具体的东西。我也是 Unity 和 Vuforia 的新手,所以我对该程序了解不多。只有一些教程涵盖的内容。

如果这个问题已经asked/answered,我很抱歉。

提前致谢!

嗯,是的,这是可能的。为了让您的应用真正使用 AR 功能,您可以实施虚拟按钮技术。

老实说,说到文档,高通是没用的。但由于您将 Unity 与 Vuforia Extension 一起使用,幸运的是大多数功能都在 Unity 文档中。

我将解释如何通过两种方式实现此目的:

1.使用虚拟按钮 (VB)

首先,从 adding/dropping 开始 VB 从 Assets>Qualcomm>Prefabs>Virtual Button 进入场景。确保 VB 是所用图像目标的子对象。

为图像目标创建一个新脚本,定义您的 VB 需要做什么。

您将从注册按钮开始:

void Start () {
        VirtualButtonBehaviour[] vbs = transform.GetComponentsInChildren<VirtualButtonBehaviour> ();

        for (int i=0; i < vbs.Length; ++i) {
            vbs[i].RegisterEventHandler(this);
        }

现在你继续从按钮的功能开始

public void OnButtonPressed(VirtualButtonAbstractBehaviour vb){
    //specify which button you want to function by using the if statement
    if(vb.name=="ButtonName") { callButtonfunction();}
    }

同样,如果您希望按钮在释放时执行某些操作:

public void OnButtonReleased(VirtualButtonAbstractBehaviour vb){
    //specify which button you want to function by using the if statement
    if(vb.name=="ButtonName") { callButtonfunction();}
    }

如果你想让你的按钮控制一个游戏对象,那么继续在 class 中将游戏对象声明为一个 public 变量,这样它就可以在 Inspector 中访问并相应地分配.

public GameObject human;

其中GameObject是变量类型,human是我们参考的变量名

现在,根据您想要获得的结果,有两种方法可以分配 callbuttonfunction() 可以做什么。

  • Application.LoadLeve("Levelname")

这将加载一个新场景,其中将新对象加载到同一图像目标上

  • Model.enabled(false)Elephant.enabled(true)

这只是禁用了当前模型并启用了大象模型。 在 class 的开头将这些设置为 public 变量将使在 Inspect 元素中分配模型变得更加容易。

2。屏幕按钮 (OB)

  • 如果你想要屏幕上的按钮,那么只需将按钮 UI 设置为相机的父级,并将其放置在屏幕的特定角落或其他地方。
  • 现在,如果您操作按钮,它将在 void Update() 内,您可以使用触摸功能使用 Unity 中的脚本参考。

Really hope this helps you and everyone else who suffers from absolutely NO support from Qualcomm. Hit me up if you need more clarification.