Einfache Möglichkeit, sich wiederholende benutzerdefinierte radiale Farbverläufe zu erstellen?

Ich möchte einen einfachen sich wiederholenden Verlauf für einen Verlaufsüberlagerungseffekt in Photoshop erstellen. Ich musste das manuell erstellen:

Gibt es eine einfachere Möglichkeit, ein sich wiederholendes Muster zu erstellen, indem man ein kleines entwirft und dann daraus extrapoliert? Wenn es keine Möglichkeit gibt, einen solchen Verlauf im Verlaufseditor zu entwerfen, gibt es eine Möglichkeit, ihn zu simulieren (mit dem als radial festgelegten Stil)?

Antworten (2)

Erstellen Sie eine neue Ebene und führen Sie den folgenden Code als Skript aus. Es wird ein neuer Ebenenstil mit 0 % Füllung und dem neuen Farbverlauf als Überlagerung erstellt. Die For-Schleife nach unten erzeugt einen Farbverlauf mit 21 Stufen in der Vordergrundfarbe. Jeder zweite Stopp wechselt zwischen undurchsichtig und transparent.

Sie können den Farbverlauf dann als Voreinstellung im Menü „Ebenenstile“ speichern.

var idsetd = charIDToTypeID( "setd" );
    var desc120 = new ActionDescriptor();
    var idnull = charIDToTypeID( "null" );
        var ref29 = new ActionReference();
        var idLyr = charIDToTypeID( "Lyr " );
        var idOrdn = charIDToTypeID( "Ordn" );
        var idTrgt = charIDToTypeID( "Trgt" );
        ref29.putEnumerated( idLyr, idOrdn, idTrgt );
    desc120.putReference( idnull, ref29 );
    var idT = charIDToTypeID( "T   " );
        var desc121 = new ActionDescriptor();
        var idfillOpacity = stringIDToTypeID( "fillOpacity" );
        var idPrc = charIDToTypeID( "#Prc" );
        desc121.putUnitDouble( idfillOpacity, idPrc, 0.000000 );
        var idLefx = charIDToTypeID( "Lefx" );
            var desc122 = new ActionDescriptor();
            var idScl = charIDToTypeID( "Scl " );
            var idPrc = charIDToTypeID( "#Prc" );
            desc122.putUnitDouble( idScl, idPrc, 100.000000 );
            var idGrFl = charIDToTypeID( "GrFl" );
                var desc123 = new ActionDescriptor();
                var idenab = charIDToTypeID( "enab" );
                desc123.putBoolean( idenab, true );
                var idMd = charIDToTypeID( "Md  " );
                var idBlnM = charIDToTypeID( "BlnM" );
                var idNrml = charIDToTypeID( "Nrml" );
                desc123.putEnumerated( idMd, idBlnM, idNrml );
                var idOpct = charIDToTypeID( "Opct" );
                var idPrc = charIDToTypeID( "#Prc" );
                desc123.putUnitDouble( idOpct, idPrc, 100.000000 );

                //Gradient Definition
                var idGrad = charIDToTypeID( "Grad" );
                        var desc34 = new ActionDescriptor();
                        var idNm = charIDToTypeID( "Nm  " );
                        desc34.putString( idNm, "Custom" );
                        var idGrdF = charIDToTypeID( "GrdF" );
                        var idGrdF = charIDToTypeID( "GrdF" );
                        var idCstS = charIDToTypeID( "CstS" );
                        desc34.putEnumerated( idGrdF, idGrdF, idCstS );
                        var idIntr = charIDToTypeID( "Intr" );
                        desc34.putDouble( idIntr, 4096.000000 );
                        var idClrs = charIDToTypeID( "Clrs" );
                            var list5 = new ActionList();
                                var desc35 = new ActionDescriptor();
                                var idType = charIDToTypeID( "Type" );
                                var idClry = charIDToTypeID( "Clry" );
                                var idFrgC = charIDToTypeID( "FrgC" );
                                desc35.putEnumerated( idType, idClry, idFrgC );
                                var idLctn = charIDToTypeID( "Lctn" );
                                desc35.putInteger( idLctn, 0 );
                                var idMdpn = charIDToTypeID( "Mdpn" );
                                desc35.putInteger( idMdpn, 50 );
                            var idClrt = charIDToTypeID( "Clrt" );
                            list5.putObject( idClrt, desc35 );
                                var desc38 = new ActionDescriptor();
                                var idType = charIDToTypeID( "Type" );
                                var idClry = charIDToTypeID( "Clry" );
                                var idFrgC = charIDToTypeID( "FrgC" );
                                desc38.putEnumerated( idType, idClry, idFrgC );
                                var idLctn = charIDToTypeID( "Lctn" );
                                desc38.putInteger( idLctn, 4096 );
                                var idMdpn = charIDToTypeID( "Mdpn" );
                                desc38.putInteger( idMdpn, 50 );
                            var idClrt = charIDToTypeID( "Clrt" );
                            list5.putObject( idClrt, desc38 );
                        desc34.putList( idClrs, list5 );

                        // Gradient Stops
                        var idTrns = charIDToTypeID( "Trns" );
                            var list6 = new ActionList();
                                // Create 21 stops
                                for (i = 0; i < 22; i++){
                                    var desc39 = new ActionDescriptor();
                                    var idOpct = charIDToTypeID( "Opct" );
                                    var idPrc = charIDToTypeID( "#Prc" );
                                    // Alternate opacity from 100 to 0 every other stop
                                    desc39.putUnitDouble( idOpct, idPrc, 100.000000 * ((i+1)%2) );
                                    var idLctn = charIDToTypeID( "Lctn" );
                                    // Distribute stops evenly from 0 to 4096
                                    desc39.putInteger( idLctn, 4096 * (i/20));
                                    var idMdpn = charIDToTypeID( "Mdpn" );
                                    // Set midpoint halfway between stops
                                    desc39.putInteger( idMdpn, 50 );
                                    var idTrnS = charIDToTypeID( "TrnS" );
                                    list6.putObject( idTrnS, desc39 );
                                }
                        desc34.putList( idTrns, list6 );
                var idGrdn = charIDToTypeID( "Grdn" );
                desc123.putObject( idGrad, idGrdn, desc124 );
                var idAngl = charIDToTypeID( "Angl" );
                var idAng = charIDToTypeID( "#Ang" );
                desc123.putUnitDouble( idAngl, idAng, 90.000000 );
                var idType = charIDToTypeID( "Type" );
                var idGrdT = charIDToTypeID( "GrdT" );
                var idLnr = charIDToTypeID( "Rdl " );
                desc123.putEnumerated( idType, idGrdT, idLnr );
                var idRvrs = charIDToTypeID( "Rvrs" );
                desc123.putBoolean( idRvrs, false );
                var idAlgn = charIDToTypeID( "Algn" );
                desc123.putBoolean( idAlgn, true );
                var idScl = charIDToTypeID( "Scl " );
                var idPrc = charIDToTypeID( "#Prc" );
                desc123.putUnitDouble( idScl, idPrc, 100.000000 );
                var idOfst = charIDToTypeID( "Ofst" );
                    var desc154 = new ActionDescriptor();
                    var idHrzn = charIDToTypeID( "Hrzn" );
                    var idPrc = charIDToTypeID( "#Prc" );
                    desc154.putUnitDouble( idHrzn, idPrc, 0.000000 );
                    var idVrtc = charIDToTypeID( "Vrtc" );
                    var idPrc = charIDToTypeID( "#Prc" );
                    desc154.putUnitDouble( idVrtc, idPrc, 0.000000 );
                var idPnt = charIDToTypeID( "Pnt " );
                desc123.putObject( idOfst, idPnt, desc154 );
            var idGrFl = charIDToTypeID( "GrFl" );
            desc122.putObject( idGrFl, idGrFl, desc123 );
        var idLefx = charIDToTypeID( "Lefx" );
        desc121.putObject( idLefx, idLefx, desc122 );
    var idLyr = charIDToTypeID( "Lyr " );
    desc120.putObject( idT, idLyr, desc121 );
executeAction( idsetd, desc120, DialogModes.NO );

Spielen Sie mit den Werten herum, ich denke, Sie werden es sehr nützlich finden. Hier ist ein kurzes Beispiel:

Geben Sie hier die Bildbeschreibung ein

Das Skripten eines Farbverlaufs mit Illustrator ist viel einfacher. Aber natürlich können Sie den Farbverlauf in Photoshop nicht manipulieren (oder animieren oder ...). Speichern Sie Folgendes in einer .jsDatei und führen Sie es durchFile > Scripts > Other Script...

// Create a color 
var startColor = new RGBColor();
startColor.red = 0;
startColor.green = 0;
startColor.blue = 0;

// Create a new gradient
// A new gradient always has 2 stops
var newGradient = app.activeDocument.gradients.add();
// Name the gradient to be the current time in POSIX
newGradient.name = new Date().getTime().toString();
newGradient.type = GradientType.RADIAL;

// Insert a number of intermediate stops. Here, 17.
for (i=0; i < 18; i += 1) {
   newGradient.gradientStops.add();
}

for (var i = 0; i < newGradient.gradientStops.length; i++){
    // Distribute each stop equally from 0 to 100
    newGradient.gradientStops[i].rampPoint = i * (100/(newGradient.gradientStops.length-1));
    // Each Midpoint is halfway to the next
    newGradient.gradientStops[i].midPoint = 50;
    // All colors are startColor
    newGradient.gradientStops[i].color = startColor;
    // Alternate the opacity between 0 and 100
    newGradient.gradientStops[i].opacity = ((i + 1) % 2) * 100;
}

Es erzeugt einen Farbverlauf wie diesen:Geben Sie hier die Bildbeschreibung ein

Mit Illustrator

Schritt 1: Die Kreise

Die Form der „konzentrischen Ringe“ lässt sich ganz einfach mit dem Polar Grid Tool erstellen . Aktivieren Sie das Werkzeug und Clicküberall im Dokument, um die Optionen des Werkzeugs aufzurufen. Ich verwende die folgenden Werte:

Optionen des Polargitter-Werkzeugs

5 konzentrische Teiler werden 6 gleichmäßig verteilte Kreise für uns erstellen:

Ringe

Nun zum Verlaufsteil. Dies ist in neueren Versionen (CS6+) einfacher, da sie Farbverläufe für Striche eingeführt haben. In früheren Versionen können wir einen Kunstpinsel verwenden, aber der Prozess ist ziemlich klobig.

Schritt 2a: Für CS6+

Ich habe kein CS6, daher kann ich Ihnen nicht genau zeigen, wie Sie es einrichten, aber ich kann Sie in die richtige Richtung weisen. Wenden Sie einen Farbverlauf auf den Strich an, indem Sie den Anweisungen von Scott hier folgen . Sie sollten es so ändern, dass der Farbverlauf über den Strich angewendet wird. Dies ist die Schaltfläche, die ich unten eingekreist habe:

CS6-Verlaufsbereich

Das sollte es für CS6+ tun.

Schritt 2b: Für CS5 und darunter

  1. Erstellen Sie ein Quadrat und wenden Sie den gewünschten Farbverlauf als Füllung darauf an
  2. Erweitern Sie den Farbverlauf mitObject → Expand
  3. Löschen Sie die Schnittmaske innerhalb der erweiterten Gruppe
  4. Wählen Sie die Verlaufsgruppe aus und erstellen Sie daraus einen neuen Kunstpinsel
  5. Wenden Sie Ihren Kunstpinsel auf alle Ringe an

Ich war mit diesen Anweisungen kurz in der Hoffnung, dass Sie CS6 haben, also zögern Sie nicht, um Klärung zu bitten, wenn irgendetwas davon unklar ist

Schritt 3: Bringen Sie es in Photoshop

Je nach verwendetem Farbverlauf sollten Sie so etwas erhalten haben:

endgültige Kunst

Speichern Sie es und File → Placees in Ihrem Photoshop-Dokument und Sie sind fertig.

Beachten Sie, dass es in Photoshop einen Polarkoordinatenfilter gibt . Mit ein wenig Einfallsreichtum und sorgfältiger Platzierung kann man damit wahrscheinlich einen linearen Farbverlauf in einen kreisförmigen verwandeln.