Sketchy behavior with Qualcom Vuforia (Qualcom AR)

Hi there,

I’m working on an app using the Qualcom Vuforia library, and I’ve had a couple of snags. I’ll probably also post this on the Qualcom forums since it’s not a Unity-specific thing, but AFAIK Unity is a big part of the Vuforia user-base, and is pretty much the go-to AR solution for Unity.

First of all, the library is great. It works really well and is pretty straightforward to use/extend. I found, however, that the base version really needs the added damping code that can be found on the forum. In fact, my client and I weren’t happy with the way that that code smoothed things out, so I created my own method, which I’d be happy to share. Either way, once the damping is added, the solution works really well 95% of the time.

Our particular implementation involves using a 3D depth-based mask to mask out the 3D scene where the tracker object should be, to give the appearance that the tracker object is actually in the 3D scene. This obviously puts really heavy demands on the ability to precisely match the position of the tracker in the scene. The damping actually is a detriment here because while it is “catching up,” the mask doesn’t exactly overlap the real-world object, and the illusion is broken. Either way, it was exceedingly difficult to size/position the scene/tracker so that the two objects matched up perfectly. I’m rather confident at this point that our mask model is correct. It seems that every time you track an object, some different offset is introduced, which we can’t account for with a statically-placed scene.

Aside from that issue, we’ve found that in certain orientations, the library will spit out transformations that “flip” the scene along an axis, not by 90 degrees but by some half angle. The scene keeps tracking this way until a different angle is reached and it flips back. Likewise, there is a lot of “noise” when holding the camera more-or-less in the same location, which seems to essentially pop back and forth between two rotations.

I was wondering if anyone else has run into these issues or if there is something I’m doing differently.

Thanks!

bump