【发布时间】:2019-12-24 10:58:10
【问题描述】:
我是 SceneKit 的新手并创建了一个对象我将图像作为纹理添加到对象但它显示在正面和背面。我想要在它后面显示另一个图像。是否可以添加两个纹理对于一个对象?
let scene = SCNScene()
var planet : SCNGeometry
let tempScene = SCNScene(named: "FrameOBJ.obj")
planet = tempScene!.rootNode.childNodes[0].geometry!
let material = SCNMaterial()
let url = URL(string: "www.imageasf.com/123.png")
let data = try? Data(contentsOf: url!) //make sure your image in this url does exist, otherwise unwrap in a if let check / try-catch
let image = UIImage(data: data!)
material.diffuse.contents = image
material.diffuse.wrapT = SCNWrapMode.mirror
material.diffuse.wrapS = SCNWrapMode.mirror
material.isDoubleSided = true
planet.materials = [material]
let planetNode = SCNNode(geometry: planet)
scene.rootNode.addChildNode(planetNode)
sceneView.cameraControlConfiguration.allowsTranslation = true
sceneView.allowsCameraControl = true
sceneView.scene = scene
【问题讨论】:
-
Materials 是一个材质数组 [material, material1, etc.],所以是的,你可以有多种材质 - 比如一个立方体 [front, right, back, left, top, bottom]。既然您称它为行星,假设您正在尝试对球体进行纹理贴图?搜索 scenekit 纹理贴图星球 - 有一些关于如何做到这一点的视频。
标签: ios 3d textures scenekit scene