https://docs.microsoft.com/en-us/windows/mixed-reality/develop/unity/mrtk-getting-started
MRTK 란 MR를 하기 위한 마이크로소프트에서 제공하는 툴 킷임
-----
세팅 준비
윈도우 10 이상의 버전이 필요함
개발자 모드로 해줘야함
비주얼 스튜디오 세팅
비주얼 스튜디오는 2019 이상 버전을 사용해야하고
C++ 설정과
UWP 개발
GameDevelopment with Unity (만약 유니티로 개발 할 때) 를 사용해야한다.
-----
Unity 에서 MRTK 툴 설치하기
https://docs.microsoft.com/ko-kr/windows/mixed-reality/develop/unity/welcome-to-mr-feature-tool
https://www.microsoft.com/en-us/download/details.aspx?id=102778
최신버전 MRTK 다운로드하기
-----
튜토리얼 참고
https://docs.microsoft.com/en-us/windows/mixed-reality/develop/unity/tutorials/mr-learning-base-01
유니티 씬 새로만들어서 열기
빌트 세팅
위와 같이 설정해놓기
스위치 플랫폼 해주기
MRTK 실행파일 열고
내가 하려는 프로젝트에 패스를 연결해준다.
※(2021_09_14 추가 사항)
빌드를 하기 위하여 추가적으로 툴킷을 넣어줘야함
(도큐멘터리에 방법으로는 잘 안 쓴다고함)
mixed Reality Toolkit 에서
Mixed Reality Toolkit Founadtion과 Toolkit Tools 선택해서 쭉쭉 넘어가준다.
Manifest에 기능이 추가되는 화면
정상적으로 패키지가 들어와지면
위에 Mixed Reality 메뉴가 생김
Configure Project for MRTK 를 누르면
이러한 창이 뜬다.
Unity OpenXR plugin 를 눌러준다.
2019 버전에서는 XR SDK/XR Management로 뜬다.
이러한 창이 뜨면 Yes 를 눌러준다 .
에디터가 한번 껏다가 켜지게 된다.
show settings 를 본다.
OpenXR 에 체크를 해준다.
그 다음 페이지는
TMP 관련된 페이지가 나올 것인데
TMP 는 TextMeshPro 플러그인이다.
MRTK 는 TMP 를 사용하기 때문에 그것에 대한 폴더를 만들 것 인가?
묻는 것 같다. import해주자 .
프로젝트 세팅에서
Depth Buffer Format 를 16bit 와 interaction Profile 에서 Microsoft Hand Interction Profile를 넣어준다.
패키지 네임을 바꿔준다. // 빌드 후 패키지 이름인듯.
-----
새로운 씬을 만들어주고 저장을 해준다.
Add to Scene and Configure 를 해준다.
이런게 생성이 된다.
이걸로 되어있는지 확인하고
저장을 해준다.
씬 준비완료
------
새로운 큐브 하나를 만들어준다.
크기를 조정을 해준다.
상호작용 가능 한 물체를 만들기 위해서는
세 가지를 달아줘야한다.
1. 콜라이더
2.Object Manipulator 스크립터
3. NearInteractionGarbbable 스크립터
그걸 달아주고,
플레이해서
아래와 같은 동작을 해 줄 수있다.
유니티에서 작동하는 모습
--------
유니티에서 빌드하기
도큐멘터리에 있는 건 문제가 많기 때문에
광원님께서 추천한 방법을 사용하기로 함
Build Window를 사용하려 했으나 이슈가 생김.
visual studio에서 패키지로 뽑아서 쓰는 방법을 사용하기로함
빌드 후 sin 파일을 열어준다.
열어준 후
Create App Packages 를 눌러준다.
Next
Next
이러한 세팅으로 준비를 해준다.
빌드 후 사내 내부 망으로 접속해주기
회사 아이디랑 비밀번호 세팅 후 로그인해주기
앱으로 들어가서
파일 선택해주기
appx 파일 인스톨 해주기
홀로렌즈에서 실행하면 됌
--------
프로파일링?
MRTK 시스템 및 기능을 초기화하는 방법에 대한 구성 정보를 구성하는 중첩된 프로필 트리
전반적인 시스템 및 기능을 가지고있는 것이라고 간단히 생각하자
프로필이 무엇인지 참고 도큐먼터리
프로파일링 기본 프로파일링 건들면 안되고, 항상 복제를 하여서 사용해야한다.
기본적인 홀로렌즈2 프로파일링을 선택해주고,
클론 버튼을 눌러주자
그럼 클론 파일링이라는 창이 뜬다.
프로파일링 이름을 바꿔주고,
커스텀 프로파일이 복제가 된다.
Spatial Awareness
공간인식.
공간인식은 인터랙션이 필요하지 않으면 꺼두는게 좋다고 함. (퍼포먼스에 영향이 큼)
공간인식 프로파일 복사하기
이름을 바꿔주고 클론을 해준다.
복제가 된다.
-----
spatial Awareness Mesh Observer Profile
인식공간 메쉬 옵버저 프로파일 복제하기
아까 만든 SpatialAwareness 를 선택하고
XR SDK Windows Mixed Reality Spatial Mesh Observer 를 클릭해서 열어준다.
클론해준다.
복제해서 쓸수 있다.
아래로 내려서 DispalyOption에서 Occlusion를 해주면 맵핑되는 모델링이 안보이게 된다.
--------
씬에 오브젝트 위치 시키기
MRTK 는 TextMeshPro 를 사용한다.
TMP 필수 리소스를 다운받아준다 .
나는 Toolkit 넣을때 이미 넣었지만, 만약 저걸 누르고 패키지를 넣어야하면
임포트를 해주면된다.
도큐 멘터리에 있는 패키지 다운 받기 (튜토리얼 어셋들이 들어가 있음)
커스텀 패키지로 가져오기
모두 임폴트를 해준다.
빈 오브젝트를 만들어주고
이렇게 위치를 바꿔준다.
테이블을 넣어주고
로버 어셈블리를 넣어준다.
로버 익스폴러의
빈오브젝트를 만들어준다.
그리고 위와같이 값을 변경해줌
로버 어셈블리 - 로버 모델 - 파트 - 모든 자식을 잡고 복사을 해줌
복사 한 것들을 로버파츠 밑으로 넣어준다.
이름을 한번 정리해주고
GridObjectCollection 스크립터를 넣어준다.
GridObjectCollection 이란?
자식들 오브젝트를 쉽게 재정렬해주는 기능을 한다.
업데이트를 해주면 재정렬이 된다.
오브젝트 세팅까지 해봄
--------
Solver 를 이용해서 동적 컨텐츠 만들기
패키지 안에 Solvers 에 관한 스크립터가 있다.
프리팹 에서 Chevron를 하이라키에 넣어주고, z값을 2 올려준다.
이름을 Indicator로 바꿔주고,
Directionallndicator 스크립터를 넣어준다.
위의 스크립터는 Solver의 종류이기 때문에
솔버 핸들러가 같이 붙어온다.
컴포넌트의 값을 위와 같이 바꿔준다.
트래킹 타겟 타입은 머리
디렉션 타겟은 향하는 방향
그러면 그쪽으로 방향표가 향하게 된다.
Tap To Place를 이용하여서 위치 변경 객체 만들기
로버익스폴러 - 로버어셈블리 - Tap To Place 컴포넌트 넣어주기
솔버이기 때문에 자동으로 솔버 스크립터도 같이 생김
위와 같이 옵션을 바꿔준다
Magnetic Surfaces 란?
개체를 배치할 때 구성 요소가 어떤 개체를 감지할 수 있는지 결정하는 것
지금은 Spatial Awareness 공간 인식으로 해놔서, 공간으로 인식된 곳에만 Rover를 배치할 수 있으며,
이것은 기본적으로 HoloLens에서 생성된 공간 인식 메시입니다.
Tap To Place 에서 On Placing Started 이벤트를 만들어줍니다.
현재 있는 스크립터를 넣어주고
이벤트를 찾아서 넣어준다.
새로운 큐브를만들어서 위와같이 만들어준다.
마치 바닥 처럼
큐브의 레이어를 Spatial Awareness 로 바꿔준다.
공간인식 오브젝트로 캐치하기 위해서
게임 플레이를 하면 클릭하면 잡히고, 다시 클릭하면 그 자리에 놓는다 .
이렇게
솔버에 관해서 더 알고 싶으면
이 도큐먼터리 참고하기
----------------
UI
TMP 를 이용해서 UI만들기
먼저 로버 익스폴러 자식으로 빈 오브젝트를 만들어주고, 위치 값을 보기와 같이 바꿔준다.
버튼에 GridObjectCollection 스크립터를 달아주고,
순서 - 자식
서페이스 타입 - 플랜
레이아웃 - 호라이즌
셀 너비 - 0.2
애커 - Middle Left로 바꿔주고 업데이트 해주기
이렇게 정렬이됌
버튼의 하이라키에서 이름들을 바꿔주고,
TMP - Text 를 각각 버튼의 이름으로 바꿔준다.
Hint의 Interactable 스크립터의
Events 의
RoverAssembly를 넣어주고,
위와 같은 이벤트를 넣어준다.
그러면 Rover Assembly에 스크립터가 달리고,
배열이 생기면서 Hint에 대한 오브젝트들이 들어간다.
explode 도 똑같이 해주면 된다.
동적 메뉴 만들기
패키지 - 믹스드리얼리티툴킷파운데이션 - SDK - Features - UX - Prefabs - Menus - NearMenu4X1를
하이라키에 넣어준다.
위치값을 바꿔주고
이름도 바꿔준다.
트랙 타겟이 해드인지 확인하고
RadialView를 체크해준다..
네 개의 버튼 첫번째 이름을 바꿔주고
이벤트에 Indicator 를 넣고 . 게임오브젝트.셋액티브 이벤트를 달아주고, 체크해준다.
아이콘을 바꿔준다.
인디케이터 체크를 풀어주고,
Dirctional Indicator 컨트롤러 스크립터를 달아준다.
두번 째
버튼도 이름을 바꿔준다.
위와 같이 바꿔준다.
하이카리에서 에셈블리를 눌러서
위와 같이 표현을 해준다.
그럼이제 버튼을 누르면 Indicator 가 켜졋다 꺼졋다 한다.
그리고 2번쨰 버튼을 누르면 TapToPalce 가 켰다가 꺼진다.
-----
씬에 텍스트 추가하기
Table 밑에 3D Object - Text - TMP 를 만들어준다.
트랜스 폼 값을 이렇게 바꿔주고
세팅을 이렇게 바꿔준다.
----
도구 툴 달기
패키지 - 믹스트 리얼리티 툴킷 - SDK - Features - UX - Prefabs - Tooltips에 있음
로버 파츠에 있는 오브젝트를 모두 잡고 ToolTipSpawner 를 달아준다.
위와같이 설정을 바꿔준다.
모든 파츠에 이름을 변경 해준다.
위와 같이 설명이 나온다. (툴 도구에는 다양한 기능들이 있다.)
-----
인터랙티브한 3D 오브젝트 만들기
인터랙티브를 하기 위해서는 오브젝트의 3가지 기능을 해야한다
0. 콜라이터 달기
1. Object Manipulator 스크립터 달기
2. NearInteractionGrabbable 스크립터 달기
3. Object Manipulator 구성요소하기
이 물체의
세가지 스크립터를 달아준다.
object 마니풀레토 에서 Two 핸드 에서 Scale를 제외해준다.
파트들을 잡고, Audio 소스 컴포넌트를 넣고, 클립을 넣고
Play On Awake 를 해제해준다.
공간 블렌드도 3D - 1 로 해준다
힌트와 파트에 Part 어쏌블 컨트롤러를 넣고
힌트의 객체를 넣어준다.
나머지 파트도 해준다.
그러면 힌트에 파트 물체가 닿으면 자동으로 붙음
그리고 리셋 버튼에 이벤트에 로버어셈블러 넣고,
PartAssemblyController > ResetPlacement () 이벤트를 달아준다.
버튼 클릭시 어셈블러 초기화되는것
-----
'AR Glasses > Hololens2' 카테고리의 다른 글
[MRTK 기능 공부] Diagnostics (0) | 2021.09.27 |
---|---|
[MRTK 기능 공부] Boundary (0) | 2021.09.27 |
Azure Spatial Anchors 튜토리얼 (2) | 2021.09.17 |
홀로렌즈 2 MRTK for Unity _ Using speech commands (0) | 2021.09.17 |
홀로렌즈 2 MRTK for Unity _ Using eye-tracking (0) | 2021.09.17 |