Nreal Glasses에서 MAXST VPS SDK를 동작시키는 방법에 대해 설명합니다.
Nreal Glasses를 지원하기 위해서는 Nreal Unity SDK가 필요합니다. 링크를 통해 다운받으시기 바랍니다. Nreal Unity SDK를 다운 받고, 해당 SDK를 프로젝트에 Assets/import Package를 통해서 추가 하셔야 합니다.
Nreal Glasses를 지원하기 위해서는 MAXST VPS unity SDK for Nreal Glasses가 필요합니다. 링크 통해 다운받으시기 바랍니다. 해당 SDK를 프로젝트에 Assets/import Package를 통해서 추가 하셔야 합니다.
Nreal Glasses용 Unity Scene 구성은 다음과 같습니다. Unity Scene 구성에 대한 자세한 설명을 아래 페이지에서 확인할 수 있습니다. 기존 Unity Scene에서의 ARCamera는 NRCameraRig로 대체되었습니다.
SceneManager에서 Ar Camera는 NRCameraRig Object로 변경되었습니다.
NRCollectYUV 인스턴스의 Play()통해서 Nreal 카메라를 시작합니다.
VPS Tracker 시작에 대한 설명은 아래 페이지에서 확인하시기 바랍니다.
nRCollectYUV = new NRCollectYUV();
nRCollectYUV.Play();
TrackerManager.GetInstance().StartTracker();
if (serverName != "")
{
string vpsquery = "{\"vps_server\":\"" + serverName + "\"}";
TrackerManager.GetInstance().AddTrackerData(vpsquery);
}
Unity Update()에서 ARFrame 인스턴스를을 얻는 코드입니다. Update 시점의 VPS 공간지도상 6자유도 자세를 얻어 렌더링용 가상 카메라에 반영하는 코드입니다.
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);
}
}