-
[holoLens2 ๊ฐ๋ฐ ํํ ๋ฆฌ์ผ] HoloLens 2 fundamentals: develop mixed reality applications (1)
2022. 1. 15.
์ด ๊ธ์ ๋ค์์ hololens2 fundamentals ํํ ๋ฆฌ์ผ์ ๋ฐ๋ผํ๊ณ , ์ด๋ฅผ ์ ๋ฆฌํ์์ต๋๋ค.
https://docs.microsoft.com/en-us/learn/paths/beginner-hololens-2-tutorials/
1. Introduction to the Mixed Reality Toolkit-Set Up Your Project and Use Hand Interaction
1) Introduction to the Mixed Reality Toolkit--Set Up Your Project and Use Hand Interaction
- Mixed Reality Toolkit(MRTK)๋ VR, AR์ ๋ํด ํผํฉํ์ค๊ฒฝํ์ ๋ง๋ค์ด์ฃผ๋ cross-platform toolkit.
- ํ๋ก๊ทธ๋ํฝ ๋ฌผ์ฒด๋ฅผ ์์ง์ด๊ณ , ๋๋ฆฌ๊ณ , ํค์ฐ๊ณ ์ค์ด๋๋ฐ ์์ด ๊ฐ๋ฐ์ ๊ฐ๋จํ๊ฒ ๋ง๋ค์ด ์ค.
- ์ด module (ํํ ๋ฆฌ์ผ)์ ๋๋ด๋ฉด, MRTK ๊ฐ๋ฐ์ ์ํ unity project ์ค์ ์ ํ๊ณ , ์ด๋ฅผ ์ด์ฉํด ๊ฐ๋ฐ์ ๊ฐ์ํ ํ ์ ์์ ๊ฒ.
<๋ฐฐ์ฐ๋ ๊ฒ>
- ์๋์ฐ ํผํฉํ์ค ๊ฐ๋ฐ์ ์ํ ์ ๋ํฐ ํ๊ฒฝ์ค์
- MRTK ๊ธฐ์ด ํจํค์ง๋ฅผ unity๋ก ๋ถ๋ฌ์ค๋ ๋ฒ
- Unity scene์ mrtk ์ถ๊ฐ
- ์ธ๊ฐ์ง ๊ธฐ๋ณธ MRTK ์ํธ์์ฉ ๋ชจ๋ธ์ ๋น๊ต&๋์กฐ
- ObjectManipulator๋ฅผ ์ด์ฉํด์ ํ๋ก๊ทธ๋จ ์กฐ์
2) Set up a mixed reality project in Unity with the Mixed Reality Toolkit
- ๋จผ์ unity project๋ฅผ windows mixed reality development๋ฅผ ์ํด ํ๊ฒฝ์ค์ (๊ตฌ์ฑ)์ ํด์ผ ํจ.
- ์ด ๊ตฌ์ฑ์ unity project๋ฅผ ๋ง๋ค ๋ ๋ง๋ค ์๋์ผ๋ก ํด์ผ ํจ.
<Universal Windows Platform>
- windows mixed reality๋ฅผ ๋์์ผ๋ก ํ๊ธฐ ์ํด unity project๋ฅผ universal windows platform ์ฑ์ผ๋ก ๋ด๋ณด๋ด๋๋ก ์ค์ ํด์ผ ํจ.
- ๊ธฐ๋ณธ์ ์ผ๋ก ๋ชจ๋ ์ฅ์น๋ฅผ ๋์์ผ๋ก ๋น๋ ์ค์ ์ด ๋์ด์์ (๋ณ๊ฒฝ ๊ฐ๋ฅ)
universal windows platform(UWP) : microsoft์์ ๊ฐ๋ฐํ .NET core ๊ธฐ๋ฐ์ ์ดํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ ํ๋ซํผ. ์ฆ, windows์ฉ ํด๋ผ์ด์ธํธ ์ดํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ ํ๋ซํผ.
<Create an immersive view>
- Windows app์๋ 2D view, immersive view๊ฐ ์กด์ฌ.
- ๋ชฐ์ ํ ๋ทฐ(immersive view)๊ฐ ํ๋ ์ด์ ์๋ค๋ฉด mixed reality app, ์ ํ ์๋ค๋ฉด 2D apps์ผ๋ก ๋ถ๋ฅ.
- Virtual Reality Supported๋ฅผ ํ์ฑํ ํด์ ๋ชฐ์ ํ ๋ทฐ๋ฅผ ์์ฑํ๋๋ก ํ๋ก์ ํธ๋ฅผ ๊ตฌ์ฑ ๊ฐ๋ฅ.
- Vritual reality SDK๋ก๋ ๊ทธ๋ฅ windows 10 SDK๋ฅผ ์ฌ์ฉ.
<How are holograms rendered>
- mixed reality app์์ scene์ ์ฌ๋ ๋ ๊ฐ๊ฐ์ ๋ํด ํ ๋ฒ์ฉ, ์ด ๋ ๋ฒ ๋ ๋๋ง ๋จ. => ์ด ๋ฐฉ๋ฒ์ stereoscopic vision์ด๋ผ๊ณ ํจ.
- ๊ธฐ์กด 3D ๊ฐ๋ฐ๊ณผ ๋ค๋ฅด๊ฒ ๊ณ์ฐ๋์ด 2๋ฐฐ๊ฐ ๋จ => ํจ์จ์ ์ธ rendering ๊ฒฝ๋ก ์ ํ์ด ์ค์
- Single pass instanced rendering์ ์ด ํ์ดํ๋ผ์ธ์ ์ต์ ํ => ์ด๊ฑธ ๊ธฐ๋ณธ ์ค์ ์ผ๋ก ํ๋๊ฒ ์ข๋ค.
<How to stabilize holograms>
- Depth Buffer Sharing ํ์ฉ => Unity๊ฐ ์์ฑํ depth map์ Windows Mixed Reality flatform๊ณผ ๊ณต์ ํด์ ๋ ๋์ ํ๋ก๊ทธ๋จ ์์ ์ฑ (stability)๋ฅผ ์ป์ ์ ์์.
- 16-bit depth๋ฅผ ์ ํํ๋ฉด ๋ฐ์ดํฐ๋์ด ์ ์ด์ ธ์ bandwidth requirements๋ ๋ํญ ์ค์ด๋ฆ.
3) Exercise - Configure Unity for Windows Mixed Reality
<Create a new unity project>
- Unity Hub -> projects -> New (module Prerequisites์ ๋ง๊ฒ ์ ํ)
- new project๋ฅผ ๋ง๋ค ๋, templates - 3D ์ ํ -> create
<Switch the build platform - unity 2020 ์ด์ ๊ธฐ์ค>
- (in unity memu) file -> build settings
- (in build settings) UWP๋ฅผ ์ ํํ๊ณ ๋ค์๊ณผ ๊ฐ์ด ์ค์
- ์ดํ Switch Platform์ ๋๋ฅด๊ณ , ์ค์์นญ์ด ๋๋๋ฉด X๋ฒํผ์ ๋๋ฌ ์ฐฝ์ ๋ซ๋๋ค.
4) Import and configure resources
- MRTK๋ unity mixed reality project๋ก ๊ฐ์ ธ์ฌ ์ ์๋ open-source toolkit. ์์ด๋ ํผํฉํ์ค ์ฑ์ ๋ง๋ค ์ ์์ง๋ง, ์์ผ๋ฉด ๋ ๋นจ๋ฆฌ ๊ฐ๋ฐํ ์ ์์.
<MRTK Unity>
- HoloLens, WMR, OpenVR์์ Unity ๊ฐ๋ฐ์ ์ํ basic building block ์ ๊ณต
- in-editor simulation์ ์ด์ฉํด ์ฆ์ ํ์ธ ๊ฐ๋ฅ
- core components๋ฅผ ๊ต์ฒด๊ฐ๋ฅํ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ extensible framework๋ก ์๋.
- HoloLens, HoloLens2, Windows Mixed Reality Headsets, OpenVR headsets(HTC Vive, Oculus Rift) ๋ฑ์ ์ง์.
<MRTK Unity foundation package>
- MRTK foundation package๋ project์์ MRTK๋ฅผ ์ฐ๊ธฐ ์ํ ์ ์ผํ ํ์ ํจํค์ง. 2.5.x ๋ฒ์ ์ด์์ ์ฌ์ฉํด์ผ ํจ.
- MRTK๊ฐ scene์ ์ถ๊ฐ๋๊ณ ๊ตฌ์ฑ๋๋ฉด MixedRealityToolkit, MixedRealityPlayspace ๋๊ฐ์ง object๊ฐ scene hierarchy window์ ์ถ๊ฐ๋จ.
- MixedRealityToolkit - toolkit ๊ทธ ์์ฒด / MixedRealityPlayspace - headset/controller ๋ฑ other required system์ด scene์์ ์ฌ๋ฐ๋ฅด๊ฒ ๊ด๋ฆฌ๋๋๋ก ๋ณด์ฅ.
- Main camera๋ MixedRealityPlayspace์ ์์์ผ๋ก ์ด๋
<Configuration profile>
- profile : MRTK core components์ ํ๋์ ๊ตฌ์ฑ.
- MixedRealityToolkit object์๋ active profile์ด ํฌํจ๋์ด ์์ผ๋ฉฐ, Inspector window์์ ๋ณผ ์ ์์.
- MRTK๊ฐ scene์ ์ถ๊ฐ๋๋ฉด, DefaultMixedRealityToolkitConfigurationProfile์ด ๋ฏธ๋ฆฌ ์ ํ๋จ.
- MRTK๋ ์ง์ํ๋ ๋๋ถ๋ถ์ ํ๋ซํผ&์๋๋ฆฌ์ค๋ฅผ ๋ค๋ฃจ๋ ์ถ๊ฐ basic profile ์ ๊ณต. ์์์ ๋ฏธ๋ฆฌ ์ ํ๋ profile์ general use profile์ด๋ฏ๋ก ํน์ ํ๋ซํผ์ ์ต์ ํ ํ๊ณ ์ถ๋ค๋ฉด MRTK๊ฐ ์ ๊ณตํ๋ profile์ ์ ํํด์ผ ํจ.
<How are customize and configure the default MRTK profiles>
- default MRTK profiles์ ์์ ๋ถ๊ฐ๋ฅ. ๋์ , ๋ณ๊ฒฝํ๋ ค๋ฉด profile์ cloneํด์ ์์ ๊ฐ๋ฅ.
- sub-profile์ ์์ ํ๋ ค๋ฉด ๊ทธ๊ฒ๋ ๋ณต์ ํด์ผ ํจ.
5) Exercise - Import and configure resources
<Import the MRTK Unity foundation package>
- MRTK๋ฅผ importํ๋ ค๋ฉด Mixed Reality Feature๋ฅผ ์ฌ์ฉํด์ผ ํจ.
- microsoft download center์์ Mixed Reality Feature tool์ ๋ค์ด๋ฐ๊ณ , exe๋ฅผ ์คํ.
- (in MR feature tool) Start -> project folder open -> Discover Features
์ด๋, folder path๋ฅผ ๋ฃ๊ธฐ ์ํด์๋ ์ํ๋ folder์ ๋ค์ด๊ฐ์ file path์ _๋ฅผ ์ ๋ ฅํ๊ณ ํ์ธ์ ๋๋ฅด๋ฉด ๋๋ค.
- Mixed Reality Toolkit -> Mixed Reality Toolkit Foundation ์ ํ
- Platform Support -> Mixed Reality OpenXR Plugin ์ ํ (์ต์ ๋ฒ์ ์ผ๋ก)
- get feature ํด๋ฆญ -> validate ํด๋ฆญ -> No validation issues were detected ๊ฐ ๋์์ผ ์ ์!
- import -> approve => ๋!
<Configure the Unity project>
- warning ์ฐฝ์ด ๋จ๋ฉด yes๋ฅผ ๋๋ฅธ๋ค.
- ๊ทธ๋ฌ๋ฉด MRTK configurator๊ฐ ๋จ๋๋ฐ, ์ ๋จ๋ฉด ๋ค์ ๊ฒฝ๋ก๋ก ๋ค์ด๊ฐ์ ๋์ด๋ค.
Mixed Reality > Toolkit > Utilities > Configure Project for MRTK - (in MRTK configurator) Unity OpenXR plugin -> XR Plug-In Management Settings
- ๊ทธ ๋ค, project setting์ด ์ด๋ฆฌ๋๋ฐ, XR Plugin management -> UWP(์๋์ฐ ๋ก๊ณ ) ์ค์ ์์ OpenXR, Microsoft HoloLens feature set ํ์ฑํ.
- XR Plug-In Management Settings -> OpenXR์์ depth 16bit ์ ํ, interaction profile์ microsoft hand interaction profile ์ถ๊ฐ.
- ๊ทธ๋ฆฌ๊ณ Apply๋ฅผ ๋๋ฅด๋ฉด unity๊ฐ ์ฌ์์.
- ์ฌ์์ ํ, Edit -> project setting -> player -> publishing settings์ package name์ ์ด๋ฆ ์์ฑ (์ด๋ ๊ณ ์ ์๋ณ์๋ก์จ ์ฑ์ ๊ณ ์ ๋ฒํธ? ๊ฐ์ ๊ฒ์. ์ด๊ฒ ๊ฐ์ผ๋ฉด ๊ธฐ์กด์ ์กด์ฌํ๋ ์ฑ์ด ๋ฎ์ด์์์ง)
- product name์ hololens start menu์ ํ์๋จ. _ ์ ์ด๋ฆ ์์ ๋ฃ์ผ๋ฉด ์์ ์ ๋ ฌ๋์ด์ ๋นจ๋ฆฌ ์ฐพ์ ์ ์์ (๊ฐ๋ฐ ์์๋ง)
<Create the scene and configure MRTK>
- (in unity menu) File -> New Scene -> Basic (Built-in) -> create
- (in unity menu) Mixed Reality -> Toolkit -> Add to Scene and Configure
- (in Hierarchy window) MixedRealityToolkit object๊ฐ ์ ํ๋ ์ํ๋ก, Inspector window์์ MixedRealityToolkit configuration profile์ด DefaultMixedRealityToolkitConfigurationProfile์ธ์ง ํ์ธ
- (in unity menu) file -> save as => Asset > Scenes ์๋์ scene์ ์ ์ฅ.
6) Interaction models
- MRTK๋ฅผ ์ฌ์ฉํ๋ฉด 6DoF controler, ์, ์์ฑ๊ณผ ๊ฐ์ ๋ค์ํ input ์ฌ์ฉ ๊ฐ๋ฅ. ์ฌ๊ธฐ์๋ ์ธ ๊ฐ์ง ๊ธฐ๋ณธ interactino model๊ณผ unity input simulation์ ๋ํด ์์๋ณผ ๊ฒ.
<Hands and motion controllers model>
- ํ ์ ๋๋ ๋ ์์ ์ฌ์ฉํจ.
- ์์ผ๋ก ์ง์ ์กฐ์ (direct manipulation) / ์์ผ๋ก ๊ฐ๋ฆฌํค๊ธฐ (point and commit) / ์ปจํธ๋กค๋ฌ ์ด์ฉ (motion controllers)
<Hands-free model>
- ์์ ๋ชป ์ฐ๋ ์ํฉ์ผ ๋ ์์ฑ์ด๋ ๋ ์์ง์์ ์ด์ฉํจ.
- ์์ฑ์ ๋ ฅ (voice) / ์์ ๋ฐ ๊ธฐ๋ค๋ฆผ(gaze and dwell)
<Gaze and dwell>
- ๋์ ๋ง์ฐ์ค์ฒ๋ผ ์ฌ์ฉํ๋ฉด ๋ชจ๋ธ! ์๊ฑฐ๋ฆฌ ์ ๋ ฅ ๋ชจ๋ธ์ด๋ผ ์์ด ๋ฟ์ง ์๋ ๊ฒ๊ณผ ์ํธ์์ฉํ ๋ ์ฌ์ฉํ๋๊ฒ ๊ฐ์ฅ ์ข์.
- ์์ ์ ๋ ฅ / other commit (์์ ์ ์ด์ฉํ์ฌ ๋์ ์ง์ ํ ์์ฑ๋ช ๋ น, ๋ฒํผ๋๋ฅด๊ธฐ, ์ ์ ์ค์ณ)
<Unity in-editor input simulation>
- ์ฅ๋ฉด ์ด๋ : WASD(์์ผ๋ค์ค), QE(์์ง์ด๋), right mouse(์นด๋ฉ๋ผ ํ์ )
- hand input ์๋ฎฌ : space ๋๋ฆ(์ค๋ฅธ์ ํ์ฑํ), ์ผ์ชฝ shift ๋๋ฆ(์ผ์ ํ์ฑํ) => ๋ง์ฐ์ค๋ก ์์ง์)
๋ง์ฐ์ค ํ (์์ ๊น์ด), ๋ง์ฐ์ค ์ผ์ชฝ (ํ์น ์ ์ค์ฒ), T/Y (๋ทฐ์ ์ ๋ง๋ค๊ธฐ), CTRL ๋๋ฆ + ๋ง์ฐ์ค์ด๋ (์ ํ์ )
7) Exercise - Add hand interaction with object manipulator
<Add a cube to the scene>
- Cube๋ฅผ ์์ผ๋ก ์กฐ์ํด๋ณด์!
- cube ์์ฑ : GameObject -> 3D Object -> Cube
- cube ์์น : position (0, -0.1, 0.5), rotation (0, 0, 0), scale (0.1, 0.1, 0.1)
- Add Component์ Object manipulator, NearInteractionGrabbable ์ ์ถ๊ฐ (์ํธ์์ฉ์ ์ํจ)
- Play button์ ๋๋ฌ ์๋ฎฌ๋ ์ด์
<Build HoloLens2>
- ๋จผ์ Unity project๋ฅผ build ํด์ผ ํจ.
- File -> Build settings -> add open scenes -> build
- ์ ์ฅ์์น ์ง์ ํ๊ณ , ์ ํ (๊ทธ๋ฌ๋ฉด build ๋จ)
- ๊ทธ ํ ์ดํ๋ฆฌ์ผ์ด์ ๋น๋ ๋ฐ ๋ฐฐํฌ
- buildํ project๋ฅผ visual studio์์ ์ด๊ณ master/release, ARM64๋ฅผ ์ ํ.
- hololens๋ฅผ ์ปดํจํฐ์ ์ฐ๊ฒฐํ ํ debug -> start without debugging. (๊ทธ๋ผ ์ดํ์ด ์๋์์๋จ.)
'๐STUDY > ๐hololens&MRTK' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋๊ธ