【AviUtl】ディスプレイスメントマップについて


こんにちは、TP100 の ペット*1の猫の琥珀といいます。
つい最近名前を貰いました。わーい。

ケーシューのパッケージの紹介動画を作成したり、それ以外のことでも動画を作ることが何かとあるのではないでしょうか。

え、無い?

制作・著作
KSM

※この記事は、AviUtl で動画編集をしている人向けの内容です。

私は動画編集をするときは、AviUtl というフリーの編集ソフトを使っているのですが、フリーソフトとは思えない程に機能が多いんですよね。
数年くらい AviUtl で動画編集ソフトをしていても、「こんな機能あったんだ」と思うことがたまにあると思います (私だけ?)。

そんな AviUtl ですが、私が最近知った機能の中にディスプレイスメントマップというものがあります。
この機能を最初知った時は、「なんかややこしそうだし、別に使わなくてもなんとかなるかな」と思っていたのですが、色々と調べたり、試しているうちにディスプレイスメントマップを活用することによって様々な表現や演出が可能になるということに気付きました。
例えば、このようなことができます。

f:id:cyanhair_neko:20201217183403g:plainf:id:cyanhair_neko:20201217183540g:plainf:id:cyanhair_neko:20201217183615g:plainf:id:cyanhair_neko:20201217183654p:plain

このように、使い方によって様々な表現ができるので、ぜひとも使いこなしたい機能です。
ディスプレイスメントマップの説明の後に、先程あげた例はどのようにすればできるのかを解説しますので、お楽しみに。

そもそもディスプレイスメントマップとは

AviUtl におけるディスプレイスメントマップは、画像ファイルやシーンに用意したマッピング画像をもとに、画像を変形させる機能です。

例えばこのようなマッピング画像があるとします。

mapping-example
マッピング画像の例 画像との境界線には赤い破線を引いている

それはそれとして、偶然ここによさげな画像があります。

f:id:cyanhair_neko:20201218163038j:plain
jplenioによるPixabayからの画像
この画像にディスプレイスメントマップで先程のマッピング画像を適応させると、このようになります。*2
for_example
マッピング画像に応じて横方向にズレている

この例では横方向の移動ですが、もちろん縦方向の移動など、いろいろできます。

私が現状把握しているディスプレイスメントマップの仕様は以下の通りです。

  • 移動変形、拡大変形、回転変形の3つの変形方法がある
  • 基本的に、白に近いほど指定した方向に大きく変形し、黒に近いほど指定した反対方向に大きく移動する。
  • 理論上、白と黒の丁度中間の場合は移動しない*3
  • 移動変形の場合、赤色成分が横方向の移動、緑色成分が縦方向の移動を表す*4
  • 透明度があるもの同士が重なっている場合などは、見た目上の色がマッピング材料として適応される

拡大変形と回転変形に関するマップの色の関係についてはまだ検証していません。検証が完了し次第追記します。

移動変形の場合、赤色成分と緑色成分で別れていますが、基本的には白や黒や灰色でマッピング画像を生成するのがいいと思います。

上の例やこのまとめを見ただけではまだ理解し切れないと思いますが、実際に色々試していくのが理解しやすいと思います。

実際の使用例

ここでようやく実際の使用例に入っていきます。
実際説明不足のところもあるので、その点も説明できるといいですね。

例1 一部分だけ移動するやつ

こういうやつ

一部分だけ移動するやつ
一部分だけ移動するやつ

まず最初に別シーン*5でこのようなマップを作成します。

map_image
マップ用の画像

作り方は白と黒の六角形をいい感じに重ねて、フレームバッファにカラーキーを適応して輪郭をはっきりさせます。*6
その後に灰色の背景を加算でかぶせています。
パラメータの値とかはいい感じに合わせてください

そっから Root でも別のシーンでもいいので変形させる画像を置きます。
その画像にフィルタから「ディスプレイスメントマップ」を追加してください。

display-mm-parameter
ディスプレイスメントマップのパラメータとか

ここで補足的なものを
マッピング画像を用意するなら、ほとんどの場合は一番下の「元のサイズに合わせる」チェックボックスをオンにした方がいいでしょう。
「X」「Y」「回転」「サイズ」「縦横比」は「元のサイズに合わせる」チャックボックスをオンにしている場合は関係のないパラメータとなります。「元のサイズに合わせる」チェックボックスをオフにして、この子達で色々やってみるのも面白そうですね。
「ぼかし」はマッピング画像をぼかした状態にして適応します。デフォルトではなぜか 5 として設定されています。
個人的にはぼかしはあまりいらないので、0 に設定することが多いです。

AviUtl はシーンの画像 (or 映像) だけではなく、画像ファイルの内容や、円などのプリミティブ図形もマッピング画像として利用できます。
円の範囲内だけを動かしたいという場合などは、プリミティブ図形を選択したほうが圧倒的に楽だったりします。

あとは 「変形X」の値をいい感じに動かすと上の gif のようになります。イージングが少し適当なのは許して。

また、境界辺りの処理が少し微妙だと個人的には感じます。これにかんしては無料ソフトだしその部分は妥協するか、AE を使いましょうという話にはなりますが。*7

レンズ補正のようなもの

音ゲーの MV などで見たことある方も多いのではないでしょうか。

lens_correction
レンズ補正のようなもの

実はこれかなり簡単にできます。
まずはこのようなマップを作りましょう。デフォルトのグラデーションで簡単に作れます。*8

lens_correction_map
開始色は #808080 に設定しています

これを適応させたい画像または映像に適応させます。


して、移動変形のところを拡大変形に変更します。
トラックバーの部分に「拡大変形」という項目がでてくるので、それを正の方向に動かすとぐにゃーんと歪みます。*9

手描きタッチっぽいやつ

これです。

tegaki
これです

これは、この画像を変形させています。さっきも見ましたね。

sakkimita
さっきも見ましたね

これも実は簡単です。
マップ画像をノイズの type4 で作ります。*10

noise_map
ノイズで作ったマップ画像

そして変形したい画像にディスプレイスメントマップの移動変形を適応させます。
いい感じに変形すれば完成です。

また、上の gif のようにしたい場合は、正反対に変形したものも作って、コマ送りの要領で繰り返すと実現できます。

ぼかしを少し加えてもいい感じになりますね。

bokashi
化け猫さんもディスプレイスメントマップでぼかしを使うことってあるんだ

ぐにゃぐにゃにするやつ

これが

f:id:cyanhair_neko:20201217183659p:plain

こうじゃ

なんということでしょう
なんということでしょう

こちらもマッピングにノイズを使用しています

glitch_map
ノイズ type1 を使用

ノイズ自体のしきい値を少し上げて、色調補正で輝度をガン上げしています。
それをディスプレイスメントマップで適応させて移動変形させればオッケーです。

あとがき

今回は AviUtl の機能のひとつである「ディスプレイスメントマップ」について色々紹介しました。
この機能は工夫次第では様々なことができるので、色々試してみてはどうでしょうか。

動画編集においての新たな表現の発見を願っています。



以下 footnote

*1:自称

*2:パラメータは調整している

*3:{#000000, #ffffff} の中央値がそれにあたるが、整数の範囲で表すことは不可能なので、#808080 や #7f7f7f で代用、あるいは色々頑張ってなんとかする

*4:恐らく After Effects の仕様に合わせているものと考えられる

*5:AviUtl のシーンに関する説明は割愛します
一言で言うなら拡張編集タイムラインの Root って書いてあるやつをクリックすると色々出てくるやつ

*6:そうしないと境界部分での粗が目立ってしまう

*7:または自分でスクリプトを組むという手も

*8:グラデーションの説明も割愛

*9:負の方向に動かしてもおもしろいことになる

*10:ノイズの説明は以下略