編集(管理者用) | 編集 | 差分 | 新規作成 | 一覧 | RSS | FrontPage | 検索 | 更新履歴
== o ==
ねこまたや web出張所
INDEX

トップページ
お知らせ
twitter
お道具箱
技術資料と雑談
ライブラリ
雑貨や(ダウンロード)
最近の更新
ねこまたやについて

twitter

ねこまたやのついった

企画モノ

psAxe情報ページ
自主制作アニメ
ぽこあぽこ られんたんど


あやかしあやし
エフェクトネタ帳



りまぴん
AE エクスプレッション
レンダー乙女とか
簡易版XPSリンカ
おまけギャラリ

BBS

ねこまたやBBS
開発室BBS

Language



開発室みたいなものでしたが
spamアクセスがはげしいのでページは凍結中です。
書き換えは管理人のみが可能です。
Nekomataya/2024

レンダー乙女とか - AdobeAfterEffects


目次

AdobeAfterEffects

レンダー乙女…ヘンだね

レンダーオートメーション関連の話題

ああ、なんだかやっと本格的にさわってみた。 「レンダーオートメーション」などという名前なのでレンダリングのみに特化しているような気がするが、全然そんなことは無い。

要するに、「ExcelのVBA」とか「GIMPのscript-fu」みたいなアプリケーションコントロールマクロであります。

さらに中身はjavascript(ECMA-262)なのです。

javascriptだけではなく、定番の

AEスクリプトでバイナリファイル

ちょこっと実験開始 できるかな? でっきーるっかーなー?

アルファテスト開始しました。

ほえほえ、だいぶ出来てきたのでアルファテスト版として公開試験に移行します。

アルファテスト 公開中
気になる方は、どーぞご遠慮なく。

パレットメニュー 装備
乙女ツール(アルファ)のご紹介(1)

暫定仕様です。さらにAEのバージョン変更時期と重なったので、本番開発はAE7上で行います。

つまり AE6.5対応版は、アルファでオシマイ…ええ。

今年中ぐらいに形になるといいですね。御意見・御感想お待ちしてまス。

…とか言いつつ

ぐだぐだしている間にすでにCS4(AE9) そしてCS5の声も聞こえる今日この頃です :乙女とかリファレンス

お引っ越し準備開始

「乙女」周りを、 AE6.5 から 7.0 環境に移行する為の情報を切り分けたページを作ります。

乙女の引っ越し オブジェクト変更一覧は、こちらに移動しました。

何かお気づきの点などありましたら、がんがん突っ込んでください。

手始め

様子見のためにカンタンにコマンドをためしてみる「簡易コンソール」を作ってみたよ。

//お試しコンソール
//	Nekomataya/kiyo	2005.11.07
//	改行コード調整追加	11.08
//	ファイル読み込み追加	11.09
//	mac上での表示の改善・簡易GUIライブラリ試験 11.17
//	調整 11.23  これでおわりかな
//	保存対応することにした。一応
//	ついでにPhotoshop対応 inDesignとか他のCS組はもってないのでワカリマセン。12/21

try{if(app.isProfessionalVersion)
	{
		app.name="Adobe AfterEffects";
		var isWindows=(system.osName.match(/Windows/))?true:false;
	}else{
		isWindows=false;
	};
	if(isWindows){var LineFeed="\x0d\x0a"}else{var LineFeed="\x0d"};
}catch(ERR){
	isWindows =true;
}
/*
	edittextに初期状態で256バイトでペーストや手入力が打ち止めになる現象がある。
	スクリプトでのデータ追加を行うと動的にメモリが確保されているようなので、
	これは、edittextに無理やり空白を追加してフラッシュするメソッド。
	このバグが解消したら不要。	引数はループ回数。1回アタリ1kb
*/
function getScript()
{
if(isWindows){
	var scriptfile = File.openDialog("読み込むスクリプトを選んでください","JSX-Script(*.jsx *.js):*.JSX;*.JS");
}else{
	var scriptfile = File.openDialog("読み込むスクリプトを選んでください");
}
if (scriptfile && scriptfile.name.match(/^[a-z_\-\#0-9]+\.jsx?$/i)){
	var myOpenfile = new File(scriptfile.fsName);
	myOpenfile.open("r");
	myContent = myOpenfile.read();
	return myContent.replace(/(\r\n?|\n)/g,LineFeed);
}else {return false;};
}
function addBuf_(KB)
{
	var xStr="";
	for(m=0;m<KB;m++){for(n=0;n<1024;n++) xStr+=" "};
	this.text +=xStr;
	this.text ="";
	return this.text;
};


function saveText()
{
if (! commandBox.text){alert("保存するデータがありません");return false;}
if(isWindows)
{
	var mySavefile = File.saveDialog("書き出しのファイル名を指定してください","nasXPSheet(*.js *.jsx *.txt):*.JS;*.JSX;*.TXT");
}else{
	var mySavefile = File.saveDialog("書き出しのファイル名を指定してください",);
}
if(! mySavefile){return};
if(mySavefile.exists)
{
if(! confirm("同名のファイルがすでにあります.\n上書きしてよろしいですか?")){return false;};
}

if (mySavefile && mySavefile.name.match(/^[a-z_\-\#0-9]+\.(jsx?|txt)$/i)){
var myOpenfile = new File(mySavefile.fsName);
	myOpenfile.open("w");
	myOpenfile.write(commandBox.text);
	myOpenfile.close();
}else {
	alert("拡張子は js/jsx/txt を指定してください。")
	return false;
};
}
// GUI Setup
//簡易GUIライブラリ
	var leftMargin=12;
	var rightMargin=24;
	var topMargin=2;
	var bottomMargin=24;
	var leftPadding=8;
	var rightPadding=8;
	var topPadding=2;
	var bottomPadding=2;
	var colUnit=120;
	var lineUnit=24;
	var quartsOffset=(isWindows)? 0:4;
function nasGrid(col,line,width,height){
	left=(col*colUnit)+leftMargin+leftPadding;
	top=(line*lineUnit)+topMargin+topPadding;
	right=left+width-rightPadding;
	bottom=(height <= lineUnit)?top+height-bottomPadding-quartsOffset:top+height-bottomPadding;
		return [left,top,right,bottom];
}
	myWinsize=[512,480];	myWinOffset=[239,40];

if (app.name=="Adobe AfterEffects"){
var testConsole= new Window("palette","nas-Console",[myWinOffset[0],myWinOffset[1],myWinsize[0]+myWinOffset[0],myWinsize[1]+myWinOffset[1]]);
}else{
var testConsole= new Window("dialog","nas-Console",[myWinOffset[0],myWinOffset[1],myWinsize[0]+myWinOffset[0],myWinsize[1]+myWinOffset[1]]);
}
var titleLabel=testConsole.add("statictext",nasGrid(0,0,480,24),"試験コンソール nas(u) tools (Nekomataya/2005)",);titleLabel.justify="right";

var resultBox=testConsole.add("edittext",nasGrid(0,1,480,192),"",{multiline:true});
	if(app.name=="Adobe AfterEffects"){resultBox.addBuf=addBuf_;}

var commandBox=testConsole.add("edittext",nasGrid(0,11,480,192),"",{multiline:true});
	if(app.name=="Adobe AfterEffects"){commandBox.addBuf=addBuf_;}

actButton=testConsole.add("button",nasGrid(0,9,480,24),"evalCommand",);
cluButton=testConsole.add("button",nasGrid(0,10,120,24),"clearResult",);
clbButton=testConsole.add("button",nasGrid(1,10,120,24),"clearCommand",);
loadButton=testConsole.add("button",nasGrid(2,10,120,24),"load",);
saveButton=testConsole.add("button",nasGrid(3,10,120,24),"save",);


		actButton.onClick = function (){try{resultBox.text += eval(commandBox.text)+LineFeed;}catch(err){resultBox.text +=err.toString()+LineFeed;}};
		cluButton.onClick = function (){resultBox.text ="";};
		clbButton.onClick = function (){commandBox.text ="";};
		loadButton.onClick = function (){newContents=getScript();if(newContents){commandBox.text=newContents;}};
		saveButton.onClick = function (){saveText();};
//		closeButton.onClick = function (){this.parent.close();};


		testConsole.show();
if(app.name=="Adobe AfterEffects")
{		resultBox.addBuf(20);
		commandBox.addBuf(10);
}
		commandBox.text="/*\tこのボックスにコードを書き込んでください\t*/"+LineFeed;
//理由はわからないが初期状態だと256bでペーストが打ち止めになるのでスクリプト側からedittextの拡張をかけてやる。
余談:
edittext の動作は、なんだかあやしいぞ

htmlの <input type=text /> とか <textarea> に相当する 
"edittext" オブジェクトがあるんですけど…

なんか動作がヘン?

上のスクリプトにありますが、普通にマニュアルどおりに初期化してテキストを打ち込んでゆくと
256バイトでそれ以上打ち込めなくなる…
コピーペーストしても256バイトまでしか張りつかない…
スクリプトから代入すると、何KBでも平気で登録できる…

バグだよね。 うちだけかな? パッチ出てるかな? 

ちょっと、気がついたけど

ブラウザのjavascriptと違って toString() は、あまり徹底してないみたい。

WEBブラウザは、テキストを期待する所にオブジェクトを与えると (toString()メソッドで)"[XX Object]"とかの文字列に変換して極力"エラー"が出ない様に気をつけているけれど、さすがにAEのスクリプトは性質が違うので、その辺遠慮なく "エラー" として文句を言われる…ま当然か…


上のスクリプトは、アルファテストに同梱されてます。


ObjectList

こんなのを作ることにする。

app. 以下のオブジェクトリスト

app以外のオブジェクトもリファレンスが欲しいなぁ…と

…少し拡張して System File Folder Socketも扱うことにする。 む、ソケット関連のマニュアルがないかな? ま、たたいてみればわかるだべぇ


まだまだ続く

ダンプスクリプトを作ったので、とりあえず6.5と7.0の比較用に出力を掲載してみるよ。

ScriptLibrary

AE(含むCSシリーズ)用のライブラリを作ることにする。

大体わかるとはいえ、GUI周りがかなりプリミティブな仕様なので、かなり使いづらい。

さらにプリミティブなわりには、拡張性がイマイチ? つー! あとは、「りまぴん」や「お道具箱」周りで使っている関数やオブジェクトの移植。

あと、「ねこまたや」拡張仕様? んー さらに詳しくは ScriptLibrary


役立つ関連リンク

オブジェクト指向プログラム言語としてのJava Script

Java Script 講座

下のふたつの記事には、Javascript の HTML で無い部分についての解説があります。


こちらは、便利な関連リンク。何かご存知の方は教えてください。