Nreal Glasses 지원

Nreal Glasses에서 MAXST VPS SDK를 동작시키는 방법에 대해 설명합니다.

Nreal Unity SDK Download

Nreal Glasses를 지원하기 위해서는 Nreal Unity SDK가 필요합니다. 링크를 통해 다운받으시기 바랍니다. Nreal Unity SDK를 다운 받고, 해당 SDK를 프로젝트에 Assets/import Package를 통해서 추가 하셔야 합니다.

MAXST VPS Unity SDK for Nreal Glasses Download

Nreal Glasses를 지원하기 위해서는 MAXST VPS unity SDK for Nreal Glasses가 필요합니다. 링크 통해 다운받으시기 바랍니다. 해당 SDK를 프로젝트에 Assets/import Package를 통해서 추가 하셔야 합니다.

Unity Scene 구성

Nreal Glasses용 Unity Scene 구성은 다음과 같습니다. Unity Scene 구성에 대한 자세한 설명을 아래 페이지에서 확인할 수 있습니다. 기존 Unity Scene에서의 ARCamera는 NRCameraRig로 대체되었습니다.

SceneManager 구성

SceneManager에서 Ar Camera는 NRCameraRig Object로 변경되었습니다.

Nreal 카메라 시작 / VPS 트래커 시작

NRCollectYUV 인스턴스의 Play()통해서 Nreal 카메라를 시작합니다.

VPS Tracker 시작에 대한 설명은 아래 페이지에서 확인하시기 바랍니다.

NRealSceneManager.cs
nRCollectYUV = new NRCollectYUV();
nRCollectYUV.Play();
TrackerManager.GetInstance().StartTracker();

if (serverName != "")
{
    string vpsquery = "{\"vps_server\":\"" + serverName + "\"}";
    TrackerManager.GetInstance().AddTrackerData(vpsquery);
}

VPS 트래킹 결과 얻기

Unity Update()에서 ARFrame 인스턴스를을 얻는 코드입니다. Update 시점의 VPS 공간지도상 6자유도 자세를 얻어 렌더링용 가상 카메라에 반영하는 코드입니다.

NRealSceneManager.cs
void Update()
{
    TrackerManager.GetInstance().UpdateFrame();
    nRCollectYUV.UpdateFrame();
    var eyePoseFromHead = NRFrame.EyePoseFromHead;
    Matrix4x4 Mhe = MatrixUtils.ConvertPoseToMatrix4x4(eyePoseFromHead.RGBEyePos);

    ARFrame arFrame = TrackerManager.GetInstance().GetARFrame();

    if (arFrame.GetARLocationRecognizeState() == ARLocationRecognizeState.ARLocationRecognizeStateNormal)
    {
        Matrix4x4 targetPose = arFrame.GetTransform(Mhe);

        arCamera.transform.position = MatrixUtils.PositionFromMatrix(targetPose);
        arCamera.transform.rotation = MatrixUtils.QuaternionFromMatrix(targetPose);
        arCamera.transform.localScale = MatrixUtils.ScaleFromMatrix(targetPose);

        rootTrackable.SetActive(true);
    }
    else
    {
        rootTrackable.SetActive(false);
    }
}

Last updated