我可以在 运行 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
我想避免:
- 在外部存储库中为每种颜色存储一个文件。这不仅不切实际,而且每次需要更改颜色时我都必须下载一个新文件(可能很大),这可能很乏味。
- 必须存储 1 个 OBJ 和多个 MTL 文件,并且每次都要制作一个新的 SFB。和以前一样,我将不得不存储更少的数据,但颜色更新的时间会更长。
提前致谢!
在运行时设置可渲染对象颜色的一种方法是更改 "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 在运行时的外观和感觉。
我正在使用 SceneForm 显示从外部存储的 SFB 文件中获取的 3D 对象,我需要更改其颜色。有没有办法修改文件以更改其颜色?
material只是颜色:
newmtl Steel_-_Satin
Kd 0.627451 0.627451 0.627451
我想避免:
- 在外部存储库中为每种颜色存储一个文件。这不仅不切实际,而且每次需要更改颜色时我都必须下载一个新文件(可能很大),这可能很乏味。
- 必须存储 1 个 OBJ 和多个 MTL 文件,并且每次都要制作一个新的 SFB。和以前一样,我将不得不存储更少的数据,但颜色更新的时间会更长。
提前致谢!
在运行时设置可渲染对象颜色的一种方法是更改 "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 在运行时的外观和感觉。