Android 运行AR活动时是否可以更新.sfb文件?

Android 运行AR活动时是否可以更新.sfb文件?,android,android-studio,augmented-reality,arcore,sceneform,Android,Android Studio,Augmented Reality,Arcore,Sceneform,使用SceneForm,我正在显示从外部存储的SFB文件中获取的3D对象,我需要更改其颜色。有没有办法修改文件以更改其颜色 材质只是颜色: newmtl钢-缎面 Kd 0.627451 0.627451 0.627451 我想避免: 在外部存储库中为每种颜色存储一个文件。这不仅不切实际,而且每次需要更改颜色时,我都必须下载一个新文件(可能很大),这可能会很乏味 必须存储1个OBJ和几个MTL文件,并且每次都要创建一个新的SFB。和以前一样,我必须存储更少的数据,但颜色更新的时间会更长 提前谢

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

材质只是颜色:

newmtl钢-缎面

Kd 0.627451 0.627451 0.627451

我想避免:

  • 在外部存储库中为每种颜色存储一个文件。这不仅不切实际,而且每次需要更改颜色时,我都必须下载一个新文件(可能很大),这可能会很乏味
  • 必须存储1个OBJ和几个MTL文件,并且每次都要创建一个新的SFB。和以前一样,我必须存储更少的数据,但颜色更新的时间会更长

提前谢谢

在运行时设置可渲染的颜色的一种方法是更改“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在运行时的外观和感觉的工具。

很抱歉这么晚再次光临。当我使用您的方法时,颜色应用得非常完美,但我丢失了所有纹理/阴影()。我还没有找到解决这个新问题的方法。你知道如何恢复纹理吗?