ねこまたぎ お道具箱 目次

■掲示板に戻る■ 全部 1- 101- 最新50

何でも質問箱

1 :kiyo :05/11/14 20:58:35 ID:CfPDLIKk
よいしょソレキタ、質問箱だ。何でも聞いてチョ

答えられることは答えるヨ

私が知らないことは、きっとここを見ている誰かが教えてくれるサ
…よろしくね>誰か

知っていても教えるわけには行かないこと…も時々あるので それは聞かないでほしい


53 :kiyo :06/11/17 03:06:54 ID:51oc7hTs
ハイ、こんばんはです

>コンポの場合も基のコンポを連番1増加あたり1フレームとして扱っている様で
すが、あってますか?

だいたいあってます。
フッテージやコンポのフレームレートが一致している限りそういう扱いで問題ないです…が
フレームレートが一致していない場合は、ケースごとに実時間を参照して変換が行われますので

1.実時間を参照して自前で変換する。
または
2.フレームレートが異なっている場合処理しない。

とかなんとか処置しておいた方が良いかと思います。

>マーカーの名前
名前…と言うかcommentプロパティですね。
マーカーは、他のプロパティと同様にレイヤのプロパティとして扱いますです。
myComment=Layer.property("Marker").keyValue(1).comment;//一番目のマーカーのコメント
myURL=Layer.property("Marker").valueAtTime(1.0,true).url;//1秒めのマーカーのURL

プロパティが保持している値はMarkerValueオブジェクトです。MarkerValueコンストラクタで初期化できます。

myMarker=new MarkerValue("myComment","myChapter","ttp://myURL/","myframeTarget");
Layer.property("Marker").setValueAtTime(1.0,myMarker);
こんな感じ。

でした。

54 :tetu :06/11/17 09:54:22 ID:RQG8hMO6
kiyo様、いつも詳しく教えていただき有り難うございます。

>マーカーの名前
>名前…と言うかcommentプロパティですね。
すいません、コンポジションタイムマーカーの番号を取得したかったのです。。。


以前教えていただいたファイルソースの確認ですが、シーケンスファイルの判別を
下記の様に行っています。
コンポジション等は typeName で判別します。
シーケンスファイルの判別方法でもこのようなプロパティがありますでしょうか?


//ファイルソースの確認
var sLayObj = app.project.activeItem.selectedLayers[0]; // 選択された最初のレイヤー
if( sLayObj.source.mainSource instanceof FileSource ) {

startFileName = sLayObj.source.mainSource.file.name ; // 代表ファイルを取得

// シーケンスファイルかどうかをチェック
if ( startFileName == sLayObj.name )
{
seqFile = false;
} else {
seqFile = true;
}
} else {

//フィルソースでない場合の処理
if( sLayObj.source.typeName == "コンポジション" ) {
alert("コンポジション選択");
}
}

宜しくお願いします。

55 :kiyo :06/11/17 12:48:46 ID:51oc7hTs
どもです

>コンポジションタイムマーカー

ああ、そうですね「番号」ってくらいですから、そっちですね

残念、そちらに関してはスクリプトから操作するオブジェクトは用意されていないモヨウです。
以前探しましたが発見できませんでした。

エクスプレッションからは参照できる様なので、裏技的ですが「タイムマーカー参照用レイヤ」
とかを設置すれば値を取得するだけはできそうですね。

>シーケンスファイルの判別方法
専用のプロパティはないみたいです。アイテム的には「ムービー形式のひとつ」の扱いですね。

私なら、Item.source.isStill と 拡張子(ファイル形式)の組み合わせで判別するあたりでしょうか?
インポート直後(ソース名の変更がない状態)ならば、source.name と mainSource.file.name の比較でも可能ですね。

if((! Layer.source.isStill)&&(Layer.source.name==Layer.source.mainSource.file.name)){
//名前が一致しているのでアイテムはムービーファイル(単独ファイル)
}else{
//アイテムはシーケンスファイル(複数ファイル)
}
ソース名が変更可能なので一般性はないです。
なにか他にあると良いですが…

でした。

56 :tetu :06/11/17 13:12:47 ID:RQG8hMO6
kiyo様、回答有り難うございます。

>残念、そちらに関してはスクリプトから操作するオブジェクトは用意されていないモヨウです。
>以前探しましたが発見できませんでした。
そうですか。残念。

>インポート直後(ソース名の変更がない状態)ならば、source.name と mainSource.file.name の
比較でも可能ですね。
なるほど、ソース名の変更が無い事が条件ですね。

いろいろ有り難うございます。

57 :orita :07/12/25 23:50:42 ID:FTDbIvKw
始めましてoritaと申します。
最近スクリプトを触り始めた初心者です。

applyPresets( )ついての質問なのですが、
スクリプトを使って
「一つのセルレイヤーから複数個複製して、それぞれに別のアニメーションプリセットを適用する」
と、いったスクリプトを組みたいと思い試してみたのですが、
プリセットは「指定したレイヤー」ではなく、
「選択したレイヤー」に適用されていて、
一つのレイヤーにプリセットが多重かけされたモノが出来上がってしまいます。
これを回避して、
それぞれのレイヤーにプリセットを適用するにはどのようにすれば良いでしょうか?

また、プリセットの「.ffx」のファイルは
appプロジェクトと同じフォルダ内に無いとダメなようなのですが
こういったモノなのでしょうか?

当方、AE7.0でwin環境です
掲示板などに書き込みをするのは初めての経験なので
失礼をしていたら申し訳ございません。
質問内容と用語の使い方が稚拙であったと思いますが
よろしくお願い致します。長文失礼致しました。

58 :えずQ :07/12/26 21:20:31 ID:p/tn+zWw
こんにちは。私も7.0でのapplyPreset()のバグ(?)に悩まされておりまして、
しょうがないので、対象レイヤーを無理やりに選択状態にしてapplyPreset()を
実行して不具合を回避しています。

ちなみにこのバグはCS3でも修正されておらず‥‥皆さんはどのように対処
しておられるのでしょうか?


>appプロジェクトと同じフォルダ内に無いとダメなようなのですが

ffxファイルは単にapplyPreset(File('ファイルのパス'))で自由に指定
できると思いましたが‥。

59 :orita :07/12/27 17:13:27 ID:JGLteouY
えずQ様、せっかくお答え頂いたのに返信が遅く失礼致しました。


>対象レイヤーを無理やりに選択状態

スクリプティングガイドの中で
「PropertyBase selected attribute」なるモノを見つけ、
対象レイヤーを何とか選択することが出来て、
望んでいた「それぞれに別々のapplyPreset()を実行」することが出来ました。
出来た事は出来たのですが、この対処方法で合っているのでしょうか?
また、皆様はどのように対処されているのでしょうか?
ご意見・ご感想を伺えたら嬉しいです。


>ちなみにこのバグはCS3でも修正されておらず‥‥

自分の周りはCS3人口が少ないので知らなかったのですが、
バグが直っていないのでは、バージョンアップの意味が...と思ってしまいます。
applyPreset()は使っていきたい局面が多いだけに非常に残念です。


>applyPreset(File('ファイルのパス'))で自由に指定できる

ファイルパスをちゃんと指定すると、
何の問題も無く自由に指定することが出来ました。
勉強不足でお恥ずかしい質問をしてしまいました。

60 :えずQ :07/12/27 23:57:27 ID:HuDZkEmQ
こんにちは。

>PropertyBase selected attribute
>対象レイヤーを何とか選択することが出来て、

Layerオブジェクトの項には記載がありませんが、実は「selected」プロ
パティが使えるようです。(itemオブジェクトからの継承?)

コンプアイテム.layer(1).selected=true;//レイヤーを選択状態にする

CS3で検証してみて、未だに選択レイヤーにapplyPreset()されてしまうのが
直っていないのは、驚きでした。
う〜む。。。こまめにadobeにフィードバックしていくしかないかも知れませんね。



61 :kiyo :07/12/29 02:01:14 ID:gDWwGpuI
遅ればせながら こんばんは
>orita様へ
所々の事情によりレスが遅れました。
もう大方のお話は済んでいるようですが

>applyPreset()
…実は殆ど使用したことがありません。

担当作品の環境がAE6.5であったために互換部分ばかりを操作しております。
そのバグの件は聞き及んでおりますが、現在の所あらかじめターゲットのレイヤをセレクトしておく事で回避するしか方法は無さそうです。

当方では、相当の処理が必要な場合はAE6.5での使用のため
スクリプト内で必要なプロパティを直接打ち込む方法で対処しています。
別に用意したテンプレートを編集しての各処理ごとの作業なので「けっこう手間」な上に
スクリプトから操作できないエフェクト(テキスト・カーブ等)があるので時々困っています。
ただし、アニメーションプリセットではできない処理もできますのでそこは一長一短でしょうか?

何か汎用性のある機能を乙女に持たせても良いかと考えていますが、現在はちょっとばかり開発休止中なので…

AE7-8用のバグ回避コードを乙女に組み込んで見ようかな?とかちょっと思案中

62 :えずQ :07/12/29 17:30:59 ID:0MGvLuMc
こんばんは。

スクリプトで一時的に対象レイヤーを選択状態にしてapplyPreset()し、
もとの選択状態に戻す方法の欠点は、アンドゥバッファにスクリプトの
経過が残留してしまう点です。

なので「あ、間違ったffxを指定しちゃった」と言う場面でアンドゥする際、
アンドゥ一発で元に戻せない(=レイヤーの数と処理工程が多いほど面倒)
状況となります。

やっぱり、ちゃんとlayer(num).applyPreset()が正常動作するのが一番なん
ですよね‥‥。

63 :kiyo :07/12/29 23:54:07 ID:gDWwGpuI
こんばんはぁ
いま、ぽけっと考えているのは
レイヤのLayer.applyPresetメソッドをオーバーライドして以下のようなメソッドをのせる事です。

0.undoグループを立ち上げる
1.呼ばれたら、現在のコンポのセレクト状態を控える
2.自分自身をセレクトしてコンストラクタのメソッドを呼んでプリセットをかける
3.セレクト状態を復帰してundoグループを閉じる

こんな感じ、うまくできたら外からは正常な動作に見えるはずですの。

まだ試してないのでどこかでつまづくかも知れませんけどね。
今は例のペイント周りをちくちく作業中なので来週くらいなか?
それともezQさんが書きます?

64 :kiyo :07/12/30 12:08:02 ID:8a8Qgrko
はあ、ほれはら 少し気になったのでテストしてみたです。
元来存在するメソッドのオーバーライドはできませんでした。

Layer.prototype.applyPreset=function(){alert("test")};

これをやってもオリジナルのapplyPresetが呼び出されるので
>>63
の処理はできないみたいっぽい。
ただ下のように未定義のメソッドを作成することが可能なので前述の処理を代用メソッドにする事は可能
//
Layer.prototype.aplPreset=function(){alert("test")};
//上のようにすると下のコードが実行できるぞぞ
app.project.item(1).layer(1).aplPreset();
うーん、後でなんか書きます。

65 :えずQ :07/12/30 12:26:31 ID:ryctyVa2
>beginUndoGroup()

たはは。確かにこれを使えば悩みは解決しますね。
begenほにゃららは、SuppressDialogsしか使っておりませんでした。

function myApplyPreset(v){
app.beginUndoGroup('applyPreset');
var cc=this.containingComp.selectedLayers;
for(var i=0;i<cc.length;i++){cc[i].selected=false;}
this.selected=true;this.applyPreset(v);this.selected=false;
for(var i=0;i<cc.length;i++){cc[i].selected=true;}
app.endUndoGroup();
}

まんま、kiyo様の0〜3の手順ですね‥‥。

66 :えずQ :07/12/30 12:34:54 ID:ryctyVa2
>オリジナルのapplyPresetが呼び出される

‥‥のようですね。
私もテストの際に気がつきました。なのでapplyPreset2みたいな名前で
メソッドを追加してテストしてみました。

またプロトタイプではなく、オブジェクト個々にapplyPresetを上書き
したところ、applyPresetで呼び出せるのですが、undoの際「グループ」
が一致しない」との警告がでました。
オリジナルapplyPresetのundoGroupとの衝突なんかな?‥‥と思いつつ。


67 :kiyo :07/12/30 16:49:30 ID:8a8Qgrko
いらっさい
「グループ一致シナイ」 エラーは、何らかの理由でundoGroupを閉じそこねた時に良く見かけます。
たとえばグループ内の処理がエラーで中断された時やループミスで”endUndoGroup()”をパスしてしまったときなどです。
入れ子もダメっぽい。
結構うっとおしいので
  グループ内の処理は、なるたけ短く。
  エラーがでないように事前にデータの検査をしておく。
とかの処置をしておくとハッピーセットっぽいでございます。

じゃ、カブリ分は消しときますね。

68 :orita :07/12/30 20:51:07 ID:4wjbFp2c
えずQ様、kiyo様へ>
返信が遅れ大変失礼致しました。
話しの流れを止めるようで恐縮なのですが……。

丁寧にお答え頂き、とても参考になりました。
本当にありがとうございました。

69 :kiyo :07/12/30 22:37:28 ID:8a8Qgrko
>>68
orita様へ
>流れを
お気になさらず、またどうぞ

良く考えたら、質問スレッドからずれているのは私たちだったりして…だはは

70 :えずQ :07/12/31 16:28:25 ID:Ws/QzosE
>処理がエラーで中断された時

ああ、これですね‥‥。
smoothの期限切れ(時事ネタ)でダイアログが出てしまったので、そこで‥‥ですね。

71 :kiyo :08/01/02 21:04:31 ID:???
どもども
>期限切れ
それっぽいですね。
一応エラー回避代用メソッドをアップロードしました。
ただ、前述のような「適用したプラグインがだすエラー」は、さすがにフックできない。

というか、AEご本家のエラーでもtry catchで捕捉出来ないヤツが結構あるので、時々困ります。

ま、あるていどは「しょうがない」よう〜

72 :tag :08/01/18 13:59:01 ID:8tUrSK/+
初めまして。
AEのエフェクト置換プログラムを探してたどり着き、早速ダウンロードさせていただきました。
AE6.5上でダウンロードしたままのスクリプトを走らせたところ、
NASライブラリが定義されていない、というエラーが出たため、
NAS関連部分をコメントアウトしてみたところ、
今度は133行目で、対応する閉じかっこがない、というエラーが出ました。

NASライブラリが無い状態でこのスクリプトを使いたいのですが、どのように
カスタムしたら良いのでしょうか。
スクリプト初心者のため、根本的なところがわかっていない可能性が高いのですが、
教えていただけると幸いです。

また、使用するエフェクトのmatchNameを知るにはどうすれば良いのですか?
エフェクトファイル名とも違うようですし、AE上の表示名とも違うようですが…。


73 :kiyo :08/01/18 18:20:25 ID:JAnGxsXE
>>72
tagさん いらっしゃいませ

どうやら私のミスです。判定を間違えていました。
あとで修正版をだしますが、お急ぎでしたらプログラム冒頭に以下の行を追加して実行してください。

try{if(nas){;}}catch(err){var nas=new Object();nas.biteClip=false;}

"matchName"は、プロパティを識別する為の文字列でレイヤ名などのように
ユーザが自由に変更する事はできない 内部での固定文字列です。

以下のようにすると「コンポ ほげほげ」「レイヤ ふがふが」の 「もげもげエフェクト」のmatchNameが取得できます。

alert(app.project.item(ほげほげ).layer(ふがふが).property("エフェクト").property(もげもげ).matchName)

"matchName AE "で検索した方がはやいかも知れませんが…

またどうぞ

74 :kiyo :08/01/18 18:35:47 ID:JAnGxsXE
↑ てなわけで
修正版と元の奴を入れ替えました。

ttp://hpcgi2.nifty.com/Nekomata/control.cgi?PAGE=85&ITEM=071118

どうもすみませんでした。



75 :tag :08/01/20 12:55:37 ID:VoL1MzBA
>kiyo様
ありがとうございます!助かりました。
修正版のほうもダウンロードさせていただき、問題なく動作しました。
これを機にスクリプトの勉強もしてみたいと思いました。
また質問に上がるかもしれませんが、そのときもよろしくお願いします!

76 :kiyo :08/01/20 16:09:50 ID:Arrz8BDk
>>75
どういたしまして。
教えてもらわなかったらミスしたまま放置していたと思いますので、
こちらこそご報告感謝でございます。

重複分は消しておきました。

またどうぞ

77 :hide-i :08/11/09 13:23:44 ID:6FAJ+U9c
はじめまして。

ttp://www.pati-tool.com/
遊技機向けに色々と開発を行っており、
AEと他のソフトの連携や、Director向けのツールを作っているものです。

>>48-56のシーケンス連番作成に関して問題があり、
解決にこちらのサイトの情報が役に立ちましたので、
報告させて頂きたいと思います。
例のDurationのバグと同系統の問題で、タイムリマップにsetValueするときに、
(フレーム数/Layer.source.frameRate)の小数は切捨てされるのですが、
(整数 - 1/256) 内の範囲だと、繰り上がります。
そのためシーケンス番号を生成の際に、単純にMath.floor()すると、
表示上より1少ない番号ができてしまいます。

> どうもAE7…「きちんと数値を認識」しているのではなくて、
> 「ある程度まで近似値になった指定を無理やりフレームの変化点にする」
> 処置をしているみたいです。

なぜ1/256なのかの根拠は不明なのですが、うちのAEのバージョンが7.0なので、
これに引っかかって、繰り上がってるのかもしれません。
ただ、1/256の範囲とは関係なくずれるケースもありました。
発生率は1/10000以下で、得た数値も(1/n)や1/(2^2)に該当しないので、
原因を突き止めることはできませんでした。

他、フレームレートを変えても発生率に差異は確認できませんでした。
以下、テスト用に使ったコードです。

78 :hide - i :08/11/09 13:25:57 ID:6FAJ+U9c
p = 256;
coe = 1/p;
targetItem = app.project.item(1);
layObj = targetItem.layer(1);
setLayObj = targetItem.layer(2);
layObj.timeRemapEnabled = true;
setLayObj.timeRemapEnabled = true;
timeObj = layObj.property("timeRemap");
setTimeObj = setLayObj.property("timeRemap");
compStartframe = Math.round(targetItem.workAreaStart/targetItem.frameDuration);
compEndframe = Math.round((targetItem.workAreaStart + targetItem.workAreaDuration)/targetItem.frameDuration);
for(var f=compStartframe; f<compEndframe; f++){
//毎回タイムを生成しないとずれる
var t = f/targetItem.frameRate;
remapTime = timeObj.valueAtTime(t,false);
r = remapTime * layObj.source.frameRate;
fr = Math.floor(r);
//marginは必ずプラスにする
margin = fr+1 - r;
if(margin<=coe&&margin>0){
seqNum = Math.round(r);
}else{
seqNum = Math.floor(r);
}
setTime = setTimeObj.setValueAtTime(t,seqNum/layObj.source.frameRate);
}
alert("Fin");

79 :kiyo :08/11/12 08:59:51 ID:???
hide-i 様へ
どうも書き込みありがとうございます。
最近はスクリプトまわりのプログラムにすっかりご無沙汰のねこまたやです。
シーケンス番号の特定は、当方の仕事だとほとんど発生しないので
この件は以前の話題のあと手つかずでございました。
が、なんだか難儀そうな障害がありますねぇ 1/256…気にしておくことにいたします。

AEのフレーム代表点は表示時間の冒頭なので、
当方ではフレーム番号からAEのタイムリマップの値をつくるさいに
timeRemapValue=(frameNumber*frameDuration)+(frameDuration*0.5);
こんなふうに半フレーム後方へずらせてフレーム番号の不安定さを
回避することがあります。ご参考までに
----
AEまわりのスクリプトやエクスプレッションを書いていて気になる点のひとつは、
ECMAスクリプトの環境にAE本来のオブジェクトがDOMで実装されている為、
データの振舞いがアプリケーション内部とスクリプトまわりで違うことです。
要するに JavaScriptとDOM側の値がズレるのが怖いので可能ならば最近は
本体オブジェクトのプロパティの参照を優先して外部の操作用変数を
あまり作らないで処理するように心がけております。

避> var myPosition=app.project.item(1).layer(1).position;//値を控える
myDestination=[myPosition[0],myPosition[1]/2];

望> var myTarget=app.project.item(1).layer(1);//参照を作る
myDestination=[myTarget.position[0],myTarget.position[1]/2];

以前のコードにはそうなっていない部分も多々ありますが〜 でへへ
よろしければまたどうぞ。

80 :hide-i :08/11/12 16:10:22 ID:c4FyCKzk
返信ありがとうございます。

ttp://bry-ful.ddo.jp/BRY/software/FsPlugins/Plugins_Development_diary/index.html
bryful様のページの固定小数の項が原因なのかなと思い始めています。

256に関係する数値での現象ですし、関係のない部分でずれるのは、
オーバーフロー回避の説明のように小数部の精度を犠牲にされているのかなと…
まぁ現状の発生率で1コマずれるだけなら、大きな問題ではないので、
この辺で追及は終わりにします。

なんちゃってスクリプターなので、浮動小数やbitを意識した数値が出てくると、
もう何がなんやらです。
また何かあった時はよろしくお願いします。

81 :curryegg :09/08/01 18:37:54 ID:XqAgAnSQ
以前、photoshopでのレイヤーの複数選択について書き込みさせていただいた者です。
その節は、ありがとうございました。


今回、AE6.5 のスクリプトについて質問させてください。

コンポ内のレイヤーを別のソースのフッテージアイテムと入れ替える時に、
CS4 では "replaceSource()" でソースの入れ替えが出来ますが、
6.5 ではどういった記述をすればいいのか、わかりませんでした。

調べてみてもうまく見つけられなかったので、もしご存知でしたら
教えていただけますでしょうか?
(マウス操作で言うところの、Option[Alt] + ドラッグ です)


お忙しいとは思いますが、もしお分かりでしたら宜しくお願い致します。

82 :kiyo :09/08/05 12:09:30 ID:???
いらっしゃい
AVLayer.replaceSource()は CS3からのメソッドですね。
いま手元に6.5がないので確言はできませんが、それ以前のバージョンだと
スクリプトから一回でそっくり置き換えることはできないと思います。

考えられるのは、
 新しいソースのレイヤを元のレイヤに近接させて作成・配置
 必要なプロパティをコピー
 元のレイヤを非表示または削除
というわりと迂遠な手順です。

とりいそぎ

83 :curryegg :09/08/05 20:23:08 ID:I/HOs2ck
ご返答ありがとうございます。

何か他のやり方でいい方法があればと思っていたのですが、
直接入れ替えることは出来ないのですね。残念。

元のレイヤーの全ての要素をコピーさせることも考えてはいたのですが
何かのプロパティにキーフレームがあったりする場合を考えたりすると、
ちょっと面倒なことになりそうですね・・・・

いろいろと思案してみることにします。

お忙しい中、ありがとうございました。



84 :cob :10/03/05 22:36:09 ID:d9XQlVKk
お疲れ様です。
初心者的な質問で申し訳ないのですが
上記の

> 新しいソースのレイヤを元のレイヤに近接させて作成・配置
  必要なプロパティをコピー
  元のレイヤを非表示または削除

をやってみようと試みているのですが
レイヤーをコンポ内でindex移動するところですでに
戸惑っています。
リファレンス等でmoveTo(integer index)であればいけるのかなと
ためしているのですが、
移動先indexを入れたらいいのだろうと入力しても

>>親が INDEXED_GROUP ではないので
(parentProperty.propertyType != PropertyType.INDEXED_GROUP なので)、
このプロパティに対して「moveTo」は使えません。

とエディタ上失敗のメッセージが出ます。
この場合親とは何なのでしょうか。
moveTo以外には適当な式がないのでこの壁をクリアする以外ないと思うのですが
行き詰ってしまいました。

ご教授ねがえれば幸いです。

85 :kiyo :10/03/06 22:12:01 ID:DbbUBUVE
いらっしゃい
たしかに怪しいエラーがでますね。
moveTo は使用していなかったので気づきませんでした。

レイヤの移動には
moveAfter(ターゲットレイヤ)
moveBefore(ターゲットレイヤ)
moveToBeginning()

86 :kiyo :10/03/06 22:15:03 ID:DbbUBUVE
moveToEnd()
などが使えます。
ターゲットのレイヤの上や下へ移動することができるのでもっぱらこちらを使ってます。

AEのリファレンスは結構誤記が多いので困りますよね

87 :cob :10/06/15 13:18:55 ID:YEc++SEM
お疲れ様です。
ご教授願おうと思いまして
書き込みさせていただきます。

After EffectsのCS4を導入したのですが
スクリプト周りが不具合の連続でどうにも困っております・・。

1)まず「ExtendScript Toolkit_CS4」(以下エディタ)の場合、
 UI表示などで日本語を使いたい場合、日本語が文字化けしてしまうのは
 しょうがないのでしょうか。
 英語表記にするならそれでもよいのですが
 前バージョン(7.0)ではできたのに、何故。という思いです。

2)スクリプトの実行からはちゃんとscriptファイルを実行するのに
 なぜかエディタを経由するとエラーで止まります。
 エラーが表示されている部分も構文的にはなんでもないところで
 7.0時は正常に動作していたところが
 引っかかるのが解せません。

 ただ、いまのところ引っかかる構文自体は同じもののようです。
 app.project
 このオブジェクトで引っかかります。
 しかしエディタを介さずスクリプト実行するときには
 正常なので不思議なのです。

ネット上でも同業者の方々の文献よみましたが
同じ事例はなさそうでした。
なにかこちらのシステム環境に問題があるのか
なにかヒントなりしを与えていただければと
おもいます。





88 :kiyo :10/06/15 14:40:01 ID:+PcSUGLk
いらっしゃい
仕事の都合でAE-CS3環境で留まっているので使い込んではいませんが
その症状はエンコーディング関連のようにも見受けられます。
以前(CS2=AE7あたりまで)はエンコーディングがUTF-8決め打ちでしたが、
CS3あたりからはスクリプト環境全体でマルチランゲージの対応をはじめている印象を持ってます。
(実際には突っ込んで調べてはいません…すみません)
CS5ではまたさらに各部の変更が伝えられているようですがこちらはまだ未見です。

あまりお役に立てずにすみません


89 :ユウ :10/12/13 22:06:27 ID:57voaOtk
初めまして。
ユウと申します。

今回エクスプレッションもままらない状態でスクリプトをやる事になってしまったのですが、
完全に混乱してしまった為、ご指導頂きたく質問させて頂きました。

やろうとしている事は、AEのプロジェクトウインドウ上で名前を変更した素材に対し、
ソースフッテージのファイル名も同じ名前に変更し、
且つファイルパスのリンクが切れないように処理するというのが目的です。
一応、以下の様にフッテージのみを対象にして
アイテム名とソース名の違う箇所のみ変更し入れ換える…
という感じで書いてみたのですが上手くいきません。
…というより現状ではエラーで止まってしまいます。

for(var i=1; i<=app.project.items.length; i++){
var oldName = app.project.item(i).file.name; // ソースフッテージ名
var newName =app.project.item(i).name; // AE上で変更したアイテム名

if(app.project.item(i) instanceof FootageItem){
if(newName != oldName){
oldFileObj = new File(oldName);
newFileObj = oldFileObj.rename(newName);
app.project.item(i).replace(newFileObj);
}
}
}

根本的な間違いをしている気もするのですが
何かしらヒントでも頂けたら幸いです。
こちらの環境はWinXP AfterEffectsCS4 ExtendScript Toolkitです。

お手数かと思われますが宜しくお願い致します。

90 :kiyo :10/12/23 00:31:57 ID:q9eYeT6g
いらっしゃい。>ユウさん
しばらく忙しくてサイトのチェックをしていなかったので1週間以上遅Resで失礼します。

ええと、このコードにはけっこう問題があります。
多分途中のエラーでループが終了しないと思います。

91 :kiyo :10/12/23 00:32:43 ID:q9eYeT6g

for(var i=1; i<=app.project.items.length; i++){
// ここでアイテムが総当たりになっているので
var oldName = app.project.item(i).file.name; // ソースフッテージ名
// fileプロパティを持たないアイテムではここで止まります
// 先にFootageItemの判定を行わないといけません
// アイテムのfileはプロクシが有効な場合はプロクシを指しているはずなので
// そこでも誤動作の可能性があります
var newName =app.project.item(i).name; // AE上で変更したアイテム名


if(app.project.item(i) instanceof FootageItem){
if(newName != oldName){
oldFileObj = new File(oldName);
// Fileオブジェクトをファイル名だけで初期化するにはカレントフォルダをファイルのあるフォルダに移動する必要があります。
// このコードではファイルが正常にハンドリング出来ない可能性が高いです。
// オリジナルのファイルを参照しておいた方が良いです。
// myFile=new File(myItem.mainSource.file.fsName) 等の方が良いでしょう。
// リネームしたあとでも myFileは該当ファイルの参照が可能です
// つまり myItem.replace(myFile) として使えるので newFileObjを作る必要はありません
newFileObj = oldFileObj.rename(newName);

//リネームした時点でソースファイルをロストしますので、注意が必要です
app.project.item(i).replace(newFileObj);
// replaceメソッドでファイルを置き換える場合は、注意が必要です。
// ファイルが連番の場合やPSD等のファイルオブジェクトのみでは素材が特定出来ないケースがあります
}
}
}
という感じです。参考になれば

92 :ユウ :10/12/24 13:21:10 ID:qJZ54Ow+
kiyo様

お世話になります。
何だかお恥ずかしいスクリプトを見せてしまいまして恐縮です…
書き込み後も色々試しまして、ソースのリネームまで漕ぎ着けたのですが
ファイルパスの差し換えのreplace()でつっかえてしまい、
一旦、パスを文字列に分解など試していた所でした。

今回、添削して頂いた部分を参考に再度挑戦してみます。

完成しましたら追ってご報告致します。
ありがとうございました。


93 :ユウ :11/01/28 21:24:27 ID:9/367vkQ
kiyo様

ご報告が遅くなりましたが、ご指摘部分を参考に
拙いながらもスクリプトが完成しました。
ありがとうございました。

94 :SRX :11/09/15 17:48:02 ID:ARBw0/SQ
kiyo様。はじめまして。

もっていないプラグインが適用されたエフェクトの調べ方がわかりません・・・。
プラグイン自体はもってなくても、
エフェクトの下に「見つかりません」と表示されますが、
これがスクリプトでは名前も取得できて、
canAddPropertyでもエラーにならないのです。

もし何か御存知でしたら御教授ください。
よろしくおねがいします。

95 :kiyo :11/09/24 10:23:11 ID:WUFBaqoE
いらっしゃいSRXさん
しばらく忙しくてBBSをチェックしていなかったので遅くなりました。

どういう処理が必要かで対処は変わるかと思います。
存在しないエフェクトはエラーにはならないで処理がスルーされる
だけなので、個別に対処が必要かと思います。

特定のエフェクトを削除するのが目的ならmatchNameで検索するのが
良いと思います。

汎用的に持っていないエフェクトを抽出するのが目的ならば、
読み込み直後に名前に「見つかりません」が含まれている事を
利用すれば検出可能かなと思います。

if(hoge.isEffects)&&(hoge.name.indexof("見つかりません")>=0)

↑こんなカンジで処理するくらいでしょうか

…もう解決しちゃったかもしれませんが


96 :SRX :11/09/26 14:36:47 ID:uWd4NSM2
お忙しい中、回答ありがとうございます。

御指導に基づきためしてみましたところ、
hoge.nameでは 【 :(コロン) 】 より手前の部分を
バッサリと捨て去っているようで、indexOfでも当然拾えませんでした。
つまり「見つかりません:NAIYO EF」では「NAIYO EF」だけが表示されます。
(ここで見つかりませんが表示されていれば、ここまで苦しんでなかったわけですが...)

hoge.instanceName みたいなプロパティがあるのでしょうか。。。

・・・まだ解決しちゃってないのです...。 

97 :SRX :11/10/14 13:54:46 ID:5kg1zdh2
解決したわけではないのですが、CS5.5に追加された
app.effects オブジェクトの存在が、まさに私の求めていたソレでした。
・・・つまり、CS4では実現が難しい事だったのですね ;_;

泥臭いというか、回りくどいというか、プラグインフォルダにある
プラグインのバイナリをサーチしてインデックスを作る方向で考えてみます。

ひとまずありがとうございました。

98 :WACHI :14/07/06 12:46:56 ID:JXM84N6Y
初歩的な質問で申し訳ないのですが、
タイムシートの適用方法がわかりません。

チュートリアルビデオを見ながらやってみたのですが、「編集をポチ」の編集とはどこでしょうか?
PsAXEで「XPS編集」を押して設定画面を出すところまではできるのですが…
あとそれを繰り返しているとXPSビューアで開くことが出来ませんと出るようになり、設定画面も出なくなります。

りまぴんとFirefoxはインストール済みです。
よろしくお願いします。

99 :kiyo :14/07/07 11:10:10 ID:rh19OGow
WACHIさん ようこそ
ご質問の件です

AIR版の「りまぴん」のインストールは、なされたでしょうか?

拡張子xpsのデータは、現在の標準的なWindows環境ではマイクロソフトのデータファイルに関連付けられています。
「XPSビューア」はその表示用アプリケーションです。

「りまぴん」の拡張子はこれとカブっています。

AIR版の「りまぴん」をインストールするとこの設定を上書きして、拡張子XPSのデータを「りまぴん」側に関連付けできます。
拡張子の関連づけの警告が出る場合は、「りまぴん」側を有効にする必要があります。

現状ではPsAxeをフルスペックでインストールするのはちょっと複雑なので、どうもすみませんです
来週辺りに配信でインストールをやろうかと思ってます

100 :WACHI :14/07/08 01:59:35 ID:3bKQo6Q+
最初AIR版ではないりまぴんをインストールしてしまい、その後AIR版をインストールし直しました。

そのうち配信でインストールをなさるとのことですので、それを待ちます。
ツイッターなどで告知されますか?

ありがとうございました!

101 :1 :22/03/02 21:32:47 ID:/ayCtnt2
555

62KB
新着レスの表示

掲示板に戻る 全部 前100 次100 最新50
名前: E-mail(省略可)

0ch BBS 2004-10-30 (+Nekomataya/2005-02-17)