Nodes/ComfyUI-BruxosDoVFX-ProxyPose/ProxyPose Sampler (Bruxos)
ComfyUI Node

ProxyPose Sampler (Bruxos)

The node that turns a clicked pixel into a 6-DoF pose track

By NyckM·Created 2 months ago·Updated 2 months ago· 1
ProxyPose Sampler (Bruxos)
  • pipe
  • gen_config
  • images
  • prompt
  • visualization
  • poses_json
repo_pathauto
track_configconfigs/tracking/default.yaml
num_frames49
seed123
devicecuda
depth_anything_npz

This is the payoff node. Everything else in the pack exists to feed this one: the Model Loader hands it a ready Wan 2.1 pipeline, the Point Prompt hands it a single pixel, your video goes in, and out comes a visualization plus a machine-readable pose trajectory. If you want to know what ProxyPose actually is, you want to know what happens inside this node.

The short version: it cuts a square around your pixel, renders a colored cube "glued" to the object, asks Wan to generate a video where the cube stays stuck and rotates along with the object, then runs perspective-n-point (PnP) tracking to recover the camera-relative pose frame by frame. Rotation and translation, all six degrees of freedom, from one click. That last step - the tracking - is where the "AI video" work stops being a party trick and becomes data you can feed to compositing software, a game engine, or a matchmove.

The inputs that matter

  • images - your video as a batch of frames, at full resolution. Do not pre-crop it. The node does the square crop itself, and it crops around your point, so pre-cropping just misaligns the pixel coordinates you set in the Point Prompt.
  • pipe and gen_config - straight from the Model Loader.
  • prompt - from the Point Prompt.
  • repo_path - must be identical to the Model Loader's. auto uses the bundled deps/proxypose.
  • num_frames - default 49, and it matches Wan's temporal window for a reason. Wander far from it and quality drops off. It's also the count of input frames the node will process (it just truncates the batch), so it's your clip-length knob too.
  • seed - the usual. Same seed, same cube drift; new seed, new drift.
  • depth_anything_npz - the optional hidden gem. Point it at a *.da3.npz from Depth Anything 3 and the node estimates the camera focal length from it; leave it empty and it assumes a fixed 45° FOV. If you're compositing over real footage, the real focal length matters a lot, so this is worth doing for anything that isn't a quick test.

The outputs

Two of them, and they're different in kind:

  • visualization (IMAGE) - a five-column panel showing input / proxy render / tracking / overlay / prompt. Wire this into your Save Video node. It's also your debug tool: if the cube isn't glued where you clicked, you'll see it here instantly.
  • poses_json (STRING) - the actual product. A JSON blob with rvec/tvec per frame, in OpenCV's rotation-vector convention. If you need 4×4 matrices, convert with cv2.Rodrigues (the ProxyPose repo has convert_tracking_results for exactly this). Frames where tracking failed come back as null, which is honest and useful.

The rough edges

This node is the heavy one - the Wan generation inside it is the slowest stage in the pack, fixed at 512×512 output, so budget real time per clip. And the usual pack-level gotchas apply here too: if fp8 + LoRA gives you junk or NaNs, drop the Model Loader to precision=bf16 with a vram_limit_gb set; if another custom node (comfy-dvd, WanVideoWrapper, WanAnimatePlus) is shadowing diffsynth, this node tries to evict and reimport the clean one. The README's isolated subprocess mode is the fallback if the import wars keep going.

The verdict: for something this fiddly to install, the output is remarkably direct. One pixel in, a full pose trajectory out - with a five-column picture proving what happened. If you're doing matchmoving, VFX, or camera-projection experiments on consumer hardware, this is currently the most direct path there is. Nobody else is even talking about ProxyPose in ComfyUI yet; you'd be early.

CategoryBruxos do VFX/ProxyPose

Inputs (10)

NameTypeDefaultDescription
pipePROXYPOSE_PIPE
gen_configPROXYPOSE_GENCFG
imagesIMAGEVideo de entrada como batch de frames.
promptPROXYPOSE_PROMPT
repo_pathSTRINGauto'auto' (ou vazio) = usa o deps/proxypose empacotado. Igual ao do Model Loader.
track_configSTRINGconfigs/tracking/default.yamlYAML de tracking (relativo ao repo_path ou absoluto).
num_framesINT491–200Numero de frames processados (49 casa com a janela do Wan).
seedINT1230–2147483647
deviceCOMBOcuda2 options: cuda, cpu
depth_anything_npzoptSTRINGOpcional: *.da3.npz pra focal; vazio = FOV fixo de 45graus.

Outputs (2)

NameTypeDescription
visualizationIMAGE
poses_jsonSTRING