乙女プロクシ - [[レンダー乙女とか]]
目次
乙女ライブラリ プロクシメソッドの使用方法とプロクシコマンド
乙女ライブラリの次期サービスで、このような動作のオブジェクトを作成する予定です。
ご意見ありましたら遠慮なくこのwikiまたは開発室掲示板へ(グループメーリングリストもどうぞ)
運用条件nasライブラリがインストールされている事
基本動作
外部プログラムからのコマンドをプロクシ実行して、リザルトを一時ファイルまたはネットワークの指定アドレスに対して送信します。 ネットワーク経由でリザルトを受信する場合は、外部プログラム側でソケットをサポートする必要があります。ソケット通信部分のプロトコルはHTTP1.1に準拠してクライアント的な動作をするように設計されます。 従って、このリザルトを受信する外部プログラムはHTTP1.1の部分的なサーバ機能を装備する必要があります。 リザルトを受け取るプログラムがCGIスクリプトの場合は、通信機能を一般的なHTTPサーバに依存する事ができます。
*初期段階では、HTTP通信部分は設計のみで実際のコーディングは行ないません。…私のスキルがまだ不足です。
そのうち…HTTPお勉強中
- 書式
- nas.otome.prox(クライアントID,プロクシコマンド[,引数]);
基本の操作は以下のようになります。
AEに対して以下のコマンドを発行してクライアントセッションIDを取得する。
- 書式
- nas.otome.prox(YYMMDDhhmmss,getClilentId,""); 例
>AfterFx.exe -s "nas,otome,prox(20060606122021,getClientId)"YYYYMMDDhhmmss にはセッション開始要求を発行した時間の、年月日時分秒を連結した14桁の10進数値を入れてください。
この状態で、乙女プロクシは ファイル ~/nas/prox/YYYYMMDDhhmmss に対してクライアントセッションIDを書きだします。 ファイルには、10進12桁のセッションクライアントIDが格納されます。
発行されたクライアントIDは、この時点では保留です。セッション要求を行なったプログラムは ID取得後にこのファイルを消去してください。 ファイルの消去をもってセッションが開始されます。10秒以内にファイルが消去されなかった場合はセッションは開始されません。 外部プログラムは以後、このセッションクライアントIDを使用して乙女プロクシと通信を行ないます。
ネットワーク経由の場合は、以下のコマンドでセッションクライアントIDを取得します
nas.otome.prox("http://localhost:(port?)/(path)",getClilentId,"");
戻り値はファイル経由の場合と同じですが、通信先はセッション開始要求時に提示されたHTTPアドレスに対して行われます。 10秒のタイムアウトまでに提示されたアドレスからのレスポンスがない場合はクライアントセッションは成立しません。
エーっと 当然ですが「ネットワーク接続先はローカルホスト限定」です。
乙女プロクシは以下のプロクシコマンドを受け取り、リザルトを指定のファイルまたはアドレスに対して戻します。
- getClientId セッション開始要求
- setReturnPath リザルトの戻し先を引数で指定されたパスに設定します。 標準状態では~/nas/prox/(クライアントID) ファイルです。任意のファイル・ネットワークパスを指定できます。
- quitSession セッションを終了します。引数なし。クライアントIDは破棄されて、以後は使用できません。明示的に終了しない場合はそのセッションはAEを終了するまでの間有効とします。
- doExpression 引数をAdobe Script の実行文としてevalで評価して結果をリザルトします。
- doScript 引数をスクリプトファイルとして読出し、乙女プロクシのスコープで実行します。結果はリザルトされます。
必要に従って乙女プロクシ経由でコマンドを実行してください。
以下のコマンドが乙女プロクシの拡張コマンドとして実装されます。(予定)
拡張コマンドアイデア募集中!
コマンド | 引数 | 戻り値 |
catchComp | アイテムindexまたはコンポ名 | アイテムユニークID |
releaseComp | なし | boolean |
getProjectInfo | キーワード | プロジェクト内のアイテムリスト |
getInfo | キーワード | キャッチしているコンポの情報 |
catchComp
コンポをプロクシ経由で操作する為にキャッチします。 コンポをキャッチすると、リリースされるまでの間AE側での操作が禁止されます。 以降のプロクシコマンドの操作対象はキャッチされたコンポ内に限定されます。
releaseComp
キャッチを解除します。getInfo
コンポのレイヤ情報をcsvテキストで書きだします。キーワードで書きだす情報を制御できます。引き数なしは"standerd"
standerd | 標準状態 | index,name,source.id |
proc,proc,… | 書きだすプロパティを直接指定する。 |
例
nas.otome.prox(myClientId,getInfo,"index,name,source.id,parent,time");
getProjectInfo
プロジェクトのアイテムリストをcsvテキストで書きだします。(タブ区切りの方がよいか?)index,name,label,form,size,duration,path,parent,uniqueID
キーワードで取得情報をフィルタする事ができます。 キーワードは以下のうちから選択。引数なしは all
all | 全て |
composition | コンポジション |
footage | フッテージ |
folder | フォルダ |
still | 静止画フッテージ |
movie | コンポジションとシーケンス・ムービーフッテージ |
solid | 平面フッテージ |
seq | シーケンス・ムービーフッテージ |
getSheetTiming
レイヤのキーフレームをJSONテキストで取りだします。 引数は キーワードで制御 今のところ一個だけ
timesheet/all | 全てのタイミング情報 |
({A:[[0, 0], [3, 1], [6, 2], [9, 3], [12, 4], [15, 5]]})
こんなフォーマットです。もうちょっときちんと書かねば…
そのうちJSONのページも作るか…
setSheetTiming
タイムシート情報をレイヤに適用します。引数はgetフォーマットと同じJSONテキストで。
リザルトは 正常終了で「なし」 書き換え失敗が起きた場合は、失敗したレイヤとキーフレームのリストをgetと同じフォーマットで
これができると、同時に複数の外部プログラムからAEのコントロールが…できないこともない…
こんなサービス予定中(設計中)です ツッコミ歓迎…
JSON この辺参考に なります。
Javascript的には、実はオブジェクトのソースをとるだけで生成できるし、 代入するだけでオブジェクトができます。
TimeSheet=new Object(); TimeSheet.A=new Array(); for(idx=0;idx<6;idx++)TimeSheet.A[idx]=[idx*3,idx]; myJSONText=TimeSheet.toSource(); newTimeSheet=myJSONText;こんなものです。むちゃくちゃラク 他の言語で扱ったことはないけど結構ラクそう?
Powered by YukiWiki 2.1.2a / Modified by Nekomataya.