在Android Studio中使用ArCore加载模型

我正在努力遵循示例以将自己的模型加载到ArCore中。我发现以下代码:

ModelRenderable.builder()
    // To load as an asset from the 'assets' folder ('src/main/assets/andy.sfb'):
    .setsource(this,Uri.parse("andy.sfb"))

    // Instead,load as a resource from the 'res/raw' folder ('src/main/res/raw/andy.sfb'):
    //.setsource(this,R.raw.andy)

    .build()
    .thenaccept(renderable -> andyRenderable = renderable)
    .exceptionally(
        throwable -> {
          Log.e(TAG,"Unable to load Renderable.",throwable);
          return null;
    });

但是我在任何地方都找不到ModelRenderable类以及如何导入它。同样,我正在从这样的加载模型构建应用的示例应用:

virtualObject.createonGlThread(/*context=*/ this,"models/andy.obj","models/andy.png");
virtualObject.setMaterialProperties(0.0f,2.0f,0.5f,6.0f);

但是我的模型没有png文件,只有obj和mtl。自动场景还创建了一个sfa和sfb文件。 哪一种是正确的方法?

ac2234 回答:在Android Studio中使用ArCore加载模型

作为参考,这里是有关初始化模型的官方文档:https://developers.google.com/ar/develop/java/sceneform#renderables

ModelRenderablecom.google.ar.sceneform:core 库中,您可以通过将此依赖项添加到应用程序级别build.gradle中来添加它:

implementation 'com.google.ar.sceneform:core:1.13.0'

确保所有其他arcore / sceneform依赖项都在同一版本(在本例中为1.13.0)上。

sfa的意思是SceneFormAsset,它以易于理解的形式表示您的模型详细信息,并且不属于您的应用程序(它应位于与您的src处于同一层次结构级别的samplefolder中夹)。 sfb是SceneFormBinary,每次您在sfa中修改某些内容并构建项目时,此二进制文件都是从sfa描述符生成的。 sfb文件应位于项目的资产文件夹中。对于模型加载,您应该使用sfb文件:

ModelRenderable.builder()
        .setSource(context,Uri.parse("house.sfb"))

关于示例代码:如果您不熟悉OpenGL,我不建议您遵循该示例,最好寻找SceneForm,这是一个示例应用程序:https://github.com/google-ar/sceneform-android-sdk/tree/master/samples/solarsystem

本文链接:https://www.f2er.com/3144484.html

大家都在问