Skip to content

Sloped slabs/walls #260

Description

@liger1978

Problem or motivation

Would be cool to be able to have sloped slabs/walls

Proposed solution

No response

Alternatives considered

No response

Additional context

No response

Activity

  1. Aymericr commented on Apr 21, 2026

    @Aymericr
    Contributor

    This is a good one also highly linked to #111

  2. Aymericr commented on Aug 4, 2026

    @Aymericr
    Contributor

    Confirming this against the schemas, because "sloped slabs/walls" is really three separate features and they're worth splitting before anyone picks one up.

    Where things stand on main:

    • Sloped walls — not supported. wall.ts:36 is a single scalar height: z.number(), so a wall is a constant-height extrusion along its polyline. Two distinct asks hide here: a gable-end wall whose top follows the roof plane above it (very common, and the roof already exposes the surface frames needed to compute it — see getRoofOuterSurfaceFrameAtPoint / clipGeometryBySegmentTrim), versus a battered wall that leans off vertical (rare outside retaining walls, and much more invasive since it breaks the assumption that a wall's footprint equals its plan polyline — openings, mitering and hosted-item placement all assume vertical faces).
    • Sloped slabs — not supported. slab.ts:24 is elevation: z.number(), one plane height for the whole slab. This is the one with the clearest use cases: ramps, drainage falls on flat roofs and terraces, driveways.
    • Sloped ground — already works. Terrain sculpting exists on the site node, so exterior grade isn't blocked by this.

    If someone wants to take a piece, sloped slabs are the tractable starting point and I'd suggest that first. The narrow version is a slope vector (direction + fall) on the slab rather than per-vertex heights: the geometry generator is pure (generateSlabGeometry), the floor-elevation system already lifts floor-placed items to the slab elevation under their footprint so it has a single place to become position-dependent, and it doesn't disturb walls at all. Per-vertex heights are the more general answer but drag in a UI for editing them.

    @Aymericr's link to #111 is right for a related reason worth being explicit about: that discussion is about push/pull on the Y axis, and the underlying constraint is the same one — most kinds are parametric in the XZ plane with scalar height, so vertical variation has no representation to manipulate. A push/pull gesture and a slope property need the same schema change underneath, which is why they should be designed together rather than one being bolted on.

    Keeping this open, labeled enhancement + help wanted. Happy to review a slab-slope PR and point at the systems that need to follow.

  3. Aymericr commented on Aug 28, 2026

    @Aymericr
    Contributor

    Cross-link: PR #640 implements a manually-set linear top-edge slope on walls (endHeightOffset) — the shed-roof/knee-wall subset of this request. It doesn't close this issue (no roof-driven gable tops, no battered walls, no sloped slabs), but the geometry primitive underneath it is reusable for the roof-derived version, and I've asked over there whether we land it as the primitive first. If you're watching this issue, that PR is where the first concrete piece is happening.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requesthelp wantedExtra attention is neededready-for-humanNeeds human input during execution

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions