Skript für zufällige Bewegung (Scatter)

Ich habe Skripte für zufällige Deckkraft, zufällige Größenänderung, zufällige Drehung usw. gefunden (und verwendet), aber ich kann anscheinend keine finden, die eine "zufällige Verschiebung / Bewegung" ausführt.

Bei den anderen oben genannten Skripten wählen Sie einfach die Pfade aus, führen das Skript aus und geben einen Minimalwert und einen Maximalwert ein, und der Computer ordnet ihn zufällig für Sie an. (Sagen wir min. 20 % Deckkraft, max. 80 % Deckkraft – sie werden alle zwischen 20-80 % Deckkraft liegen)

Ist dieses Skript schwierig zu erstellen?

Könnte es nicht einfach eintreten min -Xund min -Yzu max Xund max Yeine Bewegung sein? Dann würde der Computer einfach einen zufälligen Wert auswählen, wie er es in den anderen Skripten tut.

Möchten Sie, dass es eine Auswahl von Artikeln abarbeitet?
@ Silly-V ja ...
Nun, Sie könnten genauso gut das Dialogfeld „Transformieren“ und das Kontrollkästchen „Zufällig“ sowie die Bewegungseinstellungen verwenden, um den Variationsbereich zu erstellen.
Nein, es ist nicht schwer, es in etwa 3 Minuten zu bauen (aber ich habe bis morgen keinen Computer, auf dem ich Illustrator ausführen kann). aber dies ist in den transform each-Befehl eingebaut.
Mit dem Transformationseffekt kann ich ihn nur in eine Richtung bewegen, nicht in beide (ich kann nicht zwischen -10 und 10, nur 0 und 10)
Mach es zweimal, einmal nach links und einmal nach rechts. Auf diese Weise erhalten Sie auch eine schönere Verteilung.
@joojaa aaaaund deswegen wollte ich ein script damit ich das alles auf einmal mache, einfach die werte eingeben und boom :D
Ja, aber ein Skript kann nicht als Effekt verwendet werden. Aber ja, ich werde ein Drehbuch schreiben, sobald ich einen Computer habe.
@joojaa hier ist ein Link für RandomResize, der wahrscheinlich nur ein paar Änderungen erfordert, damit er sich bewegt, anstatt die Größe zu ändern.
Ja, aber die Größenänderung ist eine 1D-Variante, während die Bewegung in 2D viel mehr mögliche Verteilungen auf 2D ist. Wie auch immer, zufällig ist relativ einfach, es sei denn, Sie möchten kryptografische Sicherheit.

Antworten (1)

Geben Sie hier die Bildbeschreibung ein

Hier ist eine Implementierung von Uniform Box Scatter

scatter_box(activeDocument.selection, 100, 100);

function scatter_box(items, xoffset, yoffset){
    for(var i=0;i<items.length;i++){
       var oldpos = items[i].position;
       items[i].position= [oldpos[0]+Math.random()*xoffset-xoffset/2,
                           oldpos[1]+Math.random()*yoffset-yoffset/2];    
    }    
}

Hier für gleichmäßige Scheibenstreuung.

scatter_disk(activeDocument.selection, 50);


function scatter_disk(items, rad){
    for(var i=0;i<items.length;i++){
       var oldpos = items[i].position;
       var r = Math.sqrt(Math.random()*rad*rad);
       var theta = Math.random()*2*Math.PI;
       items[i].position= [oldpos[0]+r*Math.sin(theta),
                           oldpos[1]+r*Math.cos(theta)];    
    }    
}

Natürlich können Sie auch andere zufällige Verteilungen verwenden.


GUI-Version

#target illustrator

buildGUI();

function buildGUI(){
    var resource =
    "dialog { text:'jooScatter',\
        properties:{ closeButton:true, maximizeButton:false,\
            minimizeButton:false, resizeable:false },\
        orientation:'row', spacing:2, margins:5,\
        alignChildren:['left','fill'],\
        g: Group {\
                alignChildren:['left','fill'],\
                orientation:'column', spacing:20,margins:5,\
            p1: Panel {\
                text: 'Scatter Offsets:',\
                g1: Group {\
                    orientation:'column',\
                    x: Group {\
                        st: StaticText { text:'x width:'},\
                        f: EditText {text:'100', characters:20}\
                    },\
                    y: Group {st2 : StaticText{ text:'y width:'},\
                        f: EditText { text:'100' , characters:20 },\
                    },\
                },\
            },\
           g2: Group { alignment: 'right', orientation:'row',\
           apply: Button { text: 'Apply'},\
           cancel: Button { text:'Cancel'},\
       }\
       }\
    }"
    var win = new Window (resource);

    var cancel = function() {
         win.close(0);
    }
    var apply = function() {
         scatter_box(activeDocument.selection,
            eval(win.g.p1.g1.x.f.text),
            eval(win.g.p1.g1.y.f.text)
         );
         redraw();
    }

    win.g.g2.apply.onClick = apply;
    win.g.g2.cancel.onClick = cancel;

    win.show();



}

function scatter_box(items, xoffset, yoffset){
    for(var i=0;i<items.length;i++){
       var oldpos = items[i].position;
       items[i].position= [oldpos[0]+Math.random()*xoffset-xoffset/2,
                           oldpos[1]+Math.random()*yoffset-yoffset/2];    
    }    
}    

GIF davon in Aktion hier

Diese Skripte sind Scatter-Skripte, aber der Wert ist bereits im Skript codiert. Gibt es eine Möglichkeit, ein Popup-Fenster zu erstellen, in das ich einen Bereich eingeben kann, in dem es streuen soll? (ein bisschen wie die anderen Skripte, die ich in meiner Frage erwähnt habe)
@WELZ Sicher, das ist nur mehr Arbeit für keine besondere Belohnung
Gibt es eine Möglichkeit, die Pfade zufällig zwischen (-X und X) und (-Y und Y) zu verschieben? Wobei X und Y manuell eingegeben werden
Die Belohnung ist, dass nicht jedes Dokument/jede Gruppe von Pfaden die gleiche Größe hat, also müsste ich ständig das Skript bearbeiten, um es für dieses Projekt anzupassen.
@WELZ sicher, aber Sie können auch das erweiterte Skript öffnen und scatter_box (activeDocument.selection, 100, 100) eingeben , da der Text dort ist, ändern Sie ihn einfach danach und drücken Sie die Eingabetaste.
Die GUI-Schicht ist schrecklich, also würde ich das lieber nicht tun. Es ist nicht so, als würde es einen großen Unterschied für Ihren Workflow machen, wenn Sie einfach das Skriptfenster offen lassen
Es macht einen Unterschied in meinem Arbeitsablauf, weil ich normalerweise keine Skripte offen lasse. Ich weiß zu schätzen, was Sie bisher geleistet haben! :-)
@WELZ GUI hinzugefügt. Ich weiß nicht, warum man eine am Bildschirm ausgerichtete Box haben möchte, wenn sie beliebig gedreht werden könnte, aber Ihr Gift, denke ich.
Funktioniert perfekt für das, was ich brauche, vielen Dank!