Commit graph

3 commits

Author SHA1 Message Date
CRT
01d00cdd26 Give the tankard a handle you could hold, and the lantern one at all
Both models had something in the place a handle belongs, and against a
photograph neither was a handle.

The tankard's was a flat box put through `bendGeometry` and then pushed
clear of the body by a hand-derived offset. Measured, the result stood
7 mm proud of a body 47 mm in radius, with the rest buried in the stave
wall -- no finger gap at all, which is why it read as a plank glued to the
side. The offset formula did not describe what `bendGeometry` does to the
geometry, and rather than deriving a better correction for a curve that
cannot be inspected, the handle is now an actual arc from
`arcBarGeometry`, specified by the two things that matter: where the ends
land and how far the belly stands off. It now stands 24 mm clear. The
proportions go with it -- the reference is a fist-sized vessel, ours was a
beaker.

The lantern's was a horizontal `bandGeometry` ring sitting on the flue: a
suspension eye, not a bail. A lantern is defined by being carried, so the
bail is the first thing the eye looks for. It is now a vertical arch whose
sweep runs about 20 degrees past a half circle at each end, which turns the
ends downwards and outwards so they cross the roof cone instead of sitting
tangent to it -- a clean half circle was rejected by the support check as
floating, correctly.

Removing the ring stranded the tongue that used to join it to the flue, and
leaving it in place produced the z-fight: its sides sat at z = +-0.00488
against the bail's +-0.00512, a quarter of a millimetre apart across the
whole apex. A bail that reaches into the roof needs no strap to hold it on.

Worth recording how that one was found. The first guess was that
`arcBarGeometry` self-intersects once the sweep passes PI. Building the
bail in isolation across six sweeps and segment counts gave 0 overlaps
every time, which killed the theory before any time went into fixing the
wrong thing.

27 models, 17433 triangles, all checks pass, 0 floating cases.
2026-08-22 11:54:54 +07:00
CRT
50c7fc60b9 Translate the whole repository to English
The kit is going public, so everything a reader sees is now English:
27 model sources, the core vocabulary, meta.ts (titles, descriptions and
every slider label), the viewer UI, all script output, REFERENCE.md and
the READMEs.

Rules applied: only comments, doc comments and human-facing strings were
touched. Identifiers, numbers, logic, registry item ids, part names and
material slot names are unchanged — those are a published contract and
were already English.

Verified rather than assumed: for all 53 changed .ts files the code
skeleton (source with comments stripped and string contents replaced by a
placeholder) is byte-identical before and after. Full gate is green —
typecheck, registry conformance, ~510 model checks, GLB round trip and a
production build.

Also fixed here:
- index.html and viewer.html were missed by the translation pass because
  the file list only covered .ts/.md/.css. Both had lang="tr" and Turkish
  titles.
- The viewer formatted triangle counts with toLocaleString('tr-TR'), which
  prints 15.425 rather than 15,425.
- REFERENCE.md's model table header did not match what
  scripts/catalog-table.ts emits, so the next regeneration would have
  silently changed it. Aligned to the generator.
- Removed scripts/probe.ts and scripts/zdiag.ts; they were throwaway
  diagnostics that got committed by accident.
2026-08-21 14:35:13 +07:00
CRT
a3300ff233 Kit'i 26 modele çıkar, doğrulamayı ve inceleyiciyi genişlet
Modeller (13 → 26): chest, bench, torch, lantern, bell, sign, hay bale,
sack, broom, tankard, book, phial, coin pouch. Kürek, çapa ve yaba
render'lara bakılarak yeniden yazıldı.

core:
- createKitModel artık tipli `actions` ve `update(dt)` taşıyor
- BuiltPart.extras: bir parça birden çok materyal yuvası kullanabiliyor
  (sandığın kapağı = meşe tahta + demir kayış, birlikte dönmek zorunda)
- BuiltPart.origin: parça başına dönme merkezi (menteşe, sarkaç)
- bendGeometry / roughenGeometry / mottleGeometry
- 5 yeni materyal yuvası: steel, brass, straw, cloth, leather, glass
- bandGeometry({ inner }) — serbest halkalar kapalı katı olabilsin

my-registry/meta.ts: katalog metadata'sı artık build.ts ve viewer için
tek kaynak. Doğrulama modelle metadata'nın uyuştuğunu denetliyor ve bu
eklendiği gün dört modelde gerçek bir sapma yakaladı.

Doğrulama (~500 kontrol):
- metadata uyumu, eylem semantiği, kare hızı bağımsızlığı
- scripts/render.ts: tarayıcısız yazılım rasterleyici. Bütün doğrulama
  geometrikti; "bu kürek küreğe benzemiyor" diyebilmek için modele
  bakmak gerekiyordu
- scripts/verify-glb.ts: dışa aktar → geri oku → karşılaştır

GLB dışa aktarımı: viewer düğmesi ve toplu CLI aynı kodu kullanıyor.

Viewer:
- parça paneli (solo/izole) ve materyal yuvası paneli (canlı renk override)
- kit görünümü: 26 model tek sahnede, ölçek ve ton tutarlılığı için
- configure() sonrası gölge bayraklarının düşmesi düzeltildi
2026-08-21 09:44:58 +07:00