BLOGブログ

2026.06.10UE5UE/ Materialその他

[UE5]マテリアルアニメーションの速度を『速めて戻す』

執筆バージョン: Unreal Engine 5.7

「Panner」や「Rotator」などのノードを用いてマテリアルアニメーションを作成している場合に、

『アニメーションの速度を「速めて戻す」』という演出を行う際には、少し注意が必要です

 

 

直感的には、『”Speed”の値を、上げて戻すだけじゃないの?』と思えるのですが………実際にやってみましょう

 

  1. MaterialParamterCollection を作成し、ScalarPameterを追加
  2. マテリアルのPannerノードのY軸方向の”Speed”に、➀で作成したパラメーターを繋ぐ

  3. LevelBlueprintにタイムラインを追加し、➀のパラメーターを動的に更新する

    ↓タイムラインの中身( 0 → 1 → 0)

  4. 実行!

 

思ってたのと違うッ!

 

 

………なぜでしょう?

「Panner」ノードは、「Time」の値に”Speed”を乗算し、UVに加算する(Output = Time × Speed + UV)のですが、

「Time」の値は実行開始から常に加算され続けるため、”Speed”の増減によって、動きが急激に早くなったり、巻き戻ったように見える事になります

例:1秒時点で”Speed”が1、10秒時点で”Speed”が10、20秒時点で”Speed”を1に変更した場合、下記のような結果になります

 ➀1秒時点の:1 × 1 = 1

 ➁10秒時点:10 × 10 = 100

 ③20秒時点:20 × 1 = 20

 

 

では、どうしたらマテリアルアニメーションをいい感じに「速めて戻す」事ができるのでしょうか?

まず考えられるのは『「Time」を使用せず、Blueprintで経過時間を記録し、それを MaterialParameterCollection 経由でマテリアルに送る』という手法ですが、

「実行しないとマテリアルアニメーションが再生されなくなる」ため、グラフィックデザイナーからは大いに不興を買うことになりそうです…

 

 

「”Speed”ではなく”Time”の方に手を加える」というアイデアは使えそうなので、

『「Time」に加算する数値を、MaterialParameterCollection 経由でタイムラインからマテリアルに送る』という手法であれば、

要件を満たしつつプレビューの利便性を確保できるかもしれません。実際にやってみましょう

 

  1. 「Time」に MaterialParamterCollection の値を加算するように、処理を変更します
  2. Timelineの中身はそのままで、MaterialParamterCollection の値を取得し、Timelineから来た値を(調整して)加算するように、処理を変更します
  3. 実行!

 

いい感じッ!

 

他のマテリアルアニメーションにも適用してみました

 

演出の幅が広がりそうですね。是非お試しください!