Project N: 020 - 文字雨4(textの位置を変更する)

前回までの画像です。
これを見ると、文字("ア")の上と左に微妙にすき間があります。もう少し、文字を左斜め上の方向へ動かしてみることにしましょう。
Subtitleの引数で、textの配置に関係するのは、x, y, align, spcです。
それぞれの意味を簡単にまとめると、以下のようになります。
- x: 水平方向の位置
- y: 垂直方向の位置
- align: アラインメント(揃え)
- spc: 文字間隔
とくにalignについては、Subtitleのページを見てもらったほうがわかりやすいと思いますので、ここでの説明は省略します(そのために日本語に訳しました)。また、実際にalignの値を変更しながらプレビューしてみると、より理解しやすいかもしれません。
とりあえず、今回は、xとyの値だけを変更して、文字の位置を調整することにします。次のように、スクリプトを変更してみました。
bg = BlankClip
bg.Subtitle("ア", 0,14, font="MS ゴシック", text_color=$00ff00, halo_color=$009900)
return last
xとyはtextの次に来る引数ですので、名前付きで指定する必要はありません。

プレビューすると、文字が移動していることが確認できます。
ちなみに、xとyのデフォルト値は、この場合、x=8, y=18でした。この値は、alignとsizeによって変化しますので、注意してください(Subtitleを参照)。
Project N: 019 - 文字雨3(フォントを変更する)
次に、表示させる文字を、カタカナに変更してみましょう。
textを、「A」からカタカナの「ア」に変更しました。しかし、これをそのままプレビューしても、文字化けしてしまします。

これはこれで味がある気もしますが、やはり、ちゃんとカタカナで表示されるようにすることにします。
文字化けの原因は、フォントの設定にあります。Subtitleフィルタでは、デフォルトのフォントはArialに設定されています。Arialは日本語に対応していないために、このように文字化けしてしまうのです。
Subtitleフィルタでは、引数fontでフォントを指定することができます。
MS ゴシックにしてみました。string型なので、引用符で囲んでいます。プレビューしてみると・・・

ちゃんと表示されましたね!では、また次回!
# やっぱり、あまり進まないな、この企画・・・。
bg = BlankClip()
bg.Subtitle("ア", text_color=$00ff00, halo_color=$009900)
return last
textを、「A」からカタカナの「ア」に変更しました。しかし、これをそのままプレビューしても、文字化けしてしまします。

これはこれで味がある気もしますが、やはり、ちゃんとカタカナで表示されるようにすることにします。
文字化けの原因は、フォントの設定にあります。Subtitleフィルタでは、デフォルトのフォントはArialに設定されています。Arialは日本語に対応していないために、このように文字化けしてしまうのです。
Subtitleフィルタでは、引数fontでフォントを指定することができます。
bg = BlankClip()
bg.Subtitle("ア", font="MS ゴシック", text_color=$00ff00, halo_color=$009900)
return last
MS ゴシックにしてみました。string型なので、引用符で囲んでいます。プレビューしてみると・・・

ちゃんと表示されましたね!では、また次回!
# やっぱり、あまり進まないな、この企画・・・。
Project N: 018 - 文字雨2(文字の色を変更する)
前回、アルファベットのAという文字を、Subtitleフィルタを使って表示させました。今回は、もう少しマトリックスっぽくに見えるように、文字の色を変更します。
色を指定するときは、通常、HTMLのカラーコードのように16進数値(#ffffffみたいなの)を使います。ただし、先頭に付ける記号は、#ではなく、$です。AviSynthでは、#はコメント用の記号として、すでに使用されているからです。
とりあえず、次のように指定してみました。

プレビューすると、こうなります。ちょっと違う気もしますが、あくまでもマトリックス風なので、とりあえず、これで行きます。あとで、変更するかもしれません。
ちなみに、text_color=$00ff00のように、
Subtitle(clip clip, string text, int x, int y, int first_frame, int last_frame, string font, int size, int text_color, int halo_color, int align, int spc)Subtitleフィルタにおいて、文字の色を指定するための引数は、text_colorとhalo_colorの2つです。text_colorは文字の色、halo_colorは文字の縁の色です。
色を指定するときは、通常、HTMLのカラーコードのように16進数値(#ffffffみたいなの)を使います。ただし、先頭に付ける記号は、#ではなく、$です。AviSynthでは、#はコメント用の記号として、すでに使用されているからです。
とりあえず、次のように指定してみました。
bg = BlankClip()text_color=$00ff00、halo_color=$009900としました。text_colorは緑色で、halo_colorは少し薄い緑色といった感じです。
bg.Subtitle("A", text_color=$00ff00, halo_color=$009900)
return last

プレビューすると、こうなります。ちょっと違う気もしますが、あくまでもマトリックス風なので、とりあえず、これで行きます。あとで、変更するかもしれません。
ちなみに、text_color=$00ff00のように、
引数名=値という記述の仕方(名前付き引数)は、途中の引数指定を省略したい場合などに使われます。この方法を使うと、デフォルト値から変更したい引数だけを指定したり、引数の順番に関係なく指定することもできます。
Project N: 017 - 文字雨1(Subtitle)
今回から数回(数十回?)にわたって、マトリックス風の「雨のように落下する文字群(略して、文字雨)」を作成します。

まず、背景となる画像を用意します。Project N: 005-BlankClip(ベタクリップの作成)で紹介したBlankClipフィルタを使用しました。
この上に文字を表示します。ビデオクリップに文字を追加するために、Subtitleというフィルタを使います。Subtitleフィルタの書式は、以下の通りです。

プレビューしてみると、ちゃんとAという文字が表示されました。
色やフォント、配置などには、デフォルト値が適用されています。次回は、もうちょっとマトリックス風に見えるように調整してみたいと思います。

まず、背景となる画像を用意します。Project N: 005-BlankClip(ベタクリップの作成)で紹介したBlankClipフィルタを使用しました。
この上に文字を表示します。ビデオクリップに文字を追加するために、Subtitleというフィルタを使います。Subtitleフィルタの書式は、以下の通りです。
Subtitle(clip clip, string text, int x, int y, int first_frame, int last_frame, string font, int size, int text_color, int halo_color, int align, int spc)引数がたくさんあって、ちょっとめまいがしそうです(´Д`;)
Subtitle(clip clip, string text)Subtitleのページを見ると、このような単純な書式も併記されています。text以降の引数は省略可能ということです。まずは、こちらの書式を使って、Aという文字を表示させてみることにします。
BlankClip() # 背景これだけです。textという引数はstring型ですので、Aを引用符で囲んで記述します。
Subtitle("A")
return last
bg = BlankClip() # 背景もし、背景のクリップを変数bgに代入している場合は、このように記述すればよいでしょう。
Subtitle(bg, "A") # または、bg.Subtitle("A")
return last

プレビューしてみると、ちゃんとAという文字が表示されました。
色やフォント、配置などには、デフォルト値が適用されています。次回は、もうちょっとマトリックス風に見えるように調整してみたいと思います。
Project N: 016 - 第1回まとめ(SetWorkingDir)
これまでのまとめ。
・サンプル画像
・スクリプト
コメント文を付けて、少しわかりやすく(?)しました。
2行目のSetWorkingDirは、その上のコメントにもあるように、作業フォルダを設定するためのフィルタです。このフィルタで指定したフォルダの中にあるプラグインやソースファイルは、4行目のようにパス指定しなくても読み込まれるようになります。たくさんのファイルを読み込むときなどに便利かもしれません。ここでは、スクリプトの見栄えだけを考えて使っているのですが・・・。
で、ここまでの作成した分は、とりあえず横に置いておいて・・・次回からは、マトリックス風に文字が落下してくるシーンの作成に移りたいと思います。果たして出来るかどうかはわかりませんが、それっぽいのが出来ればいいかなと。
すでに企画開始から4ヶ月・・・まだ1フレームしか出来上がっていません(汗)・・・んが、まあまったりと(2ちゃんねる風に言うなら、マターリと)やっていくことにします。
・サンプル画像
・スクリプト
# 作業フォルダの設定
SetWorkingDir("C:\My Documents\nyatrix\img\")
# 画像(img)の読み込み
img = ImageReader("nyatrix.png", 0, 0, 24, false)
# RGB32変換
img = ConvertToRGB32(img)
# 色マスク
img = ColorKeyMask(img, $0000ff, 0)
# 背景(bg)用黒ベタクリップの生成
bg = BlankClip()
# 合成位置の算出
x = (Width(bg)-Width(img))/2
y = (Height(bg)-Height(img))/2
# レイヤー合成
Layer(bg, img, "add", 255, x, y)
# return文
return last
コメント文を付けて、少しわかりやすく(?)しました。
2行目のSetWorkingDirは、その上のコメントにもあるように、作業フォルダを設定するためのフィルタです。このフィルタで指定したフォルダの中にあるプラグインやソースファイルは、4行目のようにパス指定しなくても読み込まれるようになります。たくさんのファイルを読み込むときなどに便利かもしれません。ここでは、スクリプトの見栄えだけを考えて使っているのですが・・・。
で、ここまでの作成した分は、とりあえず横に置いておいて・・・次回からは、マトリックス風に文字が落下してくるシーンの作成に移りたいと思います。果たして出来るかどうかはわかりませんが、それっぽいのが出来ればいいかなと。
すでに企画開始から4ヶ月・・・まだ1フレームしか出来上がっていません(汗)・・・んが、まあまったりと(2ちゃんねる風に言うなら、マターリと)やっていくことにします。



