はじめに
Blenderで「円が時計回りに広がっていくようなワイプアニメーション」を作りたい場合、実はシェーダーノードだけで表現できます。
この方法を使えば、マスクや動画編集を使わずに、マテリアルだけで円が回転しながら出てくる演出が可能です。
この記事では、ベクトル演算や数式(Math)ノードなどを組み合わせて、扇形マスクを作る手順を紹介します。
準備:オブジェクトとマテリアル
- 円(Circle)を追加します。
- 編集モードから、円の全ての点を選択した状態でFキーを押して面を作ります。
面を作ったらオブジェクトモードに戻します。 - 「シェーダーエディター」を開き、新しいマテリアルを追加します。
- プリンシプル BSDFとマテリアル出力は、使用するので消さずに残します。ここにノードを追加して「扇形マスク」を作成していきます。
ステップ1:座標を準備
まず、オブジェクト上で位置情報を扱えるようにします。
ノードは Shift + A で追加できます。
- テクスチャ座標 ノードを追加します。
- ベクトル演算 ノードを追加します。
- 演算タイプを 「減算」 に変更します。このノードで円の中心位置を調整します。
- テクスチャ座標ノードの「生成」を、ベクトル演算ノードの「ベクトル」 に接続します。
- ベクトル演算ノードのもう一方の入力(ベクトル) に中心位置を指定します。
円を標準サイズで使用している場合は、
X = 0.5、Y = 0.5、ZはそのままでOKです。
この設定により、オブジェクト上の「(0.5, 0.5)」を円の中心として扱えるようになります。
値を変えれば、円の中心を自由にずらせます。
ステップ2:角度を求める
次に、各ピクセルが中心から見てどの角度にあるかを計算します。
ここで、扇形の範囲を作るための基本となる「角度マップ」を作ります。
- XYZ分離 ノードを追加します。
- ベクトル演算ノードの「ベクトル」を、XYZ分離 ノードの「ベクトル」と接続します。
これで「X」と「Y」の値をそれぞれ個別に取り出せます。 - 数式(Math)ノード を追加します。
- 数式タイプを「アークタンジェント2」に変更します。
- XYZ分離 ノードを、数式ノードに接続します。
「X」→「値1」(上)
「Y」→「値2」(下)
このノードは、各点の角度をラジアン(-π~+π)で出力します。 - 範囲マッピング ( Map Range)ノード を追加します。
- 数式ノードの「値」を、範囲マッピングノードの「値」と接続します。
- 範囲マッピングノードの設定値を以下の数値に変更します。
設定例:
- 入力最小値:-3.14159
- 入力最大値:3.14159
- 出力最小値:0
- 出力最大値:1
これで角度が「0~1」の範囲に正規化され、
後で角度範囲を自由に制御できるようになります。
ステップ3:角度で表示範囲をコントロール
次に、先ほど求めた「角度(0~1に正規化された値)」を使って、
どの範囲を表示するかを決めます。
- 数式(Math)ノード を追加します。
- 数式タイプを「小さい 」に変更します。
このノードは、「入力Aが入力Bより小さい場合に1、それ以外は0」を出力します。
つまり、指定した角度までを白(表示)、
それ以外を黒(非表示) にすることができます。 - 数式「小さい」ノードの値 に「範囲マッピング(Map Range)」の出力を接続します。
ステップ4:結果をマテリアルに反映
最後に、この数式「小さい」ノードの出力を
プリンシプルBSDF の アルファ入力 に接続します。
レンダーエンジンCyclesの場合は、この設定でできます。
EEVEEの場合は、マテリアルのブレンドモードをアルファクリップにする必要があります。
アニメーション設定
数式「小さい」ノードのしきい値 の値をアニメーションキーで動かすことで、
円が時計回りにワイプ表示されるアニメーションが作れます。
※レンダービューでないと確認できません。

まとめ
この方法では、
- 画像やマスクを使わず
- ノード(6個追加)だけで
- 円のワイプアニメーションを制御
が可能です。
シェーダーだけで完結するため、マテリアルを他のオブジェクトに流用したり、合成で使うことも簡単です。
時計回りの円表示やタイマー表現などにも応用できるので、ぜひ試してみてください。