Visual SLAM

3D 공간을 학습하여 맵을 생성합니다.

Tracker 시작 / 종료
맵 생성 시작 / 종료 / 저장
렌더링 옵션 설정

Tracker 시작 / 종료

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

VisualSLAMSample.cs

public void FindSurface ()
{
    ...
    TrackerManager.GetInstance().StartTracker(MaxstARUtils.TrackerMask.SLAM_TRACKER);
    ...
}

void OnApplicationPause(bool pause)
{
    ...
    TrackerManager.GetInstance().StopTracker();
    ...
}

void OnDestroy()
{
    TrackerManager.GetInstance().StopTracker();
    TrackerManager.GetInstance().DestroyTracker();
}

맵 생성 시작 / 종료 / 저장

  1. 맵 생성을 시작하기 위해서는 다음 코드를 참고하세요.
TrackerManager.GetInstance().FindSurface();
  1. 맵 생성을 중지하기 위해서는 다음 코드를 참고하세요.
TrackerManager.GetInstance().QuitFindingSurface();
  1. 맵 저장은 추적중인 상태에서만 가능합니다. 생성한 맵 데이타를 파일에 저장할 때, 파일 저장 위치는 다음 코드를 참고하세요.

VisualSLAMSample.cs

public void SaveSurfaceData(string imageFileName)
{
    SurfaceThumbnail surfaceThumbnail = TrackerManager.GetInstance().SaveSurfaceData(imageFileName);
    int width = surfaceThumbnail.GetWidth();
    int height = surfaceThumbnail.GetHeight();
    byte[] thumbnailData = surfaceThumbnail.GetData();
    Texture2D tex = new Texture2D(width, height, TextureFormat.RGB24, false);
    for (int y = 0; y < height; y++)
    {
        for (int x = 0; x < width; x++)
        {
            int index = y * width + x;
            tex.SetPixel(x, height - y, new Color(thumbnailData[index] / 255.0f, thumbnailData[index] / 255.0f, thumbnailData[index] / 255.0f));
        }
    }
    tex.Apply();
    FileStream fileSave = new FileStream(Application.dataPath + "/" + imageFileName + ".png", FileMode.Create);
    BinaryWriter binary = new BinaryWriter(fileSave);
    binary.Write(tex.EncodeToPNG());
    fileSave.Close();
}

렌더링 옵션 설정

VisualSLAMSample.cs

void Update()
{
    ...
    BackgroundRenderer.GetInstance().SetRenderingOption(MaxstARUtils.RenderingOption.FEATURE_RENDERER_MASK, MaxstARUtils.RenderingOption.PROGRESS_RENDERER_MASK);
    ...
}

특징점, SLAM 초기화 진행률, 표면 매쉬 정보는 옵션 설정으로 표시 유무를 결정할 수 있습니다.

옵션 설정값은 BackgroundRenderer.RenderingOption enum을 참고하세요.