ar_flutter_plugin

pub package

用于(协作式)增强现实的 Flutter 插件 – 支持 iOS 和 Android 设备的 ARKit 和 ARCore。

非常感谢 Oleksandr Leuschenko 的 arkit_flutter_plugin 和 Gian Marco Di Francesco 的 arcore_flutter_plugin,它们都为本项目提供了良好的基础和起点。

入门

安装

通过运行以下命令将 Flutter 包添加到您的项目中

flutter pub add ar_flutter_plugin

或者将此手动添加到您的 pubspec.yaml 文件中(然后运行 flutter pub get

dependencies:
  ar_flutter_plugin: ^0.6.1

导入

将此添加到您的代码中

import 'package:ar_flutter_plugin/ar_flutter_plugin.dart';

如果您在 iOS 权限方面遇到问题(例如,即使允许访问相机,相机视图仍未显示),请将此添加到应用 ios 目录下的 podfile

  post_install do |installer|
    installer.pods_project.targets.each do |target|
      flutter_additional_ios_build_settings(target)
      target.build_configurations.each do |config|
        # Additional configuration options could already be set here

        # BEGINNING OF WHAT YOU SHOULD ADD
        config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= [
          '$(inherited)',

          ## dart: PermissionGroup.camera
          'PERMISSION_CAMERA=1',

          ## dart: PermissionGroup.photos
          'PERMISSION_PHOTOS=1',

          ## dart: [PermissionGroup.location, PermissionGroup.locationAlways, PermissionGroup.locationWhenInUse]
          'PERMISSION_LOCATION=1',

          ## dart: PermissionGroup.sensors
          'PERMISSION_SENSORS=1',

          ## dart: PermissionGroup.bluetooth
          'PERMISSION_BLUETOOTH=1',´

          # add additional permission groups if required
        ]
        # END OF WHAT YOU SHOULD ADD
      end
    end
  end

示例应用程序

要试用该插件,最好查看 Example 应用中实现的以下示例之一

示例名称 描述 代码链接
调试选项 简单的 AR 场景,带有用于可视化世界原点、特征点和跟踪平面的切换按钮 调试选项代码
本地和在线对象 AR 场景,带有按钮,可将 GLTF 对象从 flutter 资源文件夹、互联网上的 GLB 对象或应用 Documents 目录中的 GLB 对象放置在给定位置、旋转和比例。附加按钮允许在放置对象后相对于世界原点修改比例、位置和方向。 本地和在线对象代码
平面上的对象和锚点 AR 场景,通过点击平面创建带有附加 3D 模型的锚点 平面上的对象和锚点代码
对象转换手势 与“平面上的对象和锚点”示例相同,但放置对象后可以使用手势平移和旋转对象 平面上的对象和锚点代码
截图 与“平面上的对象和锚点”示例相同,但使用快照函数为 AR 场景截屏 截图代码
云锚点 AR 场景,对象可以放置、上传和下载,从而创建可以由多个设备共享的交互式 AR 体验。当前,该示例允许上传最后一个放置的对象及其锚点,并下载半径 100 米内的所有锚点以及所有附加对象(无论最初是哪个设备放置的)。由于对象的共享是通过 Google Cloud Anchor 服务和 Firebase 完成的,因此需要一些额外的设置,请阅读 云锚点入门指南 云锚点代码
外部对象管理 与 Cloud Anchors 示例类似,但包含用于在不同模型之间进行选择的 UI。它不是硬编码的,而是使用外部数据库 (Firestore) 来管理可用模型。由于对象的共享是通过 Google Cloud Anchor 服务和 Firebase 完成的,因此需要一些额外的设置,请阅读 云锚点入门指南。另外,请确保您的 Firestore 数据库中的“models”集合包含一些字段为“name”、“image”和“uri”的条目,其中“uri”指向 GLB 格式模型的原始文件 外部模型管理代码

贡献

非常欢迎为该插件做出贡献。要贡献代码并讨论想法,请 创建拉取请求打开一个 issue,或 开始讨论

插件架构

这是该插件实现架构的大致草图

ar_plugin_architecture

GitHub

查看 Github