ARCHIVE  ENTRY  PROFILE  OTHERS


「星空つづり」母屋はこちら


最初の記事から見たい方はこちら

2012.01.21 Saturday

3D成形済みのオブジェクトを選択範囲で中抜き

前回記事のつづき。
今度は、既に3D成形しているオブジェクトに、別のシェイプで穴を開けてみる。
前回やったコンストレイントを後で作成するパターンともいえる。
コンストレイントは、選択範囲とパスの両面から作成できるが、今回は選択範囲から作成するやり方を記録。

1)ベースとなる中抜きされる方の3D成形済みオブジェクトを準備
2)中抜きするシェイプを作成
3)パスパネルで、2)のシェイプから選択範囲を作成



4)レイヤーパネルで中抜きされる方の3D成形済みレイヤーを選択 ※中抜きするシェイプそのもののレイヤーは非表示か削除しておく。
5)メニューから「3D」>「成形」>「選択範囲からコンストレイント作成」をクリック
6)前回同様「内部コンストレイント」で各々の射抜きパーツを指定して中抜きにする



ところで、ストレートな中抜きばかりやってきたが、コンストレイントを移動させると穴が空いた状態でエッジを引き延ばしたり歪めたりすることができる。また、内部コンストレイントの種類を「アクティブ」にして、コンストレイントを移動させるとプクッと膨らみをもたせることなどもできる。
2012.01.20 Friday

3Dの成形コマンドでテキストレイヤーやシェイプを立体化

CS5 Extended に備わっている3D関係をちょこっと触ってみたが・・これがまた難解。
ちょっと触ったくらいじゃ全然わからず、海外サイトの動画チュートリアルも総動員して理解に努めているが、なかなか直感的に使えないので苦労する。

とはいえ、テキストレイヤーは至って簡単で、3ステップで立体化できる。

1)テキストを打ち込む
2)メニュー「3D」>「成形」>「テキストレイヤー」をクリック
3)成形ウィンドウで「OK」をクリック

と、たったこれだけ。



立体化した3Dオブジェクトは、ツールパネルの「3Dオブジェクト回転ツール」や「3Dカメラパンツール」などの様々なツールであとから見る角度や配置などはグリグリ変えられる。
オブジェクトの表面の柄(マテリアル)やライトの当たり具合などは、3Dパネルを使えば後からでも比較的簡単に調節できる。
2)の成形ウィンドウでとりあえずやっておくのは、形そのものの設定関係。深さ(立体の厚み)やベベル(側面の境界の角落とし部分)の指定などなど。
※成形後に再度成形ウィンドウを出して形を変えたい場合は、メニュー「3D」>「成形」>「成形で編集」で可能。

次に、カスタムシェイプを使って立体化してみた。

基本的にはテキストと同じ流れ。メニューの「成形」>「選択したパス」をクリックするのが違うだけ。
難しいと感じたのはここから先・・
例えば、カスタムシェイプの中には「中抜き」になっている絵柄がある。下のような「囲みのある?マーク」なんかがそう。
中抜き部分が一カ所だけなら、成形ウィンドウの下の方にある、内部コンストレイントの種類を「非アクティブ」から「中抜き」に変えるだけでよいのだが、中抜き部分が二カ所以上ある場合は、それぞれの中抜き箇所を一つずつ選択して「中抜き」指定をしてやらないといけない。
下の画面でいくと、まず内部コンストレイントの移動関係ツール(どれでもよい)を最初に選択しておいて、シェイプの中抜きしたい部分をクリック、そして内部コンストレイントの種類を「中抜き」に切り替えるという手順。あとは、中抜きしたい分をクリックして、種類を「中抜き」に切り替え・・を繰り返すってことになる。



前述のテキストの時は、たくさん中抜き部分があっても、全部自動的に中抜きになるだけに・・・シェイプからだとなんでこんなに面倒になるのか?
なんだか、もうちょっとスマートなやり方がありそうな気がするが・・ないような気もするし(^^;

さて、次回は、成形済みのオブジェクトに対して、あとから描いたシェイプまたは選択範囲からコンストレイントとして作成することで、作成済みのオブジェクトに穴開けしたり、膨らましたりしてみたので、忘れないうちに記録しておくつもり。3D関係は一通りやってみるだけでもまだまだ大変そう・・

2012.01.17 Tuesday

PhotoShopでのアニメーションGIFの作り方

なんでもいいんだけど、アニメーションGIFを作ってみる。
とりあえず、心拍モニターみたいなやつ。



大まかな流れは、必要なレイヤーを作って、アニメーションパネルで最初と最後のフレームをまず用意し、その間の波形の動きは自動的にフレーム生成させるというやりかた。



ここまででレイヤーの書くパーツは準備ができている。ここからはアニメーションパネルでの操作がメイン。
タイムライン編集はよくわからないので、とりあえずフレーム表示での編集を行うため、上記では最後に表示切り替えしている。



上記の説明で注意:最初と最後のフレームは、赤灯・緑灯は点灯状態にしておくこと。どちらかが消えていたりすると、フレーム生成の際に、それらの輝度(不透明度)が段階的に変化してしまう。



アニメーションフレームテゥイーンっていうのが、前後のフレームを補間するフレームを作成する機能。



トゥイーンの設定ダイアログは、ここでは追加するフレーム数だけを指定すればよい。



補完されフレームでいっぱいになった。どのフレームも20秒もの表示時間があることになってるので、フレームを全選択して、任意の表示時間をクリックして「ディレイなし」にとりあえずしておく。つまり最速表示というわけ。
とっても、ブラウザによって表示速度も異なるので、出来上がりのスピードは実際にブラウザ上で確認した方がよい。



補間したフレームを順番に選んでいき、そのときの赤灯・心拍数のレイヤーをどうするのか表示・非表示の指定をレイヤーパネルの「目玉ボタン」で指定していく。



最後は、メニュー>ファイル>Webおよびデバイス用に保存を選んで上記画面を出す。
保存形式はもちろんGIFに。アニメーションを永遠に繰り返すように再生させたいならループオプションを「無限」にしておく。あとは保存すれば出来上がり。




2012.01.17 Tuesday

ある時点のヒストリーを別枠でキープできるスナップショット

処理を重ねてヒストリーが増えてくると、ある時点に戻したいときに、どのヒストリーを選べばよいか分からなくなることがある。
また、ヒストリーの履歴数は、環境設定によって変えることができるが、履歴数を超えたヒストリーは削除されるため、ずっと前の状態には戻せないことがある。
これらの問題に対処するため、ヒストリーパネルにはスナップショットという機能がある。
レタッチ処理のターニングポイントなどで、スナップショットを一発撮っておくと、簡単にその時点に戻すことができる。もちろん、ヒストリー数が超過して個々のヒストリーが消えてしまっても平気だ。

このスナップショット、通常のヒストリーと同じで、前回の備忘録記事で学んだヒストリーブラシの対象としても使える。


2012.01.17 Tuesday

画像の一部を過去の状態に戻すヒストリーブラシ

画像に対して処理した履歴がヒストリーに蓄積されるが、画像の一部分だけを、ある時点の状態に戻したい場合には、ヒストリーブラシというツールが使える。
あるときの状態を別のドキュメントに除けておいて、レイヤーマスクを使って最新処理と部分合成するといった面倒な処理の必要がないので、気軽な演出に使いたいときにはいいかもしれない。



戻したい時点のヒストリーを指定したら、あとは、戻したい部分をブラシでなぞるだけ。


2012.01.16 Monday

ウォーターマークっぽいテキスト刻印をするスクリプト

先のコードを発展させて、今度はウォーターマークっぽいテキストの刻印を行うスクリプトを作ってみた。
画像のキャンバスサイズに応じたフォントサイズを計算で設定し、左下に刻印する。つまり、画像の大きさが変わっても刻印されるテキストの大きさは相対的に同じ大きさになるようにしている。
テキストレイヤーは2種類作成し、背面にガウシアンボカシのテキスト、前面はそのままのテキストを重ねている。

前回から新たに加わった要素としては・・
・ドキュメントのキャンバスサイズ取得
・レイヤーの不透明度設定
・ラスタライズ
・ガウシアンフィルターの適用
・共通コードの関数化  あたりだろうか。

まずは、実行結果を。



コードは以下のとおり
--------------------------------------------------------------------------

#target photoshop

//パラメーター設定---------------------------------------------------------------------
//左下の角からキャンバスサイズの何%離して描画するか
var SetBack = 5;
//キャンバスサイズ(横)に対するフォントサイズの大きさ(%)
var perFontSize = 6;
//描画テキスト文字列
var Text = "星空つづり";

//----------------------------------------------------------------------------------------
//開いているアクティブなドキュメントを対象にセット
var docObj = app.activeDocument;
//単位をPOINTS指定
preferences.rulerUnits = Units.POINTS;
//カレントドキュメントのキャンバスサイズを取得
var cvsX = docObj.width, cvsY=docObj.height;
//フォントサイズ
var FontSize = cvsX * (perFontSize / 100)
//カラー構造体の宣言
var textColor = new SolidColor;

//背面のぼかしテキストの描画-----------------------------------------------------
//テキスト描画するレイヤーを作成してからレイヤーに関する設定
layObj_back = docObj.artLayers.add();
SetTextLayer(layObj_back, 30, "layer_back");

//描画色、フォント、描画位置設定
SetColor(textColor, 255, 255, 255);   //白色
SetFont(layObj_back, FontSize, textColor);
SetTextPosition(layObj_back,cvsX, cvsY, SetBack);

//テキストを描画
WriteText(layObj_back, Text);
//フォントサイズの15%でボカシ
layObj_back.applyGaussianBlur(FontSize / 15);

//前面のくっきりテキストの描画-----------------------------------------------------
//テキスト描画するレイヤーを作成してからレイヤーに関する設定
layObj_front = docObj.artLayers.add();
SetTextLayer(layObj_front, 60, "layer_front");

//描画色、フォント、描画位置設定
SetColor(textColor, 0, 0, 0);     //黒色
SetFont(layObj_front, FontSize, textColor);
SetTextPosition(layObj_front,cvsX, cvsY, SetBack);

//テキストを描画
WriteText(layObj_front, Text);
layObj_back.applyGaussianBlur(FontSize / 15);

//--------------------------------------------------------------------------------------
//テキストレイヤーの設定 (レイヤーオブジェクト, 不透明度, レイヤー名)
function SetTextLayer(layObj, Opacity, layerName) {
    layObj.kind = LayerKind.TEXT;
    layObj.opacity = Opacity;		//レイヤーの不透明度を設定[0..100]
    layObj.name = layerName;
}

//カラー構造体に描画色をセット (カラー構造体, r[0..255], g[0.255], b[0..255])
function SetColor(textColor, R, G, B) {
    textColor.rgb.red = R;
    textColor.rgb.green = G;
    textColor.rgb.blue = B;
}

//フォント設定 (レイヤーオブジェクト, フォントサイズ, テキスト描画色[カラー構造体])
function SetFont(layObj, FontSize, textColor) {
    layObj.textItem.font = "MS-UIGothic";
    layObj.textItem.size = FontSize;
    layObj.textItem.color = textColor;
} 

//描画位置設定・・キャンバスサイズに応じて左下角からセットバックさせた位置に。
//(レイヤーオブジェクト, キャンバスサイズ横, キャンバスサイズ縦, セットバック率)
function SetTextPosition(layObj, cvsX, cvsY, SetBack) {
    layObj.textItem.position = [cvsX * (SetBack / 100), 
                                                    cvsY - cvsY * (SetBack / 100)];
    layObj.textItem.justification = Justification.LEFT;
}

//テキスト描画してレイヤーをラスタライズする (レイヤーオブジェクト, 描画文字列)
function WriteText(layObj, Text) {
    layObj.textItem.contents = Text;
    layObj.rasterize(RasterizeType.TEXTCONTENTS);	//ラスタライズ
}

--------------------------------------------------------------------------

なお、このコードのjsxファイル(ps_text_watermark.jsx)も、ZIP化したものをここに置いておく。
実行前にPhotoshopに何か画像を読み込ませておく必要がある。実行方法は、例によってPhotoshopのメニューからファイル>スクリプト>参照で開いてやる。

ところで、jsxファイルの開発環境は、テキストエディターでも全然OKだが、PhotoShop に付いてくる Adobe ExtendedScript Toolkit が少し便利。
他の一般的な統合環境開発ツールなどに比べると非力だが、それでもエラーは教えてくれるし、ワンクリックでそのまま実行できるし、デバックに必要な最低限の機能は備えているようだ。


2012.01.16 Monday

文字を描画するスクリプト

先日はScriptingListenerで記録させたログを改変して簡単なスクリプトの動作テストをやったが、今回はWEBやリファレンスなどを見ながら一から基本的なテキスト描画スクリプトを書いてみた。

今回のコードはこんな感じ。
---------------------------------------------------------------------------------------
#target photoshop

//単位をPOINTS指定でドキュメントを新規作成する
preferences.rulerUnits = Units.POINTS;
var cvsX = 320, cvsY=240, Resl=72.0;
docObj = app.documents.add(cvsX, cvsY, Resl,"テキスト中央表示");

//テキスト描画するレイヤーを作成
layObj = docObj.artLayers.add();
layObj.kind = LayerKind.TEXT;
layObj.name = "テキストレイヤー";

//カラー構造体に描画色をセット
var textColor = new SolidColor;
textColor.rgb.red = 255;
textColor.rgb.green = 0;
textColor.rgb.blue = 0;

//フォント設定
layObj.textItem.font = "MS-UIGothic";
layObj.textItem.size = 36;
layObj.textItem.color = textColor;

//描画位置設定(レイヤー中央)
layObj.textItem.position = [cvsX/2, cvsY/2+layObj.textItem.size/4];
layObj.textItem.justification = Justification.CENTER;

//テキストを描画
layObj.textItem.contents = "星空つづり";
---------------------------------------------------------------------------------------

要素としては、ソースコードのコメント行にもあるとおりで・・
・ドキュメント名、解像度などを指定して新規ドキュメント作成
・レイヤー名を指定してのテキストレイヤーの作成
・描画色の設定
・描画テキストのフォント指定
・テキスト描画位置指定
・テキスト描画  である

実行するとこんな感じ。



一応、このスクリプトのzip化書庫ファイルをここ(ps_CenterText.jsx)においておく。
実行は、Psのメニューからファイル>スクリプト>参照から開いてもよいし、jsxファイルのアイコンをダブルクリックしても実行できる。

次回はこれを少し改変して画像の大きさに応じた指定位置にテキストのウォーターマークを入れるようにしてみようかな。
2012.01.11 Wednesday

グラデーションマップで画像の雰囲気を大きく変える

簡単に画像の雰囲気を変える場合は、グラデーションマップが使えそう。
グラデーションのパターンによっては派手で妖艶な雰囲気からモノトーンで落ち着いた雰囲気など結構自由になる。





ノイズを入れたグラデーションを作成してグラデーションマップに使うと・・



う〜ん、なんか手書きっぽくなっていいね。
2012.01.10 Tuesday

スクリプトを記録させたり、作ったり、動かしたり

一連の自動実行をしてくれるPhotoshopのスクリプトを少し触ってみた。
独自スクリプトだろうと思い込んでいたが、JavascriptやVBScriptなどで書けるのはおもしろい。記述・編集はメモ帳などのテキストエディタでやればよい。

さて、スクリプト、Photoshopに関連したものの詳細は、インストールフォルダ内のスクリプティングガイドというフォルダに日本語化されたPDFが、オブジェクトリファレンスは英語マニュアルだが、Scripting>Documentsフォルダ内にPDFがある。

まずは、操作したものを記録してくれるプラグインをセットして、そいつを編集するという簡単な試みからやってみた。
プラグインのセットは以下の手順。





これで、Photoshop上での操作を記録してくれる。
テストに、デスクトップ上の適当なウィンドウの画面をPrintScreenキーでキャプチャーしておいてから、Photoshopを起動。
Photoshopでは、新規作成>「OK」としてから、「CTRL+V」でクリップボードの画像を貼り付け。そのままPhotoshopを閉じる動作をしてみた。

すると以下のように、デスクトップ上に2つのテキストファイルが作成された。一つはJavaScriptによる操作記録。もうひとつはVBScriptによるものだ。



一つのコマンドごとに、コメントアウトされた仕切り線があって見やすい。
「新規作成」「貼り付け」「閉じる」の3つのコマンドをやったので、それぞれの固まりに分かれているのがよくわかる。
ただ、このファイル、プラグイン登録している限りずっと記録し続けるので、ファイルがドンドン大きくなる。新たな記録を的確に参照したい場合や、あまりにもファイルが大きくなっているときはファイルごと消去しておけばよい。

では、今度はスクリプトをちょっと編集して実際に動かしてみる。
クリップボードの画像をPhotoShopで開くまでのスクリプトとしよう。つまり「閉じる」はなし。
まずは、先ほどのファイルでJavaScriptでの記録ファイルをテキストエディターで開き、「閉じる」操作のコードを丸ごと削除。
ファイル名が「ScriptingListenerJS.log」となっているのを、適当なスクリプト名を付けてJavaScriptファイルの拡張子を付けて保存する。今回は「PS_OpenFromClip.js」とした。
なお、コード内に日本語などがあると誤動作しかねないので、保存時に文字コードは「UTF-8」を指定して保存する。


▲デスクトップ上に保存したJavaScriptファイル

あらかじめクリップボードに画像をコピーしておいてから、これをPhotoshopから次の手順でスクリプトとして開いてみると・・



お〜できたできた。
ただ、これだと、手数が多いのでスクリプトの意味がない。
今度は、いちいち「参照」させないでスクリプトを呼び出すようにしてみよう。
先ほど作ったスクリプトファイルをコピーして、次のフォルダに格納するだけ。



では、Photoshopのメニューに出てるかどうかみてみる。



よしよし。

ついでに、もっと手数を減らすために、JavaScriptのアイコンからPhotoShopを起動させて実行できるように変更してみる。
先ほどのスクリプトファイルをテキストエディターで開き、最初に一行「#target "photoshop"」と加え、別名保存として、拡張子に「jsx」を与える。



これで、このアイコンからクリップボードの画像をPhotoshopを起動させて読み込みできるようになった。

JavaScriptで書けるし、用意されているオブジェクトリファレンスもしっかりしているので、これはいろいろできそうだ。またおいおいと。

2012.01.10 Tuesday

プリセットされているスタイルを呼び出す

デフォルトで表示されているスタイルは20個ちょい。必要なものは自分で作って保存していた。
と思いきや、スタイルパネルのパネルメニューを開いたら、たくさんのスタイルのセットがあって、切り替えたり、現在のスタイルパレットに追加できたりするようだ。



うわ〜どんだけあるんかい! ちょっと遊んでみよ〜


RSS1.0
Powered by
30days Album