Nodes/comfyui_cv/CV Annotate Points On Model
ComfyUI Node

CV Annotate Points On Model

Manual 3D point input: run the workflow once to load the model into the node, then ORBIT to the side you want and LEFT-CLICK the surface to drop an anchor. SHIFT+click an existing marker removes it; drag orbits instead of adding, so the view is free. The points come out in the MODEL's own frame, which is what makes them ride the object once a tracker moves it - feed them to 'CV Project Points (Sequence)' or the 'CV Annotate Model' blueprint. A plain orbit viewer on purpose: no calibrated camera, no lens distortion, no pose. Those matter when you are matching footage; here you are only pointing at geometry, and a free camera is the fastest way to reach the far side of an object. The picks live in the 'points' widget as JSON ([[x, y, z], ...]), so they survive a save/reload, can be typed or pasted by hand, and can be diffed. GLB only (Three.js GLTFLoader), same as the calibrated viewer.

By bmad4ever·Created 3 months ago·Updated 2 days ago· 0
CV Annotate Points On Model
  • model_3d
  • points_3d
  • count
points[]
axis_conventionOpenCV (Y down, Z into the scene)
Categoryimage/CV/low-level

Inputs (3)

NameTypeDefaultDescription
model_3dFILE_3D_GLB,FILE_3D_GLTF,FILE_3DModel to annotate, from a 3D loader node. Use the SAME file you feed 'CV Mesh From 3D Model', or the anchors will refer to different geometry.
pointsSTRING[]The picked anchors as JSON, [[x, y, z], ...], in the coordinates the FILE stores (glTF's Y-up). The viewer writes this as you click; edit it by hand for exact values. Empty or '[]' means no anchors yet - a valid state, not an error.
axis_conventionCOMBOOpenCV (Y down, Z into the scene)Which convention the OUTPUT is in. Leave it on OpenCV to match 'CV Mesh From 3D Model's default, so the anchors land in the same frame as the mesh a pose was solved against. Mismatch it and the anchors mirror through the object.

Outputs (2)

NameTypeDescription
points_3dNPARRAYNx3 float32 anchors in the model's own frame, in the order they were clicked - so the Nth anchor keeps the Nth caption from 'CV Text To Array'.
countINTHow many anchors are set. 0 is valid: the node emits an empty (0, 3) array rather than failing, so a graph still executes before you have clicked anything.