9 : 21 ASS字幕: 3色カラオケ・縦カラオケ

← 9 - 20 p↑ もくじ i 9 - 22 n →

[ASS] カラオケでの\clipの活用: 3色カラオケ・縦カラオケ

2005年11月16日

カラオケでの\clipの用法は、(1) 普通のクリッピング、(2) \tと組み合わせて\kエミュレート、の二通りがある。 (1) はカラオケでなくても使える一般用法で、縦や横のグラデーションで「虹色のカラオケ」を実現するのに使う。 (2) は、普通に\kでできることをエミュレートするだけなら意味がないが、 「透過のある3色カラオケ」や「縦カラオケ」で効果がある。 「透過のない3色カラオケ」は\clipを使わずとも単に時間差の二重カラオケでも実現できる。

虹色カラオケ

虹色カラオケは3色カラオケと直接的には関係ないが、 \clip タグの説明などを兼ねて、ここで取り上げる。

\clip の基本的用法は、その字幕行のうち、指定範囲内のみを表示するものである。 \clip での範囲指定に用いられる座標値は、画面左上隅を原点とし、右方向を正とするx座標と、下方向を正とするy座標による。 下記 clip1.png では、分かりやすくするため、今からクリッピングする範囲を、青い長方形の枠で示してある。 この長方形の左上隅の座標は、(10, 430) である。フレームサイズ640x480の中で、 それは画面左上隅を原点として、右に10行って、下に430行った点だからである。他の3点も同様である。 長方形を指定するには、長方形は、左上頂点 (a,b) と右下頂点 (c,d) の2点を指定すれば、確定する。 そこで、この長方形範囲のクリッピングを
\clip(a, b, c, d)
で表す。字幕スタイルの Alignment と無関係に、\clip の引数の座標は(言わば) \an7 であることに注意する。 例えば、\an2 の字幕でも、\clip の引数の座標は \an7 である。

clip1.png

実際のクリッピングは次のように指定する。

Dialogue: 1,0:00:01.00,0:00:10.00,layer1,,0000,0000,0000,,{\clip(10,430,350,455)}あいうえお \h 漢字 \h カタカナ

結果は、概念的に、こうなる。字幕行の一部だけが描画され、クリップ範囲外は不可視になった。

clip1.png

青枠は説明のためのもので、実際には描画されない。つまり、実際に見える状態は、

clip1.png

同様に、同じテキストをレイヤーを変えて何度か重ねて描画し、レイヤーごとにクリッピング範囲と色を変え、 それらをZ方向に重ねることで、いわゆる虹色字幕が作成できる。

clip1.png

実際のASSスクリプトを観察せよ。

Style: layer1,Mikachan-PB,30,&H000000ff&,0,0,0,-1,0,0,0,100,100,0,0.00,1,1,0,2,0,0,10,128
Style: layer2,Mikachan-PB,30,&H00ffccff&,0,0,0,-1,0,0,0,100,100,0,0.00,1,1,0,2,0,0,10,128
Style: layer3,Mikachan-PB,30,&H00ffcc99&,0,0,0,-1,0,0,0,100,100,0,0.00,1,1,0,2,0,0,10,128

Dialogue: 1,0:00:01.00,0:00:10.00,layer1,,0000,0000,0000,,{\clip(10,430,350,455)}あいうえお \h 漢字 \h カタカナ
Dialogue: 2,0:00:01.00,0:00:10.00,layer2,,0000,0000,0000,,{\clip(10,455,350,480)}あいうえお \h 漢字 \h カタカナ
Dialogue: 3,0:00:01.00,0:00:10.00,layer3,,0000,0000,0000,,{\clip(350,430,640,480)}あいうえお \h 漢字 \h カタカナ
虹色カラオケ

非透過3色カラオケ: 変化後のアルファが0

典型的なカラオケは変化前の色(第二色)と変化後の色(第一色)の2色から成る2色カラオケだ。 3色カラオケは、変化前・変化中・変化後の3色を使う。HTMLページのリンク色で言えば、 訪問済み・アクティブ(ホバーとも言う。マウスを合わせた状態)・未訪問に相当する。

まず\clipを使わないでもできる非透過3色カラオケで、3色カラオケの基本概念をつかもう。 変化前の色が水色、変化中の色が赤、変化後の色がピンクと仮定する。 論点を明快にするために、ここでは文字の表面色のみを考え、ボーダーと影の処理は後から考えることにして、 ひとまず省く(ボーダーは黒1ピクセル固定、影はなし)。 以下、断りがない限り「変化前・変化中・変化後」の「色・アルファ」は、すべて表面色の話である。

ここで非透過というのは、最終的な色(変化後の色)が非透過であることを意味する。 変化前・変化中のアルファは非ゼロでも良い。なお、一般に「色」という言葉で、アルファ・チャンネルを除く「狭義の色」を指す場合と、 狭義の色+アルファの「広義の色」を指す場合がある。

実現は簡単で、レイヤーを二つ使って、同じカラオケを時間差で重ねる。 下のレイヤーは第一色で変化中の色、第二色で変化前の色を実現する。 上の例で言えば、下のレイヤーだけ見ていると、水色から赤に変化していく。 上のレイヤーでは第二色を全透過にし、第一色を変化後の色にする。そして上のレイヤーのカラオケの方が遅れて色変化するようにする。 すると上のレイヤーが待機状態のときは下のレイヤーで起こっている水色から赤への色変化がそのまま見え、 上のレイヤーが第一色に変化すると、下のレイヤー(赤になっている)をさらに上からピンクで塗りつぶすことになる。

Style: layer1,Mikachan-PB,30,&H000000ff&,&H00ffcc99&,0,0,-1,0,0,0,100,100,0,0.00,1,1,0,2,0,0,10,128
Style: layer2,Mikachan-PB,30,&H00ffccff&,&Hffffcc66&,0,0,-1,0,0,0,100,100,0,0.00,1,1,0,2,0,0,10,128

Dialogue: 1,0:00:01.00,0:00:10.00,layer1,,0000,0000,0000,,{\K30}あ{\K30}い{\K30}う{\K30}え{\K30}お \h {\K30}漢{\K30}字 \h {\K30}カ{\K30}タ{\K30}カ{\K30}ナ
Dialogue: 2,0:00:01.00,0:00:10.00,layer2,,0000,0000,0000,,{\k60}{\K30}あ{\K30}い{\K30}う{\K30}え{\K30}お \h {\K30}漢{\K30}字 \h {\K30}カ{\K30}タ{\K30}カ{\K30}ナ

注: スペースを「 \h 」と書いているのは、みかちゃんフォントの特性のため。問題の本質とは関係ない。レイヤー2の冒頭の{\k60}が、 上のカラオケ変化と下のカラオケ変化の時間差になっている。

この方法が可能なのは、上のレイヤーの待機色以外、アルファがからまないからである。 言い換えると、上のレイヤーの第一色がアルファ0だから、下のレイヤーを完全に隠すことができ、結局、これだけで2回目の色変化が完全に達成される。 もし上のレイヤーの第一色のアルファが非ゼロだと、この方法では上のレイヤーの第一色と下のレイヤーの第一色が混ざってしまって、 うまく制御できない。そこで一般の場合に必要になるのが、\clipを使った透過3色カラオケの技法である。

一般の3色カラオケ: 変化後のアルファが必ずしも0でない

縦カラオケ


メールの宛先
Email us in Cantonese, English, Japanese, or Mandarin.

Cost 8.9 milliseconds.

inserted by FC2 system