字幕でアニメーション 〜ASSDraw〜

前回の続きでマーカー(↓矢印など)はどうやって作ったらよいのかという話です。

AegisubにはASSDrawという図形(シェイプ)を作成するツールが付属していますが、このツールがちょっと癖があって慣れるまで苦労します。

というか、描画そのものについてはIllustratorとかに慣れている方であれば複雑な図形も簡単に描けるのでしょうが、問題はAegisubとの連携です。

ここ数日触ってみて漸く連携のしかたが解ったような気がしますので、忘れないためにも以下記述しておきます。

なお、連携とはいっても、ASSDrawで図形を描画してボタンを押すとAegisub上の対象物に自動的にマーキングされる、などどいうことはありません。

AegisubとASSDrawは完全に独立したツールで、ASSDrawで図形を描くとASS形式のドローコマンドが生成されますので、そのコマンドをAegisubにコピペするという手順になります。

私的な問題は、ASSDrawで描画した図形の大きさとAegisub上の対象物との大きさをどのように一致させるのか、と言うことでした。

Aegisubのおさらい

新規にASSファイルを作成する場合、Aegisubを立ち上げて最初に行う事は動画ファイルを読み込むことです。(①)
メニューバーで[映像(V)]→[映像を開く(O)]で画像を読み込みます。

通常の”字幕”であれば、数秒の間文字列を表示し続けるのですが、今回のアニメーションの場合はフレーム毎にマーカーを表示します。
つまり、60fpsの動画であれば1秒の間に60個のマーカーを設定する必要があるわけです。

いくら何でもフレーム毎にその都度最初からマーカーを設定するのは大変ですから、あるフレームでマーカーを設定し、そのフレームを複製して次のフレームとし、マーカーの位置だけ調整するといった方法をとります。

ちなみに、ここではフレームと言っていますがASS上ではフレームで管理できるわけではなくあくまで時間(字幕表示のスタート時刻〜終了時刻)での管理となります。
Aegisubでは、フレーム単位での字幕作成も可能ですが、これはあくまで便宜上のもので、assファイル上では時間に変換されます。

さて、Aegisubに画像をとりこんだら、マーカーを設定したい対象物が表示されるまでスライドバーでseekします。(②)

次に上部のアイコンをクリックすることで、マーカーの表示開始時間をセットします。(④)
すると、右のペインに開始時間がセットされます。
続いて、マーカーの表示囚虜時間もセットします。(③)
(③と④の表記が逆になってしまいました・・・)

マーカーの常時位置をセットするために、左辺に並ぶアイコンで「字幕スタンダードモード」を選択し(⑤)、対象物上でクリックすると(⑥)左のペインに位置情報がセットされます({\pos(538,797)})。

これで、マーカーの表示時間と位置が設定できました。
あとは、マーカーのドローイングコマンドを設定するために、ASSDrawを起動します。

ASSDrawでの図形作成

Aegisub画面で上部の”つかさアイコン”

をクリックすると、ASSDrawが立ち上がります。

ドローイングコマンドは、一筆書きを行う場合の座標と各座標を結ぶ方法としての直線か曲線(ベジェ曲線)の組み合わせです。

ですので、四角程度の図形であればわざわざASSDrawなどのツールを使わなくても描画は可能です。
例えば、
 m 0 0 l 812 0 l 812 -67 l 2 -64
と言うコマンドは、
 ① m 0 0:最初の描画位置(m)
 ② l 812 0:①から(812,0)へ直線(l)を引く
 ③ l 812 -67:②から(812,-67)へ直線(l)を引く
 ④ l 2 -64:③から(2,-64)へ直線(l)を引く
という意味です。(最後の④から①への描画を指定する必要はありません)
ちなみに、④を見るとこの四角は微妙にゆがんでいることがわかりますね。

でも、これが多角形や曲線となるともはや人が見て図形を想像できる域を超えてしまいます。

さて、ASSDrawで描画する場合、図形をどの程度の大きさにすればよいのか見当が付きませんでした。
それでしかたなくAegisubとASSDrawをならべて、対象物と見比べながら四角を描いたりしていました。

コマンドをコピーしてAegisubにペーストするのですが、どうしても対象物と図形のサイズが合いません。

つまり、動画と図形のスケールが合っていないということです。
でも、どうやって合わせたらよいのか。。。

ASSDrawの画面をよく見ると、上部のツールバーに’Background’と言う文字が見えます。
もしかして、、、と思い、以下のような操作を行ってみました。

そう、Aegisubから映像のイメージをコピーしてASSDrawの背景として貼り付けることができるのでした。
これで実際の対象物のサイズと図形のサイズを合わせやすくなります。

でも、最初に失敗したときに、図形が異様に小さかったことが気になります。
ASSDrawの画面をさらに良く見ると、右下の隅に”1000%”という表示があります。
もしかしたら、10倍に拡大した状態で四角を描いていたので、実際に動画に合わせたら異様に小さくなったのでは?と考え、とりあえずASSDrawの表示を100%にしてみると、

思った通り、最初の失敗したときと同じように四角が極小になってしまいました。

つまり、ASSDrawで描画するときは画面がズームされていないか気をつけること、と言う、言われてみれば当たり前のことに漸く気づいたのでした。。。

ちなみにASSDrawで表示をズームやパンするには、右上にある[Pan dawing][Pan background]のどちらかあるいは両方が選択された状態で、拡大・縮小はマウスのスクロールボタンで、パンはマウスの右ボタンでドラッグします。

改めてASSDrawで四角を描いて、ドローイングコマンドをAegisubにコピペすると、スケールもうまく合うようになりました。

対象物とマーカーの位置が合わない場合は、「字幕ドラッグモード」にしてハンドルで調整できます。



AegisubもASSDrawもすばらしいOSSです。
でも、できれば、Aegisub上で図形の描画ができるようになればいいなぁ、、、と思っています。