사례 연구 - 현실의 구멍 속 살펴보기
사람들이 혼합 현실에 대해 생각하고 Microsoft HoloLens 무엇을 할 수 있는지에 대해 생각할 때, 그들은 일반적으로 "내 방에 어떤 물체를 추가할 수 있습니까?" 또는 "내 공간 위에 무엇을 레이어할 수 있습니까?" 와 같은 질문을 고수합니다. 동일한 기술을 사용하여 주변의 실제 물리적 개체를 조사하거나 통해 고려할 수 있는 다른 영역(본질적으로 마술 트릭)을 강조하고 싶습니다.
기술
2015년 E3의 Halo 5 경험에서 UNSC 무한대 격납고를 볼 수 있을 만큼 운이 좋았다면, RoboRaid의 벽을 뚫고 들어오거나, 파편에서 벽의 잠금을 해제한 외계인과 싸웠다면, 제가 말하는 것을 보았습니다. 상상력에 따라 이 시각적 트릭을 사용하여 건식 벽체에 임시 구멍을 뚫거나 느슨한 마루판 아래에 세계를 숨길 수 있습니다.
RoboRaid는 벽 뒤에 3차원 파이프와 기타 구조를 추가하여 침략자가 돌파할 때 생성된 구멍을 통해서만 볼 수 있습니다.
HoloLens에서 이러한 고유한 홀로그램 중 하나를 사용하여 앱은 실제 창을 통해 현실이 제시하는 것과 같은 방식으로 벽 뒤 또는 바닥을 통해 콘텐츠의 환상을 제공할 수 있습니다. 왼쪽으로 이동하면 오른쪽에 있는 모든 것을 볼 수 있습니다. 더 가까워지면 모든 것을 좀 더 볼 수 있습니다. 주요 차이점은 실제 구멍이 당신을 통과 할 수 있다는 것입니다, 당신의 바닥은 완고하게 그 마법의 홀로그램 콘텐츠를 통해 올라갈 수 없습니다 동안. (백로그에 작업을 추가하겠습니다.)
배후 상황
이 트릭은 두 가지 효과의 조합입니다. 첫째, 홀로그램 콘텐츠는 "공간 앵커"를 사용하여 세계에 고정됩니다. 앵커를 사용하여 해당 콘텐츠를 "월드 잠금"으로 만들면 이동하거나 기본 공간 매핑 시스템이 회의실의 3D 모델을 업데이트하는 경우에도 보고 있는 내용이 그 근처의 물리적 개체에서 시각적으로 표류하지 않습니다.
둘째, 홀로그램 콘텐츠는 시각적으로 매우 구체적인 공간으로 제한되므로 현실의 구멍을 통해서만 볼 수 있습니다. 그 폐색은 트릭을 판매하는 논리적 구멍, 창 또는 출입구를 통해 보고 필요로하는 데 필요합니다. 대부분의 시야를 차단하는 것이 없다면, 비밀 쥬라기 차원에 대한 공간의 균열은 제대로 배치되지 않은 공룡처럼 보일 수 있습니다.
실제 스크린샷이 아니라 MR Basics 101 의 비밀 지하가 HoloLens에서 어떻게 보이는지 보여주는 그림입니다. 검은색 인클로저는 표시되지 않지만 가상 구멍을 통해 콘텐츠를 볼 수 있습니다. (실제 장치를 살펴보면 눈이 더 먼 곳에 집중하기 때문에 바닥이 더 사라지는 것처럼 보입니다.)
세계 잠금 홀로그램 콘텐츠
Unity에서 홀로그램 콘텐츠가 월드 잠금 상태를 유지하는 것은 WorldAnchor 구성 요소를 추가하는 것만큼 쉽습니다.
myObject.AddComponent<WorldAnchor>();
WorldAnchor 구성 요소는 GameObject의 위치와 회전을 지속적으로 조정하여(따라서 계층 구조의 해당 개체 아래에 있는 다른 모든 항목) 가까운 물리적 개체에 비해 안정적으로 유지합니다. 콘텐츠를 작성할 때 개체의 루트 피벗이 이 가상 구멍의 중심이 되는 방식으로 만듭니다. (개체의 피벗이 벽 깊숙이 있는 경우 위치와 회전의 약간의 조정이 훨씬 더 두드러지고 구멍이 매우 안정적으로 보이지 않을 수 있습니다.)
가상 구멍을 제외한 모든 항목 차단
벽에 숨겨진 것에 대한 보기를 선택적으로 차단하는 다양한 방법이 있습니다. 가장 간단한 것은 HoloLens가 추가 디스플레이를 사용한다는 사실을 활용합니다. 즉, 완전히 검은색 개체가 보이지 않는 것처럼 보입니다. 특별한 셰이더 또는 재질 트릭을 수행하지 않고 Unity에서 이 작업을 수행할 수 있습니다. 검은색 재질을 만들고 콘텐츠에 상자가 있는 개체에 할당하기만 하면 됩니다. 3D 모델링을 수행하지 않는 경우 몇 가지 기본 Quad 개체를 사용하고 약간 겹치면 됩니다. 이 접근 방식에는 여러 가지 단점이 있지만 작업을 수행하는 가장 빠른 방법이며, 나중에 리팩터링할 수 있다고 의심되더라도 충실도가 낮은 개념 증명을 사용하는 것이 좋습니다.
위의 "블랙 박스"접근 방식의 한 가지 주요 단점은 잘 촬영하지 않는다는 것입니다. HoloLens를 표시하면 효과가 완벽해 보일 수 있지만, 찍는 스크린샷에는 벽이나 바닥에 남아 있는 것이 아니라 커다란 검은색 개체가 표시됩니다. 그 이유는 실제 하드웨어와 스크린샷이 복합 홀로그램과 현실을 다르게 하기 때문입니다. 의 몇 가지 가짜 수학에 잠시 우회하자 ...
가짜 수학 경고! 이러한 숫자와 수식은 어떤 종류의 정확한 메트릭도 아닌 점을 설명하기 위한 것입니다.
HoloLens를 통해 표시되는 내용:
( Reality * darkening_amount ) + Holograms
스크린샷 및 비디오에 표시되는 내용:
( Reality * ( 1 - hologram_alpha ) ) + Holograms * hologram_alpha
영어로: HoloLens를 통해 보는 것은 어두운 현실(예: 선글라스를 통해)과 앱이 보여주고 싶은 홀로그램의 간단한 조합입니다. 그러나 스크린샷을 찍으면 카메라의 이미지가 픽셀당 투명도 값에 따라 앱의 홀로그램과 혼합됩니다.
이를 해결하는 한 가지 방법은 깊이 버퍼에만 쓰도록 "블랙 박스" 재질을 변경하고 다른 모든 불투명 재질을 정렬하는 것입니다. 예를 들어 GitHub의 MixedRealityToolkit에서 WindowOcclusion.shader 파일을 검사. 관련 줄은 다음과 같이 복사됩니다.
"RenderType" = "Opaque"
"Queue" = "Geometry"
ColorMask 0
("오프셋 50, 100" 줄은 관련 없는 문제를 처리하는 것이므로 이를 제외하는 것이 합리적일 수 있습니다.)
이러한 보이지 않는 폐색 자료를 구현하면 앱이 디스플레이 및 혼합 현실 스크린샷에서 올바른 상자를 그릴 수 있습니다. 보너스 포인트의 경우 보이지 않는 픽셀을 더 적게 그리기 위해 영리한 작업을 수행하여 해당 상자의 성능을 더욱 향상시킬 수 있지만 실제로 잡초에 들어갈 수 있으며 일반적으로 필요하지 않습니다.
다음은 폐색 상자의 외부 부분을 제외하고 Unity가 그리는 MR Basics 101 의 비밀 지하 세계입니다. 지하 세계의 피벗은 상자 중앙에 있으므로 실제 바닥과 비교하여 구멍을 최대한 안정적으로 유지할 수 있습니다.
직접 수행
HoloLens가 있고 직접 효과를 시험해 보고 싶으신가요? 할 수 있는 가장 쉬운 작업(코딩 필요 없음)은 무료 3D 뷰어 앱을 설치한 다음 GitHub에서 제공한 다운로드.fbx 파일을 로드하여 회의실에서 화분 모델을 보는 것입니다. HoloLens에 로드하면 직장에서 환상을 볼 수 있습니다. 모델 앞에 있는 경우 작은 구멍으로만 볼 수 있습니다. 다른 모든 항목은 보이지 않습니다. 다른 쪽에서 모델을 보면 완전히 사라집니다. 3D 뷰어의 이동, 회전 및 배율 컨트롤을 사용하여 아이디어를 생성하기 위해 생각할 수 있는 수직 표면에 가상 구멍을 배치합니다.
Unity 편집기에서 이 모델을 보면 화분 주위에 커다란 블랙박스가 표시됩니다. HoloLens에서는 상자가 사라져 마법의 창 효과를 발휘합니다.
이 기술을 사용하는 앱을 빌드하려면 Mixed Reality 자습서에서 MR Basics 101 자습서를 검사. 7장은 숨겨진 지하 세계를 드러내는 바닥의 폭발로 끝납니다(위 그림 참조). 자습서가 지루해야 한다고 말한 사람은 누구인가요?
다음은 이 아이디어를 다음으로 수행할 수 있는 몇 가지 아이디어입니다.
- 가상 구멍 내의 콘텐츠를 대화형으로 만드는 방법을 생각해 보세요. 사용자가 자신의 벽을 넘어 약간의 영향을 미칠 수 있도록하면이 트릭이 제공 할 수있는 경이로움의 감각을 향상시킬 수 있습니다.
- 개체를 통해 알려진 영역으로 다시 보는 방법을 생각해 보세요. 예를 들어, 어떻게 커피 테이블에 홀로그램 구멍을 넣고 그 아래 바닥을 볼 수 있습니까?
작성자 정보
Eric Rehmeyer 수석 소프트웨어 엔지니어 @Microsoft |