我可以在 运行 AR activity 时更新 .sfb 文件吗?

Can I update an .sfb file while running the AR activity?

我正在使用 SceneForm 显示从外部存储的 SFB 文件中获取的 3D 对象,我需要更改其颜色。有没有办法修改文件以更改其颜色?

material只是颜色:

newmtl Steel_-_Satin

Kd 0.627451 0.627451 0.627451

我想避免:

提前致谢!

在运行时设置可渲染对象颜色的一种方法是更改​​ "baseColorTint" material 参数。下面是如何为可渲染的红色着色的示例:

renderable.getMaterial().setFloat4("baseColorTint", new Color(1.0f, 0.0f, 0.0f, 1.0f));

此外,如果您希望将可渲染对象的多个副本分别设置为不同的颜色,您可以这样做:

Renderable tintedRenderable = originalRenderable.makeCopy();
tintedRenderable.getMaterial().setFloat4("baseColorTint", new Color(1.0f, 0.0f, 0.0f, 1.0f));

请注意,这是通过乘以来自对象纹理的 "baseColor" 来实现的。如果对象在着色之前是纯白色,这将最有效。

此外,不同的 sfb 可以有不同的 material 参数集。通过查看 .sfa 文件的 "parameters" 块,您可以了解 sfb 中存在哪些 material 参数。您还可以使用自己的 material 参数编写一个 custom material,并使用它来控制您的 sfb 在运行时的外观和感觉。