Skip to content

Introduce ARKit 6 #39

@TaekH

Description

@TaekH

Introduce ARKit 6

AR 이란?

  • 가상현실의 한 분야로 실제 환경에 가상 사물이나 정보를 합성하여 원래 환경과 같도록 보이게 하는 기법

image

  • 예시 포켓몬고

ARKit 이란?

  • iOS 기기를 위한 애플의 AR 개발 플랫폼

ARKit 6에서 달라진 점

  • 4K Video
  • Camera enhancement
  • Plane anchors
  • Motion captures
  • Location Anchors

4K Video

Video 기존 적용 방식

비닝을 통해 2 * 2 픽셀 영역을 가져오고
imageimage

이 2 * 2 픽셀의 평균값을 내서 단일 픽셀로 다시 쓴다.
이렇게 되면 기존 픽셀 영역이 절반으로 줄어들게 되고 그만큼 메모리 처리능력이 늘어난다.
또한 센서 노이즈의 영향을 줄여준다.

ARKit 6 Video 변경점

비닝을 건너뛰고 직접 기존 픽셀 영역 만큼을 전부 적용한다.
image
이렇게 되면 풀 4K 고해상도 이미지를 활용할 수 있다.

image

    기존 HD 해상도                      ARKit 6의 4K 해상도

  • 4K 해상도를 코드에서 사용하는 방법은
if let hiResCaptureVideoFormat = ARWorldTrackingConfiguration.recommendedVideoFormatForHighResolutionFrameCapturing {
config.videoFormat = hiResCaptureVideoFormat
}
session.run(config)

recommendedVideoFormatForHighResolutionFrameCapturing 에서 4K Video 형식을 반환하고
만약 4K를 지원하지않으면 nil 을 반환한다.

4K Video는 아이폰 11부터 아이패드 M1칩 이상이 탑재된 기기에서 지원한다.

Camera enhancement

  • 카메라를 더 잘 제어하기 위한 개선사항

고해상도 배경 사진 API

  • ARKit 이 활성화되는 중에도 기본 카메라 해상도로 촬영이 가능하다.
  • 또한 기존 촬영했던 이미지의 위치로 이동할 수 있도록 지원하며 이동 후에는 어느 촬영 장소인지 까지 표시해준다.

image

새로운 HDR 모드 활성화

더 넓은 범위의 색상을 캡쳐해 디스플레이에 매핑한다.
image
    HDR 모드 비활성화                      HDR 모드 활성화
오른쪽의 구름 사진을 보면 왼쪽보다 더 잘 보존되고 선명한 것을 볼 수 있다.

EXIF ​​태그를 읽는 방법

  • EXIF 태그란
    image이런식으로 사진에 대한 정보라고 보면 쉬울 것 같다

작성 방법은

open class ARFrame : NSObject, NSCopying {
...
/**
  A dictionary of EXIF metadata for the captured image.
*/
@available(iOS 16.0, *)
var exifData: [String: Any] { get }

작성내용으로는 화이트 밸런스, 노출, 기타설정 정보가 포함된다.

Plane anchors

ARKit 6 에서는 평면 앵커와 평면 기하가 완전히 분리되었다.
아래는 움직이기전의 평면 앵커 이미지이다.
image

이 상태에서 이동을 하면 새 부분을 고려해 평면의 새로운 방향이 반영되고 이때 앵커의 움직임 여부가 ARKit 6 에서 달라진다.

image

        iOS 15의 ARKit 5                  iOS 16의 ARKit 6

Motion captures

2D 뼈대와 3D 관절이 업데이트 되었다.
2D 에서는 귀를 추적하게 되었고 포즈 감지 기능을 대폭 상향했다.
3D 에서는 뼈대가 개선되었고 사람의 일부가 가려지거나 카메라에 가까이 다가가도 안정적으로 추적한다.
image
        2D                      3D

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions