我的材料只适用于一半面孔。这是我的代码:
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个脸中的三个?感谢
答案 0 :(得分:3)
您使用insertMaterial:atIndex:
将材料添加到您的包装盒中,因此您的包装盒现在有两种材料。
SCNBox
会自动将您指定的材料划分为六个面。使用两种材质,您将在三个面上获得一种材质,而在另外三种面上获得另一种材质。使用三种材料,你将获得两个面(并且,IIRC,它们将是三对相对面)。四五个是奇怪的情况,但如果你想要六个不同的面,分配六种不同的材料。
如果您希望所有面都是相同的材质,请不要插入新材料,请替换contents
的{{1}}。