Studio Matrx Monthly · Volume 1 · Issue 3 · August 2026
Amogh N P
 In loving memory of Amogh N P — Architect · Designer · Visionary 
Diffusion on the ViewportLesson 5.2
AID for Architecture, Planning & Urban Design/Module 5 · AI for Visualization & Rendering

Lesson 5.2 · AI for Visualization & Rendering

Diffusion on the Viewport

Driving Stable Diffusion with a depth or line pass and ControlNet, so the AI obeys your geometry - and stays consistent across views

13 min Interactive lessonFree · open lessonByAmogh N P· Architect & interior designer
The hook

Type 'modern glass house' into a raw image model and you get a different house every time. Feed it your depth pass and it finally draws yours.

The last lesson used enhancement tools that hid their diffusion engine behind a slider. This one takes the lid off. When you drive Stable Diffusion directly - conditioned on a depth or line pass exported from your viewport, steered by ControlNet - you trade convenience for real control over geometry, look and consistency.

This is the technical heart of AI visualization, and the payoff is precision: the building the AI draws is provably yours, because its shape is nailed down by your model, not the model's imagination. It is more setup than clicking Enscape's AI button, but it is the difference between hoping the AI keeps your design and making it. If the sibling Generative AI course is where you master these images as a craft, this lesson is where you wire them into your modelling workflow.

Geometry from the model, look from the prompt. ControlNet is the clamp that holds them together.

Why raw text-to-image cannot render a building

A pure text-to-image model - type a sentence, get a picture - is wonderful for mood and hopeless for a specific building. Ask it for "a three-storey brick house with a corner window and a flat roof" ten times and you get ten different houses, none of them the one on your screen. There is no mechanism for it to know your massing, your window rhythm, your proportions. For ideation that freedom is a feature; for representing a design you have already made, it is a dealbreaker.

The fix is conditioning: giving the diffusion model a structural input alongside the text, so it generates within a shape you supply. The most useful structural input a designer already has is the viewport itself - and specifically the passes you can export from it. A depth pass encodes how far each pixel is from the camera; a line or edge pass encodes the building's contours; a segmentation pass labels regions (wall, glass, sky, floor). Any of these can steer the image so it keeps your geometry while the prompt supplies the look.

This is exactly what enhancement tools do internally - Veras and the rest are conditioned diffusion under a friendly UI. Doing it yourself trades that convenience for control: you choose the conditioning type, its strength, the model, the prompt and the seed. When faithfulness to your design is non-negotiable - a competition board, a planning image, a set that must all read as the same building - that control is worth the extra steps.

CONTROLNET FROM THE VIEWPORTViewport3D model viewDepth / linepassControlNetholds geometryDiffusiongenerates imagePromptmaterials, lightGeometry from your model + look from your prompt. The building stays yours; only the surface is generated.
Zoom
Controlled diffusion from the viewport: a depth or line pass carries your geometry, ControlNet forces the diffusion to respect it, and the prompt supplies materials and light. Geometry from your model, look from your prompt - the building stays yours; only the surface is generated.

Text alone = a different building every time. Add a depth pass = yours, every time.

ControlNet: how conditioning holds your geometry

ControlNet is the technique (and family of models) that lets a structural pass steer Stable Diffusion. You give it a conditioning image derived from your viewport, and it constrains the diffusion process to respect that structure while the text prompt fills in materials, light and atmosphere. Different conditioning types suit different jobs, and choosing well is half the skill.

Depth is the workhorse for exteriors and interiors alike - it holds massing, spatial depth and rough form, and tolerates messy geometry. Canny traces every edge, giving tight control over detail but also locking in noise you may not want. MLSD detects straight line segments and is superb for buildings, where the important structure is orthogonal - clean facades, mullions, floor lines. Segmentation assigns each region a material class, which is powerful for interiors where you want "this is oak floor, that is plaster wall" respected. You can even stack two ControlNets - say depth plus MLSD - for both form and crisp edges.

Most 3D tools can produce these passes directly: Rhino, Blender, SketchUp and Revit can output a depth or clay render, and preprocessors inside ComfyUI or Automatic1111 will derive canny, MLSD or depth from a plain screenshot if needed. The conditioning strength works like the last lesson's slider in reverse: high strength keeps the AI tightly on your geometry, low lets it wander. For design fidelity you generally want it high, then relax it only if the image looks stiff. The prompt then does the rest - and because the shape is locked, you can iterate on materials and mood freely without the building morphing underneath you.

CONDITIONING TYPESDEPTHform +distanceforgivingworkhorseCANNYall edgestight butlocks noiseMLSDstraightlinesideal forbuildingsSEGMENTlabelledregionsgreat forinteriorsPick the pass that carries what matters - or stack two (depth + MLSD) for form and crisp edges.
Zoom
Four conditioning passes and what each is best at. Depth holds form and spatial distance; canny traces every edge; MLSD locks straight lines and is ideal for buildings; segmentation labels material regions and shines for interiors. Choosing the right pass is half the skill.

The workflow, end to end

A practical viewport-to-diffusion pass has a clear shape. You will most likely run it in ComfyUI (node-based, powerful, the current standard for controlled work), Automatic1111/Forge (simpler UI), or Krita AI (paint-and-generate on a canvas, great for interiors). The steps are the same regardless of tool.

text
1. Frame the view in your 3D tool; lock the camera.
2. Export a conditioning pass: depth or clay render, or a line pass
   (or just a clean screenshot for a preprocessor to convert).
3. Load it into ControlNet; pick the type (depth / mlsd / canny / seg).
4. Set conditioning strength high (~0.7-1.0) to hold geometry.
5. Write the prompt: materials, time of day, mood, camera, quality.
6. Fix the seed once you like a result, so you can iterate cleanly.
7. Generate, judge against your model, adjust prompt or strength, repeat.

A strong prompt names materials and light precisely and leaves geometry to ControlNet:

text
"warm afternoon light, exposed concrete and teak, floor-to-ceiling
 glazing, polished terrazzo floor, soft contact shadows, shallow
 depth of field, architectural photography, high detail"

Notice you are not describing the building's shape - the depth pass already carries it. That division of labour is the whole point: geometry from your model, look from your words. Keep the loop tight - generate, compare to the viewport, refine - exactly the human-in-the-loop from Module 0. The setup cost is front-loaded; once your graph is built, re-shooting a view or restyling a scheme is fast.

CONTROLNET FROM THE VIEWPORTViewport3D model viewDepth / linepassControlNetholds geometryDiffusiongenerates imagePromptmaterials, lightGeometry from your model + look from your prompt. The building stays yours; only the surface is generated.
Zoom
Controlled diffusion from the viewport: a depth or line pass carries your geometry, ControlNet forces the diffusion to respect it, and the prompt supplies materials and light. Geometry from your model, look from your prompt - the building stays yours; only the surface is generated.

Reading failures and knowing when to use it

Controlled diffusion is powerful but fiddly, and most of the skill after the basics is diagnosing why a frame went wrong. Learn to read the two common failures. If the AI is ignoring your geometry - inventing windows, drifting massing - your conditioning strength is too low or the wrong pass is fighting the prompt; raise strength, or switch to a pass that carries what matters (MLSD for straight lines, depth for form). If the image looks stiff, flat or plasticky - technically obedient but lifeless - conditioning is too high or the prompt is too thin; relax strength a little and enrich the prompt with light, materials and camera language. Nearly every problem is somewhere on that fidelity-versus-life axis, and tuning it is the loop.

A short menu of levers, roughly in order of impact:

text
geometry drifting?   -> raise ControlNet strength / better pass
stiff, lifeless?     -> lower strength a touch / richer prompt
wrong materials?     -> prompt is doing shape work; simplify to look
set won't agree?     -> fix seed, share prompt, add reference image
noisy / low detail?  -> higher-res base, then upscale (lesson 5.3)

The harder judgement is when to reach for controlled diffusion at all. It is more setup than an in-engine enhancer, so spend that cost only where it pays: images that must be provably faithful, a set that must stay consistent, or a look you cannot get from presets. For a quick mood test or an internal option study, the enhancers of the last lesson are faster and good enough. There is also a real cost dimension - local generation ties up a GPU, cloud generation costs per image, and iterating a large set adds up - so batch your work and settle the prompt and seed on one frame before generating the rest. Finally, build once and reuse: a well-made ComfyUI graph or a saved Automatic1111 configuration turns a fiddly setup into a repeatable studio tool, which is what makes controlled diffusion practical rather than a party trick. The mechanism is the same every time; only your model, prompt and seed change.

One variable worth naming explicitly is the base model itself. The checkpoint you diffuse with - a general model, a photoreal one, or an architecture-tuned community checkpoint - shapes the look as much as your prompt does, so try a couple and keep the ones that suit your practice. A lighter cousin of the full ControlNet route is plain img2img at low denoise, which treats your rendered frame directly as the starting image and nudges it toward realism; it holds geometry loosely and is quick for a soft polish, but for anything that must be faithful, an explicit conditioning pass beats hoping a low denoise keeps your lines. Choose the heaviness of the setup to match the fidelity the image actually demands.

Drift = raise strength. Stiff = lower it + richer prompt. Reserve controlled diffusion for images that must be exact.

Consistency across a set of views

A single beautiful frame is easy; a set that reads as the same building, at the same time of day, in the same material world, is the real professional test - and where naive diffusion falls apart. Change the view and, left alone, the AI will re-imagine the brick, shift the sky, and invent new trees. Several levers pull the set back together.

Fix the seed across views so the model's random starting point is shared - this alone steadies palette and mood. Reuse the exact prompt, changing only what genuinely differs. Use reference conditioning - IP-Adapter or a style/reference image - to carry a consistent look from a hero frame into the others. Keep conditioning strength high so each view is anchored to its own geometry rather than drifting. And generate at modest creativity, since every extra degree of freedom is another chance for the set to diverge.

Even then, expect to curate: generate several candidates per view and choose the ones that agree with each other, rather than accepting the first of each. For interiors especially, small inconsistencies - a rug that changes weave, a wall that shifts hue - are glaring across a deck, so audit the set together, not frame by frame. Perfect view-to-view consistency remains one of diffusion's genuine weak spots in 2026; tools are improving fast, but a human still has to hold the set to a single truth. That curation is the design work here - the AI proposes many plausible buildings, and you enforce that they are all the one you actually designed.

Fixed seed + same prompt + high conditioning + reference image = a set that agrees. Still: curate.

Techniques & tools in this lesson

ControlNet

Conditions Stable Diffusion on a structural input (depth, edges, regions)

The mechanism that makes diffusion obey your geometry; conditioning strength trades fidelity against freedom.

Depth / MLSD / Canny / Segmentation

Conditioning pass types from your viewport

Depth for form, MLSD for straight building lines, canny for all edges, segmentation for material regions.

ComfyUI / Automatic1111 / Krita AI

Interfaces for running controlled diffusion

Node-based, form-based and paint-based respectively; all free and local-capable. Front-load the setup, then reuse.

Seed

The fixed random starting point of a generation

Fixing it is the simplest lever for consistency across a set of views and for clean iteration.

Hands-on workshop

Workshop — lock a view to your geometry

You will condition Stable Diffusion on one viewport, prove it holds your geometry, then generate two more views that agree with the first. This is the core controlled-diffusion loop in miniature.

A 3D model + ComfyUI or Automatic1111/Forge with a Stable Diffusion checkpoint and at least one ControlNet model (all free).

Given & goal
Goal: make the AI draw YOUR building, then keep a set consistent
Inputs: a 3D model + ComfyUI or Automatic1111 (free) with a ControlNet model
Time: ~45 minutes
  1. 1Frame one exterior or interior view, lock the camera, and export a depth or clay pass (or a clean screenshot for a preprocessor).
  2. 2Load it into a ControlNet (depth or MLSD), set conditioning strength around 0.8, and write a look-only prompt (materials, light, mood - no geometry).
  3. 3Generate several candidates. Compare each to your viewport and confirm the massing and openings match; if the AI is inventing shape, raise conditioning strength.
  4. 4Fix the seed on your best result. Now export two more views of the same model and generate them with the identical prompt and seed.
  5. 5Lay all three side by side and audit consistency - palette, sky, materials. Note what agrees and what drifts, and one lever you would use to tighten it.

You’ll walk away with
Three views of one model generated through ControlNet with a shared prompt and seed, plus a short note on how faithfully each held your geometry and how consistent the set is.

The worked example

Three altitudes on the same idea

Read the band that fits you — or all three.

For the architectAI across the whole design process

When faithfulness is non-negotiable - competition boards, planning images, a coherent set - drive diffusion yourself. A depth or MLSD pass from Rhino or Revit through ControlNet gives you images provably locked to your massing and openings, with materials and light steered by prompt. Build one reusable ComfyUI graph for your practice and re-shooting views becomes routine. Reserve the effort for images that must be exact; for quick mood tests, the in-engine enhancers of the last lesson are faster.

For the interior designerAI for ideation, specs & client work

Segmentation and depth conditioning are made for interiors. Label your model's regions - oak floor, plaster wall, glazing - and the AI respects them while you iterate finishes and lighting through the prompt. Krita AI is a friendly entry point: paint over a SketchUp screenshot and generate in place. The consistency levers matter most to you, because a client deck of one room from several angles must agree on every finish - fix the seed, reuse the prompt, and audit the set together.

For the studentAn AI-fluent design skillset

This is where you learn what enhancement tools are actually doing. Setting up ControlNet by hand - choosing depth versus canny versus MLSD, tuning conditioning strength, fixing seeds - builds genuine understanding you can carry to any future tool. Start free in ComfyUI or Automatic1111. It is fiddly at first, but the mental model of 'geometry from the model, look from the prompt' is one of the most transferable skills in AI visualization, and it makes your studio images defensibly your own.

Misconception check

Stable Diffusion can just render my model if I describe it well enough in the prompt.

Words cannot specify a building precisely enough to reproduce it. No matter how detailed your prompt, a text-only model has no access to your massing, proportions, window positions or spatial layout, so it will generate a plausible building that is not yours - and a different one on every run. Language is simply too coarse a channel for geometry. The reason controlled diffusion works is that it does not rely on the prompt for shape at all: a depth, line or segmentation pass exported from your viewport carries the geometry, ControlNet forces the diffusion to respect it, and the prompt is left to do what words are good at - materials, light, mood, camera. Get this division right and the prompt becomes short and about look, not shape. Try to cram the design into the prompt and you will fight the model forever. The structure must come from your model; the prose supplies the surface.
Try it

Do it yourself

Test your grasp of the mechanism.

  1. 1Why does describing a building in the prompt fail to reproduce it, however detailed the words?
  2. 2Match each to its best job: depth, MLSD, segmentation.
  3. 3What does raising ControlNet conditioning strength do to the output?
  4. 4Name three levers for keeping a set of views consistent.
  5. 5In a controlled-diffusion setup, what should the prompt describe and what should it leave alone?
Take this with you

The one line to carry out

Controlled diffusion splits the labour: geometry comes from a viewport pass held by ControlNet, look comes from your prompt. That division is what turns a lucky picture into a faithful rendering of the building you actually designed - and what lets a whole set of views agree.
Take it further
References & further reading

Peer-reviewed journals & authoritative standards

  1. 01Stable DiffusionWikipedia, 2026.
  2. 02Diffusion modelWikipedia, 2026.
  3. 03Text-to-image modelWikipedia, 2026.
  4. 04Stability AIStability AI, 2026.
Related lessons
Recap
Raw text-to-image cannot render a specific building because words cannot carry geometry. Conditioning fixes this: a depth, line, MLSD or segmentation pass from your viewport, held by ControlNet, forces Stable Diffusion to respect your shape while the prompt supplies materials and light. You run it in ComfyUI, Automatic1111 or Krita AI, keep conditioning strength high for fidelity, and use fixed seeds, shared prompts and reference conditioning to keep a set of views consistent - still curating, because view-to-view consistency remains diffusion's weak spot.
Carry forward →

Now your images are faithful but often small and soft. Next: upscaling - taking a controlled frame to print and presentation resolution with believable detail, and the artefacts to watch when the AI invents pixels.

A

The author

Amogh N P

Architect, interior designer, and creative polymath. Studio Matrx began in his notebooks — his vision of design made honest, useful, and open to everyone. Its Academy is written and taught in his memory, and free, forever.

More about Amogh →