release: v0.1.2 — cornice dentils, changelog entry, TODO pruning

- Hero cornice finished: projecting corona over a 52-dentil course (0.18 x 0.30 x
  0.22 m at 0.45 m centres) so the top of the order has a shadow line instead of
  one flat box. Hero 3044 tris / 148 parts, still 14.50 m; rebuilt, re-imported,
  DemoMap rebuilt, packaged -qaselftest all PASS, screenshots re-rendered.
- CHANGELOG: full 0.1.2 entry (added: concept generator, FBX preset, facade probe,
  Ionic detail, tool tests; changed: 3.1 m storey height, 53.1% colonnade, smoothing
  groups; fixed: floating windows, flat medallions, missing facade collision, the
  three non-building heights).
- TODO: 0.1.2 section removed (goal stays in ROADMAP, whose status line is updated).
- MEMORY: release record incl. the recorded ornament assumptions.
This commit is contained in:
zwitschi committed 2026-11-08 18:06:18 +01:00
1 parent 286d9f6479
commit e86f183c53
30 files changed
+151 -144

No files matched your search

+18 -2
View File
@@ -196,9 +196,25 @@ def build():
# elevation reads as layered stone rather than one flat plane.
cube("Hero_Architrave", 0.0, -1.55, ent_z0 + 0.42, FRONTAGE_W, 1.65, 0.84, stone)
note("Hero_Architrave", (FRONTAGE_W, 1.65, 0.84), "assumption: stacked entablature bands")
# Cornice under the parapet.
cube("Hero_Cornice", 0.0, -1.6, HEIGHT - PARAPET_H - 0.18, FRONTAGE_W, 1.75, 0.36, stone)
# Cornice under the parapet: a projecting corona carried on a dentil course,
# so the top of the order reads as layered stone with a shadow line rather
# than one flat box. Dentils hang under the corona and stand 0.25 m clear of
# it, which is what gives the elevation its cornice shadow at street level.
cornice_z = HEIGHT - PARAPET_H - 0.18
cube("Hero_Cornice", 0.0, -1.6, cornice_z, FRONTAGE_W, 1.75, 0.36, stone)
note("Hero_Cornice", (FRONTAGE_W, 1.75, 0.36), "assumption: projecting cornice line")
DENTIL_W, DENTIL_D, DENTIL_H, DENTIL_GAP = 0.18, 0.30, 0.22, 0.27
dentil_y = -2.30
dentil_z = cornice_z - 0.18 - DENTIL_H / 2.0
dentil_span = FRONTAGE_W - 2.0
dentil_count = int(dentil_span / (DENTIL_W + DENTIL_GAP))
for i in range(dentil_count):
dx = -dentil_span / 2.0 + (DENTIL_W + DENTIL_GAP) * i + DENTIL_W / 2.0
cube(f"Hero_Dentil_{i + 1}", dx, dentil_y, dentil_z,
DENTIL_W, DENTIL_D, DENTIL_H, stone)
note("Hero_Dentil_xN", (DENTIL_W, DENTIL_D, DENTIL_H),
f"{dentil_count} dentils at {DENTIL_W + DENTIL_GAP:.2f} m centres under the corona; "
"assumption: photographed cornice reads as a dentilled course")
cube("Hero_Entablature", 0.0, -0.75, ent_z0 + ENTABLATURE_H / 2.0,
FRONTAGE_W, 1.5, ENTABLATURE_H, stone)
note("Hero_Entablature", (FRONTAGE_W, 1.5, ENTABLATURE_H), "assumption: entablature depth")