如何在场景窗体中更改可渲染的颜色/纹理?

时间:2018-07-23 01:15:59

标签: android textures augmented-reality arcore sceneform

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

2 个答案:

答案 0 :(得分:2)

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

您还可以更改可渲染对象的材料。由于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设置颜色。

答案 1 :(得分:0)

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