Sortierscript
Dieses jScript Script für Softimage-XSI sortiert alle zuerst angewählten Objekte in die danach ausgewählten Gruppen oder Passes. Damit kann man zum Beispiel 1000 Steine zufällig in 6 verschiedene Texturgruppen sortieren. Hier der Quellcode:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | //************************************************ //*** Dieses Scipte verteilt alle zuerst angewählten Objekte //*** auf die danach angewählten Gruppen //*** Zufällig und vollautomatisch :) //********************************************** // *** Variablen *** var OArray = new Array(Selection.count); var GroupArray = new Array(Selection.count); var temp = 0; var anzGrup = 0; var anzObj = 0; if (test()){ // *** Packe alle Gruppennamen in ein Array *** for (i = 0; Selection(i).type != "#Group"; i++){ OArray[i] = Selection(i).FullName; temp = i; } // *** Packe alle Objektnamen dahinter *** for( j = temp; j < selection.count; j++){ GroupArray[j-temp] = selection(j).FullName; } // *** mehr Variablen *** anzObj = temp +1 ; anzGroup = (GroupArray.length - temp); // *** ein Array in dem die abstände zwischen // ***1 und 0 in die Anzahl der Gruppen unterteilt wird *** var randArr = new Array(anzGroup); for (j = 0; j < anzGroup ; j++){ randArr[j] = (1 / anzGroup) * j; } randArr[anzGroup-1] = 1; // *** Es werden alle Objekte durchgegangen und dann wird geguckt, // *** wo zwischen dem randArr die einzelnen teile liegen *** for( i = 0; i < anzObj; i++){ zahl = Math.random(); for ( j = 0; j < anzGroup -1; j++){ if(zahl >= randArr[j] && zahl <= randArr[j+1]){ CopyPaste(Selection(i).FullName, null, GroupArray[j+1], 1); } } } } // *** Fehlerabfrage function test(){ if ( Selection(Selection.count-1).type == "#Group" ){ return true; }else{ LogMessage("Mindestens die Letzte Auswahl muss eine Gruppe oder Partition sein"); return false; } } |