Pudełko składa się z sześciu różnych elementów (po jednym dla każdej strony). Można również zauważyć, że obiekt geometrii ma jedną właściwość dla materiału , ale także właściwość dla tablicy materiałów.
Obiekt z wieloma elementami i wieloma materiałami wybierze przyrost materiału (i zawinięcia) dla każdego elementu.
przykładzie 4 elementów i materiałów 1
Element 1 2 3 4
Material 1 1 1 1
lub 4 elementów i 2 Materiały
Element 1 2 3 4
Material 1 2 1 2 // note that they are repeating
przykładzie 4 elementy i 7 Materiały
Element 1 2 3 4
Material 1 2 3 4 // (5, 6, 7) is unused
W obudowa tego mea ns, że możesz użyć szeregu sześciu materiałów, aby mieć unikalny materiał po każdej stronie pudełka. Mam tego przykład w the sample code for one of the chapters dla mojej sceny książki Kit (w Objective-C):
// 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];
Ładnie zrobione, sir! Warto zwrócić uwagę na jedną dodatkową rzecz: dzięki wielu geometriom można stwierdzić, ile materiałów obsługuje, wyszukując jego "geometryElementCount". To nie działa dla 'SCNBox', chociaż ... automatycznie odtwarza swój zestaw elementów geometrii w zależności od tego, ile materiałów przypiszesz (w ten sposób nie potrzeba sześciu wywołań drawów do renderowania, jeśli nie ma sześciu materiałów). – rickster
dziękuję źle daj to, co postanowiłeś – may19c19
Po której stronie jest (z przodu, z prawej, z tyłu, z lewej strony, z góry, z dołu)? –