刺繍シミュレート

私が子供の頃は高価だったミシンも今では非常に安くなってしまい、なおかつ高機能化して、いろいろな縫い方ができるようになっています。糸で縫うと言えば刺繍です(?) そこで、手作業では面倒な一定の幅で縫っていくような直線(パス)を生成するスクリプトが以下のものです。これで刺繍のようなものが手軽に・・・できるわけではありません。直線のみなので曲線などは変形などを使って処理しないといけません。Photoshopのフィルタと組み合わせないと、やはりリアルな刺繍っぽくなりません。単色のパスのみなので当然と言えば当然ですが・・・
今回はver 10とver CS/CS2のスクリプトです。ver 10の場合はあらかじめスクリプト内のパラメータを設定し保存してから実行してください。コメントの■の部分のパラメータを変更すればOKです。整数だけでなく小数値や負数も指定できます。
ver CSの場合は、そのまま実行してください。ver CS2の場合、このまま実行すると文字化けしてしまうことがあるため、Extend Script Tool Kit上から実行するか、日本語の部分(promtp())を英語に変更するなりしてから実行してください。

●ver 10
function setColor(r,g,b)
{
var tmpColor = new RGBColor();
var newColor = new Color();
tmpColor.red = r;
tmpColor.green = g;
tmpColor.blue = b;
newColor.rgb = tmpColor;
return newColor;
}

redColor = setColor(255,0,0); // 赤色
startX = 0; // ■開始X座標
endX = 300; // ■終了X座標
dy = 10; // ■縫い幅
step = 8; // ■糸の間隔
diff1 = 2; // ■縫い幅の誤差
diff2 = 2; // ■間隔の誤差
y = 0; // Y座標は原点に固定
docObj = activeDocument;
pObj = docObj.pathItems.add();
pData = new Array();
for (cnt=0,i=startX; i<endX; i+=step)
{
n1 = Math.random()*diff1;
n2 = Math.random()*diff2;
pData[cnt++] = [i+n2,y-dy+n1];
pData[cnt++] = [i+n2+step,y+dy+n1];
}
pObj.setEntirePath(pData);
pObj.filled = false; // 塗りなし
pObj.stroked = true; // 線あり
pObj.strokeWidth = 1; // 線幅1ポイント
pObj.strokeColor = redColor; // 線の色を指定(赤色)


●ver CS/CS2
function setColor(r,g,b)
{
var tmpColor = new RGBColor();
tmpColor.red = r;
tmpColor.green = g;
tmpColor.blue = b;
return tmpColor;
}

redColor = setColor(255,0,0); // 赤色
startX = parseFloat(prompt("開始X座標",0));
endX = parseFloat(prompt("終了X座標",300));
dy = parseFloat(prompt("縫い幅",10));
step = parseFloat(prompt("糸の間隔",8));
diff1 = parseFloat(prompt("縫い幅の誤差",2));
diff2 = parseFloat(prompt("間隔の誤差",2));
y = 0; // Y座標は原点に固定
docObj = activeDocument;
pObj = docObj.pathItems.add();
pData = new Array();
for (cnt=0,i=startX; i<endX; i+=step)
{
n1 = Math.random()*diff1;
n2 = Math.random()*diff2;
pData[cnt++] = [i+n2,y-dy+n1];
pData[cnt++] = [i+n2+step,y+dy+n1];
}
pObj.setEntirePath(pData);
pObj.filled = false; // 塗りなし
pObj.stroked = true; // 線あり
pObj.strokeWidth = 1; // 線幅10ポイント
pObj.strokeColor = redColor; // 線の色を指定(赤色)


同じような処理はIllustratorだけでなくPhotoshopでも可能です。また、興味&余力のある方は水平方向だけでなく任意の直線や曲線に対しても縫っていくように描くように改造してみると良いかもしれません。エクセルなどで座標を設定しておいて座標値を読み出し、より複雑に縫うこともできると思います。




[サンプルをダウンロード]