IllustratorとPhotoshopでグラデーションを複数回繰り返す方法は?


12

グラデーションを「n」回繰り返す方法。たとえば、下の画像例で手動で行ったように、黒から白へのグラデーションを(ストロークのパスに沿って)5回繰り返します。

グラデーションスライダーを手動でコピーせずに、50または100などの「n」倍に自動化する方法はありますか?

手動で複数回繰り返される勾配


ヴィシュヌ、それをアクションに変えて、あなたが望むのと同じ頻度で同じことをするために記録してみましたか?大騒ぎはありません。
ショーン

回答:


7

スクリプトを使用してください!

他の人が答えたように、スクリプトを使用する必要があります。しかし、ここでの他のソリューションのいくつかはRGBのみを使用しますが、私のソリューションではドキュメントから選択した色を使用します。また、一部のソリューションでは、ラップアラウンドポイントで色が生成されなかったり、グラデーションストップが多かったり重複したりしたため、スクリプトでこれらの問題に対処しています。

使用するには、グラデーション用の色で塗りつぶされた2つ以上のパスを選択し、プロンプトが表示されたらグラデーションを繰り返す回数を入力します。

http://pastie.org/10924009

編集:pastieサイトが機能しないため、以下のコードを含めました:

// select two paths, then run this script
if (app.activeDocument.selection.length < 2) {

    alert("Please select two or more paths with fills.");

} else {

    var cycles = Number(prompt ("Repeat the gradient how many times?")) || 5;  
    var myselection = app.activeDocument.selection;
    var colors = [];

    for (var i = 0; i < myselection.length; i++) {
        var newColor = myselection[i].fillColor;
        colors.push(newColor);
    }

    var stops = colors.length * cycles - 1; // “stops” does not include default 2 stops
    var interval = 100 / (cycles * colors.length); // ... the distance between stops

    var newGradient = app.activeDocument.gradients.add();  

    newGradient.type = GradientType.LINEAR;     // asymmetric, for 3 or more colours
    //newGradient.type = GradientType.RADIAL;   // symetric, for 3 or more colours

    //  the default 2 gradient stops (at beginning and end)
    //  should be the same colour, so that the gradient smoothly wraps around:
    newGradient.gradientStops[0].color = colors[0]; 
    newGradient.gradientStops[1].color = colors[0]; 

    // now add stops between beginning and end stops:
    for ( i = 1; i <= stops; i++ ) {

        var thisStop = newGradient.gradientStops.add();
        thisStop.rampPoint = i * interval;
        thisStop.color = colors[i % colors.length];

    }

    // to get a even result, the first and last rampPoints cannot be 0 and 100:
    newGradient.gradientStops[0].rampPoint = 0.1;
    newGradient.gradientStops[stops + 1].rampPoint = 99.9;
}

例1:白黒、6回繰り返す、CMYK文書:

例1

例2:3色のグラデーション、6回の繰り返し:

例2

例3:RGBドキュメント、6色、20回の繰り返し。塗りつぶされたパスがどのように重なり合っているかに注意してください。その積み重ね順序(前から後ろ)がグラデーションの色の順序を決定します。

例3

グラデーションの色を変更する:グラデーションを適用したパスを選択し、スウォッチパネルのフライアウトメニュー→選択した色を追加を選択します。新しいグローバルスウォッチがスウォッチパネルに追加され、編集すると、表示されるすべての場所で更新されます。

例4


非常に素晴らしい。私はあなたが選択から色を得るという事実が好きです。それを考えていませんでした。
PieBie

驚くばかり!ただし、paste.orgリンクは機能しません。確認して更新してください。
ヴィシュヌ

1
@Vishnu:pastieサーバー全体がダウンしているようです。私はあなたがそれが再び現れるまでただ忍耐を必要とするだろうと推測しています。
PieBie

6

これは、Illustratorスクリプトを使用して実現できます。68ページの「グラデーション」にあるJavaScriptリファレンスPDFの CC15.3のドキュメントを確認してください。

色を作成します。

// Create the colors
var startColor = new RGBColor();  
startColor.red = 0;  
startColor.green = 100;  
startColor.blue = 255;  

var middleColor = new RGBColor();
middleColor.red = 252;  
middleColor.green = 238;  
middleColor.blue = 33;

var endColor = new RGBColor();  
endColor.red = 220;  
endColor.green = 0;  
endColor.blue = 100;  

グラデーションを作成します。

var newGradient = app.activeDocument.gradients.add();  
newGradient.name = "new_gradient_75097";  

線形グラデーションを作成します。

newGradient.type = GradientType.LINEAR;  

または放射状グラデーションを作成します。

newGradient.type = GradientType.RADIAL; 

複数の種類のグラデーションを作成する場所は次のGradientStopsとおりです。

// Modify the first gradient stop  
newGradient.gradientStops[0].rampPoint = 0  
newGradient.gradientStops[0].midPoint = 20;  
newGradient.gradientStops[0].color = startColor;  
// Modify the middle gradient stop  
newGradient.gradientStops.add();
// Modify the last gradient stop  
newGradient.gradientStops[1].rampPoint = 70;  
newGradient.gradientStops[1].midPoint = 80;  
newGradient.gradientStops[1].color = endColor;

申し訳ありませんが、グラデーションをn回作成する方法を完全には説明しなかったため、プロンプトとループを含めるようにスクリプトをさらに変更しました。

呼び出し回数:

var countgradient = Number(prompt ("Enter Gradient Count"));  

ループを作成し、さらにグラデーションの量を追加します。

for ( i =0; i < countgradient; i++ ) {
    var origCount = newGradient.gradientStops.length;
    var lastStop = newGradient.gradientStops[origCount-1];

    var firstStop = newGradient.gradientStops.add();
    firstStop.rampPoint = lastStop.rampPoint;
    lastStop.rampPoint = lastStop.rampPoint - 1;
    firstStop.color = endColor;

    var secondStop = newGradient.gradientStops.add();
    secondStop.rampPoint = lastStop.rampPoint;
    lastStop.rampPoint = lastStop.rampPoint - 2;
    secondStop.color = startColor;
}

上部のリンクから65-71ページにあるものを混合したコード:

1回の例:

ここに画像の説明を入力してください

5回の例:

ここに画像の説明を入力してください

変更lastStop.rampPoint - nして、着陸する場所を調整できます。お役に立てれば。


5

これは、グラデーションをストロークとして使用している場合にのみ機能します(質問のように)。グラデーションを(特定の回数ではなく)無限に繰り返す場合は、手順2と3をスキップして、アートブラシの代わりにパターンブラシを使用できます。CCでは、ブラシで画像を使用できるため、グラデーションを展開する代わりにラスタライズできますが、CS6を使用しているのでテストできません。

  1. 繰り返したいグラデーションで塗りつぶされた単一の長方形を設定します。

ここに画像の説明を入力してください

  1. 変形効果(効果→変形&変形→変形...)を使用して、長方形を複製します。水平移動を長方形の幅に設定し、必要な数のコピーを設定します。

ここに画像の説明を入力してください

  1. 変形効果を展開します(オブジェクト→外観を展開)。

  2. ブラシでグラデーションを使用することはできません。そのため、グラデーションを拡張する必要があります(オブジェクト→展開)。

    グラデーションを展開すると、展開されたグラデーションにクリッピングマスクが残ります。レイヤーを通過してそれらを削除する必要があります(または、マスクがなくなるまで右クリックして[グループ解除]、[クリッピングマスクの解放]を続けます)。

ここに画像の説明を入力してください

  1. 展開したグラデーションを[ブラシ]パネルにドラッグし、[アートブラシ]を選択します。ブラシのデフォルトオプションはほとんどの場合OKなので、[OK]を押してください。いつでも戻ってブラシオプションを後で調整できます。

  2. 新しいブラシを適用します。

ここに画像の説明を入力してください


5

Illustrator JSマニュアルに基づいて、以下のコードを作成しました。このコードはまさにあなたが望むことをします:

  • 黒と白の2つのカラーストップを持つグラデーションを作成します
  • 5回繰り返します
  • アクティブな(選択された)要素にストロークとして適用します

より一般的なバージョンは、行の下にあります。

ここに画像の説明を入力してください

(1)最初に、グラデーションの反復に必要な色の数と時間を設定します。

//Change these
var numberOfColors = 2; //Change this to the desired number of colors in the gradient
var iteration = 5; //Change this to the desired times you want to repeat the gradient

(2)次に、後で使用する変数を設定します。GradientInterval各点はで設定する必要があるパーセンテージの位置を算出します。totalNumberofStops自明です。colors配列は、後に使用されます。

//Don't change these
var i,j;
var gradientInterval = 100 / numberOfColors / iteration;
var totalNumberOfStops = numberOfColors * iteration;
var colors = [];

(3)その後、色を定義できます。numberOfColors最初に設定した色とまったく同じ数の色が必要です。不足している色はデフォルトで黒になります。

//Don't forget to push the colors to the colors array!

var color1 = new RGBColor();
color1.red = 0;
color1.green = 0;
color1.blue = 0;
colors.push(color1);

var color2 = new RGBColor();
color2.red = 255;
color2.green = 255;
color2.blue = 255;
colors.push(color2);

(4)グラデーションを作成して名前を付けます。また、タイプを設定できるようになりました。

//Let's initiate the gradient & name it
var newGradient = app.activeDocument.gradients.add();
newGradient.name = "new_gradient";

//Choose the gradient type here
//newGradient.type = GradientType.RADIAL; //Uncomment the one you need
newGradient.type = GradientType.LINEAR; //Uncomment the one you need

(5)さて、良い部分です。まず、ループをループして、totalNumberOfStops各ストップを作成し、グラデーションに追加します。新しいストップを作成し、最後のストップよりさらに1つ設定します。次に、colors配列から正しい色を取得する必要があります。ループインデックスの係数を色の数で除算した値が0の場合、すべての色が揃っていることがわかり、再度開始する必要があるため、カラーインデックスをリセットします。

5回ループしたい6色があるとします。30ストップあります。を使用してすべての色をループしますj。場合jなる6にはより多くの色は、(6つのアレイ内の第七色であるが、わずか6色配列である)が存在しません。したがって、6の倍数ごとに0から始めます。それ以外の場合は、次の色に進みます。

ここで、100%で最終的なカラーストップを追加するだけです。

//Now here is where the magic starts
for(i=0;i<totalNumberOfStops;i++){
    var newStop = newGradient.gradientStops.add();
    newStop.rampPoint = i * gradientInterval;
    var modulus = i % numberOfColors;
    if(modulus === 0){
        j = 0;
    }else{
        j+=1;
    }
    newStop.color = colors[j];
}
var lastStop = newGradient.gradientStops.add();
lastStop.rampPoint = 100;
lastStop.color = colors[colors.length-1];

(6)最終ステップ:ストロークにグラデーションを適用します。できた パーティー!

//Apply gradient stroke to selected object
var colorOfGradient = new GradientColor();
colorOfGradient.gradient = newGradient;
var topPath = app.activeDocument.pathItems[0];
topPath.stroked = true;
topPath.strokeWidth = 140;
topPath.strokeColor =colorOfGradient;

(7)これを行うコードが見つからなかったため、ストロークを「ストロークに沿ってグラデーションを適用」に手動で設定する必要がある場合があります。

グラデーションストローク


このコードは、お客様のケース専用に作成されました。より一般的なバージョンは、http//pastie.org/10921740にあります。

いくつかの例:

2回繰り返される2色のグラデーション: ここに画像の説明を入力してください

10回繰り返される5色のグラデーション: ここに画像の説明を入力してください

50色を繰り返す2色のグラデーション: ここに画像の説明を入力してください

50色が50回繰り返される途方もないグラデーション: ここに画像の説明を入力してください


このスクリプトは、グラデーションが完全にシームレスにならないようにする2つの追加のグラデーション停止(開始時と終了時)があることを除いて、優れています。グラデーションを作成すると、デフォルトで2つのストップがあります。
MG_

はいIllustatorは、スクリプトから生成するとき、たとえ指定しなくても常に100%でカラーストップを追加します。ただし、指定しない場合、色は黒に設定されます。私の回避策は、startcolorで100%の余分なカラーストップを追加することでした。シームレスではありませんが、思いつく限り最高です。
PieBie

ああ、いや、私は今、ペーストのリンクが古いバージョンであるので、更新します。
PieBie

0

私はまったく同じ問題を抱えていましたが、MG_によるその答えはまさに私が必要としていたものでした!

しかし、しばらくして、私は時々滑らかではないグラデーションもシームレスでないグラデーションも必要であることに気付きました。良い解決策を見つけるのは少し苦痛だったので、同じ問題を抱えている他の人のために、ここで修正されたスクリプトを共有しています。また、すべてをセットアップするためのシンプルなUIを含めました。

var run = true;
if (app.activeDocument.selection.length < 2) {
    alert("Please select two or more paths with fills.");
} else {
    var dlg = new Window("dialog{text:'Create repeated gradient'}");

    dlg.location = [500,50];
    (dlg.alertBtnsPnl1 = dlg.add('panel', undefined, 'Color transition:')).helpTip = "Smooth or rough transition"; 
    (dlg.alertBtnsPnl1.selectS = dlg.alertBtnsPnl1.add('radiobutton', [15,15,95,35], 'Smooth' )).helpTip = "Smooth color transition"; 
    (dlg.alertBtnsPnl1.selectR = dlg.alertBtnsPnl1.add('radiobutton', [15,15,75,35], 'Rough' )).helpTip = "Sharp color transition"; 
    dlg.alertBtnsPnl1.orientation='row';
    dlg.alertBtnsPnl1.selectS.value = true;

    (dlg.alertBtnsPnl3 = dlg.add('panel', undefined, 'Gradient type:')).helpTip = "Linear or radial gradient"; 
    (dlg.alertBtnsPnl3.selectL = dlg.alertBtnsPnl3.add('radiobutton', [15,15,95,35], 'Linear' )).helpTip = "Linear gradient"; 
    (dlg.alertBtnsPnl3.selectR = dlg.alertBtnsPnl3.add('radiobutton', [15,15,75,35], 'Radial' )).helpTip = "Radial gradient"; 
    dlg.alertBtnsPnl3.orientation='row';
    dlg.alertBtnsPnl3.selectL.value = true;

    (dlg.alertBtnsPnl2 = dlg.add('panel', undefined, 'Gradient repeats:')).helpTip = "Gradient repeat count"; 
    (dlg.alertBtnsPnl2.slide = dlg.alertBtnsPnl2.add('slider', [25,15,165,39], 'Set repeat count for gradient:')).helpTip = "Use Slider to set a repeat count"; 
    dlg.alertBtnsPnl2.slide.value = 2; 
    (dlg.alertBtnsPnl2.titleEt = dlg.alertBtnsPnl2.add('edittext', [100,15,160,35], dlg.alertBtnsPnl2.slide.value)).helpTip = "Enter a repeat count value"; 
    dlg.alertBtnsPnl2.titleEt.text = Math.ceil(dlg.alertBtnsPnl2.slide.value); 
    dlg.alertBtnsPnl2.orientation='row';

    (dlg.alertBtnsPnl4 = dlg.add('panel', undefined, 'First and last colors:')).helpTip = "Define type of gradient loop";
    (dlg.sameStartAndEnd = dlg.alertBtnsPnl4.add('checkbox', [25,25,235,39], 'Start and end with same color')).helpTip="Use this for seamless gradient"; 
    dlg.sameStartAndEnd.value = true; 
    dlg.alertBtnsPnl4.orientation='column';

    dlg.btnPnl = dlg.add('group', undefined, 'Do It!'); 
    dlg.btnPnl.orientation='row';
    dlg.btnPnl.buildBtn1= dlg.btnPnl.add('button',[15,15,115,35], 'Cancel', {name:'cancel'}); 
    dlg.btnPnl.buildBtn2 = dlg.btnPnl.add('button', [125,15,225,35], 'OK', {name:'ok'}); 
    dlg.alertBtnsPnl2.slide.onChange= sliderChanged;
    dlg.alertBtnsPnl2.titleEt.onChanging = eTextChanged;
    dlg.btnPnl.buildBtn1.onClick= actionCanceled;
    dlg.show();

    if(run){
        var smooth = (dlg.alertBtnsPnl1.selectS.value) ? true : false;
        var cycles = dlg.alertBtnsPnl2.slide.value;
        var myselection = app.activeDocument.selection;
        var colors = [];

        for (var i = 0; i < myselection.length; i++) {
            var newColor = myselection[i].fillColor;
            colors.push(newColor);
        }

        var stops;
        var interval;
        if(dlg.sameStartAndEnd.value && !smooth){
            stops = colors.length * cycles - 2;
            interval = 100 / ((cycles * colors.length)+1);
        }else{
            if(smooth && !dlg.sameStartAndEnd.value){
                stops = colors.length * cycles - 2;
                interval = 100 / ((cycles * colors.length)-1);
            }else{
                stops = colors.length * cycles - 1;
                interval = 100 / (cycles * colors.length);
            }
        }

        var allStops = stops;
        var newGradient = app.activeDocument.gradients.add();  

        newGradient.type = (dlg.alertBtnsPnl3.selectL.value) ? GradientType.LINEAR : GradientType.RADIAL;

        newGradient.gradientStops[0].color = colors[0]; 
        if(dlg.sameStartAndEnd.value) newGradient.gradientStops[1].color = colors[0]; 
        else newGradient.gradientStops[1].color = colors[colors.length - 1]; 

        if(!smooth){
            var thisStop = newGradient.gradientStops.add();
            thisStop.rampPoint = interval-0.1;
            thisStop.color = colors[0];
            allStops++;
        }

        for(i = 1; i <= stops; i++){
            var thisStop = newGradient.gradientStops.add();
            thisStop.rampPoint = i * interval;
            thisStop.color = colors[i % colors.length];

            if(!smooth && i<(stops+1)){
                var thisStop = newGradient.gradientStops.add();
                thisStop.rampPoint = (i+1) * interval - 0.001;
                thisStop.color = colors[i % colors.length];
                allStops++;
            }
        }

        if(!smooth && dlg.sameStartAndEnd.value){
            var thisStop = newGradient.gradientStops.add();
            thisStop.rampPoint = 100 - (interval*2);
            thisStop.color = colors[colors.length-1];
            allStops++;
            var thisStop = newGradient.gradientStops.add();
            thisStop.rampPoint = 99.9 - interval;
            thisStop.color = colors[colors.length-1];
            allStops++;
            var thisStop = newGradient.gradientStops.add();
            thisStop.rampPoint = 100 - interval;
            thisStop.color = colors[0];
            allStops++;
        }

        newGradient.gradientStops[0].rampPoint = 0.1;
        if(dlg.sameStartAndEnd.value)newGradient.gradientStops[allStops + 1].rampPoint = 99.9;
    }
}

function actionCanceled() { 
    run = false;
    dlg.hide();
}

function sliderChanged() { 
    dlg.alertBtnsPnl2.slide.value = Math.ceil(dlg.alertBtnsPnl2.slide.value);
    dlg.alertBtnsPnl2.titleEt.text = Math.ceil(dlg.alertBtnsPnl2.slide.value);
}

function eTextChanged() { 
    dlg.alertBtnsPnl2.titleEt.text = Math.ceil(dlg.alertBtnsPnl2.titleEt.text);
    dlg.alertBtnsPnl2.slide.value = Math.ceil(dlg.alertBtnsPnl2.titleEt.text);
}

したがって、基本的にはリンクした答えと同じように機能しますが、いくつかの追加オプションがあります: ここに画像の説明を入力してください


-3

まあ、私はグラデーションをずっと使用しません。最初にあなたが持っているようなグラデーションを作成し、それをキャンバスで埋めてパターンを定義します(編集>パターンの定義)。次に、レイヤーに移動します。新しい塗りつぶしレイヤーとパターンを選択します。既存のレイヤーをクリッピングマスクとして使用できます。現在、「n」は「スケール」であるため、100%は1、50%はn = 2などです。スケールが小さいほど、パターンとグラデーションがより繰り返し可能になります。

私が取る2番目のアプローチは、「ステップアンドリピート」です。この複数の「波状」グラデーションをどこでどのように使用したいかはわかりませんが、「S&R」はphotoshopで物事を増やすのに非常に便利です。「ctrl(cmd)+ alt + t」を押すだけで目的の操作(オブジェクトの拡大縮小、移動、回転)を実行し、Enterキーを押して「shift + ctrl(cmd)+ alt + t」を使用すると、Photoshopがあなたがしたことを再現します。オブジェクトを回転、移動、拡大縮小すると、Psは繰り返しショートカットを押すたびにそのようになります。 ここに画像の説明を入力してください

ここでは、2番目に大きいエンベロープで遊んだ後、ステップを繰り返しました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.