cerezo OSAKA
いちおす VOC@!!
只今、絶賛ヘビィローテ中のボーカロイドなのです。
アカウントが無い方はサムネで我慢・・・
運営さ~ん、早くニコ外部プレーヤーに対応してよー
( ;゚Д゚)y─┛~~ マッテルンダゼ ピノキオP ほんの一瞬だけ ほんの一瞬だけ.............2009/06/05 DECO*27P 方程式 A=Lt²(愛=恋×時間の2乗) (歌ってみた)♪.............2009/05/09 若干P 一番最初にキミに触れてしまいそう・・・・ (T△T) (歌ってみた)...............2009/05/02 ほえほえP 2度目の告白ソング(歌ってみた)♪...............2009/02/27 DECO*27P DecoPの神曲を神々が歌ってみた♪.............2009/02/27 ryoP もう溜息しかでてこない(歌ってみた)♪..........2009/02/27 トラボルタP 伝説のRINマスター会心の神曲♪..................2009/01/08 ずどどんP 掻き鳴らすギター♪..................2008/12/12 すこっぷP 期待の新人♪.............................2008/12/12 samfreeP 萌えリン♪...................................2008/12/11 ここ狭いP 低音レン♪...................................2008/12/11
気付いたら突然増えてると思います・・・
|
× [PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
久しぶりの更新です。
前の更新から既に1ヶ月も経ってるのですが、その間にPCのハードディスクが壊れまして 晴れてWindows7にアップグレードとなりました。 おかげで前の記事で公開したアニメーションライブラリが使えなくなっちゃったんですけどね。 windows7でもいろいろ試したんですが、うまくいかなかったのであれはもう忘れようかと思います。 で、それまで書き溜めていたスクリプトのメモ帳なんかも消えちゃったので 最近はちょこちょこと思い出しながら新たに書き起こしてたのですが、 今回はそんな中からソートに関してのお話を。 以前はソートさせるのに結構面倒くさいことをやってまして、今見ると苦労してんなーと 思っちゃうんですが、簡単な方法をサイトで見つけてからは楽に出来る様になりました。 まぁ無知なりにも何とか実現させようとしたその労力は、今に繋がっていますけどね。 たぶん。 で、ソートする時のポイントとしては、ソートさせる情報を連想配列で持っておく ということです。普通、配列だと var aaa = [ 1, 2, 3, 4 ]; てな感じですが、これを連想配列にすると var bbb = [ {val:1}, {val:2}, {val:3}, {val:4} ]; て具合になります。 aaa[0] の値は "1" で、bbb[0].val の値は "1" になります。 連想配列ではそれぞれの値を連想させるプロパティを持たせる感じなので、 例えば複数の値を var ccc = [ { name: "compA", width: 300, height: 200 }, { name: "compB", width: 200, height: 100 }, { name: "compC", width: 100, height: 300 }, ]; みたいにすると各プロパティで自由に取り出せて整理もしやすいですね。 しかも各プロパティでソートができます。 ソートは sort() を使うのですが、このままではプロパティでソートできません。 オプションで関数を使うことで可能になります。 ccc.sort( smallWidth ); function smallWidth( a, b ) { return (a.width > b.width) ? 1 : -1 ; } この例では小さい値から大きい値にソート(昇順)します。 a.width > b.width を a.width < b.width にすることで降順にでき、 width を他のプロパティに変えることでそれぞれのプロパティでソートできます。 つまり各プロパティごとに関数を用意する必要があるということです。 上の例の場合、ソートする前の ccc[0].name の値は "compA" ですが、 ソート後の ccc[0].name の値は "compC" になります。 この連想配列をいかにうまく作るかで後の苦労がかなり変わってきます。 ここからが本題ですが、例えばコンポ内のレイヤーに対してソートする時に わざわざ連想配列を作る必要がない場合があります。 レイヤーオブジェクトには複数のプロパティがありますので、取得したままに ソートできます。 //選択中のレイヤーを取得 var ddd = app.project.activeItem.selectedLayers; AfterEffectsでは、items, layers, selectedLayers などを使ってアイテムを 配列で取得した場合、その配列は全て "1番目" から始まる仕様になってます。 これはプロジェクト内やコンポ内には "0番目のアイテム" という概念がないからですが 普通、配列といえば "0番目" から始まるので、AEスクリプトを書き始めの頃は 何が何だかわからずに非常に悩ましかった記憶があります。 で、このままだと後々都合が悪いので "0番目"から始まる配列に置き換えます。 //0番目からのオブジェクトに置き換え var selLys = new Array(); for(var i=1;i<=ddd.length;i++){ selLys.push( ddd[i] ); } //ソート selLys.sort( smallPosX ); //ソート用関数(X座標 昇順) function smallPosX( a, b ) { return (a.position.value[0] > b.position.value[0]) ? 1 : -1 ; } と、これでレイヤーのX座標でのソートができます。 まだ全てを試した訳ではないのですが、トランスフォームプロパティに対しては そのままでもソート出来るようです。 他の index や inPoint などのプロパティは、別で連想配列を作ってやらないとダメでした。 まぁ、それでも連想配列さえ用意すれば比較的楽にソートできると思います。 さて、やっとこさタイトルにもありますがスクリプトの紹介ですよっと。 コンポ内の選択レイヤーを各プロパティでソートし並び替えるスクリプトです。 コンポ内にカメラレイヤーがある場合(複数可)は、レイヤーが3Dレイヤーかどうかは関係なく 対象のカメラからの距離で並び替えできます。 (カメラから遠いレイヤーから順番に下から並べるとか) 1つ問題がありまして、スクリプトで取得できるのはローカル座標なので、もし親子関係になってたり する場合、意に反する結果になると思います。 これを解決するには何かしらワールド座標を取得する必要があるのですが、今回は入れていません。 今後、使用していく中で必要を感じるようなら考えます。 あと、今回ウインドウはダイアログで作ってます。 閉じないとAE側に触れないのですが、気分でそうしちゃいました。 これに関しても使ううちにイライラするようなら変更するかもしれませんです。 sort_Layers.jsx (zip) ← 右クリックでDL =動作確認= AfterEffects CS4 / windows7 & mac OS 10.6.8 AfterEffects CS5.5 / windows7 ======追記======= 書き忘れましたが、カレントフレームでの値でソートしているので、 キーが打たれてある場合はカレントフレームの位置によって並びが変化しますよっと。 投票ボタン付けてみました。 べ、べつに押したっていいんだからねっ! s(●'へ'●)2 PR |
カレンダー
カウンター
最新記事
(04/13)
(03/15)
(03/06)
(02/14)
(02/03)
プロフィール
HN:
curryegg
性別:
非公開
自己紹介:
たま~にしか更新しないです。たぶん・・・・
最近メールアドレスが変わりました。 ご意見、ご要望などありましたら curryeggs@gmail.com までお願いします。 Twitter : http://twitter.com/curry_eggs Twitpic : http://twitpic.com/photos/curry_egg
Scripts & Applications
これまでに公開した、
稚拙スクリプト&アプリです。 AfterEffects CS4~ Scripts レンダーキュー追加スクリプト改訂版 setRenQ_CC AfterEffects CS6~ Scripts 演出支援 コンテ撮用スクリプト集 conte_Compositor AfterEffects CC Scripts AE CC 2014対応 テキストレイヤーフォント一括編集&フォントリスト作成スクリプト fontChanger_CC AfterEffects CC Scripts AE CC 2014対応 カスタマイズ・スクリプトランチャー CustomLauncher_Extra_CC_2014 AfterEffects CC Scripts AE CC用 エクスプレッション・エディタ EXP_Editor_CC AfterEffects CC Scripts AE CC ポップアップインターフェイス テストスクリプト test_popupUI_CC AfterEffects CC & CS6 Scripts AE CC & CS6 タイムシートスクリプト 正式版 timesheetAE_CC AfterEffects CC Scripts AE CC版 タイムシートスクリプト ベータ版 timesheetAE_CC_beta AfterEffects CC Scripts AE CC対応 カスタマイズ・スクリプトランチャー CustomLauncher_Extra_CC ver3.0 AfterEffects CC Scripts AE CS6版 タイムシートスクリプト ベータ版 timesheetAE_beta AfterEffects CS4~6 Scripts テキストレイヤー一括編集 font_Changer AfterEffects CS6 Scripts CS6用 エクスプレッション・エディタ EXP_Editor AfterEffects CS4&CS5.5 Scripts 選択レイヤーを各プロパティでソートし並び替えるスクリプト sort_Layers AfterEffects CS4 Scripts AE CS4用 パスのポイントに合わせて配置スクリプト PathToCrowd AfterEffects CS4 Scripts AE CS4用 scale & starttime ランダムスクリプト ramdom_Collection_Lite AfterEffects CS4 Scripts AE CS4用 複数フッテージ 置き換えスクリプト ReplaceFiles_SameDirectory AfterEffects CS3 Scripts AE CS3用 カスタマイズ・スクリプトランチャー CustomLauncher_Extra_CS3 AfterEffects CS4 Scripts AE CS4用 レイヤーマネージャー テストスクリプト LayerManager_test AfterEffects CS4 Scripts AE CS4用 ポップアップUI テストスクリプト popupUI_test AfterEffects CS4 Scripts AE CS4用 ブラインドパネルUI サンプルスクリプト blindPnlUI_sample AfterEffects CS4 Scripts AE CS4用 カラーピッカー サンプルスクリプト pickerUI_beta AfterEffects CS4 Scripts AE CS4用 パラ/フレア 高速オペレーションスクリプト FP-Launcher_CC AfterEffects CS4 Scripts AE CS4用 レンダーキュー追加スクリプト setRenQ AfterEffects CS4 Scripts AE CS4用 カスタマイズ・スクリプトランチャー CustomLauncher_Extra AfterEffects 6.5 Scripts AE 6.5用 複数コンポエディットスクリプト EditComps_for6_5 AfterEffects 6.5 & CS4 Scripts AE レイヤーソートスクリプト CompLayers_Sorting AfterEffects CS4 Scripts AE CS4用 複数コンポエディットスクリプト EditComps_forCS4 AfterEffects CS4 Scripts & Applications AE CS4スクリプト&タイムシートアプリ TimeSheet_CS4_forWin(Mac) AfterEffects 6.5 Scripts & Applications AE 6.5スクリプト&タイムシートアプリ TimeSheet_forWin(Mac) AE 6.5 タイムリマップ サンプルスクリプト タイムリマップ Sample Script Java Applications アニメーション作画・演出支援ツール eseQ_Tools (eseQAR & eseQScan) PhotoShop CS2 Scripts 複数レイヤーのレイヤーカラーを一気に変更 SelLyColor_Chg_EXX(jsx) レイヤー名変更プリセット LyReName_Set(jsx) 複数ファイル統合ドロップレット Drop_Import_Files_Delux(jsx)
カテゴリー
ブログ内検索
最新コメント
[09/28 Scottlor]
[09/27 MarquisVeT]
[09/26 スーパーコピー時計]
[09/05 高級時計コピー]
[08/30 スーパーコピーブランド専門店]
最新トラックバック
最古記事
(09/09)
(09/12)
(09/19)
(09/20)
(09/20)
アクセス解析
どろんぱ
|