停止跟踪图像
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();
将上面的代码放在 DefaultTrackableEventHandler
的 OnTrackingFound()
函数中是没有意义的(如果你正在使用它,否则你的等效项),因为通常会检测到 trackable在相机图像的边缘,因此如果您立即禁用跟踪,该对象将卡在视口边缘的某个地方。所以你可能会使用一个计时器,或者最好是让用户按下一个 UI 按钮到 'freeze' 对象。
您还需要更改 DefaultTrackableEventHandler
中的 OnTrackingLost()
函数,以便在跟踪停止时不再禁用 3D 对象的网格渲染器 'lost',否则对象会消失。
为什么不切换到非 AR 的 3D 模式,而是可以在移动屏幕上用手指或鼠标或键盘操纵对象?换句话说,禁用 Vuforia 但在屏幕上保持 'detected' 3D 对象处于活动状态。您可以完全禁用 Vuforia,而不是像上面的代码那样禁用 ObjectTracker,方法是:
VuforiaBehaviour.Instance.enabled = false;
您仍然需要编辑 OnTrackingLost()
(或等效项),以便在禁用 Vuforia 后跟踪 'lost' 后不再禁用 3D 对象。
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();
将上面的代码放在 DefaultTrackableEventHandler
的 OnTrackingFound()
函数中是没有意义的(如果你正在使用它,否则你的等效项),因为通常会检测到 trackable在相机图像的边缘,因此如果您立即禁用跟踪,该对象将卡在视口边缘的某个地方。所以你可能会使用一个计时器,或者最好是让用户按下一个 UI 按钮到 'freeze' 对象。
您还需要更改 DefaultTrackableEventHandler
中的 OnTrackingLost()
函数,以便在跟踪停止时不再禁用 3D 对象的网格渲染器 'lost',否则对象会消失。
为什么不切换到非 AR 的 3D 模式,而是可以在移动屏幕上用手指或鼠标或键盘操纵对象?换句话说,禁用 Vuforia 但在屏幕上保持 'detected' 3D 对象处于活动状态。您可以完全禁用 Vuforia,而不是像上面的代码那样禁用 ObjectTracker,方法是:
VuforiaBehaviour.Instance.enabled = false;
您仍然需要编辑 OnTrackingLost()
(或等效项),以便在禁用 Vuforia 后跟踪 'lost' 后不再禁用 3D 对象。