ちょっと前の記事で作ったテンプレートをちょっとだけ(自分が)使いやすいように更新してみた。
絵コンテ用紙テンプレート
画像は見本です、下のボタンからzipをダウンロードして、展開して使用してください。
中身はA4サイズのpsdデータとなっており、文字や数字はテキストレイヤーでダミー文章が入っています。
任意に書き換えて使用してください。
更新:2019年4月9日
変更点と使い方
変更点:Pictureをスマートオブジェ化
“Picture”をスマートオブジェに対応しました。スマートオブジェにはw1920×h1080サイズの画像が埋め込んであるのでそちらを差し替えることで“Picture”内の枠にデフォルトで収まるようになってます。
また、スマートオブジェクトですので任意のサイズに拡大縮小も容易にできます。
さらにそのほかの利点としては、画像を埋め込みやすいという点で他のアプリで描いた画像や、写真画像の配置も容易に対応できます。
レイヤー名「pict*」(末尾は数字)
注意:名称変更・削除不可
変更点:各Pictureに枠を追加
各Pictureのフォルダ内に枠用のシェイプレイヤー(レイヤー名「枠*」(末尾は数字))を追加しています。
カメラワークによる枠の変動を表す際に矩形の枠として使用できます。
変更点:画像アセットの対応
画像アセット対応したことにより各Pictureの画像を自動で生成しpngデータとして吐き出すようにしています。
Vコンテなどの素材として簡易的に画像にします。
レイヤーフォルダ(レイヤーセット)名「pict*.png」(*は数字)
注意:名称変更・削除不可
親のレイヤーフォルダ「pict」も名称変更・削除不可
変更点:memo欄の追加
下が余ってたのでメモ欄にしました。
ご自由にお使いください。
jsx スクリプト(おまけ)
“Picture”をスマートオブジェクトにしたことで拡大縮小や元のサイズも変動が容易になりました。
しかし作業を進めていると場合によっては“Picture”の枠からズレた配置になることがあるかと思います。
そういう場合に“Picture”のスマートオブジェを自動で整列するスクリプトを用意しました。
ズレが気になるという場合に使ってくださいね。
const defItem = {
posX:356,
posY:496,
addY:531,
pict:"pict",
};
const folderName = new Array();
folderName[0] = "pict1.png";
folderName[1] = "pict2.png";
folderName[2] = "pict3.png";
folderName[3] = "pict4.png";
folderName[4] = "pict5.png";
const layName = new Array();
layName[0] = "pict1";
layName[1] = "pict2";
layName[2] = "pict3";
layName[3] = "pict4";
layName[4] = "pict5";
var docObj = activeDocument;
docObj.activeLayer = docObj.layers[0];
var rootLayerSet = docObj.layerSets[0];
var child1LayarSetNum= rootLayerSet.layerSets.length;
//run
docObj.suspendHistory("script:Act_SB_pictPlacement","run()");
function run(){
try {
new searchFolder(rootLayerSet,child1LayarSetNum);
}catch(e){
alert("error("+e+")");
}
}
//「pict」フォルダを探す
function searchFolder(set,child){
for (var i=0; i <child; i++){
if (set.layerSets[i].name == defItem.pict){
var child1LayarSet = set.layerSets[i];
var child2LayarSetNum= child1LayarSet.layerSets.length;
for(var j=0;j<child2LayarSetNum;j++){
new searchFolderChild(child1LayarSet,child2LayarSetNum,j);
}
}
}
}
//各pict内のスマートオブジェを探し整列処理をする
function searchFolderChild(set,child,count){
for (var i=0; i <child; i++){
if (set.layerSets[i].name == folderName[count]){
var child2LayarSet = set.layerSets[i];
var child3LayarNum= child2LayarSet.artLayers.length;
for (var j=0;j<child3LayarNum;j++){
if (child2LayarSet.artLayers[j].name == layName[count]){
var targetLayer = child2LayarSet.artLayers[j];
var targetLayerBounds = targetLayer.bounds;
var resetX = parseInt(targetLayerBounds[0]) * -1;
var resetY = parseInt(targetLayerBounds[1]) * -1;
targetLayer.translate(resetX,resetY);
var addNum = defItem.addY*count;
targetLayer.translate(defItem.posX,defItem.posY+addNum);
}
}
}
}
}
仕様
“Picture”を 配置する座標はデフォルトのテンプレートの座標が基本の配置座標になります。
サイズや解像度の変更や元々のテンプレートのラインの位置などを変更した場合は正確な座標で配置されませんので、ご容赦頂ければと思います。
あくまでデフォルトの状態での使用を前提としております。
変更したい場合は下記の部分の数値を変えると一応自由にできるかと思います。
const defItem = {
posX:356,
posY:496,
addY:531,
pict:"pict",
};
左上を原点(x0y0)とし
posX:配置するx座標
posY:配置するy座標(一番上のPictureの座標)
addY:次のPictureの配置する間隔(全て等間隔で縦に並びます)
主な流れは、まずrootレイヤーフォルダ(レイヤーセット)このテンプレートではレイヤーフォルダ「all」の子のレイヤーフォルダ内から、名称「pict」のレイヤーフォルダを探し、その子である各レイヤーフォルダpictを探ます。
その中にあるスマートオブジェ「pict*」(末尾は数字)を探し、任意の座標へとスマートオブジェの左上(原点)部分を配置します。
//run
docObj.suspendHistory("script:Act_SB_pictPlacement","run()");
function run(){
try {
new searchFolder(rootLayerSet,child1LayarSetNum);
}catch(e){
alert("error("+e+")");
}
}
//「pict」フォルダを探す
function searchFolder(set,child){
for (var i=0; i <child; i++){
if (set.layerSets[i].name == defItem.pict){
var child1LayarSet = set.layerSets[i];
var child2LayarSetNum= child1LayarSet.layerSets.length;
for(var j=0;j<child2LayarSetNum;j++){
new searchFolderChild(child1LayarSet,child2LayarSetNum,j);
}
}
}
}
//各pict内のスマートオブジェを探し整列処理をする
function searchFolderChild(set,child,count){
for (var i=0; i <child; i++){
if (set.layerSets[i].name == folderName[count]){
var child2LayarSet = set.layerSets[i];
var child3LayarNum = child2LayarSet.artLayers.length;
for (var j=0;j<child3LayarNum;j++){
if (child2LayarSet.artLayers[j].name == layName[count]){
var targetLayer = child2LayarSet.artLayers[j];
var targetLayerBounds = targetLayer.bounds;
var resetX = parseInt(targetLayerBounds[0]) * -1;
var resetY = parseInt(targetLayerBounds[1]) * -1;
targetLayer.translate(resetX,resetY);
var addNum = defItem.addY*count;
targetLayer.translate(defItem.posX,defItem.posY+addNum);
}
}
}
}
}
補足
ちなみに、『変更点と更新後の使い方』でスマートオブジェやアセットの項目で注意事項として“名称変更・削除不可”としていますが、スクリプトや画像アセット機能を使用しないのであればこれに従わなくても問題ありません。
スクリプトや画像アセット機能を使用したが、名称も変更もしたい場合は、下記の場所をレイヤーセット(およびレイヤー)の名称を揃えることでも一応動作は可能です。(自己責任で)
const defItem = {
posX:356,
posY:496,
addY:531,
pict:"pict",
};
const folderName = new Array();
folderName[0] = "pict1.png";
folderName[1] = "pict2.png";
folderName[2] = "pict3.png";
folderName[3] = "pict4.png";
folderName[4] = "pict5.png";
const layName = new Array();
layName[0] = "pict1";
layName[1] = "pict2";
layName[2] = "pict3";
layName[3] = "pict4";
layName[4] = "pict5";
pict:親のレイヤーフォルダ名称
folderName:各Pictureのレイヤーフォルダ名称
layName:各スマートオブジェの名称
おわりに
もともとはPicture部分もフォトショップで描いていたのですが、
なにぶんラフとはいえ線画の線があまりキレイじゃなかったので最近ちょいとラクガキ用に練習中の“CLIP STUDIO”で、描いたラフ画像をこの絵コンテのテンプレートと連動させようと作り変えた次第なのですよ。
“CLIP STUDIO”でpngで吐き出して、スマートオブジェに埋め込んでるだけですけどね。
んでついでに勝手に並べてくれたら、便利かなーとおもってササっとjsxを書いて、今ここ。
まぁそういう事です。
よかったら使ってみてね☆
あっ、source code(jsx)の使用はあくまで自己責任でヨロ(逃走)
コメント
[…] あおみデザインスタジオ代表さんの絵コンテ […]