# Modele 3D — obiectivele 02–30

29 de modele noi Blender/GLB și 30 de modele reale în galeria RoAtlas. Modelul Bran existent este păstrat byte cu byte. Catalogul extins în paralel la 100 obiective de referință este păstrat; acest inventar acoperă modelele 01–30. Data verificării: 1 octombrie 2026.

Documentele individuale, scenele editabile și probele din `output/` sunt disponibile în checkout-ul repository-ului; site-ul publică GLB-urile și acest inventar.

## Organizare și livrabile

Șase conversații locale au lucrat în același checkout: 02–06, 07–11, 12–16, 17–21, 22–26 și 27–30. Fiecare a deținut propriile foldere și GLB-uri; coordonatorul a asociat modelele în ambele cataloage. Metadatele, fotografiile, descrierile și configurarea Bran din catalog sunt păstrate.

Fiecare `obiective-romania/<folder>/output/` conține `model.blend`, `model.glb`, `generate_model.py`, `statistics.json`, `ipoteze.md` și randările `preview/front.png`, `lateral.png`, `rear-inferred.png`, `top.png`. Documentele individuale leagă elementele observate de toate fișierele de referință și explică starea istorică, scara și inferențele. Unele obiective au randări suplimentare și texturi auxiliare.

GLB-urile publice sunt în `static/models/`, la `/models/<folder-fără-număr>.glb`. Catalogul sursă și cel servit au aceleași date. Viewerul existent folosește încadrarea automată; Bran își păstrează camera și selecția componentelor. Componentele modelelor noi au nume proprii monumentului. Sighișoara include Turnul cu Ceas și vecinătatea imediată.

Compararea în galeria reală a identificat depth fighting pe acoperișurile plane ale Palatului Parlamentului. Planul apropiat al camerei a fost ajustat de la `radius / 1000` la `radius / 100`, îmbunătățind precizia bufferului de adâncime fără schimbarea încadrării, pozițiilor de cameră sau interfeței. Captura inițială este `output/playwright/inspection/parliament-depth-before.png`; captura finală este `output/playwright/production/desktop-06-palatul-parlamentului-top.png`.

## Inventar măsurat

Triunghiurile sunt suma primitivelor mesh din GLB, fără multiplicarea prin instanțe. Dimensiunile sunt octeți efectivi. Cele 29 de livrabile noi totalizează **14,959,560 B GLB** și **38,660,921 B Blender**; copiile publice dublează spațiul GLB în checkout.

| Nr. | Obiectiv / ipoteze | Triunghiuri | GLB (B) | Blender (B) |
|---|---|---:|---:|---:|
| 01 | Castelul Bran | 135,801 | 3,960,608 | 4,633,063 |
| 02 | Castelul Peleș | 59,903 | 404,676 | 3,241,851 |
| 03 | Castelul Corvinilor | 83,424 | 546,220 | 3,240,841 |
| 04 | Cetatea Alba Carolina | 83,108 | 615,192 | 4,256,879 |
| 05 | Cetatea Râșnov | 13,344 | 162,356 | 1,649,169 |
| 06 | Palatul Parlamentului | 207,747 | 1,102,744 | 5,947,613 |
| 07 | Centrul istoric Sighișoara — reper: Turnul cu Ceas | 9,946 | 310,176 | 509,358 |
| 08 | Cazinoul din Constanța | 22,051 | 256,336 | 762,162 |
| 09 | Mănăstirea Sucevița | 17,541 | 332,012 | 718,211 |
| 10 | Biserica fortificată din Biertan | 12,024 | 290,708 | 609,330 |
| 11 | Cetatea Făgărașului | 24,002 | 286,296 | 853,043 |
| 12 | Cetatea Deva | 6,252 | 240,612 | 378,223 |
| 13 | Cetatea Neamț | 4,782 | 168,188 | 312,087 |
| 14 | Cetatea de Scaun a Sucevei | 6,999 | 199,996 | 333,390 |
| 15 | Cetatea Rupea | 3,086 | 601,404 | 694,950 |
| 16 | Mănăstirea Voroneț | 9,900 | 617,580 | 754,280 |
| 17 | Mănăstirea Hurezi | 28,348 | 435,244 | 695,052 |
| 18 | Mănăstirea Curtea de Argeș | 26,842 | 385,692 | 592,464 |
| 19 | Mănăstirea Putna | 25,272 | 421,484 | 642,595 |
| 20 | Biserica fortificată din Viscri | 8,830 | 240,124 | 385,325 |
| 21 | Palatul Culturii din Iași | 103,778 | 841,952 | 1,302,829 |
| 22 | Ateneul Român | 53,989 | 350,636 | 597,885 |
| 23 | Palatul Mogoșoaia | 121,308 | 858,492 | 1,111,809 |
| 24 | Palatul Brukenthal | 69,506 | 410,660 | 996,290 |
| 25 | Castelul Cantacuzino | 77,376 | 511,164 | 1,359,748 |
| 26 | Castelul Bánffy | 47,611 | 422,168 | 800,854 |
| 27 | Biserica Neagră | 25,465 | 1,205,024 | 1,747,348 |
| 28 | Biserica Sfântul Mihail | 34,196 | 1,263,728 | 2,009,197 |
| 29 | Catedrala Mitropolitană din Timișoara | 29,837 | 882,560 | 1,401,942 |
| 30 | Arcul de Triumf | 12,420 | 596,136 | 756,196 |

## Verificări efectuate

- Blender nativ **5.2.0 LTS** a executat fiecare generator nou, a redeschis fiecare scenă salvată și a produs cele patru vederi de control. Resursele sunt împachetate, iar fișierele Blender sunt comprimate. Bran rămâne livrabilul anterior, generat cu 4.5.3 LTS.
- Generatoarele includ verificări executabile de contacte/goluri și container GLB. Au fost rulate verificări asupra scenelor redeschise și importuri ale exporturilor Draco; statisticile individuale precizează probele, toleranțele și limitele verificării. `check_decoded_contacts.py` completează probele de contact în grupurile semantice decodate pentru 07–11. Grupurile reunite nu permit izolarea fiecărui obiect sau separarea zidurilor de tâmplărie în razele de goluri; generatorul păstrează verificările individuale ale scenelor originale. Aceste probe nu reprezintă certificare structurală a întregii geometrii.
- Exporturile folosesc **Draco nivel 10**, position **16**, normal **10**, texcoord **14** biți. Texturile sunt încorporate, cu rezoluțiile efective în fiecare `statistics.json`; materialele folosesc PBR compatibil glTF. Nu sunt necesare resurse externe ale modelului, Meshopt sau KTX2.
- Randările au fost inspectate în fiecare conversație; coordonatorul a comparat siluetele și organizarea volumelor cu fotografii locale și imaginile finale Three.js. Diferențele de iluminare Blender/Three.js sunt normale pentru studiourile și tonemapping-ul distincte.
- **60/60 verificări în galeria reală de producție**: toate cele 30 de GLB-uri la 1440×1000 și 390×844. Au fost exercitate orbitarea, deplasarea, zoom-ul, butoanele de cameră, resetarea, trecerea la fotografii, redeschiderea 3D și Escape. Canvas-ul este unic și dispare la închidere. Selecția componentelor Bran este exercitată. Zero excepții de pagină; WebGL2 activ și fără eroare GL raportată.
- Fiecare fișier încărcat prin HTTP are aceeași amprentă SHA-256 ca livrabilul și copia din `static/models/`. Rezultatele browserului (`output/playwright/production/results.json` în checkout) și capturile desktop/mobil sunt în `output/playwright/production/`. Câmpul `coordinator_gallery_validation` din statisticile noi înregistrează această verificare, separată de delegarea inițială făcută de generator.
- `pnpm run check`: **0 erori, 0 avertismente**. `pnpm run build`: **reușit**. Vite raportează avertismentul existent despre dimensiunea chunk-ului Three.js. Catalogul construit și toate cele 30 de resurse GLB sunt încărcate din `pnpm run preview`.

## Reproducere

Instrucțiunile exacte și modurile de verificare ale fiecărui generator sunt în propriul `ipoteze.md` și în antetul scriptului. Exemplu Brukenthal, din rădăcina proiectului:

```sh
blender --background --factory-startup --disable-autoexec --threads 2 --python-exit-code 1 --python obiective-romania/24-palatul-brukenthal/output/generate_model.py
blender --background --factory-startup --disable-autoexec --threads 2 --python-exit-code 1 --python obiective-romania/24-palatul-brukenthal/output/generate_model.py -- --verify
python3 obiective-romania/check_models.py
pnpm run check
pnpm run build
pnpm run preview --port 4173 --strictPort
```

Blender și Chromium au fost rulate în contextul nativ autorizat; sandbox-ul acestui mediu provoacă o eroare la detectarea GPU Blender. După regenerare, copiați GLB-ul validat în `static/models/` înainte de verificarea catalogului. Pentru asocierea livrabilelor noi pregătite există `python3 obiective-romania/check_models.py --publish`.

Verificarea browserului folosește Playwright deja instalat în runtime, fără dependență nouă în proiect. Rulați comenzile din rădăcina proiectului; căile runtime-ului Node sunt relative la aceasta. Comenzile Blender presupun că `blender` este disponibil în `PATH`:

```sh
NODE_PATH=../../.cache/codex-runtimes/codex-primary-runtime/dependencies/node/node_modules ../../.cache/codex-runtimes/codex-primary-runtime/dependencies/node/bin/node obiective-romania/check_gallery.cjs http://127.0.0.1:4173/
```

## Limite

Modelele sunt reconstrucții exterioare interpretate după fotografii, cu scară convențională; nu sunt relevee sau fotogrammetrie. Suprafețele ascunse, topografia și unele racorduri sunt inferate. Sculpturile, frescele, ornamentele, ferestrele repetitive și contextul urban sunt simplificate în grade diferite, documentate individual. Fotografiile sunt referințe, nu texturi proiectate pe fațade.

Verificarea directă cu decoderul Draco inclus în Three.js înregistrează numărul triunghiurilor degenerative sau cu arie sub pragul de 1e-8 în `raw_draco_checks.degenerate_triangles`. Unele tăieturi și detalii foarte mici păstrează asemenea triunghiuri; comparația vizuală și probele de contact trec, fără revendicarea unui mesh manifold certificat. Normalele efective și UV-urile exportate sunt verificate direct, separat de reprezentarea normalelor la reimportul Blender.

Viewport-ul mobil este emulat în Chromium, fără test pe telefon fizic. Verificarea WebGL2 și absența erorilor nu garantează un buget universal de memorie GPU, viteză sau performanță pe toate dispozitivele. Aceste rezultate privesc amprentele GLB înregistrate; regenerarea cere reluarea verificărilor.

Inventarul curent pentru toate cele 100 de modele este în [MODELE-3D-31-100.md](MODELE-3D-31-100.md). Acest document păstrează verificările etapei 01–30.
