android - 如何更改场景中的可渲染颜色/纹理?

标签 android textures augmented-reality arcore sceneform

我正在构建一个使用 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/

相关文章:

android - Project tango 应用程序是否向后兼容 ARcore enable android 设备?

java - 运行应用程序时出现库问题

android - 如何在 Android 上的相机预览中粘贴内容?

java - 如何将字符串形式的图像(从android捕获并使用arraylist传递)转换为blob并将其保存在mysql数据库中

java - React Native,Android 日志。

java - Android 4.4.3 上出现 NullPointerException,但 4.1.2 上没有

android - Textview出现屏幕时调用的TextView方法?

python - 没有 CNN 的重复模式的图像语义分割

opengl - 在 GLSL 中选择立方体贴图的面

opengl - Wavefront *.OBJ 文件中的第三个纹理坐标