こんにちは、新人エンジニアのハトネコエです!
先週は「Nintendo Switch 体験会」があったり、
週末は「Global Game Jam 2017」があったり、
1月はゲーム大好きな人たちをわくわくさせるイベントが目白押しでしたね!
冬に発売する『スーパーマリオ オデッセイ』が楽しみです。はやく!!
さて、今回の社内勉強会は AviUtl での動画作りについて触れました。(完全に私の趣味です)
AviUtl は Windows のフリー動画編集ソフトです。
無料です! なんと無料です! やばいです。
無料なのに、できることは1万円を超えるソフト並です。
初心者のうちは取っつきにくく、私も一度挫折したくらいに難易度の高いソフトなのですが、
一度慣れてしまうと、市販の動画編集ソフトに対して
「フレーム単位での編集がしづらい!」
「スクリプトが書けない!」
と不満を持ってしまうくらいです。
ほとんどの動画編集ソフトに外部スクリプト機能はありませんから、もう AviUtl から乗り換えられません。
では、スクリプトが書けるとなにが便利なのでしょう?
例えば、daniwellPの『Linear Slope』に合わせてボイスを入れる音MAD「○○かわいいシリーズ」の作成を考えてみます。
ニコニコ大百科『○○かわいいシリーズ』
この音MADシリーズの特徴は、曲のテンポに合わせてキャラが跳ねたり、
いっぱいの図形(パーティクル)をキャラの周りに飛ばしたりすることにあります。
ですが、これを中間点で管理すると、下図のように(これでようやく1小節ぶんです)
とんでもない数の中間点を拍に沿って打ち続けなければなりません。
スクリプトを書くことで、この問題は解消されます。
くり返す動きというのは、サイン波などの波で表現することが可能です。
サイン波の絶対値 |sinθ| の動きに合わせて、
オブジェクトの高さを上下させるスクリプトを書いてみましょう。
------------------------------------------------------------* @テンポに合わせ上下する ------------------------------------------------------------* --track0: BPM, 1, 1000, 120, 0.1 --track1: 高さ, -500, 500, 50, 0.1 local tempo = obj.track0 local height = obj.track1 local beat_time = 60 / tempo -- 1拍の時間 local radian_loop_time = beat_time * 2 -- 1ループ=2πの基準となる拍数をかける local current_time = obj.time -- 現在のタイム。アニメーション開始時刻を0とする local current_radian = (current_time % radian_loop_time) / radian_loop_time * (2 * math.pi) -- 現在のタイムが 0~2π で言うとどこにあたるか local rate = math.abs(math.sin(current_radian)) -- 時間に応じた率(0~+1) obj.oy = obj.oy - (rate * height)
「vertical_motion.anm」と名前を付け、
これを文字コード Shift-JIS で保存し、aviutl フォルダの script フォルダ以下のどこかに置きます。
実際に動かしてみましょう。
テンポに合わせて動いていることが確認できますね。
スクリプトなしでは曲の終わりまで中間点を打ち続けなければなりませんでしたが、
このように一度スクリプトを書いてしまえば、あとは「アニメーション効果」を適用させるだけで勝手に動いてくれます。
(任意の場所からアニメーション効果を付けるために、オブジェクトに直接よりも「グループ制御」にアニメーション効果を加えるのが扱いやすいです)
詳しくスクリプトの書き方をお知りになりたい方は、
「AviUtl スクリプトWiki」がよくまとまっていますのでお勧めです。
なお、AviUtl のスクリプトは Lua 言語を基に作られています。
AviUtl のように、コア部分のソフトウェアがビルドされているものをスクリプト制御する
組み込みの言語として Lua は人気があります。
コア部分を作るプログラマーと、メッセージ部分を作るスクリプターの作業分担がしやすくなるため、
ゲーム開発の場で使われることも多い言語です。
Global Game Jam に参加されるような方だと、一度は触れているかもしれませんね。
今回は、私のお世話になっている AviUtl について触れました。
64bit OS 向けのアップデートが予定されていないことや、
スクリプトファイルを Shift-JIS で保存しなければならないことなど、残念なところもありますが、
スクリプトで楽ができる動画作成ソフトを他に持っていないため、AviUtl にはお世話になりっぱなしです。
UUUM では、趣味に仕事に一生懸命なエンジニアを募集中です。
他部署ですが(と言っても隣のテーブルですが)映像編集ディレクターも募集しています。
さすがに AviUtl ではなく After Effects ですが、After Effects もスクリプトを使えるという噂。
一緒に働いてくださる方、お待ちしております。