如何使用 ARCore Android SDK 在 SceneViewer 上加载我的 glTF 文件

How can I load my glTF file on SceneViewer with ARCore Android SDK

我正在关注 Google (https://developers.google.com/ar/develop/java/scene-viewer#ar-only) 上的文档。

我将 glTF 文件放在 assets/models 目录中(与 Andy.obj 相同的位置)

我尝试加载 glTF 2.0 文件(来自 KhronosGroup Sample)但失败了:

    Intent sceneViewerIntent = new Intent(Intent.ACTION_VIEW);
    Uri intentUri =
            Uri.parse("https://arvr.google.com/scene-viewer/1.0").buildUpon()
                    .appendQueryParameter("file", "models/BoxTextured.glb")
                    .appendQueryParameter("mode", "ar_preferred")
                    .appendQueryParameter("title", "Untitled")
                    .build();
    sceneViewerIntent.setData(intentUri);
    sceneViewerIntent.setPackage("com.google.ar.core");
    startActivity(sceneViewerIntent);

在文档(上面链接的)中,不知道如何编写从本地加载 glTF 的代码。

如何解决 android 中的这个问题?

谢谢。

编辑:源码基于https://github.com/google-ar/arcore-android-sdk/tree/master/samples/hello_ar_java,本人工作HelloArActivity.java,ARCore Android SDK版本为1.17.0

我自己解决了

将 glTF 的路径设置为绝对路径(如“/sdcard/BoxTextured.glb”,而不是“models/BoxTextured.glb”)

我认为它无法找到(也无法转换)该函数的相对路径。

如果您想使用相对路径,您必须通过 //assets/~ 或其他方式获取路径。


编辑:

还有 Environment class 有方法 getExternalStorageDirectory().getAbsolutePath()。我可能会解决上面的问题。