Image Tracker

평면 이미지를 인식 / 추적하여 3D 콘텐츠와 비디오 영상, 크로마키 영상을 증강시킬 수 있습니다.

Tracker 시작 / 종료
Tracking 정보 이용
맵 파일 설정
맵 파일 추가 / 교체
Tracking 모드 변경

Tracker 시작 / 종료

맵을 로딩한 후 Tracker 를 시작 / 종료하려면 다음 코드를 참고하세요.

ImageTrackerActivity.java

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

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

Tracking 정보 이용

SDK가 설치된 폴더에서 assets > ImageTarget 폴더로 이동하면 샘플 타깃 이미지가 있습니다. 원하는 이미지를 인쇄하거나 화면에 출력합니다.

샘플 코드를 이용할 경우 이미지별 증강되는 콘텐츠는 다음과 같습니다.

  • Blocks.jpg: 알파 동영상이 증강됩니다.
  • Lego.jpg: 일반 동영상이 증강됩니다.
  • Glacier.jpg: 텍스쳐가 입혀진 큐브가 증강됩니다.

Tracking 결과를 증강 물체에 적용하려면 다음 코드를 참고하세요.

ImageTrackerRenderer.java

public void onDrawFrame(GL10 unused) {
    ...
    TrackingResult trackingResult = TrackerManager.getInstance().getTrackingResult();
    for (int i = 0; i < trackingResult.getCount(); i++) {
        Trackable trackable = trackingResult.getTrackable(i);
        if (trackable.getName().equals("Lego")) {
            ...
            videoQuad.draw();
        } else if (trackable.getName().equals("Blocks")) {
            ...
            chromaKeyVideoQuad.draw();
        } else if (trackable.getName().equals("Glacier")) {
            ...
            texturedCube.draw();
        } else {
            coloredCube.setProjectionMatrix(projectionMatrix);
            coloredCube.setTransform(trackable.getPoseMatrix());
            coloredCube.setScale(0.3f, 0.3f, 0.01f);
            coloredCube.draw();
        }
    }
    …
}

맵 파일 설정

addTrackerData ()를 호출해서 맵 파일을 등록하고 loadTrackerData ()를 호출하면 타깃 이미지를 Tracking 할 수 있는 상태가 됩니다.

맵 파일을 설정하는 방법은 다음 코드를 참고하세요.

ImageTrackerActivity.java

onCreate() {
    ...    
    trackerManager.addTrackerData("ImageTarget/Blocks.2dmap", true);
    trackerManager.addTrackerData("ImageTarget/Glacier.2dmap", true);
    trackerManager.addTrackerData("ImageTarget/Lego.2dmap", true);
    trackerManager.loadTrackerData();
    ...
}

맵 파일 추가 / 교체

  1. Documentation > Target Manager의 내용을 참고하여 맵 파일을 생성합니다.

  2. 생성한 파일을 다운로드합니다.

  3. 다운로드 받은 파일의 압축을 풀어서 원하는 경로에 복사합니다. assets 폴더에 복사하는 경우와 외부 저장소에 복사하는 경우, 맵을 로딩하는 방법이 다릅니다.

  • assets 폴더에 복사하는 경우, 상대 경로와 assets 폴더의 파일이라는 것을 나타내도록 두번째 파라미터를 true로 설정합니다.
TrackerManager.getInstance().addTrackerData("ImageTarget/Blocks.2dmap", true);
  • 외부 저장소에 복사하는 경우, 전체 경로를 입력하고 두번째 파라미터를 false로 설정합니다.
TrackerManager.getInstance().addTrackerData(mapFile.getAbsolutePath(), false);
  1. addTrackerData () 호출 후 loadTrackerData ()를 반드시 호출해야 합니다.

Tracking 모드 변경

Image Tracker는 normal, extended, multi 세가지 Tracking 모드가 있습니다.

기본 설정은 normal 모드 입니다.

  • normal 모드: 기존 image tracker와 같은 기능입니다.
TrackerManager.getInstance().setTrackingOption(TrackerManager.TrackingOption.NORMAL_TRACKING);
  • extended 모드: 타깃 이미지로부터 거리가 많이 멀어져도 추적 가능한 기능입니다.
TrackerManager.getInstance().setTrackingOption(TrackerManager.TrackingOption.EXTENDED_TRACKING);
  • multi 모드: 동시에 세 개까지의 타깃 이미지를 인식 및 추적할 수 있는 기능입니다.
TrackerManager.getInstance().setTrackingOption(TrackerManager.TrackingOption.MULTI_TRACKING);