Flex Image Parallax β‘π ‘π π £π
Shift an image in x/y/z, feature-driven, with or without a depth map
- images
- opt_feature
- depth_map
- IMAGE
This is the pack's own lightweight parallax node: shift an image along x, y, or z, optionally guided by a depth map, and optionally driven live by a Feature signal instead of a fixed value. It's the same underlying technique that dedicated tools like DepthFlow are built entirely around - depth-based pixel displacement to fake camera movement - just folded into this pack's Flex Feature system rather than shipped as its own standalone animation engine.
How it works
Without a depth map, the shift is a straightforward 2D pan-and-push on the flat image. Feed in an optional depth_map, and the node uses it to displace pixels with actual near/far separation - the illusion of a camera drifting through a 3D scene rather than the image just sliding around. shift_x, shift_y, and shift_z each take a value from -1.0 to 1.0; wire a Feature into opt_feature and feature_param picks which one of those three that signal drives, with feature_mode deciding whether it's a relative offset or an absolute scale from zero, gated by feature_threshold.
Inputs and outputs that matter
imagesand the shift values:shift_x,shift_y,shift_z(all -1.0 to 1.0, default 0.1).strength(0-1, overall multiplier) andfeature_param(shift_x/shift_y/shift_z/None).- Optional:
depth_map(IMAGE, for true 3D parallax instead of a flat shift) andopt_feature(FEATURE, the modulation input).
Output is a single IMAGE.
The one thing worth knowing before you use it
Depth-based parallax has a structural ceiling regardless of which node produces it: a depth map only describes what the original camera saw. Push the virtual camera far enough and you're asking for pixels that were never captured - the community consensus on this, echoed straight from people who use the dedicated DepthFlow tool for exactly this effect, is blunt: "the motion needs to be subtle because it has its limitations and if you push it too far the image starts tearing." That's not specific to this node, it's the technique itself - keep shift_z especially modest unless you're deliberately going for an overt zoom/push effect rather than a subtle drift.
If you want a dedicated, deeper parallax pipeline with motion presets, this pack's own README points at the external Depthflow Nodes pack as a compatible companion (it also plugs into this pack's Feature system). Use this node when you want a quick parallax touch inside a graph that's already built around Flex Features; reach for a dedicated parallax pack when parallax is the whole point.
Installing it
ComfyUI Manager: search RyanOnTheInside, install, restart. Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/ryanontheinside/ComfyUI_RyanOnTheInside
cd ComfyUI_RyanOnTheInside
pip install -r requirements.txt
No model downloads - you'll need a depth map from a separate depth estimator node if you want the 3D version.
Where people get burned
Without depth_map plugged in, don't expect real parallax - you'll get a flat shift that reads as a pan, not depth. And matching resolution between depth_map and images matters here just like it does everywhere depth maps are used; a mismatch shows up as misaligned displacement rather than a clean error.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| strength | FLOAT | 1.000β1 | Overall strength of the effect (0.0 to 1.0) Higher values create more dramatic changes, while lower values are more subtle. |
| feature_threshold | FLOAT | 0.000β1 | Minimum feature value to trigger the effect (0.0 to 1.0) Only applies the effect when the feature value exceeds this threshold. Lower values make the effect more sensitive, higher values make it more selective. |
| feature_param | COMBO | Choose which parameter to modulate: - shift_x: Dynamically adjust horizontal movement - shift_y: Dynamically adjust vertical movement - shift_z: Dynamically adjust depth movement - None: No parameter modulation | |
| feature_mode | COMBO | relative | How to apply the feature modulation: - relative: Changes are centered around the original value - absolute: Changes scale directly from zero to the maximum |
| images | IMAGE | Input image sequence to be processed (IMAGE type) | |
| shift_x | FLOAT | 0.10-1β1 | Horizontal shift factor for the parallax effect (-1.0 to 1.0) |
| shift_y | FLOAT | 0.10-1β1 | Vertical shift factor for the parallax effect (-1.0 to 1.0) |
| shift_z | FLOAT | 0.10-1β1 | Z-axis shift factor for the parallax effect (-1.0 to 1.0) |
| opt_featureopt | FEATURE | Optional feature input for modulation Connect any feature node here to control the effect. Features can come from audio, motion, color, or other sources. | |
| depth_mapopt | IMAGE | Optional depth map for 3D parallax effect |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | β |