Instant Tracker

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

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

Tracker 시작 / 종료

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

InstantTrackerActivity.java

@Override
protected void onResume() {
    ...
    trackerManager.startTracker(TrackerManager.TrackerMask.INSTANT_TRACKER);
    ...
}

@Override
protected void onPause() {
    ...
    trackerManager.stopTracker();
    ...
}

Tracking 정보 이용

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

InstantTrackerRenderer.java

public void onDrawFrame(GL10 unused) {
    ...
    float [] projectionMatrix = BackgroundRenderer.getInstance().getProjectionMatrix();
    
    TrackingResult trackingResult = TrackerManager.getInstance().getTrackingResult();
    
    if (trackingResult.getCount() == 0) {
        return;
    }
    
    Trackable trackable = trackingResult.getTrackable(0);
    
    GLES20.glEnable(GLES20.GL_DEPTH_TEST);
    
    texturedCube.setTransform(trackable.getPoseMatrix());
    texturedCube.setTranslate(posX, posY, -0.05f);
    texturedCube.setProjectionMatrix(projectionMatrix);
    texturedCube.draw();
}

즉석 타깃 데이터 생성

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

InstantTrackerRenderer.java

public void onClick(View v) {
    switch (v.getId()) {
        case R.id.start_tracking:
            String text = startTrackingButton.getText().toString();
            if (text.equals(getResources().getString(R.string.start_tracking))) {
                TrackerManager.getInstance().findSurface();
                instantImageTargetRenderer.resetPosition();
                startTrackingButton.setText(getResources().getString(R.string.stop_tracking));
            } else {
                TrackerManager.getInstance().quitFindingSurface();
                startTrackingButton.setText(getResources().getString(R.string.start_tracking));
            }
            break;
    }
}