AR Glasses/Hololens2

[MRTK 기능 공부] Solver

minquu 2021. 9. 28. 09:58
반응형

MRTK 에서 솔버란 ?

 

https://docs.microsoft.com/ko-kr/windows/mixed-reality/mrtk-unity/features/ux-building-blocks/solvers/solver?view=mrtkunity-2021-05 

 

솔버 개요 - Mixed Reality Toolkit

MRTK의 솔버 개요

docs.microsoft.com

 

 

 

미리 정의된 알고리즘의 따라 개체의 위치 및 방향을 계산하는 방법을 용이하게 한 구성요소임

 

MRTK Solver 예제에는 5개 정도의 예제가 존재

 

--------

 

DirectionallndicatorSolver

방향성을 가지고 있는 오브젝트를 만들기.

 

현재 컵을 타겟으로 하고 있기 떄문에 컵으로 방향이 향하고있음 

 

 

두 가지 CS 가 달려있음

 

핵심은 DirectionlIndicator 스크립터임 (Foundation 툴킷에 있음) 

 

 

DirectionalTarget 은 쫒아가게 하는 타겟의 vector3 (transfrom) 값을 넣어주는 것

 

헤드 마운트 앞으로 따라게가 SolverHandler가 헤드로 되어있음 

 

-----

FollowSolver

특정 물체가 쫒아가게 하고, Follow 스크립터 (SDK 내장)로 통해서 쫒아가는

로테이션,거리, 방향을 정해줄 수가 있음 

 

핵심은 2가지 

SolverHandler를 이용해서 헤드에 고정 시켜주고,

Follow를 통해서 로테이션, 거리, 방향을 정해준다. 

 

----

 

Sovler Type 과  Tracking Type

 

Solver 타입은 오브젝트가 붙는 타입을 바꾸는것 같고

Tracking 타입은 오브젝트가 따라다니는 타입을 바꾸는 것 같음

 

솔버 타입은 3가지가 있고

 

 

Radial 스크립터 

 

Orbital 스크립터

 

Surface 기준으로 붙는 Surface Magnetism 스크립터가 있다. 

 

트래킹 타입은 SolverHandler에 타겟 타입에 따라 바꿔준다.

 

 

-------

 

Spatial Awareness 와 Surface Magnetism 를 이용하여서

 

실제 공간에 오브젝트 붙게 하기 

(실제 MR를 끼면 더 정확하게 보이겠지만, 지금은 그냥 설명서 벽에 붙이겠음)

 

 

 

 

붙는 오브젝트의 3가지 스크립터가 붙어있음 

 

먼저 SolverHandler는 Controller Ray로 되어있어서 손을 키면 나오는 레이에 트래킹이 되어있다. 

 

SurfaceMagnetism 는 물체에 붙게 해주는 스크립터 임

 

Tap To Place 는 물체를 배치시켜주는 스크립터

 

-------

TapToPlace

 

TapToPlace는 말그대로 탭하고 플레이스 시키는 것이다. 

 

https://docs.microsoft.com/en-us/windows/mixed-reality/mrtk-unity/features/ux-building-blocks/solvers/tap-to-place?view=mrtkunity-2021-05 

 

Tap to place - Mixed Reality Toolkit

Documentation of TapToPlace MRTK

docs.microsoft.com

 

샘플씬에는 크게 3가지로 TapToPlace 하는 방법이 있다. 

 

첫 번쨰는 Tracked를 Controller Ray로 하고 TapTo 하는 것 

 

 

SolverHandler가  Controller Ray 라서 손을 키면 나오는 콘트롤레이에 물체가 따라가고 ->

탭을 하면 Place한다.

 

두 번쨰는  타겟은 Head를 따라오게하고, 

Surface Normal에 위치시키게 하는것, 

 

첫 번쨰는 그냥 Tap To Palce를 하게 되지만, 이것의 가장 큰 차이점은 면의 노멀값으로 붙게하는 것 

 

먼저 SolverHandler 는 Head로 위치하게한다.

 

TapToPlace에서 UseDefaultSurfaceNormal Offset에 체크

Keep Orientation Vertical에 체크를 해주면 surface 에 붙게된다. 

 

 

세 번쨰는 두번쨰와 거의 동일하나 

 

TapToPlace에서 KeepOrientationVertical 체크를 풀어줬기 떄문에

물체에 붙을때 붙는 물체 따라서 로테이션값이 바뀐다.

 

 

반응형