kubakub relief anti perch (old)
The node that makes your facade unclimbable — relief anti perch
- field
- field
- preview
- height
Here's a failure mode that has nothing to do with AI models and everything to do with the real world: you design a beautiful protruding-sill facade, and it turns out you've built a ladder. Every ledge deep enough for a shoe, within climbing height of the ground, is a foothold - and in a public-art competition or a planning submission, that's the reason your entry gets sent back.
kubakub relief anti perch fixes it geometrically. It shaves every flat ledge into a sloped sill, steeply enough that nothing and nobody can stand on it. Vertical reveals and cornice undersides are left alone - the things that make a facade read as architecture survive; the horizontal surfaces a foot needs are gone.
The mechanism
It's the same infimal convolution as mould prep's draft limit, but applied upward only. The relief may grow outward as it descends, but no faster than the sill angle allows. Flat top faces get cut away into ramps; the undersides and vertical faces never move. Because it runs after mould prep in the intended chain, the new slopes still carry their minimum edge radius.
The author's own measurement on a test facade with protruding window sills: 220 flagged footholds down to zero, while keeping 113.9 of 115 mm of relief depth. That's the trade this node makes, and it's a good one - you lose about a millimetre of the deepest point to remove every climbable surface.
This isn't really an AI node at all. It's a piece of building-code-shaped geometry sitting at the end of a generative pipeline, which is what makes the pack interesting: it's written by someone who does architecture, not someone who does samplers. (Same author behind the Kubakub architecture checkpoints and LoRAs from 2024, if the name feels familiar - this pack is that person building the tools they wanted for facade work.)
Inputs
field - the relief to treat, usually straight out of relief mould prep.
sill_angle_deg (default 45, range 10–80) is the slope of the new sills, measured from horizontal. 45 is the common anti-perch value and the default for a reason. 60 is aggressive and eats more of the relief; drop toward 30 if you want to keep more depth and can live with a shallower sill.
max_span_mm (default 400, range 20–2000) is how far down a sill slope is allowed to reach below a ledge. Bigger means deep ledges get fully sloped instead of only partly - and it's slower, because that's a longer cone to convolve. If a deep cornice still has a flat spot after a run, this is the knob.
Outputs
field carries on to the safety check, the mass estimate or an export. preview is the grey picture. height is the relief as a MASK, 0 at the lowest point and 1 at the highest, which is how you get the treated relief out of the chain as a displacement or depth map.
One quirk worth knowing before you go looking for it: this node has no report output. The millimetre range of height is printed to the console instead - [kubakub relief anti perch] height 0..1 = ... mm. So if you're scaling that mask in a shader, read the console, don't guess.
Installing
ComfyUI Manager → search kubakub nodes → install → restart. Or the manual route:
cd ComfyUI/custom_nodes
git clone https://github.com/kubakubkub/ComfyUI_KubaNodes
python -m pip install -r ComfyUI_KubaNodes/requirements.txt
That requirements file is one line long - opencv-python-headless>=4.8 - and if you already run an OpenCV build, keep yours. Needs ComfyUI 0.37.0 or newer. No Blender, no model downloads, nothing else.
Where people get burned
The node is a one-way operation. It only ever cuts. There is no undo inside the graph, so if you overcook the sill angle, you re-run from the depth map or an earlier cached node - nothing here restores the flat ledges. Keep a copy of the pre-treatment field if you're experimenting, or at least don't overwrite your only workflow.
Second: it treats what it sees in the field. A ledge you can't see in the depth map - because the depth model smoothed it out, or because flatten_percentile clipped it - won't get sloped. Anti perch is not a substitute for a depth map with real geometry, and the safety check will keep flagging a phantom sill you can't find.
And if the whole pack loads fine but this node is simply absent from the menu, look at kubakub.ini: setting 3d = off (or 3d/fabricate = off) stops those modules loading, and there's no error beyond the startup line telling you how many nodes were hidden.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| field | RELIEFFORGE_FIELD | The relief to treat, usually after relief mould prep. | |
| sill_angle_deg | FLOAT | 4510–80 | Slope of the new sills, in degrees from horizontal. 45 is the common anti-perch value; 60 is aggressive and eats more of the relief. |
| max_span_mm | FLOAT | 40020–2000 | How far down, in mm, a sill slope can reach below a ledge. Larger = deep ledges get fully sloped, but slower. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| field | RELIEFFORGE_FIELD | The relief with sloped sills. |
| preview | IMAGE | Grey preview of the treated relief. |
| height | MASK | The relief as a mask: 0 = the lowest, 1 = the highest point (the same picture as preview), to use as a depth or displacement map. The range in mm is logged in the console. |