Blenderグリッチ表現シリーズ三回目。
Blenderのコンポジット機能を使ってグリッチ表現の画面座標ディストーションとRGB分離のエフェクトをかける方法を解説します。
右図のような感じで、ピクセルがズレて、RGBの色も赤青緑の色が少しずつずれていくような効果です。
グリッチのおもしろさの醍醐味がディストーションやRGB分離だと思っているので、ぜひやってみてください。
(完成動画は下の方にあります。)

グリッチ表現って座標を動かすエフェクトが多いので、最初は難しいと感じることもあると思います。また座標を動かす方法について記事を書きたいなと思っているので、わからないなぁと思っていても、今はあまり気にせずやってみてください。
この記事は、Blenderのグリッチエフェクト:ディストーションとRGB分離の入れ方について解説した中級者~上級者向けの記事です。
難易度
難しい、という方は、とりあえずグリッチ表現シリーズ①、②などをやってみてください。
グリッチ表現シリーズ①↓
グリッチ表現シリーズ②↓
画面座標ディストーションとRGB分離のエフェクトを作成する手順
- 画面をズラすための白黒のテクスチャを用意する
- 画面をディストーションする
- RGB分離する
①画面をズラすための白黒のテクスチャを用意する
Mixノードを使い、Mixモードで合成すると、白(1)の部分は最初のImageにつないだ画像、黒(0)の部分は下のImageにつないだ画像になります。
なので、元画像と、横方向にズラした画像を合成すると、
テクスチャの白いところだけズレて、黒いところは元画像のままというエフェクトが出来ます。

このズラしのために、まずは細かいモザイクを作っていきます
細かいモザイクを作る
※テクスチャの作り方はグリッチ表現シリーズ①でやっているのでわからない方はそっちを先にやってください
テクスチャノードを出してカラーランプをつなげておきます。
詳細な設定は以下で触れますが、Scaleを10にして、カラーランプで適当に調節します。(カラーランプは、白の部分を多くしてみたり、黒の部分を多くしてみたりすると、画像のズレる部分が多くなったり少なくなったりします。)

テクスチャの詳細設定はテクスチャプロパティで行います。
Type…Stucci
Stucci > Noise Basis…Cell Noise
に設定してください。
モザイク模様を作ります。
テクスチャノードの方でScaleの数値を上げるとモザイクが細かくなります。

大きなモザイクを作る
ズレる部分を画面全体ではなくて、部分的にしたいので、大きいモザイクを作って、それでマスクしようと思います。
MixノードのMultiply(掛け算)モードで合成します。
大きいモザイクの黒い部分(0)の部分と掛け算すると0になり黒くなるので白い部分しか細かいモザイクが残らなくなります。

というわけで大きいモザイクを作ります。
新しいテクスチャノードを出してカラーランプをつなぎます。
Scaleは5にします。(好きに調節してもらってかまいません)
カラーランプは黒い部分と白い部分が半分くらいになるようにします。

テクスチャの詳細設定は
Type…Clouds
Clouds > Basis…Cell Noise
にします。
大きめの白黒分布が出来ればどのテクスチャでもなんでもいいです。

動きをつける
ズレる場所を変化させたいので、大きいモザイクテクスチャを動かしていきます。
ノードを出します
- Scene Time…Seconds(秒のスピード)
- Snap…2(2秒の範囲で値を固定する)
- CombineXYZ…Z(Z軸で変化させるとXY軸より不規則に模様が変わります)
CombineXYZのVectorを大きいモザイクを作ってテクスチャノードのOffsetにつなぎます。

Snapで2をつなぐと、2秒ごとに数値が変わり、モザイクの分布が変わります。
モザイクを合成する
Mixノードを出し、Multiplyモードにします。Factorを1にして、順番はどうでもいいので、それぞれのモザイクを入力Imageに接続します。

②画面をディストーションする
ノードを以下のように組んでください

新しくMovie Clipノードを出し、好きな動画を読み込みます。
Translateノードを出して、Xに20(20ピクセル横に移動)、RepeatのところをBoth Axes(XYとも画像をリピートにすることで、黒い画面が出ないようにする)にします。
次はMixノードを出してMixモードのまま、
上のImage入力にMovie Clipノード、
下のImage入力にTranslateノード
を接続します。
そして、Factorには、モザイクを作って合成したMixノードの出力をつなげます。
プレビューを見ると、画像の一部が少し横方向にズレていることがわかると思います。
動かす
ズレをアニメーションするため、ノードを追加します。
Valueノードと
Multiplyノード(20を入れる)を出してつなぎます。Valueの出力TlanslateのXの入力ソケットにつなぎます。
Valueのノードは、0でIを押し、キーフレームを打っておきます。

グラフエディタでキーフレームのタイミングをつける
ズレのタイミングをざざっ、ざざっとつけるために、グラフエディタを使います。
Valueノードを選択すると、その値のキーフレームを編集できます。
モディファイアのタブを開き、Add Modifierで追加します。
- Noise
- Stepped Interpolation
- Limits
上記のモディファイアを追加して調整します。

Noise
いい感じのタイミングで山が来るようにしてください。めんどいって方は入力した数値をそのまま入れちゃってください。
Stepped
Influenceをちょっと下げて、微妙な山の形を作ります。
Limits
Minimum Yの値を0にして、元の画像を表示するフレームを増やしています。
これでプレビュー画面を見てみると、ざざっ…ざざっ…と画像が少しピクセルがズレたような効果が出ているはずです。
これが、画面のディストーションです。

③RGB分離する
今度はRGBの色を分離させていきます。

さきほどつなげたTranslateノードと、Mixノードの間に、
Separate ColorノードとCombine Colorノードをつなぎ、Red、Green、Blueをそれぞれつなげておきます。
今度はSeparate ColorノードとCombine Colorノードの、Red,Greenの間にTranslateノードを挟みます。
RedにつないだTranslateはXに5を入力、
GreenにつないだTranslateはYに5を入力します。(どちらもRepeat:Both Axesを入れておいてください)

Separate ColorノードとCombine Colorノードは光の三原色(赤、緑、青)をバラバラにしてくれるので、それをTranslateノードでずらすことで、RGBが分離します。
プレビューの画面を見ると、画像にもよりますが、赤、青、緑などがチラチラ見えるようになっていると思います。

動かす
このRGBのズレも画面ディストーションと同じタイミングで動かしていきます。
画面ディストーション用にタイミングを付けたValueノードがありますので、Multiplyノードを出して、そこにもつなぎます。Multiplyは5を入れて、さっきTranslateで5といれていた場所にそれぞれつなぎます。

これで出来上がりです。
完成
右が完成動画です。
タイミングなどは各自好きなように調整してみてください。
Translateの値を大きくするとズレが大きくなったりする
テクスチャもいろいろ変えてみたりすると面白い画像のズレができて面白いですよ。
全体のノードはこんな感じ↓

画像のズレとか、RGB分離って難しいけど面白いですよね。こういう座標ごと動かすのはシェーダーの醍醐味だと思うし良い勉強になります。
他のグリッチシリーズの表現と合わせてめちゃくちゃに壊れた動画を作ってみるのも面白いと思います。