중요
ARM64를 사용하여 Microsoft HoloLens 2용으로 빌드된 애플리케이션에 영향을 주는 알려진 컴파일러 문제가 있습니다. 이 문제는 Visual Studio 2019를 버전 16.8 이상으로 업데이트하여 해결되었습니다. Visual Studio를 업데이트할 수 없는 경우 패키지를 가져와 com.microsoft.mixedreality.toolkit.tools
서 해결 방법을 적용하세요.
2.5.4의 새로운 기능
UPM을 사용할 때 Oculus Integration을 사용하여 버그 수정
UPM을 사용하는 경우 OculusXRSDKDeviceManagerProfile은 시작할 때 항상 프리팹을 없음으로 설정합니다. 이 릴리스는 시작 시 작업 프리팹 집합을 가리키도록 디바이스 관리자 구성합니다.
UPM을 통해 OpenXR 관련 문제 해결
기본적으로 OpenXR 공급자가 link.xml 추가되지 않아 Unity의 패키지 관리자를 통해 OpenXR 및 MRTK를 사용할 때 새 프로젝트가 디바이스에서 실행되지 않는 문제를 해결합니다. 업그레이드된 기존 프로젝트에는 이 항목이 수동으로 추가되어야 합니다.
2.5.3의 새로운 기능
2.5.2에 도입된 Oculus를 사용하여 회귀 수정
2.5.2에서는 Oculus SDK를 통합할 때 빌드 문제가 발생했습니다. 이 릴리스는 해당 문제를 되돌려 놓습니다.
2.5.2의 새로운 기능
OpenXR에 대한 지원 추가
Unity의 OpenXR 미리 보기 패키지 및 Microsoft의 Mixed Reality OpenXR 패키지에 대한 초기 지원이 추가되었습니다. 자세한 내용은 MRTK/XRSDK 시작 페이지, Unity의 포럼 게시물 또는 Microsoft 설명서를 참조하세요.
중요
Unity의 OpenXR은 Unity 2020.3 이상에서만 지원됩니다. 또한 x64, ARM 및 ARM64 빌드만 지원합니다.
경계 시각화 오류 수정
이제 바닥 또는 벽과 같은 경계 시각화가 올바르게 구성되고 경계 프로필에 따라 런타임에 표시됩니다.
Unity용 MSBuild 지원
Unity용 MSBuild에 대한 지원은 Unity의 새 패키지 지침에 맞게 2.5.2 릴리스부터 제거되었습니다.
2.5.1의 새로운 기능
패키지 종속성 오류 수정됨
이 릴리스는 잘못된 패키지 간 파일 종속성을 수정합니다(예: 표준 자산의 파일이 더 이상 Foundation의 파일을 잘못 참조하지 않음). 버전 2.5.1은 Text Mesh Pro에 대한 명시적 종속성도 추가합니다.
자산/MRTK/셰이더에 복사된 표준 자산 패키지 셰이더
표준 자산 패키지가 UPM을 통해 설치되면 셰이더는 더 이상 변경할 수 없도록 Assets/MRTK/Shaders 폴더에 복사됩니다. 이렇게 하면 다음에 프로젝트를 로드할 때 레거시 동작을 되돌리는 URP(유니버설 렌더링 파이프라인)에 대해 업데이트된 셰이더 문제가 해결됩니다.
손에 달라붙는 텔레포트 커서가 고정됨
이 릴리스는 텔레포트 대상 커서가 손 시각적 개체에 충실할 수 있는 문제를 해결합니다.
2.5.0의 새로운 기능
UPM(Unity 패키지 관리자) 지원
이제 Unity 패키지 관리자를 사용하여 Mixed Reality 도구 키트를 관리할 수 있습니다.
참고
MRTK UPM 패키지를 가져오는 데 필요한 몇 가지 수동 단계가 있습니다. 자세한 내용은 Mixed Reality 도구 키트 및 Unity 패키지 관리자를 검토하세요.
Oculus Quest XR SDK 지원
MRTK는 이제 네이티브 XR SDK 파이프라인을 사용하여 Oculus Quest 헤드셋 및 컨트롤러 실행을 지원합니다. 손 추적은 MRTK-Quest에 대한 Eric Provencher의 작업 덕분에 Oculus 통합 Unity 패키지에서도 지원됩니다!
새 파이프라인을 사용하여 Oculus 퀘스트에 디바이스를 배포하는 방법에 대한 지침은 Oculus 퀘스트 설정 가이드를 참조하세요.
스크롤 개체 컬렉션
MRTK UX 구성 요소는 실험적 기능에서 업그레이드되었으며, 충돌체가 연결되지 않은 개체에 대한 지원을 추가하여 다양한 크기의 3D 콘텐츠를 보다 자유롭게 레이아웃할 수 있습니다. 콘텐츠 마스킹을 사용하지 않도록 설정하는 새로운 옵션도 추가되어 프로토타입을 더 쉽게 만들 수 있습니다.
자세한 내용은 스크롤 개체 컬렉션을 참조하세요.
텔레포트 포인터 애니메이션, 처리 및 소리 개선
이제 텔레포트 포인터가 향상된 애니메이션 및 오디오 피드백을 제공합니다. 또한 원격 포트 포인터의 처리를 개선하여 근처 표면을 가리키는 것에서 멀리 떨어진 표면으로 전환할 때 더 부드럽게 처리합니다.
입력 시뮬레이션 치트 시트
이제 HandInteractionExamples 장면에 입력 시뮬레이션에 대한 도움말 페이지를 표시하는 구성 가능한 바로 가기가 있습니다.
마우스를 사용하여 입력 시뮬레이션 시선 응시
이제 사용자는 마우스를 사용하여 시선 추적을 시뮬레이션할 수 있습니다. Eye Simulation Mode
입력 시뮬레이션 프로필의 필드를 보고 마우스로 설정합니다. 이렇게 하면 이전 Simulate Eye Position
필드가 바뀝니다.
편집기 재생 모드의 입력 시뮬레이션 모션 컨트롤러
이제 사용자는 편집기 재생 모드에서 손처럼 모션 컨트롤러를 시뮬레이션할 수 있습니다. 트리거, 잡기 및 메뉴 단추는 현재 지원됩니다.
원뿔형 잡기 포인터
이제 구가 아닌 그랩 지점에서 원뿔을 사용하여 주변 개체를 쿼리하도록 잡아 포인터를 구성할 수 있습니다. 이는 원뿔을 사용하여 주변 개체를 쿼리하는 기본 HoloLens 2 인터페이스의 동작과 더 유사합니다. DefaultHoloLens2InputSystemProfile도 새 ConicalGrabPointer
를 사용하도록 조정되었습니다.
TestUtilities 패키지
이제 MRTK가 엔드투엔드 테스트를 만드는 데 사용하는 PlayMode 및 TestMode 테스트 인프라를 포함하는 패키지(Microsoft.MixedReality.Toolkit.Unity.TestUtilities.2.5.0.unitypackage)가 있습니다. 이 인프라는 MRTK 팀 자체에 매우 편리했으며, 소비자가 이를 사용하여 자체 프로젝트에 테스트 적용 범위를 추가하게 되어 기쁩니다.
다음 코드에서는 테스트 핸드를 만들고, 특정 위치에 표시하고, 이동한 다음, 손가락 모으기 및 여는 방법을 보여줍니다.
TestHand leftHand = new TestHand(Handedness.Left);
yield return leftHand.Show(new Vector3(-0.1f, -0.1f, 0.5f));
yield return leftHand.SetGesture(ArticulatedHandPose.GestureId.Pinch);
yield return leftHand.Move(new Vector3(0.2f, 0.2f, 0));
yield return leftHand.SetGesture(ArticulatedHandPose.GestureId.Open);
이러한 TestUtilities를 사용하여 테스트를 작성하는 방법에 대한 지침은 테스트 작성에 대한 이 섹션을 참조하세요.
이 인프라를 사용하는 기존 테스트의 예는 MRTK의 PlayModeTests를 참조하세요.
Leap Motion 4.5.1 Unity 모듈 지원
Leap Motion Unity 모듈 버전 4.5.1에 대한 지원이 추가되었으며 4.4.0 자산에 대한 지원이 제거되었습니다. 현재 지원되는 Leap Motion Unity 모듈 버전은 4.5.0 및 4.5.1입니다.
또한 초기 Leap Motion 통합을 위한 추가 단계가 있습니다. 자세한 내용은 MRTK에서 도약 동작 손 추적을 구성하는 방법을 참조하세요.
공간 인식 메시 관찰자는 재질의 사용자 지정을 더 잘 처리합니다.
이 릴리스에서는 Windows Mixed Reality Spatial Mesh Observer
및 Generic XR SDK Spatial Mesh Observer
구성 요소가 시각적 재질 처리를 개선했습니다. 이제 메시가 관찰자에 의해 업데이트될 때 재질이 유지됩니다. 여기서 이전에 프로필에 구성된 대로 기본 VisibleMaterial로 다시 설정되었습니다.
이를 통해 개발자는 메시 재질을 변경하고 변경 내용을 예기치 않게 덮어쓰지 않을 수 있습니다.
MixedRealityToolkit.Generated 폴더에서 만든 Link.xml
Unity 패키지 관리자 MRTK가 도입되면 MRTK는 이제 파일이 없는 경우 폴더에 Assets/MixedRealityToolkit.Generated
파일을 씁니다link.xml
. 이 파일(및 link.xml.meta
)을 소스 제어에 추가하는 것이 좋습니다. Link.xml Unity 링커의 관리 코드 제거 기능에 영향을 미치는 데 사용됩니다.
MRTK link.xml 파일에 대한 자세한 내용은 MRTK 및 관리 코드 제거 문서에서 찾을 수 있습니다.
Unity 2019.3 이상: MRTK 구성 대화 상자가 더 이상 레거시 XR 지원을 사용하도록 설정하지 않음
Unity의 XR 플랫폼을 사용할 때 잠재적 충돌을 방지하기 위해 MRTK 구성 대화 상자에서 레거시 XR 지원을 사용하도록 설정하는 옵션이 제거되었습니다. 원하는 경우 Unity 2019에서프로젝트 설정>편집>플레이어>XR 설정>가상 현실 지원을 사용하여 레거시 XR 지원을 사용하도록 설정할 수 있습니다.
InitializeOnLoad 오버헤드 감소
InitializeOnLoad 처리기에서 실행되는 작업의 양을 줄이기 위해 작업을 수행해 왔으며, 이로 인해 내부 루프 개발 속도가 향상됩니다. InitializeOnLoad 처리기는 스크립트가 컴파일될 때마다, 재생 모드로 전환하기 전, 편집기 시작 시 실행됩니다. 이러한 처리기는 이제 훨씬 적은 수의 경우에 실행되어 일반적인 Unity 응답성이 향상되었습니다.
어떤 경우에는 다음과 같은 절충이 있었습니다.
- 추가 통합 단계는 Leap Motion Hand Tracking Configuration 을 참조하세요.
- ARFoundation을 사용하는 사용자를 위해 이제 시작 단계에 추가 수동 단계가 있습니다. 새 단계는 ARFoundation 을 참조하세요.
- HoloLens 2 레거시 XR 파이프라인에서 홀로그램 원격을 사용하는 사용자를 위해 이제 수동으로 수행할 단계가 있습니다.
경계 컨트롤이 졸업됨
경계 컨트롤은 실험에서 벗어났으며 다양한 새로운 기능과 수많은 버그 수정이 함께 제공됩니다. 이 업데이트의 주요 항목 목록은 다음과 같습니다.
- 속성이 구성으로 분할되어 경계 컨트롤을 쉽게 설정할 수 있습니다.
- 구성은 스크립트 가능 개체를 통해 공유할 수 있습니다.
- 모든 속성/스크립트 가능 속성이 런타임 구성 가능
- 경계 컨트롤 리그는 더 이상 속성 변경 시 다시 만들어지지 않습니다.
- 번역 핸들 지원
- 제약 조건 관리자를 통한 전체 제약 조건 지원
- elastics 시스템 통합(실험적)
이제 이전 경계 상자가 더 이상 사용되지 않으며 경계 상자를 사용하는 기존 게임 개체는 마이그레이션 도구 또는 경계 상자 검사기를사용하여 업그레이드할 수 있습니다.
제약 조건 관리자 구성 요소
이제 새 제약 조건 관리자 구성 요소를 통해 경계 컨트롤과 개체 조작자 모두에서 제약 조건을 사용할 수 있습니다. 두 구성 요소 모두 기본값별로 제약 조건 관리자를 만들고 연결된 제약 조건을 자동으로 처리합니다.
또한 자동 동작 제약 조건 관리자에는 사용자가 처리해야 하는 제약 조건을 결정할 수 있는 수동 모드가 함께 제공됩니다. 이러한 이유로 속성 검사기에서 제약 조건을 표시하는 방식이 약간 변경되었습니다.

이제 구성 요소에 적용되는 제약 조건이 제약 조건 관리자 구성 요소의 목록으로 표시되는 반면 제약 조건 관리자( 경계 컨트롤 또는 개체 조작자)를 사용하는 구성 요소는 이제 선택한 제약 조건 관리자 및 모드(자동 또는 수동)를 표시합니다. 자세한 내용은 문서의 제약 조건 관리자 섹션을 참조하세요.
HoloLens 2 단추 재질 업데이트
MRC에서 검은색을 제거하도록 HoloLens 2 단추의 앞면 케이지 재질이 업데이트되었습니다.
설명 패널 업데이트, 이동 가능한 예제 장면
설명 패널이 업데이트되었습니다. (SceneDescriptionPanelRev.prefab) 새 디자인은 사용자가 전체 장면을 조정/이동할 수 있는 잡기 가능한 위쪽 막대를 제공합니다.
공간 메시 시각화 - 에어 탭 시 펄스
HoloLens 2 셸 동작과 일치하도록 공간 메시에 대한 펄스 셰이더 예제가 업데이트되었습니다.
탄력적 시스템(실험적)
MRTK는 이제 4차원 쿼터니언 스프링, 3차원 볼륨 스프링 및 간단한 선형 스프링 시스템에 대한 바인딩을 제공하는 다양한 확장 가능하고 유연한 서브클래스를 포함하는 탄력적 시뮬레이션 시스템을 제공합니다.
현재 Elastics Manager 를 지원하는 다음 MRTK 구성 요소는 탄력적 기능을 활용할 수 있습니다.


조이스틱(실험적)
큰 대상 개체를 제어할 수 있는 조이스틱 인터페이스의 예입니다.
색 선택기(실험적)
런타임에 개체의 재질 색을 쉽게 변경할 수 있는 실험적 컨트롤입니다.
주요 변경 내용
어셈블리 정의 파일 변경 내용
일부 asmdef 파일이 변경되었으며 이제 Unity 2018.4.13f1 이상만 지원합니다. 컴파일 오류는 이전 버전의 Unity에서 MRTK 2.5로 업데이트할 때 표시됩니다. 이 문제는 프로젝트 창에서 로 Assets\MRTK\Providers\XRSDK\Microsoft.MixedReality.Toolkit.Providers.XRSDK.asmdef
이동하고 검사기에서 누락된 참조를 제거하여 해결할 수 있습니다. 및 Assets\MRTK\Providers\WindowsMixedReality\XRSDK\Microsoft.MixedReality.Toolkit.Providers.XRSDK.WMR.asmdef
를 사용하여 Assets\MRTK\Providers\Oculus\XRSDK\Microsoft.MixedReality.Toolkit.Providers.XRSDK.Oculus.asmdef
해당 단계를 반복합니다. Unity 2019로 업그레이드할 때 이러한 세 개의 asmdef 파일을 원래(즉, 수정되지 않은) 파일로 바꿔 변경 내용을 되돌리기 합니다.
IMixedRealityPointerMediator
이 인터페이스는 새 함수를 사용하도록 업데이트되었습니다.
void SetPointerPreferences(IPointerPreferences pointerPreferences);
DefaultPointerMediator를 서브클래스하지 않는 사용자 지정 포인터 중재자가 있는 경우 이 새 함수를 구현해야 합니다. 추가된 이유에 대한 자세한 배경은 이 문제를 참조하세요. 이는 IPointerPreferences를 사용하는 생성자의 존재에 따라 암시적으로 수행되지 않고 포인터 기본 설정이 중재자에게 명시적으로 전달되도록 하기 위해 추가되었습니다.
Rest/Device Portal API
UseSSL
정적 속성이 에서 Rest
DevicePortal
로 이동되었습니다.
이전에 이 작업을 수행했다면...
Rest.UseSSL = true
지금 이 작업을 수행합니다...
DevicePortal.UseSSL = true
Link.xml
애플리케이션이 이전에 MRTK link.xml
의 NuGet 배포를 사용하는 경우 파일이 Foundation 패키지에서 제거되었습니다. 코드 보존 규칙을 복원하려면 Unity에서 프로젝트를 한 번 열면 에서 Assets/MixedRealityToolkit.Generated
기본 link.xml
파일을 만듭니다. 이 파일(및 link.xml.meta
)을 소스 제어에 추가하는 것이 좋습니다.
변환 제약 조건 변경
TargetTransform 속성은 제약 조건 시스템에서 사용되지 않았기 때문에 사용되지 않는 것으로 표시되었습니다. 제약 조건 논리는 Initialize 및 Apply 메서드에 전달된 변환을 기반으로 합니다. 이 속성에 의존하는 파생된 사용자 제약 조건은 동일한 동작을 달성하기 위해 제약 조건 구성 요소의 변환을 저장하여 구현에서 TargetTransform을 캐시할 수 있습니다.
저장된 초기 월드 포즈 worldPoseOnManipulationStart
데이터 형식이 MixedRealityPose에서 MixedRealityTransform으로 변경되었습니다. 여기에는 조작된 개체의 로컬 배율 값이 포함됩니다. 이 변경으로 더 이상 초기 크기 조정 값을 별도로 캐시할 필요가 없습니다.
IMixedRealityDictationSystem의 새 속성
IMixedRealityDictationSystem 인터페이스에 새 속성 AudioClip
이 추가되었습니다. 속성을 AudioClip
사용 하면 현재 받아쓰기 세션과 연결 된 오디오 클립에 액세스할 수 있습니다. 사용자는 인터페이스를 구현하는 스크립트에서 속성을 구현해야 합니다.
서비스 외관 거절
서비스 외관은 2.5에서 거절되고 있습니다. 이 기능은 원래 MRTK 프로필의 구성을 더 쉽게 만들기 위해 추가되었습니다(각 MRTK의 서비스를 나타내는 가짜 장면 내 GameObjects를 만들어). 장기적으로, 우리는 가짜 게임 내 개체를 만들고 동기화를 유지하려고하지 않으려고합니다 (데이터 동기화 및 "진실의 근원"문제는 스케일링하고 바로 잡기가 매우 어렵기 때문에).
2.5에서 서비스 외관 처리기는 프로젝트 업그레이드가 원활하게 진행되도록 유지됩니다. 프로젝트에 존재하는 모든 외관은 서비스 외관 처리기에 의해 삭제되어 2.5에서 열린 장면이 자동으로 수정되도록 합니다.
서비스 외관 기능과 연결된 나머지 코드는 향후 릴리스에서 제거될 예정입니다.
입력 시뮬레이션 서비스에 모션 컨트롤러 추가
모션 컨트롤러 시뮬레이션은 이제 기존 손 시뮬레이션과 함께 편집기 재생 모드에서 제공됩니다. 이 변경을 사용하도록 설정하기 위해 많은 현재 함수/필드/속성이 이제 가장 중요한 변경 내용과 MixedRealityInputSimulationProfile.cs
함께 InputSimulationService.cs
사용되지 않는 것으로 표시됩니다. 관련 코드의 논리와 동작은 대부분 동일하게 유지되며 대부분의 사용되지 않는 함수 등은 그대로 유지됩니다. 는 "hand"에 대한 참조를 보다 일반적인 용어 "controller"(예: 에서 DefaultHandSimulationMode
로)로 바꾸는 것과 DefaultControllerSimulationMode
관련이 있습니다. 새 이름을 가져오는 것 외에도 특정 새 함수의 반환 형식이 이름/동작 변경 내용과 일치하도록 업데이트됩니다(예: GetControllerDevice
원본 GetHandDevice
에 따라 이제 대신 반환 BaseController
SimulatedHand
됨).
IInputSimulationService
이제 새 속성 MotionControllerDataLeft
및 가 MotionControllerDataRight
있습니다. MixedRealityInputSimulationProfile
이제 특정 모션 컨트롤러 단추의 키보드 매핑에 대한 새 필드가 포함됩니다.
알려진 문제
CameraCache는 종료할 때 새 카메라를 만들 수 있습니다.
일부 상황에서(예: Unity 편집기에서 LeapMotion 공급자를 사용하는 경우) CameraCache가 종료 시 MainCamera를 다시 만들 수 있습니다. 자세한 내용은 이 문제를 참조하세요.
Unity 패키지 관리자를 통해 예제를 가져올 때 FileNotFoundException
프로젝트 경로의 길이에 따라 Unity 패키지 관리자를 통해 예제를 가져오면 Unity 콘솔에서 FileNotFoundException 메시지가 생성될 수 있습니다. 그 원인은 "누락된" 파일의 경로가 MAX_PATH(256자)보다 길기 때문이다. resolve 프로젝트 경로의 길이를 줄입니다.
공간 변환기가 지정되지 않았습니다. 애플리케이션은 공간 사운드를 지원하지 않습니다.
오디오 공간 변환기가 구성되지 않은 경우 "공간 변환기를 지정하지 않았습니다." 경고가 표시됩니다. Unity에는 이러한 패키지에 공간 변환기가 포함되어 있으므로 XR 패키지가 설치되지 않은 경우 이 문제가 발생할 수 있습니다.
resolve 다음을 확인하세요.
창>패키지 관리자 에 하나 이상의 XR 패키지가 설치되어 있습니다.
Mixed Reality 도구 키트>유틸리티>Unity 프로젝트 구성 및 오디오 공간 변환기 선택
NullReferenceException: 개체 참조가 개체의 instance 설정되지 않음(SceneTransitionService.Initialize)
일부 경우 를 열 EyeTrackingDemo-00-RootScene
면 SceneTransitionService 클래스의 Initialize 메서드에서 NullReferenceException이 발생할 수 있습니다.
이 오류는 장면 전환 서비스의 구성 프로필이 설정되지 않아서 발생합니다. resolve 다음 단계를 사용하세요.
- 계층 구조의
MixedRealityToolkit
개체로 이동합니다. - 검사기 창에서
Extensions
- 확장되지 않으면 을 확장합니다.
Scene Transition Service
- 값을
Configuration Profile
MRTKExamplesHubSceneTransitionServiceProfile로 설정합니다.
Oculus Quest
현재 독립 실행형 플랫폼을 대상으로 할 때 와 함께 Oculus XR 플러그 인을 사용하는 것으로 알려진 문제가 있습니다. 업데이트에 대한 Oculus 버그 추적기/포럼/릴리스 정보를 확인합니다.
버그는 다음 3가지 오류 집합으로 표시됩니다.
UnityUI 및 TextMeshPro
드롭다운 및 굵은 글꼴 문자 간격의 기본 글꼴 크기가 변경된 최신 버전의 TextMeshPro(1.5.0 이상 또는 2.1.1 이상)에 대해 알려진 문제가 있습니다.
이 작업은 이전 버전의 TextMeshPro로 다운그레이드하여 해결할 수 있습니다. 자세한 내용은 문제 #8556 을 참조하세요.