feat: add BufferGeometryUtils for advanced geometry manipulation
continuous-integration/drone/push Build is passing

- Implemented computeMikkTSpaceTangents for consistent tangent generation.
- Added mergeGeometries to combine multiple BufferGeometries.
- Introduced mergeAttributes for merging BufferAttributes.
- Created deepCloneAttribute for cloning BufferAttributes.
- Developed interleaveAttributes and deinterleaveAttribute for attribute management.
- Added estimateBytesUsed to calculate memory usage of geometries.
- Implemented mergeVertices to optimize vertex data.
- Created toTrianglesDrawMode for converting geometries to triangle mode.
- Added computeMorphedAttributes for handling morph targets in geometries.
- Implemented mergeGroups to consolidate geometry groups.
- Developed toCreasedNormals for generating smooth normals with crease angles.
This commit is contained in:
martin.fencl
2026-11-02 13:38:01 +01:00
parent d01bd43f6b
commit f0a6480c86
18 changed files with 84615 additions and 47 deletions
+31 -3
View File
@@ -4,13 +4,13 @@ Tato složka obsahuje samostatný web s otočným modelem domu a pozemku, simula
## Spuštění na počítači
Web používá ES moduly a Three.js z připnuté verze CDN jsDelivr. Spusťte místní server z této složky:
Web používá ES moduly a přibalené Three.js 0.180.0 ve složce `vendor/`. Spusťte místní server z této složky:
```sh
python3 -m http.server 8000
```
Potom otevřete <http://localhost:8000>. Prohlížeč potřebuje WebGL a připojení k CDN Three.js. Při nasazení na hosting nahrajte celý obsah složky `klabava/`; soubory `index.html`, `css/`, `js/`, `data/` a `references/` musí zůstat pohromadě. `index.php` je vstup pro PHP hosting.
Potom otevřete <http://localhost:8000>. Prohlížeč potřebuje WebGL. Knihovny se načítají lokálně, takže připojení k CDN není potřeba. Samotný soubor `index.html` neotvírejte přes `file://`; použijte místní server nebo hosting. Při nasazení na hosting nahrajte celý obsah složky `klabava/`; soubory `index.html`, `css/`, `js/`, `data/`, `vendor/` a `references/` musí zůstat pohromadě. `index.php` je vstup pro PHP hosting.
## Ovládání
@@ -26,7 +26,7 @@ Z půdorysu a pohledů vychází obrys domu 17,40 × 13,05 m, zastavěná plocha
Obrys domu, polohy a rozměry otvorů, střechy, komín a sloupky terasy a vstupu vycházejí z kót a vektorů půdorysu, pohledů a řezu. Terén je rovina proložená 27 bodovými výškami parcely (střední odchylka 4 cm); podlaha ±0,000 je 0,30 m nad terénem uprostřed domu. Rámy otvorů, nosná konstrukce terasy a vstupu, auta a materiály slouží k prostorové orientaci. Hranice parcely je převzatá graficky ze situačního PDF a výškopisu, nikoli z vytyčovacích souřadnic. Model není BIM ani podklad pro stavbu, zemní práce nebo vytyčení.
Soubor `data/model.json` uchovává hlavní údaje projektu. Dodané PDF jsou zkopírované do `references/` jako podklad modelu; web na ně neodkazuje. Barvy fasády, střešní krytiny, oken a vybavení nejsou zatím vybrané.
Soubor `data/model.json` uchovává hlavní údaje projektu. Dodané PDF jsou zkopírované do `references/` jako podklad modelu; panel interiéru odkazuje na půdorys a řez. Barvy fasády, střešní krytiny, oken a vybavení nejsou zatím vybrané.
## Soubory
@@ -37,3 +37,31 @@ Soubor `data/model.json` uchovává hlavní údaje projektu. Dodané PDF jsou zk
- `css/app.css` a `css/web.css` — vizuální základ z původního webu; `css/klabava.css` obsahuje úpravy pro Klabavu.
- `data/model.json` — souhrn údajů z výkresů.
- `references/` — výškopis, situace, půdorys, pohledy a řez.
## Nový interiér
Klikněte na **Prohlédnout interiér** (nebo klávesu I). Ovládání navazuje na Ločenici, dispozice je nově sestavená podle Klabavy.
- **Půdorys:** ortografický pohled shora s plochami místností.
- **3D bez střechy:** otočný pohled se skutečným řezem stěn ve výšce 1,12 m.
- **Procházet:** stěny a rovný podhled mají plnou výšku 2,60 m. Klikněte do modelu a použijte W/A/S/D, šipky nebo tlačítka na obrazovce. Tažením se rozhlížíte, Shift zrychlí chůzi. Kolečko mění zorný úhel.
- Mapa, výběr místnosti a připravené pohledy přenesou kameru dovnitř. Průchody jsou volné; zárubně jsou zobrazené bez dveřních křídel.
- Vybavení, popisky a přisvětlení lze přepnout. Barva mění vnitřní příčky; obvodový plášť a strop používají původní materiály.
- Tlačítko ☷ skryje panel, ⌖ zarámuje dům nebo obnoví pohled. **Exteriér / Esc** vrací původní kameru, vrstvy okolí a otevřený panel. Simulace slunce se v interiéru pozastaví a při návratu obnoví původní stav přehrávání.
- **PNG** ukládá aktuální pohled včetně popisků a stručné poznámky. **GLB** obsahuje právě viditelné vrstvy: v řezu skutečně zkrácené stěny, při procházení plnou výšku. Z exteriéru se exportuje celý dům včetně interiéru a viditelných vrstev pozemku. Světla a ovládání webu nejsou součástí GLB.
Dispozice obsahuje 11 místností o součtu ploch z výkresu 153,74 m²: obývací pokoj s kuchyní, místnost bez určení, šatnu, zádveří, chodbu, technickou místnost, společnou koupelnu, dva pokoje, ložnici se šatnou a koupelnu u ložnice. Názvy jsou odvozené ze zakresleného vybavení. Místnost 7,05 m² je ponechaná prázdná a přístupná přes šatnu 6,15 m².
Poloha a tloušťky příček, dveřních otvorů a uspořádání vybavení vycházejí z půdorysu. Světlá výška 2,60 m vychází z řezu; výška vnitřních otvorů 2,10 m je vizualizační předpoklad. Kuchyň do U s poloostrovem, sedačka, jídelní stůl, postele, skříně, sanita a technické vybavení jsou zjednodušené. Rozměry výrobků, jejich přesné provedení a materiály nejsou závazně navržené. Podhled zůstává rovný, podle dokumentace Klabavy.
Přisvětlení slouží ke čtení interiéru. Pohled bez střechy ani přisvětlený interiér nejsou výpočtem denního osvětlení.
### Nové soubory
- `js/interior-model.js`: místnosti, podlahy, příčky, dveřní otvory, strop a kolizní hranice.
- `js/interior-furniture.js`: vybavení a jeho kolizní hranice.
- `js/interior-view.js`: přepínání režimů, procházení, mapa, popisky a PNG.
- `vendor/three/`: lokální Three.js, OrbitControls, GLTFExporter a licence MIT.
- `tests/interior-checks.mjs`: geometrická kontrola a průchodnost ze zádveří do všech místností s vybavením i bez něj. Spuštění: `node tests/interior-checks.mjs` (Node.js 22+).
Kontrola: všechny místnosti jsou dostupné z chodby/zádveří, součet popsaných ploch odpovídá výkresu, geometrie má konečné souřadnice. V prohlížeči ověřeny režimy půdorys, 3D a chůze, mobilní rozložení, návrat do exteriéru a export PNG/GLB.