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 张面孔中的三张?谢谢
您使用 insertMaterial:atIndex:
将 添加 一个 material 到您的盒子,因此您的盒子现在有两个 material。
SCNBox
会自动将您指定的 material 分成六个面。如果有两个 material,您将在其中三个面上得到一个 material,在另外三个面上得到一个 material。使用三个 materials,你将分别得到两个面孔(并且,IIRC,它们将是三对相对的面孔)。四个或五个有点奇怪,但如果你想要六个不同的面孔,请分配六个不同的 material。
如果你想让所有的面都一样material,不要插入新的material,替换firstMaterial
的contents
。
我的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 张面孔中的三张?谢谢
您使用 insertMaterial:atIndex:
将 添加 一个 material 到您的盒子,因此您的盒子现在有两个 material。
SCNBox
会自动将您指定的 material 分成六个面。如果有两个 material,您将在其中三个面上得到一个 material,在另外三个面上得到一个 material。使用三个 materials,你将分别得到两个面孔(并且,IIRC,它们将是三对相对的面孔)。四个或五个有点奇怪,但如果你想要六个不同的面孔,请分配六个不同的 material。
如果你想让所有的面都一样material,不要插入新的material,替换firstMaterial
的contents
。