雑記(試行錯誤やら覚書やら)_note002

以前から分離しようと思ってた絵やアニメ以外、堅苦しい内容などの習得したいことたちを
つらつらと書いていきます。
けっこう地味なページです。専門の方から見たら内容はほとんど無いようみたいな感じだけど、
面白いことも書くかもしれません。
とにかくごちゃごちゃなメモ。更新は多い・・・はず??

現在取り扱い中内容リスト:

C++(Visual studio (VS)) , HTML
, Photoshop (PS) , Image Ready (IR) , After Effects (AE),効率改善 , バッチ処理
, web , Premiere , Dynamic Link , R-09 , マイク , OpneCV , Photoshop scripting , javascript , C#(.NET) , GUI , NScripter ,
ACCESS , CGI , Perl , MIDI , SSW , ACID , 初音ミク , Version Cue

検索(Ctrl+F)で上記の単語を探すとそれに関する内容に飛べるようにしておきます(多分^^;)。


本部に戻る

ログ
note001note002 、 note003 、 note004




2008/10/27 2:07:15

コミックスタジオ、Adobe製品、Version Cueなどいろいろ解析

まずはコミックスタジオ。
基本、買ってから数ヶ月放置ばかりして一行にやらない自分がいますw


Photoshopで作画、(IllustratorとInDesignでレイアウトなどして)で漫画制作は
大体出来ると分かっていたんですが、どうせ漫画専門のツールが
あるのなら、それ使ってしまったほうが早いだろうという理由でコミックスタジオ買いました。

それである程度コミックスタジオを使いこなして、まだまだ足りないなと思う部分をアドビの
強力なベクターソフトとBridgeやVersion Cueなどのプログラム&各ツールスクリプトで
自由自在に操ってやろうという計画でやっていきます。
ただIllustratorとかベクター関係のスクリプトは激ムズなんですorz(単純に触る機会が少ない)
まずベクターソフトの動作を把握しないと組み辛い感じです。
でもコミスタEXも負けじとプログラムで効率化出来るとか言う機能があったりで、面白そうなんですけどw


やはりコミスタでまず感動するのは、補正機能つきのベクター線。
Illustratorである程度触ってましたが、またちょっと違う感覚があります。
参考的な画像はあとで貼っておきます^^;


そしてなぜ自分はSAIを買わないのか、自分でも分らないのですが、
どうもIllustratorとPhotoshopの連携に慣れてしまって、なかなか手が出ないようです。
実はVersion Cueで、同じファイルをPhotoshopでラスター操作しながら、同時にIllustratorでベクター操作をする
という方法があったりします。
ラスター、ベクターの鬼の画像処理パッケージ2つを、同時に動かせるわけです。
それで、Version Cueはこれだけではなくて、InDesign、GoLive、Acrobatなど、adobeの製品と連携させることが
出来ます。ちなみにBridgeでadobe製品全般、AfterEffectsやPremiereのさまざまなファイルたちと連携をさせることもできます。
とくにAcrobatは動画作成のファイル管理にかなり便利な部分があったりします。

では実際、Version Cueによるそれら一連のツール連携の使えそうな具体例を。現段階ではlocalhostでやってます。
起動や、使う前のいろいろな設定、ファイルの操作方法は以下のページを参考。
http://support.adobe.co.jp/faq/faq/qadoc.sv?225254+002

主にアニメ・イラスト制作で有効だと思われるラスターとベクターでのファイルやり取り。
Illustratorでもラフスケッチとかラスターみたいなこと出来ますけど、フォトショのレイヤーで
自在にラスターを操りたいという思いから、この方法で行います。

Photoshopを起動、新規作成でラフを描き、次に「開く」でAdobeダイアログを起動ボタンを押して、
エクスプローラからVersion Cueの場所に行き、プロジェクトを作成、あるいは開く。

そのプロジェクトにファイルを保存します。新規作成のもの以外にも、すでに作ってあったファイルたちも
ここにまた保存できます。だからどっか別に素材バンクファイルやライブラリーフォルダからファイル開いて、
別名保存でプロジェクトに保存したり、使いたい素材ファイルごとこのフォルダに持ってきてまとめてしまえばいいのです。
Adobeダイアログで、別名保存からVersion Cueに行き、
ちなみにこのプロジェクトフォルダがある場所、初回は、
"C:\Documents and Settings\****\My Documents\Version Cue\テスト01"な感じです。
//もちろん別のたてたサーバーにプロジェクト作るのも良いです。

Photoshop、Illustrator、InDesign で作成したドキュメントは、[documents] フォルダに、
GoLive で作成したファイルは、[web-content] および [web-data] フォルダに保存します(されます)。

複数の場所にプロジェクトフォルダ作って共有してグループで共同制作出来たりもします。
実際はそのためのソフトなのです。

バージョンコメントとか、コメント系の機能を上手く使うとグループワークで伝達がしやすくて便利です。
自動でバックアップとかもしてくれているんで、ほんと便利です。



別のユーザーがファイル開いていたら本来開けないんですが、競合を起こさず、
お絵かきチャットみたいに同じファイルで共同作業することが出来るみたいです。

例えば、Aさんは左上端のロゴ作ってて、Bさんは真ん中の絵描いていて、
Cさんは下の文章説明書いていてみたいな、それを更新すると反映されて共同作業を
リアルタイムで進行できるみたいな感じです。もちろん、無理な操作をすると
競合することがあるので、注意らしいですが。。
・・・説明ではそんな風に書いてあるんですが、実際まだ共同でやってないので
動作は分りません^^;


そしてバージョンを保存するには、「ファイル」→「バージョンを保存」で保存します。

バージョンを参照、コメントとかを参照するには、
「ファイル」→「バージョン」か、「ファイル」→「開く」→「プロジェクトツール」→バージョンで確認できます。


そして本題に。

Photoshopでラフを書いたら、それをベクター線画にするためにIllustoratorへ持っていくんですが、
Illsutratorを起動して、「開く」からそのラフのPSDを開きます。

そしてベクターで線画を描いたら、それを「書き出し」で、PSDで書き出します。
そうすると、これを最新のバージョンにするか?とか聞いてくるので、OKで保存します。
(もっと別の互換性あるファイル形式で作業するとか試行錯誤しています)

そうして、このファイルをPhotoshopで開けば、最新バージョンとしてベクターがラスター化されて
開きます。ベクターによる作画で途中のバージョン(あらかじめバージョン保存しておく)に戻せば、
線画のベクター修正が出来ます。ポイントは、Illustratorのベクターによる線画作成をどの程度
使いこなせるかです。Photoshopと連携できているので、ラスターのラフをライブトレースで
一発で線画にまとめ、補正して手動トレースする手間を省いたり、その他線の質感変更を
ベクターの状態で自由自在に変えることも出来ます。
つまりバージョン保存での書き出しがめんどくさい感じですが、手動でPhotoshopとIllustratorを
経由してあれこれやるよりは、ファイルの中身の状況をヒストリーから掘り返すように、アプリケーション間で
連携できるので、バージョン保存は便利なわけです。


同じファイルでの連携だけでなく、チラシ制作や漫画制作、アニメのレイアウト関係など、
ファイル素材を複数開いて、一つにまとめるさいにもバージョン保存は便利となってきます。
つまり保存状態がごちゃごちゃにならないわけです。



Photoshop7とかCS以下の旧アプリケーションからアクセスできないらしいですが、
WebDAVってのを使うと、CS以外のアプリケーションから接続可能らしいです。
WebDAVの使用について詳しくは、使っているアプリケーションのヘルプを参照です。

ちなみにVersion CueはJAVAで作ってあって、データベースはMySQLだそうです。
似たようなシステム作る前に存在知ってよかったです^^;
"C:\Program Files\Adobe\Adobe Version Cue CS2"の中覗くとpluginsとか
いじりたくなるフォルダがありますねw
使い慣れたらAdobe Forumとかで何かひっぱりだしてきたいところです。


でもある程度こういうの作る計画立てていたから、ちょっと残念な気持ちも。。
だけど映画やアニメ、CMなどの映像制作専用のシステムとして、別の管理ステーションを作るつもりです。
やっぱり探せばあるんですが、会社だけの企業秘密だったり、映画制作専門だったりと、こう何かぱっとするのが
ないんですね。
そのツールはVersion Cue(CS2)を参考にして作ろうと思います。やっぱり管理系はブラウザで動作するツールの方が便利そうですね。
操作の便利性、さらにFLASHとか各スクリプトもろもろ組み込めてしまうので、SleipnirやFireFoxのブラウザ上で動くのは本当にありがたいですw
作成中の映像制作支援ソフト(winアプリ)とも連携させるように組んでいきます。今更ですが、映像制作支援ソフト、
プラットフォームに依存させないようJAVAで作り直したほうが良いかなとか思ったり^^;
でも確か.NET Frameworksは他のOSでも動かせたような、、。しかしMacは無理ですねorz
.NET Frameworksのメモ

http://fnya.cocolog-nifty.com/blog/2008/03/net_frameworkos_3139.html

基本組み立てるのはGUIくらいだけなので、余力あったらJAVAでも作ろうと思います。
来年はちょっとわけあって、Linuxを使う可能性もあるので、いろいろ試したいところです。




付属ツールは、これらはAdobeのFLASHやAEとの連携は抜群だし、
LWともPhotoshopはファイル形式をサポートしてテクスチャ作成なんかでも愛称が良いです。
そしてPSDをペインターとやり取りさせると、ほぼ無敵になります。
一時購入に迷ったレタスも、スクリプトを知ってから眼中になくなりました(いや、もちろんいずれ使いたい気持ちでいっぱいですがw)。
レタスはアニメ作成に特化はしているものの、値段のわりに画像処理においては機能が少なすぎるな…と。

ちなみにコミックスタジオは、漫画専用のために購入でしたが、LWとshadeの3Dデータもサポートしているようです。
上手く互換性あるモノ通しを選びあって買う商品を決めていくことは大事ですね。
まあ今は大体は互換性あるのが多いですが^^;


そのほかに、テレビとかのブラウン管に描いた絵出力して、色の具合を見ようと、
ビデオカードの赤白黄の出力端子からテレビの外部入力(映像、音声)に差し込んで
見れるかやったんですけど、どうも駄目です。
実家のブラウン管のPCで自分の描いた絵見ると、色が全然違うんですよ。なんと言うか、暗い感じの
色になってます。どうしよう、、。




2008/10/24 15:25:17


アニメやゲームの仕事なんかでの共同制作では、音楽担当の人に頼めば良いんですが、
単純に音楽を楽しい趣味としてやっていこうと思いました。
(出来れば本業の一つにもしたい、、なんて無理かなwちなみに、とあるアニメーターさん
の日記によると、アニメ会社に居る限り、自作音楽がアニメの音楽の一部として
使われることはあるそうです。)
ヘタクソな音楽でも、こう何か、妄想で頭の中で描く音楽を
どれだけ具体的に作れるか、っていう試みです。生暖かい目でお願い致しますw


前々からMIDIの打ち込みをするも、いまひとつ力がつかないので、
何か一つ一つ解析していって、試行錯誤してやっていきます。

で、早速ボーカロイドの初音ミクをちょくちょく触ってみることにw
(数ヶ月放置してましたw)


SSW(SingerSongWriter)以外にACIDという音楽制作ソフトを買った理由の一つに、
この初音ミクがあります。どうもSSWは初音ミクと同期させて音楽を作れないみたいなんですよ。
つまり手動でSSWとミクを同時再生して同期は出来ても、完全同期させられない、わけです。
ACIDだとReWireというシステムがあり、ボタンを押せば初音ミクと同期再生、同時停止が出来るので、そのためです。
(ReWireは2つのアプリケーション間で、オーディオデータをリアルタイムで送受信するシステムです。)
ACID買うとき、ACIDやめてSonarを買おうか迷ったんですけど(SonarもReWireがある)、あれ高級な機能大量に積んでて、めちゃ高いんですね^^;
つまり3Dで言うところの、mayaを買えなくてLihgtWave3Dを買った、と同じ感じです。(でもLightWave3DをACIDと比べるのはおかしいかも…)

とりあえず、まずは著作権が切れている童謡にあわせ、ミクに歌わせてみます。(はじめの歌いだしのみ)

初音ミク_テスト.mp3

MIDIの伴奏は「童謡・唱歌の世界」さんよりフリー素材をお借りしました。


次回から一つ一つゆっくりと、ツールの操作やテクニック、パラメーター調整、音楽理論とかを進めていきます。
大体覚書みたいになると思います。
いやぁ、やっぱり音楽は楽しいですねw

それで、今回のメモを。

ミクの機械音を消す方法の一つで、個々のノートに対して、音符のプロパティを設定し、表情をつけるのですが、
その”表情コントロールプロパティ”と、”ビブラートプロパティ”について解析していきたいと思います。


★表情コントロールプロパティ(表情)

ピッチベンドコントロール
・ベンドの深さ:本来の音程に対し、どの程度低いところから歌い始めるか
・ベンドの長さ:本来のピッチに至るまでの時間で、1拍の長さを100%として設定される
・ポルタメントを付加:音符間のピッチを緩やかに変化させる効果(後ろのノートの立ち上がりニュアンスに作用)
→上行系は低いノートから高いノートへ。下行系は高いノートから低いノートへ。
→シンセみたいなポルタメントにしたい場合は、ベンドの深さ0%、ベンドの長さ100%にしてポルタメント+音符分割法

ダイナミクスコントロール
・ディケイ(減衰):ノート音量の減衰量
・アクセント:ノートの立ち上がり強弱ニュアンス。0%〜はスロー、〜100%は鋭い。
・テンプレートもあり

★ビブラートプロパティ

4つ調整します。

・ビブラートの長さ:ノートの長さを100%として、与えた数値からビブラートを行う。→つまりビブラート開始位置
・ビブラートの種類:ゆれ方や効果の深さなどを変える
・振幅:ビブラートの深さ
・周期:ビブラートの効果の早さ
振幅・周期は→マウスでライン付け可能。右クリックで細かい編集も可能。

つまり短い発音以外に、「あ〜〜〜〜〜〜〜」とか長い歌声のとき、単調にビブラートをするのではなく、
ビブラートの振幅・周期を操ることで心地よい、独特の声の振るえを付けられるってことですね。



それで、まだミクの歌声を変化させる方法の一つの、”コントロールトラック”についても解析してみます。
★コントロールトラック(歌声の変化)

ポイントポイントを今後のメモに入れていくような感じで、また詳しくまとめていきます。
ノートプロパティがミクロの設定とみなすと、コントロールトラックでの設定はマクロの設定、といった感じですかね。



それとVSC設定ウィンドウのメモです。



レイテンシーをなくすのに、「発音応答速度」の最適な値は90.7mSecにします。



2008/10/24 1:54:44

ブログ(まなび技術)より続きです
>やっくんさん

おぉ!プログラムに強いやっくんさんがアドビのscriptをいじってくれてとても心強いです^^bアドビScriptについて熱く語れる仲間がまた増えました(笑

ユーフォーさんが仮色を使っているわけが、何となく分りましたwどうやら色彩設計の油谷ゆみさんのモニターを見てみると、背景とあわせて色彩設計を行っているようです。

つまり、背景や仮色での彩色の工程が終わった段階で、背景に馴染ます色彩設計を行うという、後型色彩設計というやり方でクオリティを保っているようです。いわゆる新海さんのように。

ユーフォーさんが使っているアニメ専用ツールのレタスの機能に、彩色後の色彩変更をカット内の全コマ一発で変換する機能があります。そこでキャラに仮色だけで彩色してもらっておけば、該当する仮色に対して、後から朝昼夜、どんな時間帯の色ででも置き換えが可能となるわけですね。

なんで、仮色から変換したあとに処理をかけるべきところを、仮色の時点でグラデーション処理をしている、アニメーションノートの説明が、なにやらダミーや記者のミスではないだろうか…と思っちゃったりもするんですが、スクリプトの処理方法によっては、仮色の段階でグラデーションをかけてしまうのに何か都合の良い部分があるのかもしれません^^;しかしここら辺ちょっと探り入れると思わぬ発見があったりするんですよねw

ぼかし(レンズ)以外に、ぼかし(ガウス)とかも試したんですが、どうも髪のふち全部にまでもぼかしがかすかに入ってしまうので、それを回避出来るのぼかし(レンズ)でとりあえず処理してみました。

何か特殊なぼかしフィルタももしかしたらつかっているかもしれません(;´Д`)

しかしどうもアニメーションノートを読んでいると、ユーフォーさんも手作業の部分が若干あるようです。肌色マスク切抜きを手作業でやっているようですが、自分はスクリプトの中にその処理を組み込んでいます。あと、やっぱりキャラのサイズによって、処理の具合を手作業で分けているあたり、スクリプトによるキャラの処理部分の面積計算を行っていないようですね。つまり、その面積計算が上手くいけば、完全自動のユーフォーさん以上のプログラムが出来るようです^^bこれはやりがいがありますよね!面積計算は、色域指定で抜いて複製した髪のパーツのレイヤーの描画ピクセル数を、ヒストグラムから割り出して、出来そうですね。

//------------------------------------------------------

var docRef = activeDocument;

//選択範囲の面積計算
//"背景"の白で塗りつぶしたレイヤーをあらかじめ前処理で消しておく
//テストでは、docRef.layerSets[0].layers["髪パーツ"];を作ってからスクリプト実行を試す
//色域指定_レイヤー複製_塗りつぶしで作成した髪パーツ(ノーマル+シャドウ)のレイヤーをアクティブ
docRef.activeLayer = docRef.layerSets[0].layers["髪パーツ"];

//選択範囲を読み込む
//===========================================
var id21 = charIDToTypeID( "setd" );
var desc4 = new ActionDescriptor();
var id22 = charIDToTypeID( "null" );
var ref2 = new ActionReference();
var id23 = charIDToTypeID( "Chnl" );
var id24 = charIDToTypeID( "fsel" );
ref2.putProperty( id23, id24 );
desc4.putReference( id22, ref2 );
var id25 = charIDToTypeID( "T " );
var ref3 = new ActionReference();
var id26 = charIDToTypeID( "Chnl" );
var id27 = charIDToTypeID( "Chnl" );
var id28 = charIDToTypeID( "Trsp" );
ref3.putEnumerated( id26, id27, id28 );
desc4.putReference( id25, ref3 );
executeAction( id21, desc4, DialogModes.NO );
//===========================================

//描画部分のヒストグラムを取得する(ピクセル数取得なのでRコンポだけでOK)
//チャンネル(R)を表示、アクティブ、(0がレッド、1がグリーン・・・)
docRef.channels[0].visible = true; //R
docRef.channels[1].visible = false; //G
docRef.channels[2].visible = false; //B
//docRef.channels["アルファチャンネル 1"].visible = false; //α

theChannels = new Array(docRef.channels[0]);
docRef.activeChannels = theChannels;

//Rコンポヒスト取得(各レベル数での画素の総和を)
var dataR = docRef.channels[0].histogram;

for (Rlv = 0; Rlv < dataR.length; Rlv++) {
SumPixel = 0;

for (Rlv = 0; Rlv < dataR.length; Rlv++) { SumPixel = SumPixel + dataR[Rlv];

} }

//テスト用
alert(SumPixel);//ここが選択範囲(描画部分)の面積結果★

//チャンネル状態を戻しておく
docRef.channels[0].visible = true //R
docRef.channels[1].visible = true //G
docRef.channels[2].visible = true //B
//docRef.channels["アルファチャンネル 1"].visible = true //α

theChannels = new Array(docRef.channels[0], docRef.channels[1], docRef.channels[2])
docRef.activeChannels = theChannels


//以下、割り出した面積(SumPixel)からぼかし(レンズ)のパラメーター割合を
//キャンバス解像度(キャンバスはパンの理由とかで変わることが多いので、そのつど自動で取得したほうが都合が良い)にあわせ調整。
//(選択中画素数)/(全体画素数)を割り出し、あらかじめ設計した判断割合数値(%)に計算結果(%)を割り当てるようcase文で分岐→ぼかし処理。
//case文の分岐、つまりパーセンテージを場合分けを多く分けるほど、精度が高くなる。
//処理速度的には100以上とか、極端に分けなければそれほど遅くならない。

/*

//case文での処理記述
//ここの判断割合数値をいかに上手く設定するかで、クオリティに差が出る。

*/


//----------------------------------------------------------------
いや、実はこんなチャンネルいじる書き方をしなくとも、**pixel**みたいな怪しげな
関数がリファレンスにあるあたり、まだまだ修正の余地がありそうですね…。
実際フォトショのヒストグラムパレットに、選択中の描画部分のピクセル数が表示されている
ところを見ると、ますます怪しいです、、。

しかもこのforでの走査系のやり方はどうも処理が重いです^^;
膨大な画像枚数を処理するとき、C言語で走査させるのは早いんですが、スクリプトだとどうしても重いんですね。。


ちなみに色域指定で作成したパーツは、線画と分けているので、ラスターの解像度に依存したりして
エッジの汚れが発生することはないよう設計してます。
ユーフォーさんの場合、レタスでの彩色での2値化で行っているようなので、ふちが色変更で汚れることが
ないみたいですねヽ(´ー`)ノ




2008/10/22 23:57:44

AfterEffectsでの素材管理に関して、ProductionI.Gの江面久さん考案の方法で、自分も開発を進めていこうと思います。

スプリットで素材のカット番号やテイク番号などを分けて、上手く汎用的に使えるようにしていくやり方です。

"作品名(1)_エピソードorシーン(2)_カット番号(3)_自由定義(4〜-3)_撮影種別(-2)_テイク番号(-1)"

今後はこの割り振りにあわせ開発を行っていきます。
この割り振りは非常に汎用的で(いろいろな制作会社や、実写映画でも使えるかも)、変に自分でこれと違う割り振りで
やるより、江面さんの手法に合わせたほうが、もしI.Gでお仕事させてもらえるときに開発ですぐに着手出来るからです。
すでにツールも形になっているようで、さらなる開発が進んでいるみたいです。

ここの自由定義に、何を入れるか開発の楽しいところですね。
アイデア次第で手に取るようにファイル操作や読み書きを出来るわけで、やりがいのあるところです。
自分の目星的には、3Dとかベクターとか、絵コンテやらタイムシートあたりとの連携を突っ込んでやりたいと思ってます。





2008/10/22 23:54:54

Photoshop Scriptingのメモ


ここで一つ小技を紹介します。

実は今回、まなびストレートの髪の毛のグラデーション処理スクリプトを作成するとき、
処理の一つに、”ぼかし(レンズ)”を使うわけですが、マニュアル通りに引数(パラメーター)を入れても、
上手くいかないことがあります。今回、"typename"という値が、どうも上手くいっていないのか、
フィルタ処理が適用できませんでした(もしわかっり、ぼかし(レンズ)成功した!って人が居たら、
メールなり、ブログなりで情報もらえるとすごく嬉しいです^^;)。

まなびの実際適用した絵(セルの時点→処理適用)

適用前



適用後



このサンプル例の画像はぼかしの量が足りない気がしますが、そこらへんは複製なりぼかし(ガウス)なりを足してやり、
調整していきます。

以下、実際のセル原画で試してみる


処理適用前(彩色元画像)



処理適用後(スクリプト適用)




ちなみに、頬や目のぼかしのスクリプトは「らき☆すた」で解析して作った頬ぼかしスクリプトを使用しております。

一見、んなもん一枚一枚手でぼかして作ればいいじゃんって感じですが、

まず第一に、
作画、彩色という工程で、ぼけた部分の作画をベタでして、それをいちいちレイヤーに分けて、
撮影の段階でぼかし処理をかけるってのには、その”レイヤーに分ける”という無駄な作業が発生します。
彩色さんにとって、一コマ一コマの一枚のレイヤーに着色するルーチンを壊して、可視・不可視を繰り返したりして
着色をしていくのは実際作業をやってみると分るとおり、かなり 苦 痛 です。

第二に、
これをこの作品全編(12話+1話)に対してぼかし処理を手動でやった場合と、スクリプトでまとめて自動でやった場合との労力と
時間差はどれほどのものになるか?多分5倍くらい違うんじゃないでしょうかね?
アニメーションノートを見ると、人海戦術ならともかく、ユーフォーテーブルさんは彩色チーム4人、+通常の外注で普通の彩色工程をクリアし、
撮影スタッフが6人で、この処理を担当しているようです。それでこの処理に加担している撮影スタッフさんはよく見ると1人のような気がします。

ちなみにユーフォーテーブルさんは頬のぼかしはレイヤーで分けているようですね、、。
確かにキャラが遠くに行くと頬の部分が小さくなることで、Photoshop Scriptで
かける場合はどうしてもぼかしの値を一定でやることが多く、コマごとキャラのサイズに合わせてぼかし処理の値を変える
アルゴリズムを作るくらいなら、AfterEffectsのブラーでキーフレームをつけてリアルタイムプレビューでぼかし具合を確認調整しながら
撮影したほうが早いってことですね。そこらへんのコダワリの中での合理的な駆け引きも上手いと思います。

ちなみにアニメーションノートの撮影現場のモニターを覗いてみると、どうやらAfterEffects ScriptingでGUI作ってやっているようです…。
つまりAE上で動くスクリプトを作成して今回の髪の毛のぼかし処理を行っているのです。
確かに髪の毛のグラデーションもキャラのサイズでぼかしの値の調整を変えないと、キャラが小さく描画されている部分ではぼかしの具合に
ズレが生じるのは確かです。今回Photoship Scriptで作成してしまいましたが、
AfterEffects用に今回作ったPhotoshop Scriptingでぼかす手法をまねてスクリプトを作成し、キーフレーム制御でぼかしの値を
変えるわけです。なので手法はPhotoshopの色抽出処理と選択指定の代替となるキーイングとマスクを操作するやり方でやるのがよさそうです。
次回の課題として、また検討しておきます。これをステップに更なる処理も可能となるのです。

しかしとりあえず今回作ったPhotoshop上で処理できる髪の毛グラデーションスクリプトを解説をします。

以下のスクリプトで、activeDocument.layerSets[i].layers["t_0"]からわかるように、1コマに対してではなく、
レイヤーセットに1コマをまとめて全レイヤーセットをforループさせることで、全コマに対して適用が可能となります。
ちなみに"t_0"は特殊効果レイヤーという意味での"t"で、"t"が存在する場合に最大の数値を拾って"t_1","t_2","t_3"と
レイヤーを自動生成するようスクリプトを組んでいます。つまり特殊効果を適用するレイヤーを分けて管理できるわけです。

では本件の説明を(彩色システムというか、彩色の構成を説明すると莫大な説明になってしまうので、ぼかし処理の焦点だけを説明します)。

//着色部分があるレイヤーにぼかし(レンズ)を適用。ここの設定する引数をGUIでパラメーター割り当てすると汎用性が増します(13個)。
//スクリプト(マニュアルでの解説)
//applyLensBlur
//(
//amount[number (long)],
//bladeCurvature[number (long)],
//brightness[number (long)],
//distribution[NoiseDistribution(GAUSSIAN,UNIFORM)],
//focalDistance[number (long)],
//invertDepthMap[boolean],
//monochromatic[boolean],
//radius[number (long)],
//rotation[number (long)],
//shape[Geometry(HEPTAGON,HEXAGON,OCTAGON,PENTAGON,SQUARE,TRIANGLE)],
//source[DepthMapSource(IMAGEHIGHLIGHT,LAYERMASK,NONE,TRANSPARENCYCHANNEL)],
//threshold[number (long)],
//typename[string]
//)
//スクリプト(実際)
activeDocument.layerSets[i].layers["t_0"].applyLensBlur(
0,
0,
0,
NoiseDistribution.UNIFORM,
0,
false,
false,
56,
0,
Geometry.HEXAGON,
DepthMapSource.NONE,
255,
ArtLayer//←この部分が不明、あるいは上記のどこかがおかしいか。。
)

・・・上手くいかない!


そこで、フォトショ上で自分で動かした処理をスクリプトで書き出してくれる便利なプラグインを
使います。”ScriptListener.8li”ってやつです。フォトショ買ったときのCDの中、
あるいはフォトショインストールされたフォルダの中に、ユーティリティってのにあると思います。
これを”C:\Program Files\Adobe\Adobe Photoshop CS2\プラグイン\Scripting”フォルダに入れてやります。
そうすると、フォトショ起動から終了までの操作のスクリプトを、”C:\”にテキストファイルでログを書き出してくれます。

そこから該当する処理を抜き出して、本スクリプトに組み込んで、パラメーター値を変えればいいのです。
テキストの中の//=========と//===========で囲まれたのが一つの処理のまとまりです。


書き出されたスクリプトの該当箇所と思われる部分を抜き取る。
ぼかし(レンズ)

// =======================================================

var id3 = charIDToTypeID( "Bokh" );
    var desc2 = new ActionDescriptor();
    var id4 = charIDToTypeID( "BkDi" );
    var id5 = charIDToTypeID( "BtDi" );
    var id6 = charIDToTypeID( "BeIn" );
    desc2.putEnumerated( id4, id5, id6 );
    var id7 = charIDToTypeID( "BkDp" );
    desc2.putInteger( id7, 0 );
    var id8 = charIDToTypeID( "BkDs" );
    desc2.putBoolean( id8, false );
    var id9 = charIDToTypeID( "BkIs" );
    var id10 = charIDToTypeID( "BtIs" );
    var id11 = charIDToTypeID( "BeS6" );
    desc2.putEnumerated( id9, id10, id11 );
    var id12 = charIDToTypeID( "BkIb" );
    desc2.putDouble( id12, 99.000000 );//実質、ここの値でぼかし具合を上げる(def:56.000000,max:100)
    var id13 = charIDToTypeID( "BkIc" );
    desc2.putInteger( id13, 0 );
    var id14 = charIDToTypeID( "BkIr" );
    desc2.putInteger( id14, 0 );
    var id15 = charIDToTypeID( "BkSb" );
    desc2.putDouble( id15, 0.000000 );
    var id16 = charIDToTypeID( "BkSt" );
    desc2.putInteger( id16, 255 );
    var id17 = charIDToTypeID( "BkNa" );
    desc2.putInteger( id17, 0 );
    var id18 = charIDToTypeID( "BkNt" );
    var id19 = charIDToTypeID( "BtNt" );
    var id20 = charIDToTypeID( "BeNu" );
    desc2.putEnumerated( id18, id19, id20 );
    var id21 = charIDToTypeID( "BkNm" );
    desc2.putBoolean( id21, false );
executeAction( id3, desc2, DialogModes.NO );

// =======================================================



このプラグインで書き出したスクリプトは通常のPhotoshop Scriptingの文法やルールとは異なります。4文字の引数を使って
なにやらするようですが、解説している日本語での本や日本語サイトは今のところありません。
しかしこのAction Descriptor?ってのは、通常のjavascriptよりも強力で、処理が非常に早いです。
便利なので、アクティブレイヤーのインデックス番号もこの機械語みたいなのを使って取得してます。
通常のルールのjavascriptでループまわして取得すると、レイヤーが多くなるほど取得時間がものすごくかかって
使い物にならなくなってくるんですよ。

マニュアルに載っていない4文字の引数のリファレンスを、偶然海外サイトで見つけました。ココ
マニュアルにはないもので、リンク先消えるとまずいんで、ページ保存しておくと良いですよ。
そしてもっとよく調べたら、どうやらabobeのサイトにもあるようで。ココ

そしてこのスクリプトに詳しい人たちがいっぱい居るサイトはココです。
掲示板での会話は英語ですが、タイトルやスクリプトの中身を見ると、大体わかるので、何とか情報得られると思います。
ココから検索したいキーワードを入れると該当する単語があって質疑応答しているトピックスが出てきます。
やばいときは翻訳サイトフル活用すれば良いのです。


やっぱりリファレンスの日本語翻訳がないせいか、このPotoshop Scriptingに関連する日本語サイトが少ないので、掲示板とかで
これらに関するScriptingのコミュニティを作ろうかと考えてます。
もっと日本でもこの画期的なスクリプトを使って、クリエーターが効率化出来るよう広めるべきです。
なぜabobeさんはPhotoshop7.0からずっとscriptリファレンスを翻訳しないんだろうと…(^ω^#)
忙しいのですかね?


結構マジになって解説しちゃいましたが、実際もしかしたらユーフォーテーブルさんはどこかに特注したプラグインと撮影テクニックだけで
これをやっている可能性もあるので、スクリプト作ってやったかの真実は定かではありません。

しかし表現の幅を広げるのに、プラグイン使いこなし+テクニック+スクリプトで、
驚愕にクオリティが高い映像を大量生産出来ることに違いありません。

ちなみにGONZOやI.Gには、募集要項で撮影にSE系の人を雇うあたり、
このような撮影テク+プログラミングを使いこなすスペシャル集団で集結しているようです(笑

アニメーション技術の本で、江面さんとかの記事を見る限り、ほんとすご腕の人は現場でも半端なさそうですw





2008/10/21 21:59:18


デスクトップマスコットに作業のお手伝い

C言語の手っ取り早い習得のためと、画面上にいつも雑用をお手伝いするデスクトップマスコットが居たら便利だろうなぁ
ということで、強化週間中の勢いに任せ、お手伝いデスクトップマスコット制作プロジェクト(再)始動です
(前からちょくちょくやってましたが、どうも進まず^^;)。


自分専属の作業のお手伝いだけでなく、後々の配布なども考えて、一般的なお手伝いも組み込んで完成させようと思います。


それと、
NScripterは、構成やストーリーを用意したら、ラフ絵や写真などの仮素材を配置しながら日々スクリプトを組んで、
とりあえず作品の骨格をまず完成させ、そのあと丁寧に仕上げた絵を描いて、順次仮素材と置き換えていくって形で進めたいと思います。


物事はある程度局所的に極めることが大切と言われることがありますよね。
この前テレビで見たボディビルダーの方曰く、今日は片方の足だけ筋トレとか、局所的に筋肉を極めていくようです。
とりあえず今はプログラムを局所的に頑張ります!




2008/10/21 21:57:54

CGIの一つの手段として、PHPに引き続き、Perlも入れてみたんですが、
それでメールの送信のテスト環境として、RadishとSendまね〜るを入れて、
送信テストするも指定したアドレスに着信なし。。

携帯電話のメアドでもなく、yahooとプロバイダーのメアド両方試すも
反応無しです...。

sendまね〜るでの送信テスト、一応ネットにつながっていることも確認し、

C:\www\sendmane>type sendtest.txt | sendmane ***@***.co.jp

とコマンドプロンプトから入力。

Radishの大根のアイコンがずっと真っ赤になったままですw(ずっと送信中)

ブラウザでhellow worldは確認出来たので、ここは一旦保留しておきます。



2008/10/21 3:03:35

ACCESS




書類とかデータベースを扱うのに便利ということで、ちょっとずつ触ってみます。
タイムシートはエクセルで目星つけてて、アクセスの使い道は様子見なんですがね。
だけど、カットごとの素材を管理してファイルを自由にアクセスしたり移動したり、その他もろもろ管理するのに、
アクセスでタイムシート作成という可能性もあります。

Photoshopの操作と機能を極めてからPhotoshop Scripting、
MAYAの操作や機能を極めてからMELスクリプトでプログラミングというように、
ACCESSもまずはそのものの操作や機能を使いこなしてからでないと、
VBAとかは早いかなと思いつつも、VBAを並行してやろうと欲が出ています(笑

ちなみに最近知ったんですが、LightWave3Dにも、LScriptとかいうスクリプトが
あるようです。ただ現場では3dmaxとmayaが主流ですからねぇ。。
しかしどの道楽するため使うと思いますがw


オフィスのセット入れたときに、いろいろついてくるメジャーなもの以外の
小さなツール、引っ張り出してみると便利だったりします。
例えば、オフィス付属のピクチャーマネージャーは画像の調整でフォトショ開くまでもないときに使うと便利です。
軽い、ある程度精密に調整できるところです。

・・・最近ツールマニアと化してますね^^;
これもクオリティ高い映像制作を実現するための下準備ということです。



2008/10/21 2:40:44


C#のGUI、形は出来ました。レイアウトとかデザイン完全無視です^^;
コマンドラインでjavascript送るバッチファイルにもボタンを押してアクセス出来るので、
これで一旦打ち切ります。




タブ内下の空白は随時埋まっていきます。

ちょっとてこずった点、怪しい点をメモします。

・"\"→"/"にしないとエラー
・バッチファイルを介さず、直接.jsxを指定してコマンドラインでPhotoshopなどの実行ファイルに送れないか?

現在、以下の1行の記述だけでボタンを押して実行を行ってます。

//===========================================================================

		private void button1_Click(object sender, System.EventArgs e)
		{
			// 他のアプリケーションを起動する
			try
			{

				System.Diagnostics.Process.Start("C:/Program Files/Adobe/Adobe Photoshop CS2/Photoshop_Automation/Photoshop_scripting.bat");
				
			}
			catch ( Win32Exception )
			{
				MessageBox.Show("起動できませんでした","実行エラー");
			}
		}

//=============================================================================


ボタンを押したとき、アプリケーションなどを開く方法として、以下の書き方もあるようです。

//============================================================================

		private void button1_Click(object sender, System.EventArgs e)
		{
			// 他のアプリケーションを起動する
			try
			{
				//アプリケーションはprogram Filesに入れる必要がある?
				System.Diagnostics.Process proc =
					new System.Diagnostics.Process();
				
				//proc.StartInfo.FileName = "C:/Program Files/Adobe/Adobe Photoshop CS2/Photoshop.exe";
                //フォトショの起動を確認
				proc.StartInfo.FileName = "notepad.exe";
                                //ノートパッドの起動を確認
				proc.Start();
			}
			catch ( Win32Exception )
			{
				MessageBox.Show("起動できませんでした","実行エラー");
			}
		}

//=============================================================================


後々修正予定なのは、

・実行時、一瞬出てくるコマンドプロンプトの画面を消す
・ツールのグループを縦のタブで分ける。
・ナビゲーター動画とかを挿入
・直接.jsxを送るよう書き換え→しかし相対パスで出来るかが不安…
・タブ内のある程度類似作業のスクリプト実行ボタンは、パネルをつけてまとめ、わかりやすく配置する。
・作成したスクリプトをどんどん追加していく。
・キーボードショートカットの割り当て
・ロゴ作成
・メニューのバックの色(白)とか、立体視するようにするとか、各コントロールのデザインの調整

です。

pathを通してあるアプリケーションだと、名前指定するだけで起動できるところあたり、
上手く出来るか試しがいがあります。
ただPhotoshopの場合、CS2とCS3を両方インストールしていると、CS3を優先して起動するのが
謎な点です。


しかし今回作成したバッチファイルの中身、絶対パスだらけの記述は痛手かもです。
5割の確率で他のPCで動かないのがざらかもしれませんorz
どうもadobe製品は、バッチファイルで本体にスクリプト送るのに"..\"とかの相対パスの指定がきかないみたいなんですよ。
引数部分のスクリプトも絶対パスでないと送れないみたいです。

インストーラーで全部のアプリケーションのパス拾って、バッチファイルなどの該当箇所書き換えてプログラム入れるとか、
そんな高度なことは難しいですし・・・^^;

次は、いつもの制作関連スクリプトをねちねち作りつつ、マクロの視点でファイルを操作する方へ移ります。
サーバー側でいろいろ内容変更させたり、情報を各ローカルに返すようにするので、
CGIとかを手付けていきます。ブラウザからの命令もあるので、VBScriptやjavascriptも活躍予定です。

しかし、Photoshop Scriptによる激ムズのGUI制作という課題が…orz
まなびストレートの髪グラデスクリプトが完成したというのに、GUIでパラメーター設定できなきゃ
使い物にならないです。
らきすたのぼかしに関してはパラメーターが5つ、まなびのスクリプトに関しては13個以上と…(´д`;)
あらゆる解像度や状況にも対処できるよう汎用性に富ますも、実質3つくらいのパラメーター調整で
実現は出来るんですがね。。

文字とかの画像認識関連での作業支援は、OpenCVを使いたいところです。
アイデアは、クリップボードを監視させて、キャンバスに描いた一部をフォトショの選択ツール選択&コピー、それをプログラムが、
OCRみたいにして読み取ったりして命令を他のアプリケーションに渡したり、
クリップボードの画像自体を別のアプリケーションに送ったりする感じです。
スクリプトボタンを最前面に表示させてすぐ実行できるようにしたり、キーボードショートカットも
割り当てたりして単なるコピペじゃなくて、アプリケーション間の瞬時なコピペを実現させたいです。
また特定のアクションが起こされたときに、特定の画像情報があるかを判断し、該当するものがあれば、
特定のアクションを実行するというのも作りたいです。

クリップボード関連ex.
Photoshop ⇔ AfterEffectsや映像関連ソフト、オフィスソフトなどへ
特定のアプリケーション同士でなく、リストに上げた各アプリケーション間全てを相互互換させる。

画像処理関連が絡むSDKでのプラグイン制作は、相当余力ないと出来なそうです。
ぶっちゃけ参考サイトの説明読んでる時点で挫折しましたorz


キーボードショートカットで判明したこと、
キーボードショートカットのファイル、"**.kys"をPhotoshopに送る(ダブクリかD&D)と、
変更が適用されるようです。しかしこれはプリセット切り替えでなく、追記上書き?みたいな感じなので、
保険として、初期設定のキーボードショートカットを送る記述、特定作業用のキーボード
ショートカットを送る記述の順でバッチファイルに書き込んで、"変更した"ということにしたほうが良さそうです。

初期設定に戻すのでも、初期設定のキーボードショートカットファイルを送るボタンを作れば
リセットも可能ということです。
なのでスクリプトで記述する手間が省けました。

それとナビゲート動画以外に、ツールチップで機能の簡単な説明やショートカットキーも入れます。
ショートカットキーをツールチップにして、機能の簡単な説明はコントロールに文字で横に添えるで良いかも…!?


あとFormにいつ間違って、変な記述やクリックでの押し間違えとかでコードの部分わからなくならないように、
tmp001、tmp002、tmp003…などとファイルを分けて保存しようと思います。


2008/10/20 1:06:28

C#によるGUIで躓いてますが、とりあえずガチンコモードでやります。
システムを構築するとか口を叩いて、それが思っていたより遥かにやばい難度だと知り、
情報処理の資格系の本を教科書にして体系的につかんでから個々を触っていこうと思いました。




さて、そろそろバイトしないと貯金がやばいぞw(絶対しないですがw)

これも研究室の情報処理がずば抜けた方の影響を受けてます(笑

他にも本屋には、セキュリティとかデータベースとか、高度何とかとか、いろいろな資格本がありましたが、
やはり研究室の先人の方の受けた試験を参考に、参考書を選びました。

試験は受けるかどうか、、いや、受けられるほど力がつくかどうかと悩みつつ、
よく考えると自分資格全然持ってないなぁとちょっと焦ってます^^;

電気主任技術者も絶対使わないだろうなぁと思いつつ、もしもの失業のときのための保険になるかも・・・!
とかいろいろ考えてしまいます。一応随分前に試験対策の本は買ったんですが、
どう考えても範囲が広すぎて、合格は厳しいです。機械やメカとかお話作りのネタにはすごくなりそうなんですがw

それより、電気科で勉強してきたこともやっぱり制作の何かに使いたいなと思って、
現在、補助ハードウェアとなる電気工作物を作ろうと計画中です。もちろんパソコンにつなげていろいろします。

どういうのか言っちゃうと、パソコンから送ったデータをマトリックスLEDでディスプレイ表示させたりするくらいのものです。
過去一度ゼミで作って面白かったので。
市販でもありそうですが、出来れば自分でカスタマイズして使いかってをよくして改造したいわけです。

配信されている好きなニュース流すとか、株の流れの状況を流すとかもやりたいんですが、
映像を作るときのとある作業の補助機器となるよう練っているところです。
パソコン上で情報をパネルで置くではなく、壁に取り付けるだけでやっぱり何か違う…!と思うのです。
ネットワークドライブとか、そこらへんとあわせて、PCがオフラインでもLANは動いていてネットから情報を落とし、
常に電光掲示板で流すのが目的です。あと語学勉強でひたすら勉強内容を垂れ流しでも良いです(笑

電気工作の参考サイトもちょくちょく覗いて、少しずつ概要をつかんでいきたいと思います。


しかし半導体方面は専門の精密機器がなきゃ出来ないので、どうしようもないです。
むしろ半導体とかの研究室の人って神ですねw
同じ科なのにどうやって研究してるかさっぱりですw

回路とかでも、秋葉とかで安いパーツや部品買ってやるとか、業者から直接購入とかするしかなさそうですね。
それにしてもマトリックスLEDは1個1000円もするんですか^^;
サイズ的に8個は欲しいところです。横にある程度の速さで文字流すので。

在学中、と言っても後半年もない中で完成させないと、わからなくなったときが怖いっす (´∀`;)
借りるのはプリント基板で電圧測定とかするためにテスター、半田ごてくらいですが、
ハンダ自体は消耗品で、研究費から落としたいんですがね。。趣味だから無理でしょう。

欲を言うと、うちの研究室の隣がオーディオ系の研究してるんですけど、
この前の卒研の見学で、ディストーションとかディレイとか、いろいろなエフェクタ作ってる人居たんで、
すごく興味しんしんだったんですが、今から作るには到底無理でしょうね(・ω・`;)時間的にも頭脳的にも。
オーディオ関係の機材をハードオフで見てると、中古でもかなり高いんで、大学の部品もらって
組み立てたほうがお得かなとか、、もっと早く挑戦するべきでした。




2008/10/19 19:36:22

アニメ制作・ゲーム制作に欠かせない音楽もちょくちょく真面目にやっていきたいと思います。
Sonar7を買うまではSingerSongWriterとACIDでやります。一番欲しいのはVSTiとか音源なんですがね^^;

それでVSCがどうも発音しないみたいなので、とりあえずサウンドブラスターをMIDIポートにして発音させてやる
ことにしました。

SSW80のVSTPluginの中にVSC.dllをプラグイン追加のモジュールで入れたはずなんですが、なぜか入らないので手動で
VSC.dllを入れました。

唯一の救いで、VSTiでVSCはしっかり動くようなので、今は耐えます。原因もそのうち見つかることを信じて。。



PEARと言い、VSCと言い、一度落とし穴にはまると何度もトライして時間だけが過ぎていきます・・・。

ということで、一部機能しない場合が今後発生したら、それをパッチをあててしのぐような姿勢で取り組んでいきます。




2008/10/19 0:22:39

同人ゲーム制作のために、NScripterを少しずつ触ってみようと思います。
NScripterは簡単にゲームのプログラムが組めるようにつくられたスクリプトってところです。
FLASH組み入れとかその他動画ファイル組み入れ、もろもろプログラム足し合わせてやったりも検討中です(出来るかはまだ調べてないですが…orz)。
NScripterは同人の限り使用料は発生しなということだそうです。商用利用は1作品40万円の金払います。
その道も考えるなら、早くC言語習得しろって話ですが・・・orz とりあえず来年あたりからすぐ同人ゲーム作れるよう手配するまでです。
吉里吉里でも良かったんですが、とりあえずまずはNScripterを触ってみます。

実はちょっとひぐらしに影響されてます^^;そのついでに、ゲームシステムを参考にと、いろいろなPCゲームにも手を出す始末orz(時間ないorz)

それで早速ダウンロードして使ってみました。まずは定番、ハローワールド。




ワクワクしてまいりましたw


それでもっとゲームっぽくと、過去描いた絵の素材を使って組んでみました。





















これはいける・・・!w

なかなか面白いですねぇw

ちょっと変な妄想に走っちゃってますがww

けっこう簡単な記述で出来てしまうようです。

//============================================
*define

linepage

caption "ハートブレイカー〜another story〜"

resetmenu

insertmenu "終了",end

insertmenu "ウィンドウ",window

insertmenu "フルスクリーン",full

insertmenu "次の選択肢へ進む",skip

game

*start

bg "haikei01.bmp",1

10月19日、美咲とのデート当日である。


setwindow 30,320,25,4,22,22,1,0,0,0,0,#666666,10,300,648,486


聡:「女の子とデートなんて初めてだ…。緊張するぜ…。」

「それにしても2時間たったのにまだ来ないぞ…」

と、そのとき、美咲が現れた!

bg "gousei01.bmp",1

美咲:「ごめん!待った??ちょっと電車が止まってて」

美咲:「ほんとにごめんね」

//==============================================

立ち絵と背景はもちろんレイヤーみたいにして分けるべきなので、
後々方法メモっていきます。



シャッター機能とかゲームならではのエフェクトも面白そうです。

スクリプト書いてくうちにデバッガーも欲しくなるところですが、また探してみます。あるのかな、、。
(2008/10/19 1:46:53※デバッガ機能あるっぽいです)

さすがに東方みたいなシューティングは作れないと思うので、さっさとCやっちゃいなさいって感じですね^^;
でもアドベンチャーゲームはこのNScripterで作ろう。


もっと触って遊んでいたいところですが、やりたいことはまだまだいっぱいあるので、
これからゆっくり触って、面白いスクリプトの部分メモってきます。

大学の研究の方優先しないとです^^;




2008/10/19 0:02:34


最近ペースが落ちているので、気を改め、強化週間とします。激しく更新出来るよう頑張ります!


やるべきことリスト

・C#でGUI制作→形が出来て、スクリプト実行まで出来れば一時完了
・AEスクリプト制作の準備(マニュアル読んだり、調べたり、アイデア出したり)



上記のに行き詰ったら別のことして気を晴らします。