A dark band crosses the elevation. The inferred depth map reads it as a recessed balcony. The Canny map reads its upper and lower boundaries as two hard lines. In the source image, it is only a shadow cast by the building opposite. Both controls are internally plausible. Together they give the generator three confident instructions about one false piece of architecture.
Community advice in today's sweep recommends depth or Canny preprocessing when an original architectural render arrives without source passes. That is a useful rescue route. The common next mistake is connecting both maps, increasing both strengths, and assuming more control means more accuracy. It can mean a more decisive error.
This tutorial treats control maps as witnesses. Depth reports relative spatial order. Canny or lineart reports visible boundaries. Neither knows which pixels are walls, reflections, joints, shadows, or trees. When their stories conflict, the graph needs a ruling before generation.
Know what each witness can see
The official ComfyUI depth ControlNet guide describes depth maps as grayscale representations of distance from the observer and identifies architecture as a use case for controlling spatial structure and perspective. That makes depth useful for separating foreground, facade, interior, and background planes. It does not make the map a measured model.
ComfyUI's preprocessor documentation describes lineart as a way to preserve essential edges and contours while removing texture and color. Edge controls are good at rooflines, openings, mullions, railings, and material boundaries that produce clear contrast. They are also good at preserving irrelevant contrast from shadows, reflections, paving joints, foliage, and compression.
Depth Anything 3 extends depth prediction to spatially consistent geometry from one or more views, according to the project's official repository. A single-image architectural workflow still begins with visual evidence, not BIM knowledge. Treat its output as inferred structure, inspect it, and keep the model name and version with the saved map.
Build a three-panel conflict sheet
Before connecting either control to a sampler, export the source, depth map, and edge map at the same pixel dimensions. Place them side by side. Do not colorize one for drama or crop them differently. Add a fourth panel only if you have an authoritative source pass from the model.
Mark disagreements by region, not by map. Draw boxes around roof silhouette, repeated openings, balcony edges, glazing, thin elements, ground plane, vegetation, and reflected geometry. For each box, write what the source actually proves. If the source cannot settle the issue, label the region uncertain instead of choosing the prettier interpretation.
| Visible condition | Depth risk | Edge risk | Likely authority |
|---|---|---|---|
| Roof against clear sky | Halo or softened boundary | Usually a clean contour | Edge for silhouette, depth for plane order |
| Dark glazing | May read as a deep void | May preserve reflected objects | Source model or manual mask |
| Repeated window bays | May vary with interior brightness | Can retain the facade rhythm | Edge, after removing false lines |
| Foreground planting | Can merge leaves into one plane | Can create dense noise | Mask or weak depth, depending on task |
| Cast shadow on wall | Can invent a step | Can preserve a false joint | Neither, remove from both |
The table is a starting hypothesis, not a universal weighting preset. A clay viewport and a dusk photograph fail differently. The ruling must follow the actual pixels and the intended edit.
Test each control alone
Duplicate a minimal generation graph into three routes: image-to-image without ControlNet, depth only, and edge only. Use the same checkpoint, prompt, negative prompt, seed, dimensions, sampler settings, and denoise value. Keep the instruction plain. Ask for the intended material or light change without adding weather, people, or dramatic style.
Run low-cost previews. Compare them against the source at the marked regions. The uncontrolled route shows what the base model tends to invent. The depth route shows which spatial readings it enforces. The edge route shows which contours it protects or mistakes for design. Do not judge overall beauty yet. Record opening count, roof position, floor lines, ground contact, and every required thin element.
If you cannot say what depth fixed and what edge fixed on separate runs, you are not ready to combine them.
Keep the same seed during diagnosis. A different seed changes too many variables and can make a control adjustment look responsible for random variation. Once the graph's structural behavior is understood, test additional seeds for output range.
Assign authority by job and region
Start by asking which signal the edit needs. A broad relighting pass may need depth to maintain foreground and background order, with no edge control at all. A facade material study may need cleaned edges for opening rhythm and joints, while depth remains weak. A planting replacement may exclude the building from the generative region and avoid settling a facade conflict entirely.
If both controls add value, choose one as primary. Apply the secondary at lower strength or over a shorter sampling interval if the selected nodes and compatible models support those settings. The exact parameter names vary with node pack and ControlNet implementation. Confirm them in the installed node documentation, and save the graph with version information.
For local conflicts, repair the maps outside the sampler. Remove a shadow edge, flatten a false depth step, close a broken roof contour, or mask uncertain glazing. Preserve the unedited preprocessor outputs beside the repaired versions. A manual correction is acceptable when it is explicit and reviewable. An unexplained strong weight is not.
Do not solve conflict by turning both down
Two weak contradictory signals can still destabilize a sensitive region while failing to preserve anything important. If a map contributes no named benefit, disconnect it. If it helps only one area, isolate that area when the workflow permits. Every active control should have a written job and an acceptance check.
Run a conflict ladder
Use four saved stages. Stage one is the baseline with no structural control. Stage two applies the primary map alone at modest strength. Stage three adds the repaired secondary map at low strength. Stage four applies the real appearance instruction. Stop at the first stage that changes required geometry.
At each stage, compare only the fixed checklist. Has the number of openings changed? Did a shadow become a recess? Did reflected mullions become facade mullions? Did the parapet thicken? Did plants fuse with railings? Save the first failing output beside its maps. That failure is more useful for tuning than the best image in the batch.
Set a rejection rule before the beauty pass. For example: reject after two attempts if either control changes a required opening, breaks the roof silhouette, converts a shadow to geometry, or moves the ground line. The rule keeps an attractive atmosphere from excusing a changed building.
Our take: more control is not more truth
Depth and edge guidance complement each other when each is given a precise job. ComfyUI's own documentation suggests combining depth with lineart for stronger outlines while retaining spatial relationships. The useful word is combining, not stacking. Combination requires checking what each map says, locating contradictions, and deciding which evidence governs each part of the image.
When the original model exists, export authoritative depth and edge passes. When only a flat image exists, inferred maps can support a careful rescue. They cannot vote a false shadow into a real balcony.
Put the maps side by side. Circle the disagreement. Make one of them yield.
Editorial basis: the 12 September 2026 ArchiGen AI intel sweep and community questions about ComfyUI architectural enhancement without original depth or Canny passes. Technical roles were checked against current official ComfyUI depth ControlNet and preprocessor documentation, plus the official Depth Anything 3 repository. Node behavior depends on the installed models and extensions. No hands-on run is claimed.