【问题标题】:Load AR-model through button tap in Android在 Android 中通过点击按钮加载 AR 模型
【发布时间】:2017-05-17 04:40:06
【问题描述】:

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

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

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

如果这个问题已经被提出/回答,我深表歉意。

提前致谢!

【问题讨论】:

    标签: c# android unity3d augmented-reality vuforia


    【解决方案1】:

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

    老实说,在文档方面,Qualcomm 毫无用处。但由于您将 Unity 与 Vuforia 扩展一起使用,幸运的是大多数功能都包含在 Unity 文档中。

    我将解释如何通过两种方式实现这一目标:

    1.使用虚拟按钮 (VB)

    首先,从Assets>Qualcomm>Prefabs>Virtual Button 向场景添加/删除 VB。确保 VB 是使用的 Image Target 的子级。

    为定义 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();}
        }
    

    如果您希望您的按钮控制游戏对象,请继续在类中将游戏对象声明为公共变量,以便可以在检查器中对其进行访问并进行相应的分配。

    public GameObject human;
    

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

    现在,根据您想要获得的内容,有两种方法可以指定 callbuttonfunction() 可以做什么。

    • Application.LoadLeve("Levelname")

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

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

    这只是禁用了当前模型并启用了 Elepant 模型。 在课程开始时将这些设置为公共变量将更容易在 Inspect 元素中分配模型。

    2。屏幕按钮 (OB)

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

    真的希望这可以帮助您和其他所有遭受痛苦的人 高通绝对不支持。 如果您需要更多说明,请联系我。

    【讨论】:

    • 回答得很好@Augmented Jacob
    • 非常感谢!我当然可以在我的项目中使用虚拟按钮。我同意关于 Unity 和增强现实的文档很少。但我还有一个问题:是否可以在 Android 应用程序中加载模型?因此,当我单击 Android 视图中的按钮(只是普通的 Android 按钮)时,应用程序中的 AR 相机会打开并加载相应的模型
    • 是的,有可能。但安卓应用程序需要与通常用于创建 Vuforia 应用程序的 Vuforia.jarVuforia.so 文件一起构建。如果是,那么继续并简单地启用新模型并禁用旧模型,这样模型就会在按钮触摸时发生变化。由于您使用的是 Unity,它会自动添加 Vuforia 文件,因此您可以毫无问题地继续操作
    • 非常感谢您的回答!一切都解决了。
    猜你喜欢
    • 2019-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-27
    相关资源
    最近更新 更多