Nodes/ComfyUI-EasySAM3/EasySAM3 Point Editor
ComfyUI Node

EasySAM3 Point Editor

Click the thing instead

By lihaoyun6·Created 6 months ago·Updated 4 months ago· 5
EasySAM3 Point Editor
  • image
  • pos_points
  • neg_points

Text prompts are great at "the red jacket." They're useless at "this exact one, in the middle of three identical ones." That's what the EasySAM3 Point Editor is for - instead of describing what to segment, you click on it. Left-click the pixels that are part of your object, right-click the ones that aren't, hit Continue, and the node hands clean SAM3 point prompts to its sibling EasySAM3Segment.

This is the pack's second half. EasySAM3Segment does the segmentation; this node is how you steer it when a sentence can't. The two are designed as a pair - the editor's two outputs are literally the two optional inputs on the Segment node (pos_points and neg_points), and the pack's README shows them wired together as its "prediction based on control points" workflow.

How it works

Under the hood it's a neat little Rube Goldberg machine. The node's Python side pushes your image to the browser over the websocket, a canvas widget in the node body draws it, and you mark points on top. Left-click drops a positive point (green - "this is the object"), shift-click or right-click drops a negative point (red - "this is not"). Click an existing point to delete it, or hit the Clear All button. A small P: n N: n counter in the corner keeps score. When you hit Continue, the browser POSTs the points to a tiny endpoint the pack registers (/sam3_point/continue/<node_id>), the waiting Python loop unblocks, and the node returns the points as two JSON strings.

Two things to know before you build a workflow around it. First, it's a blocking gate - while the editor is up, the entire queue is paused, and the node's IS_CHANGED is set to always-true, so it re-executes (and re-pauses) on every run. You cannot batch through it unattended; every queue run stops and waits for a human to click Continue. Second, it's an input-only node - it takes just image and has no side effects on pixels. Its entire job is producing the two outputs:

  • pos_points (STRING) - JSON array of the green points
  • neg_points (STRING) - JSON array of the red points

Wire both into EasySAM3Segment's optional inputs and you're done. If you're working on video, the Segment node's point mode switches to SAM3's video predictor, and your points track across frames - which is exactly when point selection beats text, because "the middle one" moves.

Using it

Install the pack via ComfyUI Manager (search "ComfyUI-EasySAM3") or git clone https://github.com/lihaoyun6/ComfyUI-EasySAM3 into custom_nodes/, then restart. Note the README's pip command is missing the -r flag - you want pip install -r requirements.txt inside the cloned folder, which pulls ultralytics>=8.3.237 and modelscope. Same as the Segment node, the model auto-downloads from ModelScope on first run (a multi-gigabyte sam3.pt into models/sam3/), and an ultralytics version too old to ship the SAM3 predictors will stop the pack from importing at all.

Gotchas worth knowing

  • It always blocks. Fine when you're interactive, a trap if you queued a batch and walked away - the run just sits there waiting for a click.
  • The prompt rule still applies downstream. The Segment node needs some signal; if you feed it points, leave its prompt empty (an empty prompt plus empty points raises an error).
  • It's a nicety, not a necessity. You could hand-write the JSON, but nobody does - the editor is the whole point. If your objects are text-describable, skip this node entirely and use Segment's prompt field.

Honestly, for a one-image interactive mask the point editor is the smoothest version of this in any pack I've used. Just remember it's a door that asks you to knock every time you walk through.

CategoryEasySAM3

Inputs (1)

NameTypeDefaultDescription
imageIMAGE

Outputs (2)

NameTypeDescription
pos_pointsSTRING
neg_pointsSTRING