停止跟踪图像

Stop Tracking images

Vuforia 可能会在检测到您的 BBDD 图像后停止尝试查找更多图像,将 3D 对象保持在最后检测到的位置固定,并且您可以在扩展跟踪模式下围绕对象 3D?

谢谢

听起来您要完成的事情类似于 Dead Reckoning

我们无法真正使用移动设备进行正确航位推算的原因(假设您使用的是 运行 Vuforia)是因为内部传感器不够准确,无法保持正确的位置在这一帧和最后一帧之间。 Unity 可能认为您在左边几英寸,而实际上您在左边更远。这将产生非常严重的漂移效果,并且可能会一起破坏 "magic" 模拟的感觉。 Google Tango 之类的东西在这类事情上要好得多,尽管它们依赖于环境识别,而不是目标识别。 Tangos 可以在每一帧接收新的环境数据,使其更加稳定。

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

可以 禁用跟踪,但它确实会这样做,禁用跟踪并让你的对象漂浮到虚拟深渊中(如果你设法覆盖 vuforia 的渲染器操作).

简而言之,Vuforia 需要图像目标才能正确跟踪,从而消除了 'last known position' 技术的可能性。

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

要禁用摄像头跟踪,但保持摄像头馈送,您可以使用如下内容:

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

将上面的代码放在 DefaultTrackableEventHandlerOnTrackingFound() 函数中是没有意义的(如果你正在使用它,否则你的等效项),因为通常会检测到 trackable在相机图像的边缘,因此如果您立即禁用跟踪,该对象将卡在视口边缘的某个地方。所以你可能会使用一个计时器,或者最好是让用户按下一个 UI 按钮到 'freeze' 对象。

您还需要更改 DefaultTrackableEventHandler 中的 OnTrackingLost() 函数,以便在跟踪停止时不再禁用 3D 对象的网格渲染器 'lost',否则对象会消失。

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

VuforiaBehaviour.Instance.enabled = false;

您仍然需要编辑 OnTrackingLost()(或等效项),以便在禁用 Vuforia 后跟踪 'lost' 后不再禁用 3D 对象。