ComfyUI Node

CCM Sampler

The 'coordinates' half of CRM — the part that gives your mesh geometry

By flowtyone·Created 2 years ago·Updated 2 years ago· 155
CCM Sampler
  • config
  • poses
  • IMAGE
ccm_model

CRM's dirty secret is that it's two problems dressed up as one. Problem one: turn your single reference image into six views of the object. Problem two: turn those six flat views into something with actual 3D shape. The CRM Pose Sampler handles the first, and the CCM Sampler handles the geometry half - it produces the camera coordinate maps, or CCMs, that tell the reconstruction model where each pixel sits in space. Skipping it means handing CRM Modeler six pretty pictures and no idea what shape they describe.

What it does

The CCM Sampler is a diffusion model (an ImageDream-derived stage-2 sampler, tuned on the CRM project's stage2-v2-snr config) that runs image-to-image on your six pose views and outputs six coordinate maps. Each map is a color-coded image where pixel values encode a 3D position in the object's canonical camera frame - blue-ish gradients you can squint at and vaguely read as "depth-ish". The CRM Modeler node consumes those as its coordinates input, right next to the poses input it gets from the Pose Sampler. Wire its IMAGE output into Modeler's coordinates slot and you're done.

You'll typically run it right after the pose sampler with the same settings, because it's conditioned on the same reference image and the same config.

Inputs that matter

  • ccm_model - a dropdown over ComfyUI/models/checkpoints. Pick ccm-diffusion.pth (the only one that makes sense here). It shares that folder with all your SD checkpoints, so expect a long list.
  • config - a CRM_POSE_CONFIG from the CRM PoserConfig node. This is where seed, CFG and steps come from, and it's the same config object you feed the Pose Sampler. Change the seed or steps once in PoserConfig and both samplers pick it up.
  • poses - the six RGB views coming out of the Pose Sampler.

It returns a single IMAGE tensor - the batch of six coordinate maps, ready for the modeler.

Why people get confused

The output is genuinely unimpressive to look at. Bluish, muddy, looks like a broken depth map. That's fine - it's not for humans, it's geometry encoded as color, and the reconstruction model was trained on exactly this encoding. Don't judge the pipeline by eyeballing these; judge the final mesh. (That said, if the CCMs come out garbage - blobs with no structure - your poses were probably off, or the reference image wasn't preprocessed properly. Garbage in, garbage in 3D.)

Also worth knowing: the seed in the config is applied when the diffusion model first loads, so if you're A/B-ing seeds, the sampler keeps its initialized model cached across runs. Give it a proper restart if you suspect a stale state.

Installation

Same pack install as every Flowty CRM node - ComfyUI Manager, or:

cd ComfyUI/custom_nodes
git clone https://github.com/flowtyone/ComfyUI-Flowty-CRM.git
cd ComfyUI-Flowty-CRM
pip install -r requirements.txt

The checkpoint ccm-diffusion.pth goes in ComfyUI/models/checkpoints, from huggingface.co/Zhengyi/CRM. It's the second-biggest download of the trio and the one people forget - a classic "my mesh looks flat / the modeler errors out" is really just this model missing from the folder. On CPU this sampler is slow, and the usual Flowty device-mismatch and VRAM rules apply: keep it all on one device, and split the workflow across the pack's low-vram/ files if you're under 16GB VRAM.

CategoryFlowty CRM

Inputs (3)

NameTypeDefaultDescription
ccm_modelCOMBO0 options:
configCRM_POSE_CONFIG
posesIMAGE

Outputs (1)

NameTypeDescription
IMAGEIMAGE