ボックスは、6 つの異なる要素 (各面に 1 つ) で構成されています。また、ジオメトリ オブジェクトには最初のマテリアルのプロパティが 1 つあるだけでなく、マテリアルの配列のプロパティもあることに気付いたかもしれません。
複数の要素と複数のマテリアルを持つオブジェクトは、要素ごとにマテリアル (およびラップ) の増分を選択します。
たとえば、4 つの要素と 1 つのマテリアル
Element 1 2 3 4
Material 1 1 1 1
または 4 つの要素と 2 つの材料
Element 1 2 3 4
Material 1 2 1 2 // note that they are repeating
たとえば、4 つの要素と 7 つのマテリアル
Element 1 2 3 4
Material 1 2 3 4 // (5, 6, 7) is unused
ボックスの場合、これは、6 つのマテリアルの配列を使用して、ボックスの各面に固有のマテリアルを持たせることができることを意味します。私の Scene Kit book (Objective-C)の章の 1 つのサンプル コードに、この例があります。
// Each side of the box has its own color
// --------------------------------------
// All have the same diffuse and ambient colors to show the
// effect of the ambient light, even with these materials.
SCNMaterial *greenMaterial = [SCNMaterial material];
greenMaterial.diffuse.contents = [NSColor greenColor];
greenMaterial.locksAmbientWithDiffuse = YES;
SCNMaterial *redMaterial = [SCNMaterial material];
redMaterial.diffuse.contents = [NSColor redColor];
redMaterial.locksAmbientWithDiffuse = YES;
SCNMaterial *blueMaterial = [SCNMaterial material];
blueMaterial.diffuse.contents = [NSColor blueColor];
blueMaterial.locksAmbientWithDiffuse = YES;
SCNMaterial *yellowMaterial = [SCNMaterial material];
yellowMaterial.diffuse.contents = [NSColor yellowColor];
yellowMaterial.locksAmbientWithDiffuse = YES;
SCNMaterial *purpleMaterial = [SCNMaterial material];
purpleMaterial.diffuse.contents = [NSColor purpleColor];
purpleMaterial.locksAmbientWithDiffuse = YES;
SCNMaterial *magentaMaterial = [SCNMaterial material];
magentaMaterial.diffuse.contents = [NSColor magentaColor];
magentaMaterial.locksAmbientWithDiffuse = YES;
box.materials = @[greenMaterial, redMaterial, blueMaterial,
yellowMaterial, purpleMaterial, magentaMaterial];