Flutter是否支持在单个应用程序中同时使用ARCore和ARKit插件?

6

我正在尝试使用Flutter AR应用程序进行跨平台开发,是否可以在单个应用程序中同时使用两种插件?只需一个代码库(ARKit代码)即可在Android平台上工作,反之亦然,还是需要分别为每个平台独立开发?

dependencies:
   arcore_flutter_plugin: ^0.0.2+1
   arkit_plugin: ^0.3.0

Arcore支持IOS和Android操作系统。请参考https://developers.google.com/ar/devices。我可以知道为什么需要实现单独的插件吗? - AbdulSaleem
2个回答

11

我知道这个问题已经问了一段时间,但是问题仍然没有改变。

对于因为尝试使用Flutter开发跨平台AR应用程序而到达此处的每个人:请查看GitHub问题线程

除其他外,我目前正在开发一个Flutter插件,它支持具有公共接口的ARCore和ARKit,以便人们可以编写适当的跨平台应用程序,并共享代码和功能。 我将在上面链接的GitHub讨论中发布更新!

编辑

该插件现在可在以下链接处获得:https://pub.dev/packages/ar_flutter_plugin


但这对于OPENGL和渲染3D对象无效。不是吗?请查看此链接https://stackoverflow.com/questions/62422439/importing-3d-model-into-flutter-app-and-textures-not-showing-up - AbdulSaleem
2
嗨@AbdulSaleem,自从我发帖以来,该项目已经取得了相当大的进展,你可以在这里查看我的插件:https://github.com/CariusLars/ar_flutter_plugin 它支持从文件和网络加载和呈现3D模型,用于Android和iOS上的AR体验。 - Lars
1
非常感谢您提供的参考资料。我正在开展一个项目,通过使用后置摄像头和前置摄像头,在电子商务店铺中试用所有不同产品。此外,我需要通过相机为所有产品创建3D产品AR模型。我必须在2021年完成这个项目。您建议我选择Flutter还是本地Android / iOS / Web开发?非常感谢您的帮助。 - AbdulSaleem
针对产品试用:目前使用插件可以轻松在地板或桌子上放置物体,并且通过网络应用程序管理模型,因此您无需将它们编译到应用程序中,这一点非常可行。前置摄像头(我猜测包括面部锚点)目前还没有实现,但这不应该太难(虽然不在我的当前路线图中,如果您能够开发这个功能,那会是一个很棒的请求)。创建三维模型则是另一个故事,我完全不知道如何做到这一点,因此我想这取决于它对您的应用程序有多重要。 - Lars
1
如果你想同时提供iOS和Android,我建议使用Flutter,因为实际的AR插件只是一个Flutter包装器,围绕平台级代码,所以你可以轻松地推进平台特定的代码(无论在哪种情况下开发),并将业务逻辑捆绑在Flutter端,这样可以避免重复工作。根据我的经验,需要一点时间才能进入Flutter并将所有内容抽象到跨平台级别,但一旦掌握了它,它真的很有用,并节省了大量的维护时间。 - Lars
1
@Lars - 我很高兴你已经开始将ARkit和ARcore合并成一个插件。我本来也打算自己开始这个项目。我会与你联系,讨论如何参与进来。 - Lee Probert

9

是的,我已经成功地将两个插件结合到一个Flutter应用程序中,使得ARCore可以在Android设备上运行,ARKit在iOS上运行。

要开始,请按照教程创建一个arkit应用程序和一个arcore应用程序。然后创建一个包含两个插件的新Flutter项目。在第一个版本中,我将arcore_flutter_plugin代码放入了一个名为ArCoreState的类中(扩展了应用程序的状态),将arkit_plugin代码放入另一个名为ArKitState的类中。

然后,main.dart文件就变得非常简单了。

void main() => runApp(MaterialApp(home: MultiPlatformApp()));

class MultiPlatformApp extends StatefulWidget {
  @override State<StatefulWidget> createState() => 
     Platform.isAndroid ? ArCoreState() : ArKitState();
}

当您运行时,即使只有一行共享代码,您也拥有了一个跨平台的 AR 应用程序!


但这对于OPENGL和渲染3D对象无效。不是吗?请查看此链接https://stackoverflow.com/questions/62422439/importing-3d-model-into-flutter-app-and-textures-not-showing-up - AbdulSaleem
1
嗨@AbdulSaleem。您不能直接在Flutter中编写OpenGL代码,但ARCore使用OpenGLES,您可以使用Dart代码与ARCore一起使用。在iOS上,我建议使用Metal-苹果不再真正支持OpenGL。几年前,我曾设法将OpenGL渲染器连接到ARkit,但这需要大量的努力。 - Rolf Staflin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接