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)?
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:
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 .js
Datei 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:
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:
5 konzentrische Teiler werden 6 gleichmäßig verteilte Kreise für uns erstellen:
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.
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:
Das sollte es für CS6+ tun.
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
Je nach verwendetem Farbverlauf sollten Sie so etwas erhalten haben:
Speichern Sie es und File → Placees in Ihrem Photoshop-Dokument und Sie sind fertig.
Horatio