Download
2 variants available
Other Formats
This checkpoint includes a config file, download and place it along side the checkpoint.
First public release.
Template-driven room generation with the wall/floor junction locked to row 780 of a 1024x1024 canvas. Includes the template PNG — it must go into ComfyUI/input/ and be selected in the TEMPLATE node, otherwise the workflow will not run.
Tested on Krea 2 Turbo fp8 with the Qwen3-VL 4B text encoder and the Qwen-Image VAE, 16 GB VRAM, denoise 0.60, 8 steps, cfg 1.
Model paths in the loaders point at my local subfolders. Just re-select your files in the three loader nodes — that's expected.
Show more

20 1 2 3 4 5 6 7 8 9
50 1 2 3 4 5 6 7 8 9
Locked-Floor Room Generator (Krea 2)
If you composite products into generated rooms, you know the problem: every room puts the floor somewhere else, so you re-scale, re-position and re-shadow the product for every single background. Ten rooms means doing the same fiddly work ten times. This fixes it. The wall/floor junction sits on row 780 of a 1024x1024 canvas in every output — see the second preview image, one red line drawn across all ten results.
Instead of sampling from empty noise, the KSampler starts from a template image: a flat grey box with the floor line at 780, two vertical corner edges, and faint lines converging on the vanishing point. At denoise 0.60 the model repaints material, light and window while keeping the geometry — flat back wall parallel to camera, one-point perspective, fixed ceiling height. No ControlNet, no custom sampler. Just an img2img init with a deliberately designed source.
krea2_turbo_fp8_scaled.safetensors — goes into models/unet/
qwen3vl_4b_fp8_scaled.safetensors — goes into models/text_encoders/
qwen_image_vae.safetensors — goes into models/vae/
room_template_v2_floor780.png — goes into ComfyUI/input/
The template PNG is attached to this upload. Without it, nothing works. Drop it in ComfyUI/input/, then select it in the TEMPLATE node. Custom nodes: Set/Get from ComfyUI-KJNodes. Everything else is core. The text encoder must be Qwen3-VL 4B with type krea2. The Qwen2.5-VL 7B encoder belongs to Qwen-Image, not Krea 2 — the wrong pairing produces images that ignore your prompt entirely. Runs on 16 GB with weight_dtype = fp8_e4m3fn and batch_size 1.
denoise 0.85 — varied rooms, floor drifts about 60px, back wall often turns into a corner
denoise 0.75 — floor line holds, frontal view does not
denoise 0.60 — recommended. Floor within about 20px, back wall stays frontal
denoise 0.50 — near-identical geometry, very little variety
Do not prompt the camera. No focal length, no camera height, no view direction — that comes from the template now, and describing it in words only loosens the hold. Sampler: 8 steps, cfg 1, euler/beta. Krea 2 Turbo is step-distilled; more steps don't help and raising cfg breaks it.
Keep the head and tail, swap only the middle. Head: empty unfurnished room, completely bare, no furniture, no radiator, clean bare walls,
Tail: , flat back wall parallel to the camera, vertical corner edges, symmetrical one-point perspective, soft even daylight, photorealistic interior photography
Ten middles, these produced the preview images:
wide oak plank floor, warm white plaster walls, tall window on the left wall
herringbone parquet floor, cream plaster walls, tall old building window on the left wall
pale ash wood floor, off-white walls, window on the left with a sheer white curtain
polished concrete floor, exposed red brick, industrial steel window on the left wall
terracotta tiled floor, beige lime plaster walls, arched window on the left wall
light pine floorboards, plain white walls, simple window on the left wall
light grey laminate floor, plain white walls, floor-to-ceiling balcony door on the left wall
dark walnut floor, deep green painted walls, tall window on the left wall
wide reclaimed wood floor, whitewashed rough plaster walls, small deep-set window on the left wall
seamless light microcement floor, warm grey walls, large frameless window on the left wall
The window is on the left in all ten so the daylight direction stays constant across the series — important if your product photo has a fixed light direction. If a room puts the window on the right, mirror the image horizontally instead of rerolling.
The back wall stays light. It is the brightest plane in the template and the model keeps it that way. Dark or brick back walls mostly don't come through; the side walls take the colour instead. For product compositing this is usually a feature.
Drift is about 20px, not zero. If a room lands off, discard and reroll rather than moving your product. Faster, and it keeps the series consistent.
Negative prompts barely work at cfg 1. Distilled models ignore them. Put what you want removed into the positive: no radiator, completely bare.
Ceiling height is fixed by the template. Tall stucco rooms need a template with the ceiling edge moved up.
It's a plain PNG, edit it in any image editor.
Move the bright baseboard strip to move the floor line
Keep the two vertical corner edges — they are what enforces the frontal view
Keep the faint lines converging on the vanishing point; they become planks and tile joints
Name it after its row, for example room_template_v3_floor700.png
Krea 2 is licensed under the Krea 2 Community License — commercial use permitted under a company-wide annual revenue threshold, enterprise license required above it. Full terms: https://krea.ai/krea-2-licensing The workflow JSON and the template PNG in this upload are mine, use them freely.

