Back to Node List

Path Deform

path_deform

Deforms a path (squash & stretch / bulge / wave / jitter). Animate Amount with 🎞️ for rubber-ball squashes, breathing blobs and flowing waves. Connect a height map to deform it together with the shape.

Reviewed
Guide available
The node name and summary are available in English. Port, parameter, and article details are currently shown in Japanese.

Input Ports

NameTypeDescription
パス
path
Path
Required
変形したいパスです
マップ
map
Image
パスと同じキャンバスで作った高さマップ等です(任意)。パスと同じ変形が掛かるので、ここから作る陰影や影も形に追従します

Output Ports

NameTypeDescription
パス
path
Path
変形後のパスです。path_fill / path_stroke へ繋ぎます
マップ
map
Image
同じ変形を適用したマップです(マップを繋いだときだけ出ます)

Parameters

NameTypeDefaultRangeDescription / Options
変形
mode
Enum
Squash

変形の種類です

  • 潰し・伸ばしSquash
    基準点を固定して片方向に伸縮します。ゴムボールの潰れ・伸びの誇張に
  • 膨らみBulge
    中心から外へ膨らませます(マイナスでへこみ)。呼吸・ぷにぷにした揺れに
  • Wave
    サイン波でうねらせます。「位相」をアニメーションさせると波が流れます。旗・草・水面に
  • ゆらぎJitter
    なめらかなランダム変位です(シードで再現可能)。「位相」をアニメーションさせると輪郭がゆらゆら動きます
amount
Float
0-100–100 / step 1

変形の強さです。ここに🎞️でアニメーションを付けると動きます(0=変形なし)

方向
axis
Enum
Vertical

潰し・伸ばし: 伸縮する向き / 波: うねる向きです

  • Vertical
  • Horizontal
基準
pivot
Enum
Bottom

動かない側です。下端なら地面に着いたまま潰れます

  • 下端(接地)Bottom
  • 中心Center
  • 上端Top
体積保存
volume_preserve
Bool
true

潰した分だけ横に膨らませます。ゴムらしい「中身が詰まった」感じになります

波の数
waves
Float
20.25–8 / step 0.25

パスの端から端までに入る波の数です。増やすほどウネウネが増えます

端を固定
pin_ends
Bool
true

パスの両端を動かさず、真ん中だけうねらせます(草や旗のように)。OFFにすると全体が上下します

粗さ(px)
period
Float
162–128 / step 0.5

ゆらぎの粗さです。小さいほど細かく震えます

位相
phase
Float
00–1 / step 0.01

波・ゆらぎ: 動きの進み具合です(0〜1で1周)。ループする motion を繋ぐと動き続けます

シード
seed
Int
420–999999

ランダムの種番号です。同じ番号なら毎回同じゆらぎになります

細分化
subdivide
Int
00–3

変形前にセグメントを分割します(0〜3回)。強い膨らみでカーブが角ばって見えるときに上げます(波・ゆらぎは自動で必要なだけ分割されます)

Overview

Squashes, bulges, waves and wobbles a path. A rubber ball flattening on impact and stretching on the way up, a slime breathing, a flag or grass rippling — exaggerated deformations like these come from a single parameter instead of moving points one by one. The basic workflow is attaching an animation to Amount or Phase with the 🎞️ button.

Usage tips

  • Typical wiring: shape generator → Path Deformpath_fill / path_stroke → image. The shape stays continuous until rasterization, so the outline is redrawn crisply every frame.
  • Rubber-ball squash: Mode = Squash, Anchor = Bottom, Preserve Volume ON. Keyframe Amount to dip negative only at the contact frames for an exaggerated bounce.
  • Traveling wave: Mode = Wave and connect a looping motion to Phase. Phase 0-1 is exactly one cycle, so the loop is seamless. Waves is how many waves fit across the path (more = wigglier). With Pin Ends ON (default) the endpoints stay put and only the middle waves — grass and flags.
  • Height-map follow-through: connect a height map built on the same canvas to Map and it comes out with the same deformation applied. If your shading and shadows are derived from that map, highlights follow the squash automatically.
  • Wave and Jitter subdivide automatically to the needed resolution. Raise Subdivide only when a strong bulge looks angular.

Common pitfalls

  • Nothing moves: Amount is still 0, or the motion/keyframe driving it has too small a range.
  • The shape falls apart on Wave/Jitter: the amount is too big. For pixel art, start around amount 2-4 px (fine waves no longer break the shape thanks to automatic subdivision).
  • The map is misaligned: the map must live on the same canvas (same origin and resolution) as the path. An image built on a different canvas will not share the deformation's reference frame.

Related nodes

  • motion / keyframe_clip — drive Amount and Phase (when and how much)
  • path_fill / path_stroke — fill and outline the deformed path
  • bezier_path / multi_path_editor — author the base shape
  • sprite_motion — whole-image movement/rotation/blink rather than deformation
Back to Node List
Path Deform — PixPipeline Node Reference