2

我正在构建一个使用 AR 并且我正在使用 sceneform 包的 Android APP。我通过从外部 URI 下载相应的 .sfb 来显示其 ModelRenderable 的 3D 模型。我需要它可以在触摸某个按钮时更改模型的颜色。我已经尝试了一千种方法,但没有任何运气。有没有简单(或没有)的方法来做到这一点?非常感谢!

4

2 回答 2

3

您是否尝试设置新材料(https://developers.google.com/ar/reference/java/com/google/ar/sceneform/rendering/Renderable#setMaterial(com.google.ar.sceneform.rendering.Material )当您单击模型时?

您还可以更改 Renderable 的材质。由于 Renderable 的所有实例共享相同的模型实例,因此在更改材质之前制作副本是个好主意。否则所有其他节点也会受到更改的影响。

val renderableCopy = originalRenderable.makeCopy()
val changedMaterial = renderableCopy.material.makeCopy()
changedMaterial.setFloat3("baseColorTint", Color(android.graphics.Color.rgb(0,255,0)))
renderableCopy.material = changedMaterial

是否必须更改 baseColor 或 baseColorTint 取决于您的 SFA 文件。是否使用 baseColor 或 baseColorTint 设置颜色。

于 2018-07-25T05:48:16.740 回答
0

您也可以从 .sfb 模型中调用 mtl id 并在其中传递纹理

于 2019-03-17T05:33:10.513 回答