Загрузка моделей с ArCore в Android Studio - PullRequest
1 голос
/ 07 ноября 2019

Я изо всех сил стараюсь следовать примерам, чтобы загрузить свою собственную модель с 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. Какой правильный способ сделать это?

1 Ответ

4 голосов
/ 08 ноября 2019

Для справки вот официальная документация по запуску модели: https://developers.google.com/ar/develop/java/sceneform#renderables

ModelRenderable является частью библиотеки com.google.ar.sceneform:core, вы можете добавить ее, добавив эту зависимость на уровень вашего приложения build.gradle:

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

Убедитесь, что все остальные зависимости arcore / sceneform относятся к одной и той же версии, в данном случае 1.13.0.

Значение sfa - это SceneFormAsset, оно представляет вашдетали вашей модели представлены в удобочитаемой форме и не будут частью вашего приложения (оно должно находиться в папке примеров, которая находится на том же уровне иерархии, что и ваша папка src). Однако 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

...