カスのPDCAサイクル
現状:頭では(作業しなきゃ……)と思いつつ実際は作業してないカスみたいな時間と謎の後ろめたさを抱えた意味不明な精神状態
現状:頭では(作業しなきゃ……)と思いつつ実際は作業してないカスみたいな時間と謎の後ろめたさを抱えた意味不明な精神状態
ちょっと工夫が要るのでメモ。TypeAnimeJPを作ったときの知識が役に立った。
以下のテキストをアニメーションさせるとする。
ああああいいいううええええおおおおお
改行部分に「\n」を追加する。
ああああ\nいいい\nうう\nええええ\nおおおおお
改行を無くして1行にする。
ああああ\nいいい\nうう\nええええ\nおおおおお
空のテキストレイヤーを作成し、ソーステキストに以下のエクスプレッションを書く。(text変数にさっきのテキストをぶち込む)
var text = "ああああ\nいいい\nうう\nええええ\nおおおおお";
スライダー制御エフェクトを追加して、その値を取得するエクスプレッションを追記。
Math.roundで整数値にまとめる。文字数を指定するための値なので。
var s = Math.round(effect("スライダー制御")("スライダー"));
slice関数でスライダー制御の値の文字数だけ表示されるようにする。
text.slice(0, s);
これでスライダー制御の値にキーフレームを打てばアニメーションするようになる。
このままでは上揃えのままなので、下揃えにするためにアンカーポイントにエクスプレッションを追加していく。
sourceRectAtTimeでこのレイヤーの縦横のサイズを得る。
さっきわざわざテキストをエクスプレッション内に記述したのは、普通にテキストを書いてアニメーターの不透明度でアニメーションさせると、レイヤーのサイズが変化しないから。
ちなみに「time - thisLayer.startTime」がちょっと工夫ポイント。startTimeの説明がややこしいので意味は割愛。
var r = thisLayer.sourceRectAtTime(time - thisLayer.startTime, true);
レイヤーの縦横のサイズが取得できたので、その値を使って位置を補正。もともとのアンカーポイントの値にレイヤーの高さを追加するだけ。
[value[0], value[1] + r.height];
ソーステキスト
var text = "ああああ\nいいい\nうう\nええええ\nおおおおお";var s = Math.round(effect("スライダー制御")("スライダー"));text.slice(0, s);
アンカーポイント
var r = thisLayer.sourceRectAtTime(time - thisLayer.startTime, true);[value[0], value[1] + r.height];
好きな曲の歌詞をクソ記事のタイトルに据えるのそろそろやめたい
ゲームチェンジャーの話をしたくて。
https://twitter.com/ALINCO2020/status/1877327428147724429
パスのトリミングの終了点とオフセットをいじって実現。長方形のサイズを変更しても追従する。横方向と縦方向でエクスプレッションが違う。
↓終了点
var size = thisProperty.propertyGroup(1).propertyGroup(1)(1)(2); // 長方形パスのサイズを取得できればなんでもいいvar x = size[0];var y = size[1];var ratio = x / (x + y);value * ratio + 100 * (1 - ratio) / 2;
↓オフセット
var end = thisProperty.propertyGroup(1)(2); // パスのトリミングの終了点を取得できればなんでもいいvar size = thisProperty.propertyGroup(1).propertyGroup(1)(1)(2); // 長方形パスのサイズを取得できればなんでもいいvar x = size[0];var y = size[1];var ratio = x / (x + y);var trueEndValue = (end - 100 * (1 - ratio) / 2) / ratio;-360 * trueEndValue / 100 / 2 * ratio;
↓終了点
var size = thisProperty.propertyGroup(1).propertyGroup(1)(1)(2); // 長方形パスのサイズを取得できればなんでもいいvar x = size[0];var y = size[1];var ratio = 1 - (x / (x + y));value * ratio + 100 * (1 - ratio) / 2;
↓オフセット
var end = thisProperty.propertyGroup(1)(2); // パスのトリミングの終了点を取得できればなんでもいいvar size = thisProperty.propertyGroup(1).propertyGroup(1)(1)(2); // 長方形パスのサイズを取得できればなんでもいいvar x = size[0];var y = size[1];var ratio = 1 - (x / (x + y));var trueEndValue = (end - 100 * (1 - ratio) / 2) / ratio;-360 * trueEndValue / 100 / 2 * ratio - 360 * (1 - ratio) / 2
釣りみたいな記事タイトルやめろ。
クオリティの高いカット編集一本勝負の動画で感じる「カットの切れ味の良さ」をもう少し頑張って言語化してみる。言葉にして再現性を得るぞうおおおおおおおお。
MADMAX2024に参加しました。くろべさんと対戦しました。ありがとうございました。
今回の動画はそこそこ伝わるように作れた感触があるのですが、一応企画・コンセプトの解説的な記事を書いて残しておこうと思います。
2024年は509本でした。
jsonの中身を見てみると、改行が挟まれてる。俺のスクリプトでは file.readln() でjsonを読み込むので、改行があるとエラーを吐く。なんで readln を使ったほうがいいのかは忘れた。
つまりjson書き出しの部分が悪い。以下のコードのように改行をなくしてから書き出せばOK。
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();}