材质仅附加到几何体上的一半纹理

时间:2015-01-29 18:20:23

标签: ios swift scenekit scnnode

我的材料只适用于一半面孔。这是我的代码:

        let boxGeometry = SCNBox(width: 10, height: 10, length: 10, chamferRadius: 0)
    let boxNode = SCNNode(geometry: boxGeometry)
    boxNode.position = SCNVector3Make(0, 0, -20)
    boxNode.runAction(SCNAction.repeatActionForever(SCNAction.rotateByX(1, y: 2, z: 0, duration: 1)))
    boxNode.geometry?.firstMaterial?.diffuse.magnificationFilter = SCNFilterMode.Nearest
    boxNode.geometry?.firstMaterial?.diffuse.minificationFilter = SCNFilterMode.Nearest
    var texture = SKTexture(imageNamed:"fixed!_textures_blocks_blockRedstone.png")
    texture.filteringMode = SKTextureFilteringMode.Nearest

    boxNode.geometry?.firstMaterial?.diffuse.contents = texture

    var material = SCNMaterial()
    material.diffuse.contents = UIColor.blueColor()
    boxNode.geometry?.insertMaterial(material, atIndex: 1)

    view.scene?.rootNode.addChildNode(boxNode)

我创建了一种新材料并添加了蓝色。任何人都知道为什么它只适用于6个脸中的三个?感谢

http://i.stack.imgur.com/6IXh5.png

1 个答案:

答案 0 :(得分:3)

您使用insertMaterial:atIndex: 材料添加到您的包装盒中,因此您的包装盒现在有两种材料。

SCNBox会自动将您指定的材料划分为六个面。使用两种材质,您将在三个面上获得一种材质,而在另外三种面上获得另一种材质。使用三种材料,你将获得两个面(并且,IIRC,它们将是三对相对面)。四五个是奇怪的情况,但如果你想要六个不同的面,分配六种不同的材料。

如果您希望所有面都是相同的材质,请不要插入新材料,请替换contents的{​​{1}}。