0

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

        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)

我创建了一种新材料并添加了蓝色。有人知道为什么它只适用于六分之三的面孔吗?谢谢

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

4

1 回答 1

3

您曾经insertMaterial:atIndex:向您的盒子添加一种材料,因此您的盒子现在有两种材料。

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

如果您希望所有面都是相同的材质,请不要插入新材质,替换contents.firstMaterial

于 2015-01-29T21:47:47.343 回答