停止跟踪图像

时间:2016-09-13 10:55:12

标签: unity3d vuforia

Vuforia可能一旦检测到您的BBDD图像就停止尝试查找更多图像,将3D物体保持在最后检测到的位置固定,并且您可以在物体3D周围以扩展跟踪模式移动相机?

由于

2 个答案:

答案 0 :(得分:0)

听起来你想要完成的事情就像Dead Reckoning一样。

我们无法通过移动设备进行适当的航位推算(假设您正在运行Vuforia)是因为内部传感器不够精确,无法在此框架和最后一帧。 Unity可能会认为你离左边几英寸,而实际上你更远了。这将产生非常沉重的漂移效果,并可能会杀死魔法"一起感受模拟的感觉。像Google Tango这样的东西在这种类型的东西上要好得多,尽管那些依赖于环境识别,而不是目标识别。 Tangos可以每帧接收新的环境数据,使其更加稳定。

由于(大多数)移动设备没有深度传感器或类似的东西,Vuforia依靠图像目标作为将对象锚定在场景中的方式,使其每帧都不断更新位置。这样,它就不必依赖加速度计数据等任何东西来补偿。

可以禁用跟踪,但它会完全执行此操作,禁用跟踪并将对象浮动到虚拟深渊中(如果您设法覆盖vuforia中的渲染器操作)。

简而言之,Vuforia需要图像目标才能正确追踪,从而消除了最后一个已知位置的可能性。技术

答案 1 :(得分:0)

可以在需要时停止跟踪,并将3D对象固定在屏幕上的最后一个2D位置 /视口。但是扩展跟踪仍然是跟踪,因此一旦禁用跟踪,就无法将3D对象固定在最后位置在3D空间中,因为这就是跟踪的目的! :)如果你想使用其他方法继续跟踪(你提到陀螺仪),这不是一个简单的问题。

要禁用相机的跟踪,但保持相机输入,您可以使用以下内容:

Tracker imageTracker = TrackerManager.Instance.GetTracker<ObjectTracker>();
if (imageTracker != null)
    imageTracker.Stop();

将上面的代码放在OnTrackingFound()中的DefaultTrackableEventHandler函数中是没有意义的(如果你正在使用它,否则你的等价物),因为通常会在摄像机图像的边缘,因此如果您立即禁用跟踪,对象将被卡在视口的某个边缘。所以你可能会使用计时器,或者最好是让用户按下UI按钮来“冻结”对象。

当跟踪停止时跟踪“丢失”时,您还需要更改OnTrackingLost()中的DefaultTrackableEventHandler功能,以便不再禁用3D对象的网格渲染器,否则对象将消失

为什么不切换到不是AR的3D模式,而是可以用手指在移动屏幕上或用鼠标或键盘操作对象?换句话说,禁用Vuforia但保持“检测到的”3D对象在屏幕上处于活动状态。您可以完全禁用Vuforia,而不是像上面代码中那样禁用ObjectTrackers,而不是:

VuforiaBehaviour.Instance.enabled = false;

当Vuforia被禁用时,一旦跟踪“丢失”,您仍然需要编辑OnTrackingLost()(或等效的)以禁用3D对象。

相关问题