Search Unity

유니티는 Apple의 ARKit3 개발 과정에 긴밀히 협업하여 ARKit3의 새 기능을 AR 파운데이션에 적용하였습니다. ARKit 3 최신 기능을 자세히 살펴보고, AR 파운데이션 2.2 Unity 2019.1 이상 버전에서 활용하는 방법을 함께 알아보겠습니다. Unity 2018.4 사용자는 AR 파운데이션 1.5에서 ARKit 3의 새로운 기능을 이용할 수 있습니다.

ARKit 3와 AR 파운데이션 2.2에서는 다음과 같은 기능이 추가되었습니다.

  • 모션 캡처
  • 인물 오클루전
  • 얼굴 추적 개선(여러 얼굴 추적 가능)
  • 협업 세션
  • 기타 개선 사항

렌더링한 콘텐츠와 사람이 더 현실적으로 상호 작용할 수 있게 만들어 주는 기능을 먼저 알아보겠습니다.

모션 캡처

ARKit 3의 주요 기능은 실제 공간에서 인물을 식별해 AR 경험을 개선하는 것입니다. ARKit 3에 새로 추가된 모션 캡처라는 흥미로운 기능을 통해 카메라 프레임에서 인식된 사람을 AR 파운데이션 앱에 2D(화면 공간)나 3D(실제 공간)로 형상화할 수 있습니다.

2D로 감지된 사람은 화면 공간 좌표에 17개의 관절을 가진 계층 구조로 형상화되며, 3D로 감지된 경우에는 월드 공간 트랜스폼에 93개의 관절을 가진 계층 구조로 형상화됩니다.

이렇듯 기존에 없던 기능을 구현하기 위해 AR 파운데이션에 새로운 인체 시스템의 보조 시스템을 추가했습니다.

이 기능은 A12 생체 공학 칩과 ANE(Apple 신경 엔진)가 탑재된 신형 iOS 기기에서만 지원됩니다. 런타임에 AR 파운데이션 앱에서 인체 시스템의 보조 시스템 기술자(descriptor)에게 쿼리를 보내 iOS 기기에서 포즈 추정을 지원하는지 확인할 수 있습니다.

인물 오클루전

AR 파운데이션 인체 시스템의 보조 시스템에서는 모션 캡처가 지원될 뿐만 아니라, 앱에 인물 스텐실과 심도 분할 이미지를 추가할 수도 있습니다. 스텐실 분할 이미지에서는 모든 픽셀을 분석해 픽셀이 사람을 구성하고 있는지를 식별합니다. 심도 분할 이미지에는 인물로 식별된 모든 픽셀과 기기 사이의 예상 거리 정보가 담겨 있습니다. 이 분할 이미지를 사용하면 렌더링된 3D 콘텐츠가 인물에게 가려지는 모습이 더 사실적으로 표현됩니다.

스텐실 이미지는 별개로 활용해 프레임에 있는 사람의 외곽선이나 색조 효과를 입히는 등 시각 효과를 만드는 데 사용할 수 있습니다.

인물 오클루전 기능은 A12 생체 공학 칩과 ANE가 탑재된 iOS 기기에서만 지원됩니다.

얼굴 추적 개선

ARKit 3에서는 iPhone XS, iPhone XR, iPhone XS Max, 최신 iPad Pro 등에 지원되는 얼굴 인식 기능을 확장했으며, 그중 주목할 만한 부분은 다음과 같습니다.

이제 얼굴 추적 세션이 진행되는 동안 전면 TrueDepth 카메라로 최대 3명의 다른 얼굴을 인식할 수 있습니다. AR 파운데이션 얼굴 보조 시스템으로 최대 몇 명의 얼굴을 동시에 추적할지 설정할 수도 있습니다.

얼굴 추적과 관련해 가장 크게 개선된 부분은 월드 추적을 진행하는 동안 TrueDepth 카메라를 사용해 얼굴 추적을 할 수 있게 된 점입니다. 이를 통해 후면 카메라를 통해 보여지는 환경에 전면 카메라로 포착한 캐릭터의 표정을 반영하여 렌더링할 수 있습니다. 새로운 얼굴 추적 모드는 A12 생체 공학 칩과 ANE가 탑재된 iOS 기기에서만 지원됩니다.

협업 세션

ARKit 2에서는 다른 사용자와 환경의 스냅샷을 공유하는 수단으로 ARWorldMap이 도입되었습니다. ARKit 3에서는 이 기능을 협업 세션으로 발전시켜 서로 연결된 다수의 ARKit 앱이 각자 인식한 환경에 대한 정보를 끊임없이 주고받을 수 있게 되었습니다. AR 파운데이션에서는 기기가 AR 레퍼런스 포인트를 실시간으로 공유할 수 있습니다. 기존 세션 시스템의 보조 시스템으로 구현된 ARKit는 API를 공개해 이러한 업데이트 내용을 생성하고 반영합니다.

AR 파운데이션 앱은 선호하는 네트워크 기술을 구현해 연결된 클라이언트마다 업데이트된 내용을 주고받아야 합니다. 유니티 에셋 스토어에서 커넥티드 게임에 사용할 수 있는 다양한 네트워크 솔루션을 확인해 보세요.

기타 개선 사항

ARKit 3에서는 기존 시스템이 다음과 같이 개선되었습니다.

이미지 추적과 오브젝트 감지 기능의 정확성과 성능이 향상되었습니다. ARKit 3에서는 최대 100개의 이미지를 동시에 감지할 수 있습니다. AR 파운데이션 프레임워크를 통해 이러한 개선 사항이 자동으로 적용됩니다.

또한 훨씬 견고해진 오브젝트 감지 기능으로 복잡한 환경에 있는 오브젝트를 더 정확하게 식별할 수 있습니다. 이제 ARKit로 추적한 환경 프로브마다 환경 텍스처를 나타내는 HDR 큐브맵을 제작할 수 있습니다. HDR 환경 텍스처는 AR 파운데이션 환경 프로브 보조 시스템에서 비활성화할 수 있습니다.

AR 파운데이션에 도입된 ARKit3 최신 기능

위에서 소개한 기능을 직접 사용해본 후 유니티 핸드헬드 AR 포럼을 통해 질문과 피드백을 공유해 주세요.

아래 패키지 기술 자료도 참고하시기 바랍니다.

AR 파운데이션을 통해 ARKit의 최신 기능을 전해드리게 되어 기쁘게 생각합니다. GitHub arfoundation-samples 저장소에 새로운 기능을 시연한 샘플을 업로드할 예정이니 기대해 주세요.

AR 파운데이션을 이용해 제작될 멋진 작품들을 기다리고 있겠습니다. 감사합니다.

 

13 replies on “AR 파운데이션에 적용된 ARKit 3 최신 기능 소개”

Let me know the Iphone model and IPad model having the A12 Bionic chip and the Apple Neural Engine (ANE) processor.

I have downladed arfoundation-samples repository on from GitHub. I am building the HumanBodyTracking3D scene. Build is successful. But 3D model is not spawning . I am using
Unity Version 2019.1..5f1
Xcode Version 11 beta 3
Iphone X mas

Please guide me how to do that.

What happened with ARKit2 (!!!) features? ARKit’s Eye Gaze is still not supported? Would be nice if that works first?

Undefined symbols for architecture arm64:
“_OBJC_CLASS_$_ARCollaborationData”, referenced from:
objc-class-ref in UnityARKit.a(ARKitXRSessionProvider.o)
“_OBJC_CLASS_$_ARSkeletonDefinition”, referenced from:
objc-class-ref in UnityARKit.a(ARKitXRHumanBodyProvider.o)
“_OBJC_CLASS_$_ARBodyAnchor”, referenced from:
objc-class-ref in UnityARKit.a(ARKitXRHumanBodyProvider.o)
“_OBJC_CLASS_$_ARBodyTrackingConfiguration”, referenced from:
objc-class-ref in UnityARKit.a(ARKitXRHumanBodyProvider.o)
“_OBJC_CLASS_$_ARMatteGenerator”, referenced from:
objc-class-ref in UnityARKit.a(ARKitXRHumanBodyProvider.o)
“___isPlatformVersionAtLeast”, referenced from:
_UnityARKit_Camera_AcquireConfigurations in UnityARKit.a(ARKitXRCameraProvider.o)
_UnityARKit_Camera_TryGetCurrentConfiguration in UnityARKit.a(ARKitXRCameraProvider.o)
_UnityARKit_Camera_TrySetCurrentConfiguration in UnityARKit.a(ARKitXRCameraProvider.o)
(anonymous namespace)::ARKitXRCameraProvider::ResetLocalConfigurationState() in UnityARKit.a(ARKitXRCameraProvider.o)
(anonymous namespace)::ARKitXRCameraProvider::HandleARKitEvent(UnityARKitEvent, void*, int) in UnityARKit.a(ARKitXRCameraProvider.o)
_UnityARKit_EnvironmentProbeProvider_Construct in UnityARKit.a(ARKitXREnvironmentProbeWrapper.o)
_UnityARKit_EnvironmentProbeProvider_Destruct in UnityARKit.a(ARKitXREnvironmentProbeWrapper.o)

ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Hi, when you say “only on iOS devices with the A12 Bionic chip and ANE” does this include the iPad Pro models with the A12X?

Any news on improvements to the post processing stack to match RealityKit level? (Motion blur, depth of field, grain and ray-traced soft shadows)?

Comments are closed.