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);
})
会起作用。
服务器有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
, 如果它们在实例化时都可用,它就会工作。
- Android Studio 插件使用的二进制文件将可用于服务器平台上的构建脚本。这将允许您将资产在服务器端转换为
使用此代码`
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);
})
会起作用。