Hi! I'm a developer using Vuforia for the first time. I'm trying to detect and track a frame marker sitting on an image target, I've nitialized both the IMAGE_TRACKER and MARKER_TRACKER in QCARutils.mm.
I'm trying to use the ImageTargets sample. I've rewritten initTracker as follows, but it only detects the image targets… Please, help!
- (int)initTracker { int res = 0; QCAR::TrackerManager& trackerManager = QCAR::TrackerManager::getInstance(); QCAR::Tracker* trackerBase = trackerManager.initTracker(QCAR::Tracker::IMAGE_TRACKER); if (trackerBase == NULL) { NSLog(@"Failed to initialize ImageTracker."); } else { NSLog(@"Successfully initialized ImageTracker."); res = 1; } QCAR::Tracker* trackerBase2 = trackerManager.initTracker(QCAR::Tracker::MARKER_TRACKER); if (trackerBase2 == NULL) { NSLog(@"Failed to initialize MarkerTracker."); } else { NSLog(@"Successfully initialized MarkerTracker."); QCAR::MarkerTracker* markerTracker = static_cast<QCAR::MarkerTracker*>(trackerBase2); if (markerTracker == NULL) { NSLog(@"Failed to get MarkerTracker."); } else { NSLog(@"Successfully got MarkerTracker."); if (!markerTracker->createFrameMarker(0, "MarkerQ", QCAR::Vec2F(50,50)) || !markerTracker->createFrameMarker(1, "MarkerC", QCAR::Vec2F(50,50)) || !markerTracker->createFrameMarker(2, "MarkerA", QCAR::Vec2F(50,50)) || !markerTracker->createFrameMarker(3, "MarkerR", QCAR::Vec2F(50,50))) { NSLog(@"Failed to create frame markers."); } else { NSLog(@"Successfully created frame markers."); res = 1; } } } if (res == 0) { appStatus = APPSTATUS_ERROR; errorCode = QCAR_ERRCODE_INIT_TRACKER; } return res; }
Never mind.. There's an obvious error in my code; my call to create markerTracker in doInitTrackers is using the trackerBase variable which draws from the ImageTracker type; instead I added a new line:
QCAR::Tracker* trackerBase2 = trackerManager.initTracker(QCAR::MarkerTracker::getClassType());
and replaced the line to create markerTracker with:
QCAR::MarkerTracker* markerTracker = static_cast<QCAR::MarkerTracker*>(trackerBase2);