即使在VUFORIA和UNITY中丢失图像目标后,仍将3D对象保留在屏幕上

时间:2017-03-12 17:46:03

标签: c# unity3d augmented-reality vuforia

我正在创建AR应用程序,其中我有10个图像目标(一次只识别1个)。我希望即使在目标图像丢失后仍保留3D对象,并在再次找到图像目标(相同/或不同目标)后更新3D模型...

我做了很多事情,比如父改变,协同程序,调用,但似乎没有工作......

提前致谢!

4 个答案:

答案 0 :(得分:0)

当目标丢失时,您可以防止对象消失。只需更改(EDIT)OnTrackingLost方法中的DefaultTrackableEventHandler即可。

如果你的模型丢失得足够快,那将导致你的模型挂在屏幕中间。你慢慢离开目标,模型到达边缘,可能是在屏幕外跟踪丢失。

编辑:

void OnTrackingFound(){
   TrackerObject[] trackers = FindObjectsOfType<TrackerObject>()
   foreach(var t in trackers){ t.SetOff();}
   this.gameObject.GetComponent<TrackerObject>().SetOn();
}

然后您将此TrackerObject组件附加到所有ImageTarget。它有SetOn / Off方法来完成它所说的。

您可以通过存储信息使代码更好,而不是每次都查找它们。

答案 1 :(得分:0)

只需从检查器菜单启用扩展跟踪即可。 例如 : enter image description here

答案 2 :(得分:0)

当Vuforia Target存在时,您可以获取检测到的对象的位置和方向,然后可以实例化与以下对象相同的对象:

GameObject generatedObj = Instantiate(mTrackableBehaviour.gameObject, new  Vector3(0,-4.0f,18), Quaternion.identity);
generatedObj.transform.localScale = new Vector3(1,1,1); // change its local scale in x y z format
generatedObj.AddComponent<Translate>();

这样做之后,从场景中禁用ImageTarget,并在您希望在Marker上使用ImageTarget时再次启用它。 但这有一个局限性 不会有世界坐标经验,就像 https://www.youtube.com/watch?v=iHhMCdh3k7U

答案 3 :(得分:0)

检查是否在ARCamera对象的Vuforia Engine配置中未启用“跟踪设备姿势”选项,此选项会使对象保留在屏幕中。

禁用“跟踪设备姿势”,即可解决此问题。

Unity 2018.3.6与Vuforia 7