利用移动触摸输入实现虚拟对象互动 - 增强现实

时间:2015-09-12 08:13:40

标签: android augmented-reality toolkit vuforia layar

我想为android开发一个增强现实应用程序,它能够使用标记来生成3D对象,这些3D对象在触摸时使用移动设备的触摸输入进行交互。

我浏览过Vuforia,Junaio或Layar Player等可用的SDK,发现他们都支持:

  • 使用3D虚拟图像叠加进行标记检测
  • 虚拟按钮在您使其不可见时处于活动状态。 (Vuforia)
  • 互动视频播放。

然而,我正在寻找的是:

  • AR中的虚拟对象,可以通过移动触摸进行交互。

我很确定这是可能的,因为有虚拟视频叠加,点击/点击会启动视频(类似于交互式虚拟元素)。

Q值。有人可以建议一个最适合我正在寻找的功能的库/工具包吗?

Q值。在我使用上述工具包进行搜索时,我是否有一些东西显然已经错过了已经支持我想要的功能?

2 个答案:

答案 0 :(得分:1)

根据您的上一个描述,Vuforia支持您所需要的内容,并且还有纯Android(无Unity)的示例。

您需要查看Dominos示例,其中显示了如何在屏幕上拖动OpenGL多米诺骨牌对象。 在这里查看快速说明: https://developer.vuforia.com/forum/faq/android-how-do-i-project-screen-touch-target

如果您在尝试自己实施时遇到一些问题,可以在Vuforia论坛上搜索其他人遇到的常见问题的一些答案。但基本上,它在样本中效果很好。

答案 1 :(得分:1)

嗯,这适用于Unity 5.x

首先,浏览Vuforia的文档,了解有关图像目标 AR相机的更多信息。

将3D模型导入场景,以便所有交互式对象都是图像目标的子对象。

在手机上阅读触控(我将android用于我的项目)

if(Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Began)

将触摸点转换为从屏幕到3D世界的光线

Ray ray = Camera.main.ScreenPointToRay(Input.GetTouch(0).position);

在场景中创建一个平面(用于射击的光线)

Plane plane = new Plane(Vector3.up, Vector3.zero);

如果射线击中平面,则获得x,y,z位置。 pos 的值将具有世界位置

if (plane.Raycast(ray, out distance)){
    Vector3 pos = ray.GetPoint(distance); 
}

请根据需要修改代码。这是一个非常基本的例子。