성능에 대한 고려사항

매력적인 AR 사용자 환경을 만들려면 AR 지원 앱이 뛰어난 성능을 발휘하는 것이 중요합니다.

앱이 다음 조건을 충족하는지 확인합니다.

  • 터치 동작 및 기기 모션을 비롯한 사용자 입력에 반응하는 느낌을 줍니다.
  • 합리적이고 일관된 프레임 속도로 렌더링됩니다. 일반적으로 사용자는 가변적이고 높은 프레임 속도보다 일관되고 낮은 프레임 속도를 선호합니다.
  • 배터리 소모를 최소화하여 사용자가 하루 종일 기기를 사용하여 다른 작업에 사용하거나 AR 환경에 더 오래 참여할 수 있도록 합니다.
  • AR 생성 콘텐츠가 환경에 대해 안정적이고 주변 환경에 사실적으로 어우러지는 매력적인 AR 환경을 조성합니다.

성능 권장사항

더 매력적인 AR 환경을 만들려면 다음 권장사항을 염두에 두고 디자인하세요.

앵커를 사용하여 추적 성능 개선

세계 공간 좌표를 사용하여 3D 콘텐츠를 배치할 수 있지만 가능한 경우 항상 앵커를 사용하세요. ARCore는 기본 세계 공간 좌표가 변경되고 ARCore에서 세계 이해가 업데이트될 때마다 시간이 지남에 따라 이동할 수 있는 경우에도 앵커가 세계를 기준으로 안정적으로 표시되도록 합니다.

앵커에 연결되지 않은 가상 객체는 가끔 점프하는 것처럼 보이고 환경에 상대적으로 안정적이지 않은 것처럼 보입니다. 이렇게 하면 사용자에게 덜 매력적인 AR 환경을 제공할 수 있습니다.

기기별 성능 특성 고려

ARCore 지원 기기는 다양한 하드웨어 및 성능 특성을 다룹니다. 기기 성능은 다음과 같은 이유로 달라질 수 있습니다.

  • 기기 CPU/GPU, 클럭 속도
  • 사용 가능한 메모리 및 대역폭
  • 카메라/IMU 센서 품질
  • 기타 하드웨어 차이점
  • 운영체제 및 기기 드라이버

사용자가 사용할 기기를 대표하는 다양한 종류의 기기에서 앱을 테스트하는 것이 좋습니다.

사용하지 않을 때 CPU를 많이 사용하는 기능 사용 중지

특정 ARCore 기능은 사용 설정된 동안 CPU 사용률을 증가시킵니다. AR 환경에서 필요하지 않은 경우 이러한 기능을 사용 중지하는 것이 좋습니다. 이렇게 하면 앱에 추가 CPU 주기가 제공되고 열 성능과 배터리 수명이 개선됩니다.

현재 현재 세션에 Instant Placement 또는 Augmented Images가 사용 설정되면 ARCore CPU 사용률이 증가합니다. CPU 사용률 효율성을 높이려면 다음 가이드라인을 따르세요.

  • 전체 추적이 설정되면 Instant Placement가 사용 중지되어야 합니다. 이 기능은 세션 구성에서 사용 중지할 수 있습니다.

  • AR 환경에서 이 기능이 필요하지 않은 경우 Augmented Images를 사용 중지해야 합니다. 증강 이미지를 사용 중지하려면 세션 구성에서 null 또는 비어 있는 증강 이미지 데이터베이스를 구성합니다.

기기 발열 모니터링

개발 및 QA 테스트 중에 Android의 Thermal API를 사용하여 기기에서 앱의 성능을 모니터링하고 추적할 수 있습니다.

런타임 성능 특성이 다를 수 있는 앱의 개발 또는 qa 빌드가 아닌 앱의 프로덕션 빌드를 사용해야 합니다.

ARCore CPU 부족 식별

ARCore 세션이 활성화되면 앱은 제한된 모바일 CPU 및 GPU 리소스를 ARCore와 공유해야 합니다. CPU에 결합된 앱은 모션 추적에 필요한 CPU 리소스와 경쟁할 수 있습니다.

ARCore의 Simultaneous 현지화 및 매핑(SLAM)이 정상적으로 실행될 수 있는지 확인하려면 Android 기기 로그에 'VIOfrequency low' 메시지가 표시되지 않는지 확인합니다.

adb logcat | grep 'VIO frequency low'

ARCore CPU 부족 방지

ARCore 세션이 활성화되면 앱은 제한된 모바일 CPU 및 GPU 리소스 기기를 ARCore와 공유해야 합니다. CPU에 결합된 앱은 모션 추적에 필요한 CPU 리소스와 경쟁할 수 있습니다.

증강 이미지 데이터베이스 미리 만들기

가능하면 개발 시 증강 이미지 데이터베이스를 미리 만드세요. 런타임에 증강 이미지 데이터베이스를 만들거나 기존 데이터베이스에 이미지를 동적으로 추가해야 한다면 기본 UI 스레드가 차단되지 않도록 백그라운드 스레드에서 이미지를 추가해야 합니다.

요청된 카메라 스트림 수 제한

자바 공유 카메라를 사용할 때 앱에서 추가 CPU 또는 GPU 이미지 스트림을 요청할 수 있습니다.