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;
    }
}