При загрузке файлов GLTF с сервера объекты не берут начало координат, а считаются позицией (0,0,0) снизу, но когда тот же файл мы проверяем в блендере, все объекты находятся в правильном порядке.
Нужно ли вручную устанавливать местоположение вершины для всех сеток в GLTF, чтобы они были источником, потому что Sceneform не учитывает их относительные преобразования.
Я пытался использовать setRecenterMode (), но не работал.
вот мой код ниже
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;
});