Android ArCore 场景 API。如何在运行时更改纹理?

Android ArCore Sceneform API. How to change textures in runtime?

服务器有3000多个模型,每个模型都有material几种颜色。我需要单独加载模型和纹理,并根据用户的选择设置纹理。如何在运行时更改baseColorMap、normalMap、metallicMap、roughnessMap?

之后 modelRenderable.getMaterial().setTexture("normalMap", normalMap.get()); 什么都没发生 我做错了什么。文档中没有相关信息。

感谢您post提出这个问题。

  • setTexture() 好像不行: 不幸的是我们的这部分 API 还是有点粗糙;它有效,但很容易出错。我们正在制作一个示例来说明如何在运行时修改 material 参数(包括纹理),并将在下一个版本中改进我们的错误报告。
  • 数以千计的模型w/多个排列如何?:这里的计划分为两部分:
    • Android Studio 插件使用的二进制文件将可用于服务器平台上的构建脚本。这将允许您将资产在服务器端转换为 .sfb。我们将很快发布一个博客 post,介绍如何执行此操作。
    • .sfa 将能够包含松散的纹理和 material 未明确与几何关联的内容,并且 .sfa 将能够声明对其他 .sfa的。这意味着您可以创作(并交付)包含 textures/materials(但没有几何)的 .sfb 和包含几何(但没有 textures/materials)的 .sfb , 如果它们在实例化时都可用,它就会工作。

使用此代码`

CompletableFuture<Texture> futureTexture = Texture.builder()
          .setSource(this, R.drawable.shoes)
          .build();

并替换为

/*.thenAccept(renderable -> andyRenderable = renderable)*/
        .thenAcceptBoth(futureTexture, (renderable, texture) -> {
            andyRenderable = renderable;
            andyRenderable.getMaterial().setTexture("baseColor", texture);
        })

会起作用。