200 Würfel mit 200 verschiedenen Texturen ?

NanoBot

Mitglied
Hallo zusammen

Ich möchte 200 Würfel (Array oder MoGraph) erstellen und jedem eine andere Textur zuweisen, aber nicht von Hand...

Aber ich weiss nicht wo ich da ansetzen könnte.

Würde das gehen, ein COFFEE Programm mit einer FOR-Schleife ähnlich

main(doc,op) {
for (a=1; a<=200; a=a+1)
{ Würfel[a] -> SetTexture(Textur[a].png) }
}

Wobei ich die Texturen schon nummeriert habe (Textur001.png, Textur002.png,...).
 
Da gibt es doch den Multi-Shader, damit solte es gehen! In Mograph benutzt du den MultiShader, und legst ihn auf den Cloner, diesem wiederum mußt du ein randomeffector zuweisen.
In den Einstellungen müßtest du mal nachschauen, ich meine da war was mit Coloreffector einschalten!? (im Randomeffector)
Und die MIN/MAX werte des effectors auf 0 stellen. Das habe ich irgendwann mal in einer Anleitung gelesen, finde das aber nicht mehr. Auf diese weise kannst du glaube ich auch Bilder oder Materialien einzelnd einladen... Ich sitze leider gerade nicht davor ich versuche mich nur zu erinnern.^^
Es kann aber passieren das im Fenster sich die Materialien nicht verändern oder gezeigt werden, das siehst du dann erst beim rendern, also wirst du um viele Test render nicht drum rum kommen, das war bei mir so als ich Würfel mit einzelnen Bildern bestückt hatte.
Ich hoffe ich konnte helfen und es war richtig was ich da verzapft habe ^^
 
Zuletzt bearbeitet:
Ja, so geht schon was.
Ich habe ein Cloner Object, testweise nur aus 4x4x4 Grid Array mit einem Material mit Farbe "Multi-Shader" und darin alle Texturen aufgelistet.
Aber er sortiert die spaltenweise nach x, wobei y+z aber wieder gleich sind.
Dabei sollte jeder Würfel anders sein ?

Und ich musste für jede Textur erst "Hinzufügen" und dann die Datei ins Feld ziehen, das mache ich nicht 200 mal... ;)
 
Ich habe die Projekt in 3 Aufgaben aufgeteilt:
1) Würfel nummerieren: Geht, siehe Code
2) Neue Materialien erstellen und mit Textur versehen: Weiss nicht wo ansetzen
3) Den Würfeln die Materialien zuweisen: Der Code gibt die Fehlermeldung aus "Member not found"

(So richtig dreckig war, dass "tostring()" im dynamischen SDK nicht zu finden ist *Grrrrr* )



NeueMaterialienmitTextur()
{
//Neues Material "Mat1"
//Mat1 mit Textur1
}

AlleObjekteNummerieren(obj)
{
var i = 1;

while(obj)
{
obj->SetName( "Würfel" + tostring(i) );
i++;
obj = obj->GetNext();
}
}



AllenObjektenMaterialzuweisen(obj)
{
var i = 1;

while(obj)
{
println(obj->GetName());

obj->SetMaterial("Mat"); //Pfad ? (Hochgezählt wird später)
i=i+1;
obj = obj->GetNext();
}
}


main(doc, op)
{
var obj = doc->GetFirstObject();

NeueMaterialienmitTextur();

//AlleObjekteNummerieren(obj);

AllenObjektenMaterialzuweisen(obj);
}
 
Zurück