Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Unity Scene View 상에서 렌더링할 3D Object를 쉽게 배치하고 레퍼런스 카메라를 통해 정교하게 위치 조정하며 마지막으로 시뮬레이션하는 방법 대한 설명입니다.
저작하려는 VPS Map을 VPSStudio GameObject의 VPSStudioController를 통해 실행 합니다.
Map을 업로드 하게 되면 아래의 그림과 같이 Unity Scene View에서 표현 됩니다.
콘텐츠의 배치는 Map의 Mesh의 위치를 기본으로 이루어집니다.Mesh주위의 원하는 부분에 콘텐츠를 배치하고 주변의 ReferenceCamera를 통해서 확인을 합니다.
ReferenceCamera를 선택한 상태에서 컨텐츠의 위치를 변경하면 사용자가 원하는 위치를 맞출 수 있습니다.
저작을 완료 하면 VPSStudio의 VPS Simulation Data를 통해서 확인 할 수 있습니다. 해당 지역의 Simulation Data로 OSX나 Windows에서 Play 시점에 확인 할 수 있습니다.
Occlusion(건물 메쉬에 의한 가려짐)에 대한 설명은 아래 페이지에 설명 되어 있습니다.
Included SDK Version
0.8.0
Requirements
Unity 2020 or later
Supported Devices
iPhones (supporting ARKit), Android Phones (supporting ARCore)
Samples
Placement by Raycasting, AR Navigation
Included SDK Version
0.8.0
Requirements
Unity 2020 or later,
Supported Devices
Nreal Glasses
Samples
Placement by Raycasting, AR Navigation
MAXST VPS의 Unity Scene 구성에 대해서 설명합니다.
MAXSTVPS의 Unity Scene Hierarchy는 다음과 같습니다.
ARCamera GameObject : 트래킹 중인 카메라의 이미지와 자세를 처리합니다.
VPSStudio GameObject : VPS 공간지도 데이터를 관합니다.
RootTrackable GameObject : VPS 공간지도 상에 렌더링하는 3D Object들의 Root Object입니다.
(렌더링하려는 3D Object는 Root Object의 하위에 배치해야 합니다.)
SceneManager GameObject : MAXST VPS 작동을 컨트롤합니다.
CameraBackground GameObject
CameraBackground는 하드웨어 카메라로부터 얻은 이미지를 표시합니다.
VPSStudio는 VPS 공간지도 데이터를 관리합니다.
VPSStudio Controller 메뉴는 다음과 같습니다
VPS Map 콤보 박스를 통해 VPSData 폴더 하위에 저장된 VPS 공간지도 리스트를 확인하고 원하는 지역을 선택할 수 있습니다.
VPS Simulation Data 콤보 박스를 통해 VPSData/VPSSimulationData/your_vps_map 하위에 저장된 시뮬레이션 데이터 리스트를 확인하고 원하는 시뮬레이션 데이터를 선택할 수 있습니다.
Load VPS Map버튼을 누르면 선택 지역에 대한 메쉬와 레퍼런스 카메라를 로드합니다.
Clear버튼을 누르면 선택 지역에 대한 메쉬와 레퍼런스 카메라를 삭제 합니다.
Navigation Controller는 해당 지역 안에서 내비게이션 기능을 제공 합니다
Position Distance는 내비게이션 경로 상를 따라 렌더링할 화살표 Object 간격입니다. 단위는 미터입니다.
Arrow Prefab은 경로에 배치할 3D 화살표 Object 입니다.
Root Trackable은 트래킹 자세를 반영하여 경로에 대한 3D Object를 렌더링하기 위한 Root GameObject 입니다.
SceneManager는 VPS 작동을 컨트롤합니다.
Disable Objects는 Unity Play시점에 disable할 GameObject들입니다.(VPSStudio GameObject는 카메라 아이 를 포함하기 때문에 disable해야 합니다.
Root Trackable은 트래킹이 될 컨텐츠를 모아둔 GameObject입니다.
Occlusion Objects는 Unity Play시점에 Occlusion 처리를 할 Mesh들 입니다. 추가로 Occlusion이 필요한 Mesh가 존재한다면, 해당 부분에 추가 하면 됩니다.
MAXSTVPS AR Navigation에 대한 설명입니다.
출발 위치와 도착 위치를 지정해서 네비게이션 경로를 얻을 수 있는 코드는 아래와 같습니다. 만약 현재 사용자 위치로부터 네비게이션 경로를 얻고 싶으면 arCamera.tranform.position을 출발 위치로 지정하시면 됩니다. 이 경우, 위치 인식이 성공적으로 수행한 후에 올바른 결과를 얻을 수 있습니다.
NavigationController는 VPSStudio GameObject로부터 얻을 수 있습니다. NavigationController의 인스턴스의 MakePath()를 통해서 출발 위치로 부터도착 위치까지 경로를 얻을 수 있습니다.
MAXST VPS 셋업 가이드입니다.
요구사항
MAXST VPS SDK는 Unity 2020 버전 이상을 권장합니다.
Unity용 MAXST VPS SDK를 사용하기 위해서는 Unity 개발 도구와 Unity 개발에 대한 기본적인 지식이 필요합니다.
VPSSDKUnity 를 다운로드 합니다.
Unity Project 열거나 새로 생성하세요.
새로 생성 했을 경우, MAXSTVPSSDK_0.8.0.unitypackage 를 다운 받아 유니티에 설치 하세요.
VPSData를 다운 받아 위치에 맞는 VPS 공간지도를 설치해 주세요.
Unity의 File/Build Settings/Player Settings에 대한 설명 입니다.
Android는 Other Settings의 Graphics APIs를 OpenGLES3만 선택되어야 합니다.
Android는 Multithreaded Rendering의 체크를 해지해 주세요.
Adnroid는 Publishing Settings에 Custom Main Manifest와 Custom Main Gradle Template가 설치 되어야 합니다.
해당 Manifest와 Gradle 셋팅은 아래의 Github 링크를 참고 바랍니다.
Github Link
iOS는 Camera Usage Description 과 Location Usage Description에 문구를 추가해 주세요.
MAXST VPS SDK는 Unity의 Editor Coroutines Package를 요구합니다.
아래와 같은 메시지가 발생 했을 경우에는 Unity > Window > PackageManager > Editor Coroutines을 검색하여 패키지를 설치합니다.
VPS 공간지도는 해당 지역의 메쉬와 레퍼런스 이미지, 시뮬레이션 데이터를 포함합니다. VPS 공간지도는 아래 그림과 같이 Unity Project 폴더와 동일 레벨에 VPSData 폴더를 생성하고 VPSData 하위에 저장되어야 합니다.
MAXST에서 제공하는 VPSData_yangjae_indoor.zip 파일을 Unity Project 폴더와 동일 레벤에서 압축을 압축을 해제하면 자동으로 VPSData 폴더 하위에 VPSMap 폴더와 VPSSimulationData 폴더가 있고 두 폴더 하위에는 yangjae_indoor 폴더가 생성됩니다.
반드시 VPS 공간지도 폴더 구조를 따라야만 VPS SDK에서 정상적으로 실행됩니다.
Unity 개발 도구에 대한 자세한 정보는 를 이용하시기 바랍니다.
Nreal Glasses에서 MAXST VPS SDK를 동작시키는 방법에 대해 설명합니다.
Nreal Glasses용 Unity Scene 구성은 다음과 같습니다. Unity Scene 구성에 대한 자세한 설명을 아래 페이지에서 확인할 수 있습니다. 기존 Unity Scene에서의 ARCamera는 NRCameraRig로 대체되었습니다.
SceneManager에서 Ar Camera는 NRCameraRig Object로 변경되었습니다.
NRCollectYUV 인스턴스의 Play()통해서 Nreal 카메라를 시작합니다.
VPS Tracker 시작에 대한 설명은 아래 페이지에서 확인하시기 바랍니다.
Unity Update()에서 ARFrame 인스턴스를을 얻는 코드입니다. Update 시점의 VPS 공간지도상 6자유도 자세를 얻어 렌더링용 가상 카메라에 반영하는 코드입니다.
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를 통해서 추가 하셔야 합니다.
API Reference 링크입니다
를 클릭해서 API Reference를 확인하세요.
SceneManager에 대한 설명입니다.
아래는 SceneManager의 필수 구성 요소를 얻는 코드입니다.
필수 구성 요소
ARManager
ARCamera
VPSStudioController
CameraBackgroundBahavior
RootTrackable
렌더링하고자 하는 3D 오브젝트가 건물 메쉬에 의해 가려지는 효과를 Occlusion effect라고 합니다. Occlusion은 runtimeBuildingMaterial를 렌더링시 적용함으로써 구현됩니다.
스마트폰과 스마트 글래스와 같은 모바일 기기 환경에서는 아래 코드를 통해 하드웨어 카메라가 시작됩니다. MAC OS X와 Windows 환경에서는 VPSStudioController를 통해 선택한 시뮬레이션 데이터가 시작됩니다. 이를 통해 현장에 직접 나가지 않아도 앱 개발이 가능합니다.
VPS Tracker를 시작하기 위해서는 해당 VPS 공간지도에 접근할 수 있도록 서버 이름을 입력해야 합니다.
트래킹 결과는 UpdateFrame()과 GetARFrame()을 통해서 얻을 수 있습니다. GetARFrame()을 통해 얻은 ARFrame의 인스턴스에는 현재 트래킹 상태, 이미지, 6자유도 자세를 포함되어 있습니다.
ARFrame의 GetARLocationRecognitionState()를 통해서 현재 위치 인식 상태를 얻을 수 있습니다. 이 상태 정보에 맞춰 증강시킬 3D Object의 활성화 여부를 결정합니다.