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

Material only attaches to half of the textures on geometry

我的material只适用于一半的脸。这是我的代码:

        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)

我创建了一个新的 material 并添加了蓝色。任何人都知道为什么它只适用于 6 张面孔中的三张?谢谢

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

您使用 insertMaterial:atIndex: 添加 一个 material 到您的盒子,因此您的盒子现在有两个 material。

SCNBox 会自动将您指定的 material 分成六个面。如果有两个 material,您将在其中三个面上得到一个 material,在另外三个面上得到一个 material。使用三个 materials,你将分别得到两个面孔(并且,IIRC,它们将是三对相对的面孔)。四个或五个有点奇怪,但如果你想要六个不同的面孔,请分配六个不同的 material。

如果你想让所有的面都一样material,不要插入新的material,替换firstMaterialcontents