[flutter] 플러터(Flutter)를 이용한 AR 앱 개발하기

플러터(Flutter)는 Google에 의해 개발된 오픈 소스 UI 소프트웨어 개발 키트로, 모바일 애플리케이션, 웹 애플리케이션, 데스크톱 애플리케이션을 개발하기 위해 사용됩니다. AR(증강 현실)는 현실 세계에 가상 요소를 추가하여 증강된 현실을 제공하는 기술로, 이번에는 플러터를 이용하여 AR 앱을 개발하는 방법에 대해 알아봅시다.

1. ARCore와 ARKit 플러그인 설치

ARCore와 ARKit은 Google과 Apple 각각이 제공하는 AR 플랫폼입니다. 플러터에서 AR을 사용하기 위해 arcore_flutter_pluginarkit_plugin을 사용하여 각 플랫폼에 대한 플러그인을 설치해야 합니다.

dependencies:
  arcore_flutter_plugin: ^latest_version
  arkit_plugin: ^latest_version

2. AR 화면 생성

AR 화면을 만들기 위해 ARCoreViewARKitView 위젯을 사용합니다. 이 위젯들은 각각 Android와 iOS 플랫폼에 대한 AR 환경을 설정합니다.

import 'package:arcore_flutter_plugin/arcore_flutter_plugin.dart';
import 'package:arkit_plugin/arkit_plugin.dart';

// ARCoreView
ARCoreView(
  onARViewCreated: _onARViewCreated,
  enableTapRecognizer: true,
),

// ARKitView
ARKitView(
  onARKitViewCreated: _onARKitViewCreated,
  enableTapRecognizer: true,
),

3. AR 오브젝트 추가

이제 AR 화면에 가상 오브젝트를 추가해봅시다. 이를 위해 AR 오브젝트를 로드하고 뿌릴 위치를 설정해야 합니다.

// ARCore
void _onARViewCreated(ARCoreController controller) {
  controller.onPlaneTap = _handleOnPlaneTap;
}

void _handleOnPlaneTap(List<ARPlane> planes, List<ARPoint> points) {
  final point = points.first;
  controller.addArCoreNodeWithAnchor(
    ARCoreReferenceNode(
      object3DFileName: 'andy.sfb',
    ),
  );
}

// ARKit
void _onARKitViewCreated(ARKitController arkitController) {
  arkitController.onTap = _handleOnTap;
}

void _handleOnTap(String nodeName) {
  arkitController.add(nodeName: 'model.scn', position: arkitController.cameraPosition);
}

4. AR 앱 빌드 및 실행

AR 앱을 실행하기 위해서는 iOS나 Android 기기에서 앱을 빌드하고 실행해야 합니다. Flutter는 이러한 플랫폼 간 플러그인을 지원하기 때문에 각 플랫폼에서 동일한 코드를 사용할 수 있습니다.

이제 플러터를 이용하여 AR 앱을 개발하는 기초적인 방법에 대해 알아보았습니다. AR은 새로운 기술이기 때문에 계속해서 발전하고 있으며, 다양한 상황에 맞게 적용하는 방법을 학습하는 것이 중요합니다. AR 애플리케이션을 제작하는 데 도움이 되는 다양한 리소스와 라이브러리들이 많이 제공되고 있으니, 해당 리소스들을 참고하여 실제로 다양한 AR 앱을 만들어보는 것을 추천드립니다.

참고 자료