Search Unity

MARS(Mixed and Augmented Reality Studio, 혼합 및 증강 현실 스튜디오) 프로젝트는 Unity의 새로운 툴셋으로, 크리에이터가 더 나은 공간 경험 및 게임을 제작하고 전 세계 모든 기기에 배포하도록 돕기 위해 특별히 제작되었습니다. MARS는 두 가지 핵심 요소로 구성됩니다. 하나는 Unity 확장 프로그램이며 다른 하나는 휴대전화 및 AR HMD(헤드 마운티드 디스플레이, Head Mounted Display)용 컴패니언 앱입니다.

현재 컴퓨터 기술은 큰 전환점을 맞이했습니다. 유비쿼터스 센서와 빠른 프로세서의 등장으로 마침내 1960년대부터 다양한 형태로 묘사되고 테스트되어 왔던 공간 컴퓨팅(spatial computing)의 세계로 나아가게 되었습니다. 이제는 세상에 관한 수많은 정보를 담고 있는 다양하고 작고 유연한 기기로 흥미로운 일을 할 수 있게 되었습니다.

Unity는 오랫동안 게임과 시뮬레이션을 위한 가상 세계를 만드는 데 사용되었으며, 플레이어가 소파에 앉은 채로 모니터를 비롯한 주변 기기를 사용하여 아바타가 대신 광대한 월드를 누비는 형태가 전부였습니다. 하지만 지금은 VR(Virtual Reality, 가상 현실) 기술을 통해 사용자가 직접 월드에 참여할 수 있게 되었습니다. 또한 MR(Mixed Reality, 혼합 현실) 기술은 디지털 오브젝트를 가상 세계에서 실제 세계로 가지고 나왔습니다.

많은 크리에이터들이 혼합 현실 경험을 제작하는 데 Unity의 유용성을 점차 깨닫고 있습니다. Unity를 사용하면 애니메이션, 물리, 내비게이션 등 가상 세계를 구축할 때와 동일한 시스템을 사용하여 실제 세계에서 상호 작용하는 애플리케이션을 테스트하고 제작할 수 있습니다.

Unity Labs의 Authoring Tools Group은 AR/MR 기술의 사용 사례를 분석하면서 애플리케이션이 실제 세계에서 제대로 작동해야 할 뿐 아니라 실제 세계에 대한 많은 정보를 다시 에디터로 가져와야 한다는 것을 깨닫게 되었습니다. 다시 말해, Unity가 실제 세계와 가상 세계를 구별할 수 있도록 하고 애플리케이션을 더 쉽게 디자인, 개발 및 테스트할 방법이 필요합니다.

전 세계 어느 기기에서나 더 나은 공간 경험 및 게임을 제작할 수 있는Unity의 새로운 툴셋, MARS 프로젝트를 사용해 보시기 바랍니다. MARS는 혼합 및 증강 현실 스튜디오를 의미하며 두 가지 핵심 요소로 구성됩니다. 하나는 Unity 확장 프로그램, 다른 하나는 휴대전화 및 AR HMD(헤드 마운티드 디스플레이, Head Mounted Display)용 컴패니언 앱입니다.

2018년 유나이트 베를린에서 MARS 프로젝트에 대해 발표한 바가 있습니다. 베타 출시를 앞두고 첫 발표 이후 제작해 왔던 툴셋 및 새로운 기능에 대해 알려드리고자 합니다.

MARS의 주요 기능 및 문제 해결 능력

시뮬레이션 뷰

 

시뮬레이션 뷰(Simulation View)는 MARS에서 가장 중요한 기능 중 하나입니다. MR/AR 애플리케이션의 한 가지 특징은 정의해야 하는 월드 공간이 Unity 월드 공간과 실제 세계 공간으로 총 두 개라는 점입니다. 시뮬레이션 뷰는 시뮬레이션된 실제 세계 공간에 오브젝트를 배치하고 이벤트를 테스트할 수 있도록 해줍니다. 에디터에 제공되는 새로운 전용 창을 통해 녹화된 동영상, 실시간 동영상, 3D 모델, 스캔 등 실제 혹은 시뮬레이션된 월드 데이터를 입력한 후 이를 기반으로 애플리케이션을 제작할 수 있습니다. 이 창에는 실제 세계에서 실행 중인 AR 애플리케이션을 이용하여 제품을 프로토타이핑, 테스트, 시각화할 수 있는 툴과 UI가 포함되어 있습니다.

시뮬레이션 뷰는 간단해 보이지만 이를 개발하는 과정에서 “시뮬레이션 차이(the simulation gap)”를 줄이기 위해 복잡한 시스템을 만들어야 했습니다. 시뮬레이션 차이란 컴퓨터가 디지털 오브젝트에 대해 가지고 있는 완벽한 정보와 부분적이고 불완전한 데이터만 감지할 수 있는 현재 기기와 센서의 현실적 한계 사이에 발생하는 차이를 의미합니다. Unity Labs는 시뮬레이션을 통해 표면 데이터를 얻거나 유니티의 강력한 쿼리 시스템을 이용하는 등 다양한 방식으로 이 문제를 해결하고 있습니다. 이에 관한 자세한 내용은 다음 블로그 포스팅에서 살펴볼 예정입니다.

시뮬레이션 기기 뷰

 

시뮬레이션 기기 뷰(Simulation Device View)는 시뮬레이션 뷰의 또 다른 기능입니다. Unity 에디터에서는 월드를 시뮬레이션할 뿐만 아니라 월드를 돌아다니는 기기도 시뮬레이션할 수 있습니다. 이를 통해 다른 사용자가 모바일 AR 기기를 통해 경험하는 것과 같은 방식으로 빠르게 애플리케이션을 테스트해볼 수 있습니다. 이렇게 하면 실제 물리 공간에서 테스트하지 않고도 AR 애플리케이션이 다양한 공간에서 제대로 작동하는지 확인할 수 있고, 제작 중 반복 작업 시간을 크게 줄일 수 있습니다. 키보드와 마우스를 사용하는 기기 혹은 컴패니언 앱을 실행 중인 기기처럼 카메라를 조작하여 실제 데이터를 에디터로 스트리밍할 수 있습니다.

실제 세계를 표현하는 새로운 방법

MARS에는 실제 세계의 오브젝트를 묘사, 추론, 시각화할 수 있는 일련의 새로운 구성이 포함되어 있습니다. 조건이 모여 오브젝트를 정의하고 오브젝트가 모여 시나리오를 정의합니다.

먼저 조건(Conditions)을 정의합니다. 조건은 오브젝트의 크기, GPS 위치, 모양 등 개별 특성을 묘사합니다.

다음으로 여러 조건이 모인 실제 세계 컨텍스트(Real World Context)를  정의합니다. 예를 들어 테이블을 표현하기 위해 표면 크기(예시: 표면이 최소 1x1m 이상), 얼라인먼트(예시: 표면이 수평), 높이(예시: 오브젝트가 지면에서 최소 1m 이상 떨어져 있음) 등의 조건을 사용할 수 있습니다.

이러한 조건은 사용자가 있는 공간의 배리에이션을 처리할 수 있을 정도로 유연하고 오차를 허용해야 합니다. 그래서 공간 조건은 주로 ‘이 표면의 크기는 1x1m에서 3x3m 사이’와 같이 최소 및 최대 범위로 정의됩니다. 이러한 공간 조건이 씬 기즈모를 그리면 에디터에서 범위를 시각화하고 미세 조정할 수 있습니다.

주로 오브젝트의 크기, 높이, 지리적 위치 및 기타 공간 프로퍼티에 대한 예시가 많지만 조건이 반드시 공간과 관련되어야 하는 건 아닙니다. 예를 들어 ‘이 콘텐츠는 맑은 날씨의 정오에만 발생한다.’와 같이 시간대 혹은 날씨에 대한 조건을 정의할 수 있습니다.

더 복잡하고 특수한 동작을 만들려면 이러한 실제 세계 컨텍스트를 그룹으로 묶어 더 큰 시나리오를 표현할 수 있습니다. 커피 테이블에 재생 컨트롤을, 책장에 동영상 라이브러리를, 방의 가장 큰 벽에 가상 스크린을 놓을 수 있는 AR 동영상 스트리밍 애플리케이션을 만든다고 가정합시다. 먼저 각각의 실제 세계 컨텍스트(테이블, 책장, 벽)를 정의한 후 이를 모두 방에 대한 묘사로 그룹화하면 됩니다.

물론, 현실에 대한 묘사를 할 때는 어느 단계에서든 묘사 중인 오브젝트가 사용자의 환경에 존재하지 않을 수도 있다는 것을 고려해야 합니다. 예를 들어, 앞선 예시에서 사용자의 환경에 책장이 없는 경우, 애플리케이션에 오류가 발생하기보다는 더 단순한 요구사항으로 적절하게 조정되도록 설정해야 합니다. 이런 기능은 폴백(Fallback) 이벤트를 이용하여 두 번째 시나리오를 정의한 다음, 사용자의 환경에 단일 표면만 있는 최악의 시나리오까지 정의할 수 있습니다. “이상적 → 허용 가능 → 최소”와 같은 구조를 마련함으로써 애플리케이션을 디자인할 때 염두에 둔 환경과 사용자가 신중하게 매핑한 환경이 대체로 비슷하여 컨텍스트에 맞는 상호 작용을 하는 최상의 시나리오와 예상치 못한 환경 또는 주변 환경을 제대로 스캔하지 않은 경우 등 최악의 시나리오 사이에서  균형을 이룰 수 있습니다.

요약하자면, 조건은 개별 프로퍼티를 나타내고, 조건의 조합은 실제 세계 컨텍스트를, 실제 세계 컨텍스트의 조합은 애플리케이션이 제공하는 전체 또는 일부 환경을 나타냅니다. 이러한 요소를 사용하여 “이상적 → 허용 가능 → 최소”로 상태를 표현할 수 있습니다.

또한 속성 조건(Trait Conditions) 또는 명명된 프로퍼티를 사용하여 기반 기술 스택과 일치하는 구체적인 특성을 정의할 수 있습니다. 사용하는 기기 또는 소프트웨어에 따라, 방에 있는 주요 오브젝트, 3D 마커, 등 모두 이름을 지정할 수 있습니다. AR 파운데이션에서 지원되는 프로퍼티 유형뿐만 아니라 앞으로의 월드 데이터 기술에도 적용할 수 있도록 이를 최대한 유연하게 만들었습니다. 현재는 “바닥”, “벽”, “천장”과 같은 특성을 사용하고 있지만, 향후 더 많은 오브젝트(“고양이”, “개”)와 프로퍼티(“나무”, “잔디”)를 인식할 수 있게 될 예정입니다. 이 분야와 관련하여 매달 업데이트가 진행되고 있으며, 유니티는 모든 부분을 최대한 지원할 수 있도록 노력하고 있습니다.

찾고 있는 대상과 오브젝트의 원하는 위치를 정의하고 나면 오브젝트를 더 세분화된 방식으로 배치하고 싶을 수 있습니다. 이를 위해 랜드마크 시스템을 만들었습니다. 이 시스템을 사용하면 실제 세계 컨텍스트에 맞추어 오브젝트가 있어야 할 위치와 방향을 더 정밀하게 지정할 수 있습니다.

고급 데이터 조작

리즈닝 API(Reasoning API)는 고급 기능 중 하나로, 사용자가 작성하는 스크립트를 MARS 월드 전체와 연동하여 데이터를 하나씩 처리하는 것이 아니라 한번에 전체 데이터를 처리할 수 있게 해 줍니다. 이 기능을 통해 고급 추론뿐 아니라 데이터의 결합, 생성 및 변형이 가능합니다.

전형적인 예는 공간을 스캔한 후 가장 낮은 곳에 위치한 가장 큰 평면이 바닥이라는 것을 추론하는 것입니다. HoloLens와 같은 일부 기기는 기본적으로 바닥을 제공하지만, 다른 센서 및 기술 스택은 이를 제공하지 않습니다. 리즈닝 API를 사용하면 입력을 다양하게 조정 및 결합하여 실제 세계를 더 잘 이해하고 흥미로운 이벤트를 구현할 수 있습니다. 가장 중요한 점은 이 코드는 애플리케이션 로직에 구애받지 않습니다.

컴패니언 앱

Unity 에디터에 실제 세계를 옮길 수 있게 된 후 이제는 실제 세계 데이터와 원활하게 연동되는 휴대용 기기를 활용하기 위해 AR 기기용 MARS 컴패니언 앱을 제작했습니다. 첫 번째는 휴대전화용으로, 애플리케이션을 Unity 클라우드에 있는 프로젝트와 연결한 후 3D 스티커를 배치하는 것처럼 쉽게 에셋을 배치할 수 있습니다. 조건을 만들고 동영상 및 월드 데이터를 기록하고 이 모든 것을 바로 에디터로 익스포트할 수 있습니다. 이는 실제 세계와 가상 세계 사이를 보완할 또 다른 단계에 해당됩니다.

향후 계획

알파 테스트

MARS는 현재 비공개 알파 상태이지만, 공간 애플리케이션의 한계를 줄이고자 하는 분들과 협력할 기회를 찾고 있습니다. MARS를 꼼꼼하게 테스트하고 가장 유용한 툴과 기능에 대한 피드백을 제공하여 유니티 로드맵의 우선 순위를 정할 수 있도록 도와줄 분을 모집합니다. 지금까지 개발한 프로젝트를 기반으로 적절한 툴셋을 만들어 크리에이터가 멋진 경험을 제작할 수 있도록 노력하겠습니다.

감사의 말

MARS 프로젝트는 Microsoft, Magic Leap, Google, Facebook등 유니티의 하드웨어 및 소프트웨어 파트너뿐만 아니라 위치 기반 가상 경험에서 자동차 시각화, 공간 시뮬레이터, 건축 사전 시각화, 혁신적인 모바일 AR 게임 등에 이르기까지 기술 혁신의 한계를 무너뜨리는 수많은 회사로부터 영감을 받아 진행되고 있습니다. 지금까지 도움을 주신 모든 파트너사에 감사의 말씀을 전하며, 특히 첫 지리 공간 통합을 함께 구축한 Mapbox에 특별히 감사의 말씀 전합니다.

또한 유니티는 자체 혼합 현실 연구 그룹(Mixed Reality Research Group)에서 사전 작업을 기초로 확대해 나가고 있으며, XR 플랫폼 팀과 긴밀하게 협력하고 있습니다. 팀의 AR 파운데이션(AR Foundation)과 XR 인터랙션 툴킷(XR Interaction Toolkit)은 MARS 구축을 위한 견고한 기술 기반을 제공하고 있습니다.

MARS에 대한 더 자세한 정보 또는 향후 릴리스에 대한 소식을 확인하시려면 프로젝트에 가입한 후 유니티의 새 MARS 프로젝트 웹페이지를 확인하시기 바랍니다.

9 코멘트

코멘트 구독

코멘트를 달 수 없습니다.

  1. Great job guys with the MARS project! Really promising! Looking forward to test the beta version when it comes out!
    I do have couple of questions though.
    1- Would I be able to connect real-time data from a kinect sensor (cloud data) to automatically generate the floor/walls and 3D objects like a chair or a box at the right place within the 3D world to match the real life 3D cloud? All in real-time?
    2- Do we have any estimate for when the beta will be released?

    Amazing work!

    Cheers,

    1. 1. Not exactly. You can take in 3D meshes, point clouds, or models and put them in the simulation view, and tag them with semantic data. You can also bring in a live camera feed. But we don’t have Kinect support directly streaming to the sim view at this time.
      2. No public date for the beta, but contact us directly at mars@unity3d.com if you’d like access to the private alpha.

  2. I get “Invalid length for field value” in the form for both “Have you made an AR app before” and “What would be the #1 feature”. Can’t sign up (or have to put the text somewhere else).

    1. Additionally, I’m not allowed to have URLs in the field where you ask about projects. You make it really hard to fill in this form :)

    2. So sorry about that! Please email us directly at mars@unity3d.com. :)

  3. Hi Unity team!
    MARS sounds cool, but there is a fundamental question about its concept that is not clear to me after reading this post. Will MARS focus on
    a) AR apps that work in any user environment, so e.g. in your living room as well as in mine;
    or
    b) Persistent AR experiences that work exclusively at one specific real world location (including solutions for re-localisation / area description files / 3D scanning and mapping the environment);
    or
    c) both?

    If persistent AR is on your agenda, we would love to help you with testing and improving MARS. Please contact us via https://www.ar-action.com/contact/

    1. Jono Forbes (MARS UX)

      10월 3, 2019 11:41 오후

      Hi Matt! Yes, MARS is focused on _both_ adapting your app to lay itself out in any environment, and also persistent location-specific authoring – we’ll dig more into that in future posts. They aren’t separate workflows, because even if you do have an accurate scan of a location that you intend your app to relocalize in, there will still be unknown dynamic elements (people, movable chairs, cars, weather, time…) that your app can respond to. So we try not to think of it as either procedural or static, but often some combination of both.
      I’ll ping you on that contact form :)

  4. project MARS is cool! anyway, where is DOTS sample project?

    1. This is not a feature request forum, please use the forums for feedback and feature requests rather than using the blog posts and effectively spamming + attempting to derail discussion.