Mixed Reality Utility Kit - 2024-Adoor/practice GitHub Wiki
https://developer.oculus.com/documentation/unity/unity-mr-utility-kit-overview
Scene API ๊ด๋ จ ๊ธฐ๋ฅ์ ๋ ํธํ๊ฒ ์ฐ๊ฒ ํด์ค๋ค๋ ๊ฒ ๊ฐ์๋ฐ ์์ง์ ๋ฌด์จ ์๋๋ก ๋ถ๋ฆฌํด๋์์ง ์ ๋ชจ๋ฅด๊ฒ ๋ค.
MRUK ํ๋ฆฌํน์ ์๋ Scene Loaded Event - Scene API๋ฅผ ์ฌ์ฉํ ๋ ๋ณดํต ๊ณต๊ฐ ์ ๋ณด๋ฅผ ๋ถ๋ฌ์ฌ ๋๊น์ง ๊ธฐ๋ค๋ ค์ผ ํ๋ฏ๋ก ๊ทธ๋ฐ ๊ฒฝ์ฐ์ ์ด ์ด๋ฒคํธ๋ฅผ ๊ตฌ๋ ํ ์ ์๋ค. ๋ณธ ํคํธ์ ๋ค๋ฅธ ํ๋ฆฌํน์์๋ ๊ฐ๋ MRUKStart๋ผ๋ ์ปดํฌ๋ํธ๊ฐ ๋ฌ๋ ค ์๋๋ฐ ๊ทธ๊ฒ ๋ํ ๊ณต๊ฐ์ด ๋ค ์๊ธธ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๊ธฐ ์ํด ์กด์ฌํ๋ค. ์ฃผ์ํด์ผํ ์ ์ ๋ง์ฝ ์ด๋ฌํ ์ด๊ธฐํ์ ์์๊ฐ ์ค์ํ ๊ฒ์ด ์๋ค๋ฉด ๊ฐ ํ๋ฆฌํน์ ์์ด ์์๋ฅผ ๊ฒฐ์ ํ ์ ์๋ MRUKStart์ ์์กดํ์ง ๋ง๊ณ ์ด๊ธฐํํ๋ ๋ด์ฉ์ MRUK ํ๋ฆฌํน์ ์๋ Scene Loaded Event๋ก ์ฎ๊ธฐ๋ ๊ฒ์ด ์ข๋ค๊ณ ํ๋ค.
Note
MRUK ํ๋ฆฌํน์ Room Prefabs์๋ ์์ ์ ์ด๋ฏธ ํฌํจ๋์ด ์๋ ๊ฐ์ ๋ฃธ์ ์ฐธ๊ณ ํ์ฌ ์ง์ ์์ ๋ง์ ๋ฃธ์ ์ถ๊ฐํ ์ ์๋ค๊ณ ํฉ๋๋ค. ์ ์ ๊ณต๊ฐ์ด ์ด๋์ ๋ ํ์ ๋๋ฉด, ๋ฃธ ํ๋ฆฌํน์ ๋ง๋ ๋ค์ Room Index๋ฅผ ๊ทธ๊ฑธ๋ก ์ค์ ํด์ ์ค์ ์ ์ ๊ณต๊ฐ๊ณผ ์ ์ฌํ ํ๊ฒฝ์์ ํ ์คํธํด๋ณผ ์ ์์ ๊ฒ ๊ฐ์ต๋๋ค.
๐ ์ด ๋ถ๋ถ์ Features๋ฅผ ๋ฐํ์ผ๋ก ํฉ๋๋ค.
MR ์ ํธ๋ฆฌํฐ ํคํธ๋ ๊ณต๊ฐ ์ธ์ ์ฑ์ ๊ตฌ์ถํ ๋ ํ์ํ ์ผ๋ฐ์ ์์ ์ ์ํํ๊ธฐ ์ํด Scene API ์์ ํ๋ถํ ์ ํธ๋ฆฌํฐ ๋ฐ ๋๊ตฌ ์ธํธ๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ด๋ฅผ ํตํด ์ค์ ์ธ๊ณ์ ๋ํด ํ๋ก๊ทธ๋๋ฐํ๊ธฐ๊ฐ ๋ ์ฌ์์ง๊ณ ๊ฐ๋ฐ์๋ ์ฑ์ ๋ ํนํ๊ฒ ๋ง๋๋ ์์์ ์ง์คํ ์ ์์ต๋๋ค.
์ฐ๋ฆฌ๊ฐ ์ ๊ณตํ๋ ์ ํธ๋ฆฌํฐ๋ ํฌ๊ฒ 3๊ฐ์ง ๋ฒ์ฃผ๋ก ๋๋ฉ๋๋ค:
- ๋นํธ์ธ ๋ฌผ๋ฆฌ ์์ง์ ์ฌ์ฉํ์ง ์๊ณ ๋ ์ด์บ์คํธ ์ฟผ๋ฆฌํ๊ธฐ.
- ๋ฐ๋ฅ, ๋ฒฝ, ํ๋ฉด์์ ์ ํจํ ์คํฐ ์์น ์ฐพ๊ธฐ.
- ๋ ์ด์บ์คํธ๋ฅผ ์ฌ์ฉํ์ฌ ์ฝํ ์ธ ๋ฅผ ๋ฐฐ์นํ๊ธฐ ์ํ ์ต์ ์ ํ๋ฉด ์์น๋ฅผ ์ฐพ๊ธฐ.
- ์ด๋ค ์์น๊ฐ ๋ฐฉ ์์ ์๋์ง ํ์ธํ๊ธฐ.
- ๋ฐฉ์ ๋ฐ์ด๋ฉ ๋ฐ์ค ๊ฐ์ ธ์ค๊ธฐ.
- ์ต์ปค ๊ฐ์ ๋ถ๋ชจ/์์ ๊ด๊ณ ๊ฐ์ ธ์ค๊ธฐ(์: ์๋ก์ ์์ ์์ธ ๋ณผ๋ฅจ ๋๋ ๋ฒฝ์ ๋ถ์ฐฉ๋ ์ก์).
- ํ ์ค์ฒ๋ฅผ ๋ชจ๋ธ์ ํฌ๊ธฐ์ ๋ฐ๋ผ ๋์ด๋๊ฑฐ๋ ๋ณํ๋์ง ์๋๋ก ์ด์๋งค ์์ด ๋ํํ์ฌ ๋ฒฝ์ ๋ ๋๋งํฉ๋๋ค. ์ด๋ ํผํฉ ํ์ค ์ธ๊ณ์ ์คํจ ๋ฐ๊ฟ ์ ํ๊ธฐ์ ์ค์ํฉ๋๋ค.
- ์ค์ ๋ฌผ์ฒด์ ์ผ์นํ๋ ๋ฐฉํฅ, ํฌ๊ธฐ, ๋น์จ์ ๋ค์ํ ์ต์ ์ ์ฌ์ฉํ์ฌ ์ค์ ๋ฌผ์ฒด๋ฅผ ๋์ฒดํ ์ ์๋๋ก ๊ฐ์์ ์ค๋ธ์ ํธ์ ๊ฐ๊ตฌ๋ฅผ ์ฝ๊ฒ ๋ฐฐ์นํ๊ฒ ํด์ค๋๋ค.
- ์ฌ์ฉ์๋ฅผ ์์ ํ๊ฒ ๋ณดํธํ๊ธฐ ์ํด ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌํ๋ ๋ฐฉ ๋ฐ์ด๋๋ฆฌ.
- ๋๋ฒ๊ฑฐ๋ฅผ ์ฌ์ฉํ๋ฉด ์ต์ปค๋ฅผ ์๊ฐ์ ์ผ๋ก ๊ฒ์ฌํ์ฌ ์์น, ๋ฐฉํฅ, ๋ ์ด๋ธ ๋ฑ์ ์ป์ ์ ์์ต๋๋ค.
- ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ค์ํ ํ๊ฒฝ์์ ์๋ํ๋์ง ํ์ธํ ์ ์๋๋ก ํ๋ 30๊ฐ์ ํ ์คํธ์ฉ ๋ฐฉ ํ๋ฆฌํน ์ ํ์ง.
๐ ์ด ๋ถ๋ถ์ Features๋ฅผ ๋ฐํ์ผ๋ก ํฉ๋๋ค.
MR ์ ํธ๋ฆฌํฐ ํคํธ๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์๋ ๋ ๊ฐ์ง๊ฐ ์์ต๋๋ค: ์ฝ๋๋ฅผ ํตํ ์์ง๋์ด๋ง, ๋๋ Unity Inspector ๋ด ํ๋ฆฌํน ๋๊ตฌ์ ๋งค๊ฐ๋ณ์ ์กฐ์ .
์์ง๋์ด๋งํ ๋ ์ฃผ๋ก MRUK
, MRUKRoom
, MRUKAnchor
ํด๋์ค๋ฅผ ๋ค๋ฃจ๊ฒ ๋ ๊ฒ์
๋๋ค. MRUK
๋ ์ฑ๊ธํค ํด๋์ค์ด๋ฏ๋ก ์ฅ๋ฉด์ MRUK
์ธ์คํด์ค๋ ํ๋๋ง ์์ด์ผ ํฉ๋๋ค. ๋ฐฉ ๋น ํ๋์ MRUKRoom
์ธ์คํด์ค๊ฐ ์์ผ๋ฉฐ ๋ชจ๋ ์ด ์ธ์คํด์ค๋ค์ ์์์๋ MRUKAnchor
์ปดํฌ๋ํธ๊ฐ ์์ต๋๋ค. ์ด ๊ตฌ์กฐ๋ OVRSceneManager๋ฅผ ์ฌ์ฉํ ๋์ OVRSceneRoom
๋ฐ OVRSceneAnchor
์ ์ ์ฌํฉ๋๋ค.
์๋๋ ๊ณต์ ๋ฌธ์์ ์๋ ๋ช ์ธ ๋ฒ์ญ์ ๋๋ค.
-
LoadSceneFromDevice()
: ํ์คํธ ๋๋ฐ์ด์ค์์ ์ฌ ๋ฐ์ดํฐ๋ฅผ ๋ก๋ํฉ๋๋ค. -
LoadSceneFromPrefab()
: ์ ๊ณต๋ ํ๋ฆฌํน ์ค ํ๋ ๋๋ ๋น์ ์ ์ฌ์ ๋ก๋ํฉ๋๋ค. -
ClearScene()
: ์ฌ ๋ฐ์ดํฐ ์ง์ฐ๊ธฐ -
GetRooms()
: ํ์ฌ ๋ก๋๋ ๋ฐฉ์ ๋ฆฌ์คํธ๋ฅผ ๊ฐ์ ธ์ต๋๋ค. -
GetCurrentRoom()
: ์ฌ์ฉ์๊ฐ ํ์ฌ ์์นํ ๋ฐฉ์ ๊ฐ์ ธ์ต๋๋ค.
-
GetRoomAnchors()
: ๋ฐฉ์ ๋ชจ๋ MRUKAnchor์ ์ ๊ทผํฉ๋๋ค(๋ฐฉ ์์ฒด์ ์ต์ปค๋ ํฌํจํ์ง ์์). -
GetFloorAnchor()
: ๋ฐ๋ฅ MRUKAnchor์ ์ ๊ทผํฉ๋๋ค. -
GetCeilingAnchor()
: ์ฒ์ฅ MRUKAnchor์ ์ ๊ทผํฉ๋๋ค. -
GetGlobalMeshAnchor()
: ๊ธ๋ก๋ฒ ๋ฉ์ MRUKAnchor์ ์ ๊ทผํฉ๋๋ค. -
GetWallAnchors()
: ๋ฐฉ์ ๋ชจ๋ ๋ฒฝ MRUKAnchor์ ์ ๊ทผํฉ๋๋ค. -
GetRoomOutline()
: ๋ฐฉ์ ์๋ซ๋ฉด ๋ชจ์๋ฆฌ ์ ์ ์๊ณ ๋ฐฉํฅ ์์๋ก ๊ฐ์ ธ์ต๋๋ค(์์์ ์๋๋ก ๋ณผ ๋). -
GetKeyWall()
: ๋ฐฉ์์ ๋ค์ ๋ค๋ฅธ ๋ฐฉ ๋ชจ์๋ฆฌ๊ฐ ์๋ ๊ฐ์ฅ ๊ธด ๋ฒฝ์ ๊ฐ์ ธ์ต๋๋ค(ํ์ฉ ์ค์ฐจ ๋ฒ์ ๋ด). -
Raycast()/RaycastAll()
: ๋ฐฉ์ ์ต์ปค๋ง์ ๋์์ผ๋ก ์ถฉ๋ ์์ด ๋ ์ด์บ์คํธ; ์ถฉ๋ ์์๋ ๋ณด์ฅ๋์ง ์์์ ์ ์ํ์ธ์. -
GetBestPoseFromRaycast()
: ๋ ์ด์บ์คํธ์์ ์ถ์ฒ ํฌ์ฆ๋ฅผ ๊ฐ์ ธ์ต๋๋ค. ์ปจํธ๋กค๋ฌ๋ก AR ์ฝํ ์ธ ๋ฅผ ๋ฐฐ์นํ ๋ ์ ์ฉํฉ๋๋ค. -
IsPositionInRoom()
: ์์น๊ฐ ๋ฐฉ ์์๋ผ์ธ ๋ด์ธ์ง ํ์ธํฉ๋๋ค. -
GetRoomBounds()
: ๋งคํฌ๋ก ๊ธฐ๋ฅ์ ์ํ ์๋ ์ ๋ ฌ ๋ฐ์ด๋ฉ ๋ฐ์ค -
GetFacingDirection()
: ๋ณผ๋ฅจ์ ๋ํด, ๊ฐ์ฅ ๊ฐ๊น์ด ๋ฒฝ๋ฉด์ ๋ฐฉํฅ์ ๋ฐ๋ผ Y-forward ๋ฒกํฐ(์ผ ๊ฐ๋ฅ์ฑ์ด ๋์)๋ฅผ ๊ตฌํฉ๋๋ค. -
IsPositionInSceneVolume()
: ์์น๊ฐ ๋ฐฉ์ ์๋ฌด ๋ณผ๋ฅจ ๋ด์ธ์ง ํ์ธํฉ๋๋ค. -
TryGetClosestSeatPose()
: ๊ด์ ์์ ๋ชจ๋ ์ํ ์ค๋ธ์ ํธ์์ ๊ฐ์ฅ ๊ฐ๊น์ด ์ข์ ํฌ์ฆ๋ฅผ ๋ฐํํฉ๋๋ค. -
GetSeatPoses()
: ๋ฐฉ์ ๋ชจ๋ ์ข์ ํฌ์ฆ๋ฅผ ๋ฐํํฉ๋๋ค (๋ฐฉ์ ์ํ ์ค๋ธ์ ํธ๊ฐ ์๋ ๊ฒฝ์ฐ 0). -
TryGetAnchorParent()
: ํ๋ซ ์ฌ ๊ณ์ธต๊ตฌ์กฐ(๋ฐฉ๊ณผ ์ต์ปค)๊ฐ ์์ผ๋ฏ๋ก, ๋ ผ๋ฆฌ์ ์ธ ๋ถ๋ชจ๋ฅผ ์ฐพ์ผ๋ ค๊ณ ์๋ํฉ๋๋ค. ์๋ฅผ ๋ค์ด ๋ฌธ์ด ์ด๋ ๋ฒฝ์ ๋ถ์ด ์๋์ง, ๋๋ ๋ณผ๋ฅจ์ด ๋ค๋ฅธ ๋ณผ๋ฅจ์ ์์ฌ ์๋์ง -
TryGetAnchorChildren()
: ์์ ๋น์ทํ์ง๋ง ๋ฐ๋ ๊ด๊ณ์ ๊ฒฝ์ฐ - `DoesRoomHave(): ๋ฐฉ์ ์๋งจํฑ ๋ ์ด๋ธ์ด ์๋ ๊ฐ์ฒด๊ฐ ์๋์ง ํ์ธํ๊ธฐ ์ํ ํ ์ค ์ก์ธ์ค
-
TryGetClosestSurfacePosition()
: ์ฃผ๋ก RoomGuardian ํ๋ฆฌํน์ ์ฌ์ฉ๋๋ฉฐ, ์๋ฌด ์ฌ ํ๋ฉด์์ ๊ฐ์ฅ ๊ฐ๊น์ด ์ง์ ์ ๋ฐํํฉ๋๋ค. -
FindLargestSurface()
: ์ฌ์ฉ ๊ฐ๋ฅํ ํ๋ฉด์ ์ด ๊ฐ์ฅ ํฐ ์ต์ปค๋ฅผ ๋ฐํํฉ๋๋ค. -
GenerateRandomPositionInRoom()
: ๋ณผ๋ฅจ ์ฌ ์ค๋ธ์ ํธ์ ํ๋ฉด์ ๋๋ฌด ๊ฐ๊น์ด ์ ์ ํผํ๋ฉด์ ๋ฐฉ์ ์์์ ์์น๋ฅผ ์์ฑํฉ๋๋ค. -
GenerateRandomPositionOnSurface()
: ๋ฐฉ์ ์๋ฌด ์ ํจํ ํ๋ฉด์ ์์น๋ฅผ ์์ฑํฉ๋๋ค.
-
Raycast()
: this ์ต์ปค์ ๋ํด ์ถฉ๋ ์๋ ๋ ์ด์บ์คํธ -
IsPositionInBoundary()
: ์์น๊ฐ plane์ 2D ๊ฒฝ๊ณ ๋ด์ ์๋์ง ํ์ธํฉ๋๋ค(์ค๋ธ์ ํธ์ plane์ด ์๋ ๊ฒฝ์ฐ false). -
GetDistanceToSurface()
: ํ ์ ์์ ์ด ์ต์ปค์ ํ๋ฉด๊น์ง์ ์ต๋จ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํฉ๋๋ค. -
GetClosestSurfacePosition()
: ์ต์ปค์ ํ๋ฉด์์ ์ฃผ์ด์ง ์ ๊ณผ ๊ฐ์ฅ ๊ฐ๊น์ด ์์น๋ฅผ ๊ตฌํฉ๋๋ค. -
GetAnchorCenter()
: ์์น๊ฐ ๋ณผ๋ฅจ์ ์๋จ์ ์๊ธฐ ๋๋ฌธ์ Scene API ๋ณผ๋ฅจ์์ transform.position์ ์ฌ์ฉํ๋ ๊ฒ์ ์ฌ๋ฐ๋ฅด์ง ์์ต๋๋ค. ์ด๊ฒ์ด ์ค์ฌ์ ๋ฐํํฉ๋๋ค. -
GetAnchorSize()
: ๋ณผ๋ฅจ์ ์ฐ์ ์ผ๋ก ์ต์ปค์ Vector3 ์ค์ผ์ผ์ ๊ฐ์ ธ์ต๋๋ค. ์ผ๋ถ ์ต์ปค์๋ 2D ๋ฐ 3D ๋ฐ์ด๋๊ฐ ๋ชจ๋ ์์ผ๋ฏ๋ก ํน์ ํ ์ค์ผ์ผ์ ์ํ๋ ๊ฒฝ์ฐ ์ฐธ๊ณ ํ์ธ์:-
PlaneRect.Value.size
: (Vector2๋ฅผ ๋ฐํํฉ๋๋ค: ๋จผ์ HasPlane์ด ์ฐธ์ธ์ง ํ์ธํ์ธ์.) -
VolumeBounds.Value.size
: (Vector3๋ฅผ ๋ฐํํฉ๋๋ค: ๋จผ์ HasVolume์ด ์ฐธ์ธ์ง ํ์ธํ์ธ์.)
-
-
AnchorLabels
: ์ด ์ต์ปค์ ์ด๋ค ์๋งจํฑ ๋ ์ด๋ธ์ด ์๋์ง ํ์ ํ๋ ค๋ฉด ์ด๊ฒ์ ์ฟผ๋ฆฌํ์ธ์. -
GetBoundsFaceCenters()
->Vector3
: ๊ฐ ํ๋ฉด์ ์ค์ฌ์ (ํ๋ฉด์ธ ๊ฒฝ์ฐ 1๊ฐ, ๋ณผ๋ฅจ์ธ ๊ฒฝ์ฐ 6๊ฐ)์ ๊ฐ์ ธ์ต๋๋ค. -
IsPositionInVolume(Vector3 worldPosition, bool testVerticalBounds, float distanceBuffer = 0.0f)
->bool
: ์์น๊ฐ ์ด ๋ณผ๋ฅจ ์์ ์๋์ง ํ ์คํธํฉ๋๋ค. -
HasLabel(string label)
->bool
: ์ต์ปค์ ํน์ ์๋งจํฑ ๋ ์ด๋ธ์ด ์๋์ง ํ์ธํฉ๋๋ค. -
GetLabelsAsEnum()
->SceneLabels
: ์ด ์ค๋ธ์ ํธ์ ๋ชจ๋ ์๋งจํฑ ๋ผ๋ฒจ์ ๊ฐ์ ธ์ต๋๋ค.
ํจํค์ง์์ ์ง์ ์คํฌ๋ฆฝํธ๋ฅผ ํ์ธํด ๋ณด๋ฉด ๊ณต์ ๋ฌธ์์ ์๋ ํจ์๋ ๋ณด์ด๋ ์ค์ ๋ก ์ฌ์ฉํ ๋๋ ํ์ธ์ ํ ๋ฒ ๋ ํ๊ธฐ
์๋ ์ ๊ธ์ ๊ฐ๋ฐ์๊ฐ ๊ฐ์ โโ์ธ๊ณ๋ฅผ ํ์ค ์ธ๊ณ์ ๋ ์ฝ๊ฒ ๋๊ธฐํํ ์ ์๊ฒ ํด์ฃผ๋ ์๋ก์ด ๊ธฐ๋ฅ์ ๋๋ค. ๊ฐ์ ์ฝํ ์ธ ๋ ์ต์ปค์ ๋ช ์์ ์ผ๋ก ์ฐ๊ฒฐํ ํ์ ์์ด ์ฅ๋ฉด์ ์์๋ก ๋ฐฐ์นํ ์ ์์ผ๋ฉฐ, MRUK๋ ํ๋ ์๋์ ์ฅ๋ฉด ์ต์ปค๋ฅผ ์ฌ์ฉํ์ฌ ์นด๋ฉ๋ผ๋ฅผ ์ค์ ์ธ๊ณ์ ๋๊ธฐํ๋๋๋ก ๊ด๋ฆฌํฉ๋๋ค. ์ด๋ ์นด๋ฉ๋ผ ์ฅ๋น์ ์ถ์ ๊ณต๊ฐ ๋ณํ์ ๋์ ๋์ง ์๊ฒ ์ฝ๊ฐ ์กฐ์ ํ์ฌ ๊ทผ์ฒ ์ฅ๋ฉด ์ต์ปค๊ฐ ์ฌ๋ฐ๋ฅธ ์์น์ ๋ํ๋๋๋ก ์ต์ ํํจ์ผ๋ก์จ ๋ฌ์ฑ๋ฉ๋๋ค.
์ด์ ์๋ ํ์ค ์ธ๊ณ์ ๊ฐ์ ์ธ๊ณ์ ๋๊ธฐํ๋ฅผ ์ ์งํ๊ธฐ ์ํด ๊ถ์ฅ๋๋ ๋ฐฉ๋ฒ์ ๋ชจ๋ ๊ฐ์ ์ฝํ ์ธ ์กฐ๊ฐ์ด ์ต์ปค์ ์ฐ๊ฒฐ๋๋๋ก ํ๋ ๊ฒ์ด์์ต๋๋ค. ์ด๋ ์ด๋ค ๊ฒ๋ ์ ์ ์ธ ๊ฒ์ผ๋ก ๊ฐ์ฃผ๋ ์ ์์ผ๋ฉฐ ๋งค ํ๋ ์๋ง๋ค ์กฐ๊ธ์ฉ ์์ง์ด๋ ๊ฒ์ ๋์ฒํด์ผ ํจ์ ์๋ฏธํฉ๋๋ค. ์ด๋ก ์ธํด ๋คํธ์ํน, ๋ฌผ๋ฆฌ, ๋ ๋๋ง ๋ฑ๊ณผ ๊ด๋ จ๋ ์ฌ๋ฌ ๊ฐ์ง ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ์๋ ์ ๊ธ์ด ํ์ฑํ๋๋ฉด ๊ฐ์ ์ฝํ ์ธ ๊ฐ ์ ์ ์ผ๋ก ์ ์ง๋ ์ ์์ต๋๋ค. ํ๋ ์ด์ด์ ๊ฐ๊น์ด ๊ณต๊ฐ์ ๋๊ธฐํ๋ ์ํ๋ก ์ ์ง๋์ง๋ง ๋ ๋ฉ๋ฆฌ ์๋ ๊ณต๊ฐ์ ์ค์ ์ธ๊ณ์ ์ฝ๊ฐ ๋ค๋ฅผ ์ ์๋ค๋ ๋จ์ ์ด ์์ต๋๋ค.
์๋ ์ ๊ธ์ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ด ์์ง๋ง MRUK ์ธ์คํด์ค์์ EnableWorldLock์ false๋ก ์ค์ ํ์ฌ ๋นํ์ฑํํ ์ ์์ต๋๋ค.
Core/Tools ํด๋์ ์๋ ์ด๋ฌํ ํ๋ฆฌํน์ ์ฅ๋ฉด์ ๋๋กญ๋๊ณ Inspector ์ธํฐํ์ด์ค์์ ์ ํ์ ์ผ๋ก ์์ ๋๋๋ก ์ค๊ณ๋์์ต๋๋ค. ์ด๋ฌํ ํ๋ฆฌํน ์ค ์ผ๋ถ๋ MRUKStart ์ปดํฌ๋ํธ๋ฅผ ๊ฐ์ง๊ณ ์๋ค๋ ๊ฒ์ ์ฐธ๊ณ ํ์ธ์. ์ด๋ ๋์ด์ ๋๊ธฐ ๋ฐฉ์์ผ๋ก ์ฌ์ฉํ๊ธฐ ์ฝ๋๋ก ํ๊ธฐ ์ํ ๊ฒ์
๋๋ค. ๊ทธ๋ฌ๋ ์ฝ๋์ ์ด๊ธฐํ ์ข
์์ฑ์ด ์๋ ๊ฒฝ์ฐ ์ด๊ธฐํ ํจ์๋ฅผ ํ๋์ ์ ๋ ฌ๋ ๋ชฉ๋ก(๊ฐ๊ธ์ MRUK ํ๋ฆฌํน์์)์ผ๋ก ์๋์ผ๋ก ๊ตฌ์ฑํด์ผ ํฉ๋๋ค. ์ด์ ๋ํ ์๋ ์์ ์ ๊ฒ์ ์ฝ๋์์ EffectMesh์ ๋ฉ์์ ์ก์ธ์คํ๋ ค๋ ๊ฒฝ์ฐ, EffectMesh.CreateMesh()
ํจ์๋ฅผ ๋จ์ผ Scene Loaded Event ๋ฆฌ์คํธ์์ ์์ ์ ์ฝ๋ ํจ์ ์์ ์๊ฒ ํ์ฌ ๋จผ์ ์คํ๋๋๋ก ๋ณด์ฅํด์ผ ํฉ๋๋ค. ๋จ๊ณ์ ์ผ๋ก ์ด๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- MRUK ๋ฐ EffectMesh ํ๋ฆฌํน์ ์ฅ๋ฉด์ผ๋ก ๋๋๊ทธํฉ๋๋ค. EffectMesh ํ๋ฆฌํน์์ MRUKStart ์ปดํฌ๋ํธ๋ฅผ ์ ๊ฑฐํฉ๋๋ค.
- MRUK ํ๋ฆฌํน์์ Scene Loaded Event ๋ชฉ๋ก์
EffectMesh.CreateMesh()
ํจ์๋ฅผ ์ถ๊ฐํฉ๋๋ค. - ๊ทธ ๋ฐ ๋ฆฌ์คํธ์ ์์ ๋ง์ ์ด๊ธฐํ ์ฝ๋๋ฅผ ์ถ๊ฐํ์ธ์.
MR ์ ํธ๋ฆฌํฐ ํคํธ๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ํ์ํฉ๋๋ค.
- Scene Loaded Event: ์ด ์ด๋ฒคํธ์ ๊ตฌ๋ ํด์ ์์ ์ ๊ฒ์ ์ฝ๋๋ฅผ ์ด๊ธฐํํ์ธ์ (โCreating a New Sceneโ์ ์ฐธ๊ณ ํ์ธ์).
-
Scene Settings
-
Data Source: Scene Anchor๋ฅผ ์์ฑํ๋ ๋ฐ ์ฌ์ฉ๋๋ ํธ๋์คํผ:
- Device: Space Setup์ ํตํด Quest ์ฅ์น์์ ์์ฑ๋ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํฉ๋๋ค(Link์๋ ์ฌ์ฉ).
-
Prefab:
Room Index
์Room Prefabs
์ค ํ๋์ ์ํด ์ง์ ๋ ์ธ๊ณต ๋ฐฉ์ ์ฌ์ฉํฉ๋๋ค. - DeviceWithPrefabFallback: ๊ธฐ๊ธฐ ๋ฐ์ดํฐ๊ฐ ์กด์ฌํ์ง ์๋ ๊ฒฝ์ฐ ํ๋ฆฌํน ๋ฃธ์ ์ฌ์ฉํฉ๋๋ค.
- Room Index: Room Prefabs ๋ฐฐ์ด์ ๋ํ ์ธ๋ฑ์ค(0 ์์)์ ๋๋ค. -1์ ๋๋ค์ ์๋ฏธํฉ๋๋ค.
- Room Prefabs: Scene ๋ฐ์ดํฐ๋ฅผ ์๋ฎฌ๋ ์ด์ ํ๊ธฐ ์ํ ์ธ๊ณต ๋ฐฉ์ ๋๋ค. ๊ธฐ์กด ๋ฐฉ ํ๋ฆฌํน์ ๊ตฌ์กฐ์ ๊ฒ์ ์ค๋ธ์ ํธ ์ด๋ฆ์ ์ฐธ์กฐํ์ฌ ์์ ๋ง์ ์๋ฎฌ๋ ์ด์ ๋ ๋ฐฉ์ ๋ง๋ค ์ ์์ต๋๋ค.
- Load Scene on Startup: ํ์ฑํ๋๋ฉด Scene์ด ์กด์ฌํ๋ ๊ฒฝ์ฐ ์๋์ผ๋ก ๋ก๋๋๊ณ SceneLoadedEvent๋ ๋ค๋ฅธ ์์ ์์ด ์คํ๋ฉ๋๋ค. false์ธ ๊ฒฝ์ฐ ์ฅ์น๊ฐ ์๋ ํ์์ค(์: ๋คํธ์ํฌ ์ฐ๊ฒฐ)์์ MRUK๋ฅผ ์ฌ์ฉํ๋ ๋ฑ Scene ์ด๊ธฐํ ๋์์ ์๋์ผ๋ก ์ ์ดํ ์ ์์ต๋๋ค.
- Seat Width: COUCH ๋ผ๋ฒจ์ด ์๋ Scene ์ค๋ธ์ ํธ์ ์ข์ ํฌ์ฆ๋ฅผ ๊ณ์ฐํ ๋ ์ฌ๋ ์ข์ ํฌ๊ธฐ์ ๋๋น/๊น์ด์ ๋๋ค.
-
Data Source: Scene Anchor๋ฅผ ์์ฑํ๋ ๋ฐ ์ฌ์ฉ๋๋ ํธ๋์คํผ:
์ด๊ฒ์ ์ง์ ํ Scene ์ค๋ธ์ ํธ์์ ํน์ ํจ๊ณผ๋ฅผ ์์ฑํฉ๋๋ค. ๊ฐ ์ฃ์ง์๋ ์ ํ์ ์ ฐ์ด๋ ์ฌ์ฉ์ ์ํด ๋ฒํ ์ค ์ปฌ๋ฌ๊ฐ ์ ์ฉ๋์ด ์์ต๋๋ค. ๋ฉ์ฌ๋ฅผ ๋ง๋ค ๋ ๋ค์ํ ๋งคํ ์ต์ ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- Mesh Material: ๊ฑด์ถ๋ ๋ฉ์์ ์ ์ฉํ ์ฌ์ง์ ๋๋ค. ๋ค์ค ๋จธ๋ฆฌํฐ์ผ ๋ฃธ์ ์ํ๋ ๊ฒฝ์ฐ ๋ค๋ฅธ ๋ฉ์ ๋จธํฐ๋ฆฌ์ผ์ ํจ๊ป ๋๋ค๋ฅธ EffectMesh ์ค๋ธ์ ํธ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
-
Border Size: ์ฃ์ง ๋ฐ์ด๋์ ๋ํ ์ ์ ์ ๋ง๋ค ๋, ์ด๋ ๊ฐ ์ฃ์ง์ "๋๊ป"์
๋๋ค. ์ฃ์ง ๋ฒํ
์ค๋ ๊ฒ์์์ผ๋ก ํ์๋๊ณ
BorderSize
๊ฑฐ๋ฆฌ์ ๋ฐ๋ผ ํฐ์์ผ๋ก ํฌ๋ฏธํด์ง๋๋ค. RoomBoxEffects.mat์ ์ฌ์ฉ๋ SceneMeshOutline.shader๋ฅผ ์กฐ์ฌํ๋ฉด ์ ฐ์ด๋์์ ์ด๊ฒ์ด ์ด๋ป๊ฒ ํ์ฉ๋๋์ง ํ์ธํ ์ ์์ต๋๋ค. -
Frames Offset: ๋ฒฝ์ ์๋ ์ฟผ๋(์: ๋ฌธ, ์ฐฝ๋ฌธ, ์ก์)์ ๊ฒฝ์ฐ ๋์ผํ ์ธก๋ฉด ํ๋ฉด์ ์กด์ฌํ๊ธฐ ๋๋ฌธ์ Z-flickering์ด ๋ฐ์ํ ์ ์์ต๋๋ค.
FramesOffset
์ ๋ฒฝ์์ ๊ทธ๊ฒ๋ค์ ์ด โโ๋ฏธํฐ ๊ฐ๋งํผ ์ฐ์ฅํฉ๋๋ค. - Add Colliders: true์ธ ๊ฒฝ์ฐ EffectMesh ํ๋ฆฌ๋ฏธํฐ๋ธ์ ๋ํด ์ถฉ๋์ด ๋ฐ์ํฉ๋๋ค.
- Cast Shadows: effect mesh ์ค๋ธ์ ํธ๊ฐ ๊ทธ๋ฆผ์๋ฅผ ํฌ์ฌํ ์ง ์ฌ๋ถ์ ๋๋ค.
- Hide Mesh: effect mesh๋ฅผ ์จ๊น๋๋ค.
-
Texture Coordinate Modes: ์์ฑ๋ ๋ฉ์ UV์ ํ
์ค์ฒ ์ขํ๊ฐ ์ ์ฉ๋๋ ๋ฐฉ์, ์ผ๋ฐ์ ์ผ๋ก ์ธ์ ํ WALL_FACE ๊ฐ์ฒด์๋ง ์ฌ์ฉ๋ฉ๋๋ค. U๋ ๋ฐฉ ๊ฒฝ๊ณ์ ์ํ ์น์๋ฅผ ๋ํ๋ด๊ณ V๋ ์์ง ์น์๋ฅผ ๋ํ๋
๋๋ค.
- METRIC: ์ขํ๋ 0์์ ์์ํ์ฌ ๋ฏธํฐ๋น 1๋จ์์ฉ ์ฆ๊ฐํฉ๋๋ค.
- METRIC_SEAMLESS: ์ขํ๋ 0์์ ์์ํ์ฌ ๋ฏธํฐ๋น 1๋จ์์ฉ ์ฆ๊ฐํ์ง๋ง ์ด์์๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ์ ์๋ก ๋๋๋๋ก ์กฐ์ ๋ฉ๋๋ค.
- MAINTAIN_ASPECT_RATIO: ์ข ํก๋น๊ฐ ์ ์ง๋๋๋ก ์ขํ๊ฐ ๋ค๋ฅธ ์น์์ ๋ง๊ฒ ์กฐ์ ๋ฉ๋๋ค.
- MAINTAIN_ASPECT_RATIO_SEAMLESS: ์ขํ๋ ์ข ํก๋น๊ฐ ์ ์ง๋๋๋ก ๋ค๋ฅธ ์น์์ ๋ง๊ฒ ์กฐ์ ๋์ง๋ง ์ด์์๋ฅผ ํผํ๊ธฐ ์ํด ์ ์๋ก ๋๋๋๋ก ์กฐ์ ๋ฉ๋๋ค.
- STRETCH: Coordinates range from 0 to 1.
- Labels: EffectMesh์ ํฌํจ๋ ์๋ฏธ ์ฒด๊ณ ๊ฐ์ฒด.