首页 > 解决方案 > 我可以在运行 AR 活动时更新 .sfb 文件吗?

问题描述

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

材料只是颜色:

newmtl Steel__-_Satin

Kd 0.627451 0.627451 0.627451

我想避免:

提前致谢!

标签: androidandroid-studioaugmented-realityarcoresceneform

解决方案


在运行时设置可渲染颜色的一种方法是更改​​“baseColorTint”材质参数。下面是如何将可渲染的红色着色的示例:

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 可以有不同的材料参数集。通过查看 .sfa 文件的“参数”块,您可以了解 sfb 中存在哪些材料参数。您还可以使用自己的材质参数编写自定义材质,并使用它来控制 sfb 在运行时的外观和感觉。


推荐阅读