在 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.
我已经使用 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.