キャラモーション、チョットワカルカモ(まばたき編)
どうした急に
なんか毎年この季節になるといろんな界隈でアドベントカレンダーとかいうのやるじゃないですか。あれ楽しそうだな〜と思って。でも主催とかやるのは面倒なので一人でこっそりと。
他の作者さんの制作時のこだわりとか技術的なアレコレとか、いっぱい聞きたい気持ちはあります。。。軽率にNoteとか使って書いてほしい。
なんか毎年この季節になるといろんな界隈でアドベントカレンダーとかいうのやるじゃないですか。あれ楽しそうだな〜と思って。でも主催とかやるのは面倒なので一人でこっそりと。
他の作者さんの制作時のこだわりとか技術的なアレコレとか、いっぱい聞きたい気持ちはあります。。。軽率にNoteとか使って書いてほしい。
AniPAFE2023はルックバックのMADで参加しました。ちょっと後語りをさせてください。
前後5秒ぐらいのことしか考えてない
簡単なことなのに毎回ググってる気がする。addPropertyでエフェクトのmatchNameを入れてあげれば良い。matchNameはスクリプトで洗い出す。
例えばスライダー制御ならこんな感じ。
var slider = layer.effect.addProperty("ADBE Slider Control")
addPropertyするとプロパティオブジェクトが返ってくるから、それを操作して名前を変えたり値を変えたりしていく。
var ffxFile = File((new File($.fileName)).parent.toString() + "/fugafuga/hogehoge.ffx");layer.applyPreset(ffxFile);
こんな関数を用意してやる。
var getKeys = function(associativeArrayObject) { var arrayWithKeys=[], associativeArrayObject; for (key in associativeArrayObject) { // Avoid returning these keys from the Associative Array that are stored in it for some reason if (key !== undefined && key !== "toJSONString" && key !== "parseJSON" ) { arrayWithKeys.push(key); } } return arrayWithKeys;}
使い方
getKeys(Object)
ExtendScriptでは使えないので正規表現を使う。
text.replaceAll('$', '') // replaceAll の場合text.replace(/\$/g, '') // replace の場合
【注意】ffxは古いバージョンのAEで作ること!!最新のAEで作ったら古いAEからは開けない。
プロジェクト設定のエクスプレッションエンジンが「以前のExtendScript」だと正常に動作しない。エクスプレッションがエラー吐く。
プロジェクト設定は取得できるので、以前のExtendScriptが選択されている場合は警告を出して処理を停止させるとかが良いと思う。
app.project.expressionEngine
ファイルの存在を確認。ファイルの保存・読み込み。ファイル扱うスクリプトは毎回頭にこれ書けばいいかも。
var dataPath = Folder.decode(Folder.userData) + '/Aescripts/YourScriptName';var f = new Folder(dataPath);if (!f.exists) f.create();
function fileExist(filename) { var file = new File(dataPath + "/" + filename + ".json"); return file.exists}
function writeFile(object, filename) { var myFile = new File(dataPath + "/" + filename + ".json"); myFile.open("w"); myFile.encoding = "UTF-8"; myFile.write(JSON.stringify(object).replace(/\r?\n/g, '')); myFile.close();}
function readFile(filename) { var file = new File(dataPath + "/" + filename + ".json"); file.open('r'); file.encoding = 'UTF-8'; return JSON.parse(file.readln());}
var settings;function makeSettings() { settings = {} writeFile(settings, 'settings')}if (!fileExist('settings')) { makeSettings()} else { try { settings = readFile('settings') } catch (e) { makeSettings() }}
スクリプトからSourceTextのスタイルをいじろうとした時に出たエラー。TypeAnimeJP開発中に追加テキストを左揃え固定にしようとしたときに遭遇。
// 左揃えにvar tmpTextDocument = tmpTextLayer.property("Source Text").valuetmpTextDocument.justification = ParagraphJustification.LEFT_JUSTIFYtmpTextLayer.property("Source Text").setValue(tmpTextDocument)
こんな感じにしたらいけた。一回valueで取得して値をいじって再度setValue。フォントを指定するときと同じ流れ。