CCM Sampler
The 'coordinates' half of CRM — the part that gives your mesh geometry
- config
- poses
- IMAGE
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 overComfyUI/models/checkpoints. Pickccm-diffusion.pth(the only one that makes sense here). It shares that folder with all your SD checkpoints, so expect a long list.config- aCRM_POSE_CONFIGfrom 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.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| ccm_model | COMBO | 0 options: | |
| config | CRM_POSE_CONFIG | — | |
| poses | IMAGE | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |