Preview Proximity β‘π ‘π π £π
Draw the anchor, query, and distance line onto your video
- video_frames
- feature
- anchor_locations
- query_locations
- IMAGE
Shows up in search as ProximityVisualizer, displays on the canvas as "Preview Proximity" - the debug companion to ProximityFeatureNode. Where PreviewFeature/AnimatedFeaturePreview just show you a curve of numbers, this one draws the actual geometry: the anchor point, the query point, and a line connecting them, burned directly onto your video so you can see what the proximity feature is actually tracking, not just trust the resulting number.
How it works
It needs more than just the resulting feature - it also takes the raw anchor_locations and query_locations that produced it, because it has to know the actual point coordinates to draw the dots and the connecting line, not just the distance number that came out the other end. anchor_color, query_color, and line_color (RGB tuples, defaulting to red anchor, green query, blue line) let you tell the two points and the line between them apart at a glance. On top of the geometry, it also renders the feature value itself as text - the same text_color/font_scale/label_prefix/label_x_offset/label_y_offset set you'll see on PitchVisualizer, since both nodes share this pack's general "burn a value onto video" preview pattern.
This is the node to reach for when a proximity-driven effect isn't behaving how you expect and you're not sure whether the problem is the tracking itself or something downstream - seeing the anchor and query points drawn on the actual footage tells you immediately whether they're tracking what you think they're tracking.
The inputs and outputs that matter
video_frames(required,IMAGE) - the footage to draw on.feature(required,FEATURE) - fromProximityFeatureNode, for the text readout.anchor_locations/query_locations(required,LOCATION) - the same location inputs that produced the feature, needed here to actually draw the points.anchor_color/query_color/line_color- RGB tuples distinguishing the two points and the connector.text_color,font_scale,label_prefix,label_x_offset/label_y_offset- the numeric readout's appearance.
Output is a single IMAGE - the original footage with points, line, and label overlaid.
How to install it
ComfyUI Manager: search "RyanOnTheInside", install, restart. Manually:
cd ComfyUI/custom_nodes
git clone https://github.com/ryanontheinside/ComfyUI_RyanOnTheInside
cd ComfyUI_RyanOnTheInside
pip install -r requirements.txt
then restart. Pure overlay rendering - no model download.
Common issues & troubleshooting
Points don't line up with what you see on screen. Make sure anchor_locations/query_locations come from a source tracking the same frame sequence and resolution as video_frames - a mismatch in frame count or coordinate space between the location data and the footage will draw points that look randomly placed.
Overlay is missing one of the points entirely. Check both anchor_locations and query_locations are actually wired in - both are required, and it's easy to forget one when you're iterating quickly and only rewiring the input you're actively changing.
Colors are hard to distinguish against the footage. The RGB tuple defaults (red/green/blue) assume a background that isn't already red, green, or blue-heavy - on footage with strong color in one of those channels, bump the corresponding anchor_color/query_color/line_color to something that actually contrasts.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| video_frames | IMAGE | β | |
| feature | FEATURE | β | |
| text_color | STRING | (255,255,255) | β |
| font_scale | FLOAT | 1.00.1β2 | β |
| label_prefix | STRING | β | |
| label_x_offset | INT | 100β1000 | β |
| label_y_offset | INT | 100β1000 | β |
| anchor_locations | LOCATION | β | |
| query_locations | LOCATION | β | |
| anchor_color | STRING | (255,0,0) | β |
| query_color | STRING | (0,255,0) | β |
| line_color | STRING | (0,0,255) | β |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | β |