Instant Tracker

카메라 프레임 안의 평면 이미지를 순간적으로 인식, 추적하고 센서로 공간을 읽습니다. 화면을 탭하여 원하는 위치에 콘텐츠를 증강시킬 수 있습니다.

Tracker 시작 / 종료
Tracking 정보 이용
즉석 타깃 데이터 생성

Tracker 시작 / 종료

Tracker를 시작 / 종료하려면 다음 코드를 참고하세요.

InstantTrackerViewController.mm

- (void)resumeAR
{
    ...
    TrackerManager::getInstance()->startTracker(INSTANT_TRACKER);
}

- (void)pauseAR
{
    TrackerManager::getInstance()->stopTracker();
    ...
}

Tracking 정보 이용

Tracking 결과를 이용해 물체를 증강하기 위해서는 다음 코드를 참고하세요.

InstantTrackerViewController.mm

- (void)glkView:(GLKView *)view drawInRect:(CGRect)rect
{
    ...
    gl_helper::Mat4 projectionMatrix = BackgroundRenderer::getInstance()->getProjectionMatrix();
    maxstAR::ITrackingResult *result = &TrackerManager::getInstance()->getTrackingResult();
    
    for (int i = 0; i < (int)result->getCount(); i++)
    {
        maxstAR::ITrackable *trackable = result->getTrackable(i);
        
        gl_helper::Mat4 pose = trackable->getPose();
        pose = projectionMatrix * pose;
        
        texturedCube->setTransform(pose);
        texturedCube->setPosition(panTranslateX, panTranslateY, -0.15f);
        texturedCube->setRotation(rotateValue, 0.0f, 0.0f, 1.0f);
        texturedCube->setScale(0.3f + pinchScale, 0.3f + pinchScale, 0.3f + pinchScale);
        texturedCube->draw();
    }
    ...
}

즉석 타깃 데이터 생성

Tracking 상태가 아닐 때만 새로운 데이터를 생성할 수 있습니다. 다음 코드를 참고하세요.

InstantTrackerViewController.mm

- (IBAction)tapScreen:(id)sender {
    
    if(TrackerManager::getInstance()->getTrackingResult().getCount() == 0)
    {
        panTranslateX = 0.0f;
        panTranslateY = 0.0f;
        pinchScale = 0.0f;
        rotateValue = 0.0f;
        TrackerManager::getInstance()->findSurface();
    }
}