ComfyUI Node

CRM Modeler

The node that turns six flat views into an actual 3D mesh

By flowtyone·Created 2 years ago·Updated 2 years ago· 155
CRM Modeler
  • crm_model
  • poses
  • coordinates
  • MESH

This is the payoff node. Everything else in the Flowty CRM pack - the preprocessor, the pose sampler, the coordinate sampler - is busy making images for the model to look at. CRM Modeler is where those images stop being pixels and become a mesh you can rotate, texture, and drop into Blender.

CRM (Convolutional Reconstruction Model) is a feed-forward single-image-to-3D model from Tsinghua's thu-ml group. "Feed-forward" is the whole pitch: unlike the per-scene-optimization crowd (DreamFusion and friends, which grind for minutes per object), CRM reconstructs a textured mesh in a single forward pass. This node is that pass. It's the same idea that made TripoSR and its cousins appealing, and it's why people who only need a rough object, not a film-grade asset, reach for this pack at all.

How it works

Feed it three things and it gives you a MESH:

  • crm_model - a CRM_MODEL loaded by the CRM Model Loader node. That's the big reconstruction checkpoint (CRM.pth), not the diffusion ones.
  • poses - the six orthographic RGB views of your object, straight out of CRM Pose Sampler.
  • coordinates - the six camera-coordinate maps (CCM) from CCM Sampler, which encode where each pixel actually sits in 3D space. This is the geometry prior; without it the model would just be guessing where surfaces live.

Under the hood it stitches each set of six views into a wide strip, folds them into the model's triplane layout, runs the reconstruction UNet (with a light denoising step if the checkpoint is trained for it), decodes 1024×1024 geometry into vertices and faces, and exports the textured mesh. No optimization loop, no back-and-forth - one shot, a few seconds on a decent GPU.

Wire its MESH output into CRM Viewer to see it in the browser (three.js) and save it out.

The CPU thing

This is the version that works everywhere. The sibling CRM Modeler (Cuda only) uses nvdiffrast for UV unwrapping and spits out a cleaner .glb with a real texture map - but it hard-requires CUDA. This node drops to CPU when there's no GPU, which makes it the one to grab when you're on a laptop or a box where nvdiffrast refuses to build. It works on CUDA too, it just doesn't do the fancy UV pass, so you get a vertex-colored .obj instead.

Installation and models

Install the pack via ComfyUI Manager (search "ComfyUI-Flowty-CRM") or:

cd ComfyUI/custom_nodes
git clone https://github.com/flowtyone/ComfyUI-Flowty-CRM.git
cd ComfyUI-Flowty-CRM
pip install -r requirements.txt   # add requirements-cuda.txt on a CUDA machine

Then grab all three checkpoints from huggingface.co/Zhengyi/CRM and drop them in ComfyUI/models/checkpoints:

  • CRM.pth (the reconstruction model this node uses)
  • pixel-diffusion.pth and ccm-diffusion.pth (for the sampler nodes)

The demo workflows also assume ComfyUI_essentials for the background-removal stage, so grab that too if you want the whole pipe in one go.

Where people get burned

  • "Expected all tensors to be on the same device" - you ran a workflow that mixes CPU and CUDA nodes (the classic: restarted in CPU-only mode on a machine with a GPU, or vice versa). Pick one device and be consistent; restart ComfyUI if you've flipped modes.
  • VRAM/RAM - the README calls 8GB VRAM and 16GB RAM the floor. Under 16GB VRAM you should split the pipeline into the four low-vram workflows the pack ships in low-vram/ and run them in sequence instead of one graph.
  • CPU is slow. It's a graceful fallback, not a pleasant experience. If you have a GPU, use the Cuda modeler and skip the suffering.
CategoryFlowty CRM

Inputs (3)

NameTypeDefaultDescription
crm_modelCRM_MODEL
posesIMAGE
coordinatesIMAGE

Outputs (1)

NameTypeDescription
MESHMESH