Possible Mentor(s): Jonas Jensen (jonasfj), Brian Quinlan (bquinlan)
Difficulty Medium
Project size: Medium (175 hours)
Skills: Dart, Flutter, Google ARCore, Java, Android, GLSL
Description: A Dart and Flutter plugin that makes use of either Google ARCore or SceneView to integrate the full capabilities of augmented reality SDKs for Android mobile development. This plugin aims to streamline the process of implementing augmented reality features such as persistent experiences (cloud anchors/anchors), and support for a broader range of 3D file types beyond the limitations of current Dart AR plugins.
Good Sample Project: AR 2 player chess game with pieces in file formats previously unsupported that saves the locations of moved pieces on the board so that both players can move without having to move the rest of the board with them or have it disappear if players want to resume a game.
Expected outcome:
A fully functional Dart and Flutter plugin that wraps the Google ARCore SDK.
Documentation and examples to help developers quickly integrate AR features into their existing Flutter applications.
A sample application that showcases the capabilities of the plugin.
Tested and validated performance to ensure compatibility across various Android devices.
Inspiration: A couple of years ago, I was working on an Android version of Clew, an indoor path tracing navigation app built with Swift and ARKit for blind and visually impaired users. ARKit is native to iOS devices and cannot be implemented on Android devices, and my goal was to replicate the functionality of the app with Google ARCore. At the time, I tried implementing one of the only Google ARCore plugins from pub.dev out there into the app, but features in the complete Google ARCore SDK such as cloud anchors (persistent AR experiences tied to a particular coordinate point on a satellite or internal device map) and support for file types that were not deprecated for the SDK (STL or OBJ instead of glTF) did not exist in the plugin which were key to this app’s development, and as a result I ended up switching to Java and the complete Google ARCore SDK to complete the project. While a wonderful plugin, it was much better suited for artistic or temporary use cases than the permanence in experience I needed for this app. This time around, I want to work on a versatile Dart and Flutter plugin that can be used in these cases and for other augmented reality work in Flutter apps.
Related Work:
https://pub.dev/packages/arcore_flutter_plugin (the plugin I originally tried using)
https://github.com/LaniW/javaClewApp (the project that inspired this proposal)