Search Unity

Unity MARS의 시뮬레이션 시스템을 사용하면 증강 현실(AR) 앱 개발 시 테스트 시간을 줄일 수 있습니다. Unity 에디터의 플레이 모드와 편집 모드에서 평면과 이미지 마커 검출 등 월드를 이해할 수 있는 기능을 바로 이용할 수 있습니다. 이번 블로그 포스팅에서는 시뮬레이션 시스템을 이용하여 상황 적응형 AR 경험을 빠른 속도로 반복 작업하는 방법을 다룹니다.

Unity MARS를 사용하면 실제 세계에 지능적으로 적응하는 복잡한 AR 경험을 쉽게 만들 수 있습니다. 유니티는 AR 개발자가 가장 많이 당면하는 3가지 문제인 대량의 데이터 확률 공간 저작(authoring), 실제 세계 시나리오를 고려한 반복과 테스트, 환경에 반응형으로 대응하는 앱 개발을 지원하기 위해 Unity MARS를 설계했습니다.

시뮬레이션을 사용하면 Unity 에디터 내의 AR 테스트를 통해 AR 기기와 실제 주변 환경이 어떻게 상호작용하는지 미리 볼 수 있어 반복 작업에 소요되는 시간이 크게 줄어듭니다. 또한 실제 세계를 모방하거나 따온 다양한 환경에서 테스트하여, 적응성과 접근성이 우수한 앱과 경험을 더 쉽게 만들 수 있습니다. Unity MARS의 프록시 및 조건 일치 시스템에 시뮬레이션을 결합하면 공간 컴퓨팅의 수준을 한 단계 높일 수 있습니다.

시스템 관점에서 시뮬레이션은 다음 두 가지 핵심 기능으로 나뉩니다. 이 둘은 개념적으로 별개이지만 함께 작용하여 반복 작업에 소요되는 시간을 크게 줄입니다.

  1. 편집 모드에서 별도 창에 씬 실행 미리 보기
  2. 에디터에서 환경 씬을 설정하고 해당 환경에 기반한 AR 데이터 제공하기

시뮬레이션의 기능이 AR 개발 과정을 어떻게 개선하는지 자세히 살펴보겠습니다.

실행 미리 보기

시뮬레이션을 사용하면 편집 모드에서 씬의 실행을 미리 볼 수 있어 빠른 속도로 반복 작업을 수행하고 실제 세계의 오브젝트와 대응되는 유연한 프록시가 실제로 어떻게 작동하는지 바로 이해할 수 있습니다. 실행 미리 보기 과정에서 시뮬레이션은 액티브 씬의 게임 오브젝트를 미리 보기 씬(콘텐츠 씬)에 복사하고, 선택한 콘텐츠 씬의 각 MonoBehaviour에 runInEditMode 플래그를 설정합니다. 시뮬레이션 씬 미리 보기와 호환되는 MonoBehaviour를 작성하는 방법에 대한 자세한 내용은 Unity MARS 기술 자료를 참조하시기 바랍니다.

시뮬레이션 뷰를 사용하면 열려 있는 Unity 씬과 별도 창에서 씬 실행 미리 보기를 사용할 수 있습니다. 시뮬레이션 뷰는 커스텀 씬 뷰로 환경 씬 위에 렌더링된 콘텐츠 씬을 3인칭 관점이나 카메라 관점으로 표시합니다. 환경 씬은 다음 섹션에서 더 자세히 다루도록 하겠습니다.

Unity MARS의 시뮬레이션 미리 보기는 기본적으로 인스턴트 모드(instant mode)에서 실행하도록 되어 있습니다. 이 모드에서는 전체 실행 과정이 단일 프레임에서 이루어지며, Unity MARS는 모든 데이터를 동시에 프록시에 대응하려고 시도합니다. 이는 현실감이 떨어지는 동작이지만 프록시와 프록시의 상태를 정의하면서 즉시 피드백을 받을 수 있다는 장점이 있습니다.

또한 시뮬레이션 미리 보기의 연속 모드(continuous mode)를 수동으로 시작하거나 중지할 수도 있습니다. 연속 모드는 플레이 모드와 유사하게 미리 보기가 중지될 때까지 콘텐츠 씬의 동작이 프레임별로 실행됩니다. 물리와 입력 등 일부 Unity 시스템은 플레이 모드에서만 작동하므로 연속 미리 보기에서는 앱 상호 작용과 동작이 제약을 받습니다. 연속 미리 보기는 앱이 시간에 따라 변화하는 데이터에 어떻게 반응하는지 확인하면서도 씬을 빠르게 수정하고자 하는 경우에 유용합니다.

 

시뮬레이션 시스템은 액티브 씬과 비교해 콘텐츠 씬의 상태를 추적하고 변경 사항을 실시간으로 반영합니다. 콘텐츠 씬에서 복사본을 실행 중인 오브젝트의 프로퍼티를 수정하는 경우 시뮬레이션은 해당 변경을 감지하여 동기화되지 않음(Out of Sync)으로 표시합니다. 이는 다시 동기화할 때까지는 최신 변경 사항이 미리 보기에 적용되지 않는다는 것을 의미합니다. 다시 동기화하는 과정에서 시뮬레이션은 콘텐츠 오브젝트를 삭제하고 액티브 씬에서 가져온 새 복사본으로 대체한 다음 새 복사본을 실행합니다.

시뮬레이션은 미리 보기를 자동으로 다시 동기화할 수 있으므로, 사용자는 프록시 반복 작업을 수행하고 변경 사항이 시뮬레이션 뷰에 반영되는 것을 즉시 확인할 수 있습니다. 이 기능은 기본 씬 뷰와 시뮬레이션 뷰에서 모두 호환되는 Unity MARS의 시각적 저작 기능과 함께 사용할 경우 특히 유용합니다. 환경 맥락에서 프록시 조건을 변경할 수 있으며, 조건 파라미터를 조정할 경우 결과물이 어떻게 달라지는지 즉시 확인할 수 있습니다. 복사하기에 연산 비용이 많이 드는 복잡한 대규모 씬의 경우 자동 동기화 옵션을 해제하고 필요할 때마다 직접 동기화하는 것이 좋습니다.

시뮬레이션이 AR 데이터를 제공하는 방법

시뮬레이션에서는 환경의 구성이 매우 중요합니다. 환경이란 시뮬레이션에서 실행 중인 앱 콘텐츠와 분리된 오브젝트의 모음입니다. 사실상 환경은 플레이 모드의 게임 뷰와 시뮬레이션 뷰에서 독립적인 물리와 조명이 적용되며, 앱 콘텐츠 아래에서 렌더링되는 씬을 말합니다. 이러한 분리로 인해 환경이 에디터에서 실제 세계의 역할을 하므로, AR 기기에서 실행하는 테스트와 최대한 근접한 수준으로 테스트를 수행할 수 있습니다.

데이터 제공자는 환경과 콘텐츠를 연결하는 중요한 기능을 합니다. 다른 종류의 AR 데이터 제공자와 마찬가지로 시뮬레이션 제공자는 앱 콘텐츠와 함께 존재하지만, 동시에 환경 정보에 접근할 수도 있습니다. 실행 미리 보기와 호환되려면 제공자는 플레이 모드와 편집 모드에서 모두 작동해야 합니다. 시뮬레이션 제공자가 환경 정보를 사용하여 데이터를 제공하는 방법에는 여러 가지가 있지만, 시뮬레이션이 지원하는 데이터 소스에는 크게 합성 데이터와 녹화된 데이터, 실시간 데이터라는 세 가지 유형이 있습니다.

데이터

합성 데이터는 실제 세계 이벤트로부터 만들어진 것이 아닌 인공적으로 만들어진 데이터입니다. 합성 데이터는 환경 씬에서 인스턴스화된 프리팹에서 비롯됩니다. Unity MARS는 방, 건물, 야외 공간을 포함한 기본 환경 프리팹을 제공하며, 사용자가 자체적인 시뮬레이션 환경을 제작할 수도 있습니다.

시뮬레이션에는 모션 트래킹, 지리적 위치, 평면 탐색, 포인트 클라우드 검출, 이미지 마커 검출, 광원 추정 등을 위한 합성 AR 기능이 있으며 더 많은 기능이 추가될 예정입니다. 대부분의 합성 데이터는 환경 프리팹 내의 합성 오브젝트에서 즉시 제공됩니다.

 

또한 시뮬레이션을 사용하면 시뮬레이션된 데이터 탐색 과정을 통해 모션 트래킹, 포인트 클라우드 검출, 평면 탐색을 위한 데이터를 만들 수 있습니다. 시뮬레이션된 데이터 탐색은 환경 프리팹(시뮬레이션된 ‘실제 세계’)의 콘텐츠와 시뮬레이션 콘텐츠 씬에 있는 메인 카메라(시뮬레이션된 ‘기기’)의 상태에 기반하여 데이터를 동적으로 제공합니다. 모바일 기기에서 데이터 탐색을 에뮬레이트하기 위해 카메라가 움직일 때에만 데이터를 검출하며, 카메라 절두체 내의 환경 요소만 사용하여 시뮬레이션된 월드에 대한 정보를 더합니다. 또한 모바일 기기에서와 마찬가지로, ‘덩어리’로 커지는 평면을 생성할 수 있으며 평면의 방향은 위, 아래, 왼쪽, 오른쪽, 앞, 뒤로 한정됩니다.

녹화된 데이터

시뮬레이션은 AR 세션 녹화본을 재생하는 방식으로도 데이터를 제공합니다. 녹화본은 출시 예정인 Unity MARS 컴패니언 앱이나 시뮬레이션을 사용하여 만들 수 있습니다. 또한 Unity MARS에서는 얼굴 추적 데이터 녹화본 샘플도 제공합니다.

녹화된 세션 데이터는 타임라인 에셋에 저장되어 있으며 데이터 유형별로 한 개의 트랙이 있습니다. 환경 내의 Playable Director가 세션 녹화본 타임라인을 재생하며, 앱 콘텐츠의 제공자 오브젝트는 데이터 트랙에 종속되어 실제 데이터를 제공합니다. 세션 녹화본 오브젝트에 대한 자세한 정보는 Unity MARS 기술 자료를 참조하시기 바랍니다.

세션 녹화본은 타임라인으로 표시되므로 다른 타임라인과 같은 방식으로 작업할 수 있습니다. 예를 들어 루프 동작을 수정하거나 데이터 트랙의 콘텐츠를 미세하게 조정할 수 있습니다.

편집 모드에서는 타임라인 창의 녹화본을 스크럽할 수도 있습니다. 단, 스크러빙 시 프록시 시스템과 다른 Unity MARS 동작은 시간을 거슬러 실행할 없다는 점에 주의해야 합니다. 따라서 시뮬레이션은 타임 스크러빙을 할 경우 실행 미리 보기를 다시 동기화하게 됩니다. 실행이 다시 시작되면 녹화 또한 새로 시작되며 새로운 시간에 맞춰 더 빠른 타임 스케일로 실행됩니다. 시간 재동기화와 호환되는 동작을 작성하는 방법에 대한 자세한 내용은 Unity MARS 기술 자료를 참조하시기 바랍니다.

실시간 데이터

실시간 데이터는 실제 세계에서 실시간으로 발생하는 이벤트에서 비롯됩니다. 시뮬레이션에는 웹캠 기기를 통해 실시간 카메라 이미지를 제공하는 기능이 있습니다. 이 경우 환경은 동영상 플레이어 오브젝트와 카메라 이미지 쿼드를 포함하며 앱 콘텐츠의 데이터 제공자는 원시 텍스처를 제공합니다. 원시 텍스처에서 얼굴 추적 데이터를 추출하려면 제3자 라이선스가 필요합니다.

Unity MARS의 레이어와 AR 개발

Unity MARS는 AR 파운데이션, 시뮬레이션, 커스텀 제공자의 데이터와 호환됩니다. 이 모든 데이터는 프록시 일치 시스템에서 사용하는 Unity MARS 데이터베이스를 포함하는 추상화 레이어와 일반 AR 기능 레이어를 통과합니다. 이렇게 하면 앱 콘텐츠와 데이터를 사용하는 시스템이 데이터를 제공하는 기기의 정보나 데이터가 시뮬레이션에서 비롯되는지 여부를 알 필요가 없습니다.

시뮬레이션은 AR 개발을 위한 강력한 범용 툴입니다. 올해 후반기부터 Unity MARS에서 프록시 시스템 없이도 시뮬레이션 시스템을 사용할 있습니다. 시뮬레이션이 자체 XR 보조 시스템으로 작동하므로, 에디터에서 편집 모드 미리 보기와 AR 기능을 사용하여 모든 XR 프로젝트에 유연성을 더하고 시뮬레이션 지원을 누릴 수 있습니다. 시뮬레이션을 포함한 모든 Unity MARS 기능은 AR 파운데이션과 호환됩니다.

시뮬레이션과 Unity MARS 자세히 알아보기

웹페이지를 참조하여 Unity MARS에 대해 자세히 알아보고 Unity 포럼에서 시뮬레이션 기능과 관련된 토론을 살펴보세요.

 

Unity MARS 사용해 보기

 

3 replies on “Unity MARS 시뮬레이션 시스템”

Your application content and the system using the data do not need to know what device the data is coming from or whether the data is coming from a Simulation?

Comments are closed.