ar_flutter_plugin
用于(协作式)增强现实的 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,或 开始讨论。
插件架构
这是该插件实现架构的大致草图