一个盒子的奇怪 SCNGeometryElement 计数

weird SCNGeometryElement count of a box

我正在使用材质 属性 为盒子的每一面涂上不同的颜色。代码有效,盒子颜色漂亮。文档说明如下:

For geometries with multiple elements, you can use the materials property to attach different materials to each element.

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

//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()

SCNGeometry/SCNMaterial 的文档是正确的。

但是 SCNBox 会根据您分配给它的 material 的数量自动生成 1 到 6 个几何元素。这将在渲染之前完成,因此根据您询问几何元素数量的时间,您可能会得到不同的结果。

只有 SCNBox 可以做到这一点。其他基元和其他几何体没有这种动态数量的几何体元素。