ios - 如何从 ARKit 应用程序更改对象的纹理?

标签 ios textures arkit

对象在场景中,我想在按下按钮时实时更改它的纹理。是否可以?
我试过这样,但它不起作用。

VirtualObjectsManager.shared.getVirtualObjectSelected()?.geometry?.materials.first?.diffuse.contents = UIColor.red

最佳答案

假设这是您的对象:

let obj = SCNNode()
obj.name = "obj1" // set a name, so you can access your object node later

首先,为对象的 Material 设置一个名称:
let material = SCNMaterial()
material.name = "BackgroundImage" // set a name for the material
material.diffuse.contents = UIImage(named: "texture1.jpg")

obj.geometry?.materials = [material]

然后,在您的按钮按下方法中,您需要一个对象实例:
let node = sceneView.scene.rootNode.childNode(withName: "obj1", recursively: true)

然后你可以改变它的纹理:
let material = node.geometry?.material(named: "BackgroundImage")
material.diffuse.contents = UIImage(named: "texture2.jpg")

关于ios - 如何从 ARKit 应用程序更改对象的纹理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49856904/

相关文章:

debugging - 如何调试 OpenGL 灰色/黑色纹理框?

javascript - 如何在 three.js 中的球体上使用纹理

ios - 在 ARKit 中放置、拖动和删除 SCNNode

ios - 如何让 AVAssetReader 循环?

ios - TextField 在编辑时附加到键盘 - 如何使 ScrollView 看起来与编辑前一样?

opengl - TEXTURE_2D_ARRAY 未渲染

ios - 使用 CGMutablePath 创建路径会创建到错误 CGPoint 的行

ios - ARKit:将 3D 对象放置在图像之上

ios - -[EAGLContext renderbufferStorage :fromDrawable:] Failing the second time on?

ios - 如何检查关系是否已经建立 - Core Data