Могу ли я загрузить файл .gltf или .glb из внешнего хранилища - PullRequest
0 голосов
/ 21 февраля 2019

У меня есть устройство Android и я работаю с ARCore и хочу загрузить файл Gltf или Glb с SD-карты.На сайте https://developers.google.com/ar/develop/java/sceneform/create-renderables показана только загрузка через Интернет.

Я читал, что parse.fromFile может помочь, но у меня это пока не сработало.

private static final String GLTF_ASSET =
   "https://github.com/KhronosGroup/glTF-Sample-Models/raw/master/2.0/Duck/glTF/Duck.gltf";

 /* When you build a Renderable, Sceneform loads model and related resources
 * in the background while returning a CompletableFuture.
 * Call thenAccept(), handle(), or check isDone() before calling get().
 */
 ModelRenderable.builder()
    .setSource(this, RenderableSource.builder().setSource(
            this,
            Uri.parse(GLTF_ASSET),
            RenderableSource.SourceType.GLTF2)
            .setScale(0.5f)  // Scale the original model to 50%.
            .setRecenterMode(RenderableSource.RecenterMode.ROOT)
            .build())
    .setRegistryId(GLTF_ASSET)
    .build()
    .thenAccept(renderable -> duckRenderable = renderable)
    .exceptionally(
        throwable -> {
          Toast toast =
              Toast.makeText(this, "Unable to load renderable " +
              GLTF_ASSET, Toast.LENGTH_LONG);
          toast.setGravity(Gravity.CENTER, 0, 0);
          toast.show();
          return null;
        });

Ответы [ 2 ]

0 голосов
/ 25 апреля 2019

Да, вы можете.Я пытался с gltf, и он работает нормально.Я загрузил файл в каталог файлов и указал путь к файлу в качестве исходного URL.

val fileName = "myfile.gltf"
val filePath = "${filesDir.path}/${fileName}"

ModelRenderable.builder()
        .setSource(this, RenderableSource.builder().setSource(
                this,
                Uri.parse(filePath),
                RenderableSource.SourceType.GLTF2).build())
        .setRegistryId(filePath)
        .build()
        .thenAccept {
            renderable = it
        }
        .exceptionally {
            // Error happened
            return@exceptionally null
        }

Примечание: Если у вас есть файл bin, загрузите его также.

0 голосов
/ 07 апреля 2019

Да, вы можете, но вам нужно загрузить как .gltf, так и .bin в какое-либо место во внешнем хранилище, а затем вызвать .gltf оттуда, когда вы устанавливаете рендеринг для узла в сцене.

...