Pages

2015年12月31日木曜日

2015ラストは検索スクリプト更新ネタ

お疲れ様です。
最終日にしてぎりぎり今年の仕事が収まりました。

***
さて2015年は”今年もよろしく記事”の次が大晦日になってしまいました。

今年は数件、このブログ読んだ方から連絡を頂いたりと嬉しいレスポンスを頂けた年なので、もう少しマメに書かねばと思いつつ、なかなかネタが無かったりもします。

仕事でメインに使うのが秋口までAftereffectsからCINEMA4Dに切り替わっていたこともあり、またコンポジットソフトとしてBlackmagicFusionに目移りしていたこともあったりして、AEについてはあまり新しいネタもなく、かと言ってC4DやFusionは記事にできるほど理解が深まってない、みたいな宙ぶらりんな一年でした。

C4Dでは、VRayforC4Dを実戦投入できたので、そのへんもっと突っ込んでみたいのと、シミュレーションのNAVIE Effexをそろそろまともに動かしたい、というのがちょっと早いですが来年の豊富でしょうか。
あとは、Fusionに絡めてPythonをいい加減まじめに習得したいところです。
次の更新が2016末なんてことになりませんように。


***
さてさて、毎度長い枕はこの辺にして、今回も本題のスクリプトネタです。
この年末に、以前公開したエフェクト検索スクリプト”searchFX.jsx”のダウンロードが急に伸びたことがありました。

だいたい普段は周に5-6件ほどのアクセスですが、今回はその3倍ほど。
急な需要の原因は分かりませんが、どうせ使ってもらうならちょっとでも便利な方が良いかな、と思い、現在自分が現場で使っている更新版を公開することにしました。
(もっと高機能なエフェクト検索スクリプトは他所で幾つも公開されていますけど)

おまけで、テキストレイヤーを探してくるスクリプトも一緒に公開します。



今回ご紹介するのはこちらの2つ。
・1:searchFx+
・2:searchTxtLayer

searchFx+はその名の通り、以前公開したsearchFXの更新版で現行自分が仕事現場で使っているものです。
目的のエフェクト名を入力することで、そのエフェクトを使用しているコンポ、レイヤーを一覧表示します。

検索部分の機能は同じなので、見つける精度が上がったりなどはしていないのですが、
保存されていないコンポでも検索できたり、検索結果をテキストとして吐き出す前に
AE上のプロンプトで簡易確認できたりします(何気に便利)。

検索に関しては、空白などはそのまま入力しないと検出できませんが、大文字小文字については無視できます。
エフェクト&プリセットウィンドウを開いて(ctrl+5)、見つからないエフェクトフォルダあたりから検討をつけて探すと良いのではないでしょうか。


searchTxtLayerもそのまま、テキストレイヤーをすべて探して一覧表示します。
使用しているフォント名なども表示するので、"もらったコンポに持っていないフォントが使われているレイヤーがあるけど、それがどこだか分からん!"なんてときに便利です。
さり気なく重宝しているスクリプトです。


興味を持たれたら、お気軽にDLして使ってみるなり、中身を覗いてみたりしてください。
致命的なエラーやダメージを与えることはないと思いますが、一応使用については自己責任ということで。
ご意見やご質問などもお待ちしております。


それでは今年はこんなところで。
来年もなにか面白いネタを提供できれば幸いです。
良いお年を!!

2015年1月24日土曜日

2015 今年もよろしくお願い致します



前後してしまいましたが、本年も宜しくお願い致します。

<2014-2015>
昨年はお仕事的にはアニメ撮影の定期案件が終了し、イベント系ばかりになるのかな、
と思いきやありがたいことに幾つかお声掛けも頂き、
アニメ撮影やったりプロジェクションマッピングやったりとなかなか多彩な一年でした。

今年もスタートしてはや3週間立ちますが、1月にしてはまれに見る仕事の詰まり具合で正月ボケしている暇もありません。
来月からはまたお呼ばれしてのアニメ撮影3回戦突入となりそうです。


気がつけばお仕事始めて丸十年が経ち、とりあえずコレ一本でご飯が食べられているので、
「職業:プロの映像制作」とそろそろ名乗ってもいい頃合いなのでしょうか。

普段の仕事にプラスして、年末にVRayforC4D,NAVIE Effexを購入したのでそちらのお勉強も進めていきたいところです。
そう言えばFusionもいつのまにかBlackmagic製品にラインナップされていたり、近年のCG業界はますます加速してますね。
トレンドを追いかけるのが目的ではありませんが、本格化しつつある4K規格など含め、
「何でどうやって作るか」がその時々でベストなのかも見失わないようにしつつ、やっていきたいと思います。


<リマインダーと単語帳>
最近とみにモノを憶えることが苦手になってきたので(忙しいのと憶えることが増えたからでしょうきっと)、
記憶に関しては外部装置に頼るテストをしています。

日常のTodoやらは、iPhoneのリマインダーに思いつくそばからメモっては時々チェックし、
仕事のチェック項目は(アナログの)付箋に書き込んでモニタ横にぺたぺたと。
CGや語学で調べ物をしたら、小振りなノート単語帳にメモってすぐにソートできるようにしてみてます。
(そこまできっちり記録先を分けているわけではないですが…)

以前はEvernoteなどデジタルなメモ帳にまとめていたのですが、どうやらチェック後にすぐ忘れて良いものとは違って
出来れば憶えておきたいことはアナログなツールにまとめた方が、僕の場合は都合が良いようです。

こんな記事もあるので、書き留めれば記憶に残ってくれるというほど簡単なものでもないのでしょうが、
この歳になって、受験生みたいな筆記用具に囲まれているのは何だか不思議な気もしますね。
願わくば、少しでも血肉になってくれていますように。


それでは、改めまして2015年も宜しくお願い致します。

2015年1月20日火曜日

2015 スクリプト第一弾 も一つおまけのAEスクリプト ”projectOpenerPlus”

年末にちょっと時間が出来たので復習がてら社内で欲しいツールを募集してみたところ、
「Aftereffectsで既存のプロジェクトを開く際に、いちいちファイラーで深い階層まで潜らなくても済むツール」
というオーダーがありました。

そもそも深い階層にファイルを置かざるをえない仕様がどうなのよ、てのはありますが、 自分一人だと普段思いつかない機能だったのでこれ幸いとひとつ作ってみました。
とりあえず、動作に問題は無さそうだったのでこちらでも公開してみようと思います。

 ”projectOpenerPlus” 

何気に初めてのUI付スクリプトだったりします。
基本的にはAdobeデフォルトのpromptで十分だと思っているのですが、今回はドロップダウンリストを使ったほうが便利かな、というのもありましたし、
そろそろUI周りの作法もひと通り抑えておいたほうが良いかと思ったので、半分勉強も兼ねて…という感じです。

UI周りの参考資料は信頼のAEP PROJECT,ほぼこちらのページの引き写しです。

以下簡単に機能を説明します。

・LaunchPadから起動して、データベース内のフォルダを列挙、直接ファイルを開けるようにします  (ファイルメニューから起動しても問題無いとは思いますが…ひとまず、LaunchPad用アイコンも用意しました)
  データベース(要は普通のテキストデータです)への読み書きを行うので、Afterefects環境設定での「スクリプトによるファイルの読み書き」は必須です。

・指定場所に置かれた、特定書式で記述されたテキストファイルを読み込み、確認できたフォルダをリスト表示。
  そこからドロップダウンリストで選択されたフォルダを開き、AEPファイルのオープンダイアログを起動します。
  スクリプトUIからデータファイルを開くこともできるので、ファイラーに戻らなくても、良く使うプロジェクトのリストを整理することができるかと思います。

・検証はAftereffectsCS6で行っています。
  ファイルの削除などは行わないので危険性は相当低いかと思いますが、念の為使用は自己責任ということでお願いします。
  バグなどございましたらお気軽にご連絡下さい。

さて、以下に毎度恒例のスクリプト本文直貼り。
今回は目新しいところではUI周りくらいでしょうか。
お気づきの方はすぐに分かるかと思いますが、ほとんど上記参考ページのままです。
(古橋様、いつもお世話になっております) 

データベーステキストファイルのパスは、スクリプト自身のパスを基準に取得しようとしたのですが、 LaunchPadからの起動だと上手く取得できなかったためアプリのセッティングパラメータから引っ張ってきました。
 (”app.settings.getSetting("Adobe", "launchPad_scriptsFolder")”) 
その他、リロードの際にドロップダウンリストを一度削除してからもう一度配置するなど、あまりクレバーではない気もするのですが、 どなたか解決策などお持ちではないでしょうか。


(function(){
    /*Main Function---------------------------------------------------------------------------------*/
    function showDialog(){
        
        //1:データベースファイルを読み込む
        var dbFileName="projectOpenerPlus_db.txt";
        var dbFilePass=app.settings.getSetting("Adobe", "launchPad_scriptsFolder")+"/"+dbFileName;
        var dbFileObj=new File(dbFilePass);
        if(dbFileObj.exists){            
            var selectedIndex=-1;
            var db=readDb(dbFileObj);
            //2:フォルダの存在が確認できたデータからだけ、リストを作成する
            var dList=checkFolderExistence(db);
            if(dList.length<1 10="" 240="" 250-10="" 250-b1w="" 250="" 40="" 50="" alert="" amp="" b1h="" b1t="" b1w="" b2h="" b2t="" b2w="" btncancel="w.add(" btndbedit.onclick="function(){" btndbedit="w.add(" btnok="w.add(" btnreload.onclick="function(){" btnreload="w.add(" button="" cancel="" dbfileobj.execute="" dbfileobj.open="" ddl.items="" ddl.onchange="function(){" ddl.selection.tostring="" ddl="w.add(" dialog="" dlist="" dropdownlist="" e="" edit="" else="" g="" if="" name:="" ok="" projectopenerplus="" rdb="readDb(dbFileObj);" rdlist="" reload="" replace="" return="" s="" selected="true;" selectedindex="" split="" this.result="function(){return" this.show="function(){return" var="" w.center="" w.remove="" w.show="" w="new" window="">=0));}

        }else{
            alert("スクリプトと同階層にデータベースファイルを確認して下さい(`・ω・´)ゞ");
            return;
        }        
    }

 /*Sub Functions--------------------------------------------------------------------------------------*/
    function readDb(fileObj){
        if (fileObj.open("r")){
            var dbText=new Array();
            while(!fileObj.eof){
                var tText=fileObj.readln();
                if(tText.charAt(0)=="*"){
                    dbText.push(tText);
                }
            }
            fileObj.close();
            return dbText;
        }else{
            alert("データベースファイルが開けませんでした(´・ω・`)");
            return;
        }
    }
 /*---------*/
 function checkFolderExistence(list){
        var checkedList=new Array();
        for(var i=0; i>> Entry Point
    /*---------------------------------------------------------------------------------------------------------*/
    var dlg=new showDialog;
    if(dlg.show!=undefined){
        if (dlg.show()==true){
            var parentFileObj=new Folder(dlg.result());
            if(parentFileObj.exists){
                var result=parentFileObj.openDlg("Select the aep file", "*.aep");
                if(result!=null){
                    var openFileObj=new File(result);
                    app.open(openFileObj);
                }
            }else{
                alert("選択したプロジェクトのファイルパスが合致しません(´・ω・`)");
            }
        }
    }
})();
こんな感じです。
僕は現状仕事では3案件同時並行中だったりしますが、チェックしたり作業したり、ローカルだったりネットワーク上だったりと作業データ代わりと散らかっているので何気にこのスクリプトを重宝しています。
やればそこそこ出来るじゃないか。 

ちなみに、オーダーをくれた子がその後このスクリプトを使ってくれているかどうか…あまり現場を見た記憶がありません(´・ω・`)
宜しくば、一度お手にとってみて下さい。

それでは、今年も思いついた頃にまたスクリプトネタを上げていくかと思いますので、お付き合い頂ければ幸いです。
そろそろ、CINEMA4DやFusionのスクリプトも書けるようになりたいですね。

ではまた、いつかの次回に。


恒例のダウンロードはこちらからどうぞ。
いつの間にかBox.netのUIも洗練されてきてますね。
(15/01/24 肝心のダウンロードリンク先間違ってたので修正(´・ω・`))