奇怪的SCNGeometryElement一个盒子的计数

时间:2015-06-27 11:58:59

标签: geometry scenekit

我使用材料属性为不同颜色的盒子的每一面着色。代码工作,盒子色彩漂亮。文档说明如下:

  

对于具有多个元素的几何图形,您可以使用这些材质   将不同材料附加到每个元素的属性。

我正在测试一个盒子(立方体)的几何元素的数量。结果是1.我对几何元素的含义有点困惑。如果盒子只有1个几何元素,为什么我可以使用materials属性来附加不同的材质?

//cretaing a box
        let box = SCNBox(width: 40, height: 40, length: 40, chamferRadius: 0)
        boxNode.geometry = box
        scene.rootNode.addChildNode(boxNode)
        boxNode.position = SCNVector3Make(0, -90, 0)
        boxNode.rotation = SCNVector4Make(1, 1, 0, 1)
//setting up materials
        let mat1 = SCNMaterial()
        mat1.diffuse.contents = UIColor.redColor()
        let mat2 = SCNMaterial()
        mat2.diffuse.contents = UIColor.blueColor()
        let mat3 = SCNMaterial()
        mat3.diffuse.contents = UIColor.greenColor()
        let mat4 = SCNMaterial()
        mat4.diffuse.contents = UIColor.yellowColor()
        let mat5 = SCNMaterial()
        mat5.diffuse.contents = UIColor.blackColor()
        let mat6 = SCNMaterial()
        mat6.diffuse.contents = UIColor.orangeColor()
        box.materials = [mat1,mat2,mat3,mat4,mat5,mat6]
//checking the number of geometry elements
        let i = box.geometryElementCount
        println("Number of geometry elements: \(i)")
        animateBox()

1 个答案:

答案 0 :(得分:3)

SCNGeometry / SCNMaterial的文档是正确的。

但是SCNBox会自动生成1到6个geometryElements,具体取决于您为其分配的材料数量。这将在渲染之前完成,因此根据您询问几何元素的数量,您可能会得到不同的结果。

只有SCNBox这样做。其他基元和其他几何体不具有这种动态数量的几何元素。