GLTF-объект заземляется при загрузке - PullRequest
0 голосов
/ 08 марта 2019

При загрузке файлов GLTF с сервера объекты не берут начало координат, а считаются позицией (0,0,0) снизу, но когда тот же файл мы проверяем в блендере, все объекты находятся в правильном порядке.

Нужно ли вручную устанавливать местоположение вершины для всех сеток в GLTF, чтобы они были источником, потому что Sceneform не учитывает их относительные преобразования.

Я пытался использовать setRecenterMode (), но не работал.

enter image description here

вот мой код ниже

 hair_render = ModelRenderable.builder()
            .setSource(this, RenderableSource.builder().setSource(
                    this,
                    Uri.parse(hair_gltf),
                    RenderableSource.SourceType.GLTF2)
                    .setRecenterMode(RenderableSource.RecenterMode.NONE)
                    .build())

            .setRegistryId(hair_gltf)
            .build();
    body_render = ModelRenderable.builder()
            .setSource(this, RenderableSource.builder().setSource(
                    this,
                    Uri.parse(body_gltf),
                    RenderableSource.SourceType.GLTF2)
                    .setRecenterMode(RenderableSource.RecenterMode.NONE)
                    .build())

            .setRegistryId(body_gltf)
            .build();

    top_render = ModelRenderable.builder()
            .setSource(this, RenderableSource.builder().setSource(
                    this,
                    Uri.parse(top_gltf),
                    RenderableSource.SourceType.GLTF2)
                    .setRecenterMode(RenderableSource.RecenterMode.NONE)
                    .build())
            .setRegistryId(top_gltf)
            .build();

    CompletableFuture.allOf(
            body_render,
            top_render,
            hair_render)
            .handle((notUsed, throwable) -> {
              if (throwable != null) {
                DemoUtils.displayError(this, "Unable to load renderable", throwable);
                return null;
              }

              try {

                body = body_render.get();
                top = top_render.get();
                hair = hair_render.get();

                // Everything finished loading successfully.
                hasFinishedLoading = true;

              } catch (InterruptedException | ExecutionException ex) {
                DemoUtils.displayError(this, "Unable to load renderable", ex);
              }

              return null;
            });
...