2016-09-13 107 views
0

这是可能的Vuforia,一旦检测到您BBDD的图像停止试图找到更多的图像,保持在固定的最后检测到的位置的3D对象,您可以在扩展跟踪模式中移动相机物体3D?停止跟踪图像

感谢

+0

看起来像这是这样的一个副本:stackoverflow.com/questions/17087725/how-to-make-vuforia-stop-tracking-in-unity – Riley

+0

如果使用此代码TrackerManager.Instance.GetTracker () 。停止(); Visual Studio无法找到ImageTracker的定义,并且与此TrackerManager.Instance.GetTracker(Tracker.Type.IMAGE_TRACKER).Stop()相同。 visual not cotain定义类型谢谢 –

回答

0

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

要禁用相机的追踪,但保持相机饲料,你会使用类似:

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

这将没有任何意义,只是把这些代码上面在DefaultTrackableEventHandlerOnTrackingFound()功能(如果您正在使用它,否则您的等价物),因为通常会在相机图像的边缘检测到可跟踪的图像,所以如果立即禁用跟踪,则该对象会卡在视口边缘某处。所以你可能会使用一个计时器,或者最好是让用户按下UI按钮来“冻结”对象。

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

为什么不切换到3D模式未AR,相反,在那里你可以操纵手机屏幕上用手指对象,或用鼠标或键盘?换句话说,禁用Vuforia但在屏幕上保持“检测到的”3D对象处于活动状态。相反禁用ObjectTrackers在上面的代码中,你会再禁用Vuforia完全,具有:

VuforiaBehaviour.Instance.enabled = false; 

你仍然需要编辑OnTrackingLost()(或同等学历)不再禁用3D对象一次跟踪“丢失'当Vuforia被禁用时。

+0

我发现我想要做的事很复杂。 我正在创建一个检测图像并在其附近放置字符的应用程序,以便使用扩展跟踪,这在理论上使得一旦图像丢失后角色就会在空间中持续存在。 实际上,当手机摄像头移动时,字符消失无明显原因,尽管移动速度很慢,对我来说这没有意义。 我在开始的时候评论过的第一件事是我解决它,但如果你知道其他方法来解决它,我会很乐意倾听:) –

+0

如果我回答了你的问题,请接受我的回答。 我刚刚测试了扩展跟踪的质量,它对我来说效果非常好,即使是3星级目标图像也是如此。如果我慢慢移动相机,我可以将相机远离目标移动/旋转,而不会“丢失”它。那么3D模型有一些不可避免的漂移,但这是可以预料的。如果您的跟踪效果不佳,请检查您的目标图片是否适合追踪Vuforia目标管理器中的5颗星。 问:如果相机失去目标图像的视线,为什么要保留角色? – Abraham

+0

需要考虑的另一件事是扩展跟踪如何工作。相机检测所看到的图像帧中的特征,检查这些特征如何改变/移动,并估计其自身的移动。所以如果你的目标图像是例如在没有其他显着特征的普通桌子上,相机无法弄清楚自己的相对运动。因此,当相机失去目标图像时,为了改善延伸跟踪,相机看到的背景/其他功能必须“忙碌”/具有可以跟踪的其他功能,像普通桌面这样的功能将无法正常工作。 – Abraham

0

这听起来像你正在试图完成的任务是沿Dead Reckoning线的东西。

我们无法真正得到正确的推算与移动设备的原因(假设您正在运行Vuforia)是因为内部传感器几乎不够精确,无法保持此帧与该帧之间的适当位置最后一帧。 Unity可能认为你离左边几英寸,实际上你会更远。这将产生非常沉重的漂移效果,并且可能会一起杀死模拟的“神奇”感觉。像Google Tango这样的东西在这种类型的东西上要好得多,虽然那些依赖于环境识别,而不是目标识别。 Tangos可以每帧接收新的环境数据,使其更加稳定。因为(大多数)移动设备没有深度传感器或类似的东西,所以Vuforia依靠图像目标作为将物体锚定在场景中的方式,并在每个帧中给它一个不断更新的位置。这样,它不必依靠像加速度计数据那样的任何东西来进行补偿。

可以禁用跟踪,但它会做到这一点,禁用跟踪和离开你的对象浮动到虚拟深渊(如果你设法从vuforia重写渲染器操作)。

简而言之,Vuforia需要,以便在图像目标正确地跟踪,消除了“上一个已知位置”技术的可能性。

+0

我尝试禁用此代码TrackerManager.Instance.GetTracker ()。Stop();但Visual Studio无法找到ImageTracker的定义,并且与此TrackerManager.Instance.GetTracker(Tracker.Type.IMAGE_TRACKE R).Stop()一样。视觉不包含类型感谢的定义。如果我可以禁用跟踪并将图像放置在与相机和陀螺仪相同的距离处,以查看其他方向,将图像保留在其位置上,那将会很棒。对不起,我的英语 –