我正在构建一个使用 AR 的 Android 应用程序,并且我正在使用 sceneform 包。我显示一个 3D 模型,其 ModelRenderable 是通过从外部 URI 下载相应的 .sfb 获得的。我需要它能够在触摸某个按钮时改变模型的颜色。我尝试了一千种方法都没有成功。有没有简单(或不)的方法来做到这一点?非常感谢!
最佳答案
您是否尝试过在单击模型时设置新 Material (https://developers.google.com/ar/reference/java/com/google/ar/sceneform/rendering/Renderable#setMaterial(com.google.ar.sceneform.rendering.Material)?
您还可以更改可渲染对象的 Material 。由于 Renderable 的所有实例共享相同的模型实例,因此最好在更改 Material 之前制作副本。否则所有其他节点也会受到更改的影响。
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 设置颜色。
关于android - 如何更改场景中的可渲染颜色/纹理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51470507/