Files
martinfencl.eu/locenice/README_CZ.md
T
2026-10-22 01:22:01 +02:00

149 lines
8.2 KiB
Markdown

# Ločenice / webový model pro PHP hosting
## Nahrání na web
1. Zálohujte dosavadní složku `locenice`.
2. Nahrajte **celý obsah přiložené složky `locenice/`** do stejné složky na hostingu.
3. Otevřete `/locenice/` nebo `/locenice/index.php` a obnovte stránku bez cache.
PHP jen vrací HTML. Pro samotný provoz nepotřebujete Node.js, npm, databázi ani sestavování aplikace.
Složky `blender`, `tools` a `tests` na hosting nenahrávejte; jsou určené pro úpravy na počítači.
Základ `index.php` zůstává stejný jako dosud:
```php
<?php
header('Content-Type: text/html; charset=utf-8');
readfile(__DIR__ . '/app.html');
```
Dodaný `index.php` navíc kontroluje existenci souboru a posílá hlavičku `nosniff`.
Relativní cesty počítají s tím, že `index.php` i `app.html` jsou ve stejné složce.
Nenahrávejte pouze PHP nebo pouze HTML. Stránka potřebuje i `js`, `css`, `data`, `models` a `assets`.
Na běžném Apache není nutné přidávat `.htaccess` ani přesměrování.
Server musí vydávat `.js` jako JavaScript, `.json` jako JSON a umožnit stažení `.glb`.
## Co je kde
| Soubor / složka | Účel |
| --- | --- |
| `locenice/index.php` | Vstup na dosavadním PHP hostingu. |
| `locenice/app.html` | Struktura stránky; už bez vloženého modelu. |
| `locenice/models/dum.glb` | Celý zdrojový model, včetně alternativ a textur. |
| `locenice/data/catalog.json` | Možnosti standardů, názvy, barvy a výchozí volby. |
| `locenice/data/scene.json` | Vazby materiálů, místnosti, kamery, kolizní obrysy a metadata. |
| `locenice/data/site.json` | 27 bodů výškopisu a zvlášť souřadnice z geometrického plánu. |
| `locenice/data/app-config.json` | Model, renderer, cesty a maximální hustota vykreslování. |
| `locenice/assets/` | Samostatné obrázky katalogu a referencí. |
| `locenice/js/app.js` | Ovládání, pohledy, stav a pravidla konfigurátoru. |
| `locenice/js/three-renderer.js` | Nový renderer nad Three.js. |
| `locenice/js/legacy-renderer.js` | Lokální záloha nad původním WebGL. |
| `locenice/js/solar.js` | Oddělený výpočet polohy slunce. |
| `locenice/js/model-io.js` | Načtení a zápis kontejneru GLB. |
| `locenice/css/` | Vzhled aplikace. |
## Three.js a záložní renderer
Výchozí `renderer: "auto"` nejprve zkusí Three.js **0.180.0 / r180**, přesně připnutou verzi z CDN jsDelivr.
Model, katalog ani fotografie se na CDN neposílají. Prohlížeč odtud stahuje knihovnu, takže jde o externí síťový požadavek.
Knihovna Three.js není fyzicky součástí tohoto ZIPu. Při nedostupnosti CDN nastoupí lokální renderer.
Nejde tedy o úplné odstranění původního vykreslování: je zachované jako oddělená záloha.
Obě cesty vyžadují WebGL 2; zablokovanou grafiku prohlížeče záloha neobejde.
V levém dolním rohu nebo v dialogu **Projekt a podklady** je uveden aktivní renderer.
Vynucené režimy pro diagnostiku: `index.php?renderer=three` a `index.php?renderer=legacy`.
### Volitelně vše z vlastního hostingu
Na počítači s Pythonem a připojením k internetu spusťte z kořene balíčku:
```sh
python tools/vendor_three.py
```
Skript stáhne připnuté soubory a jejich relativní závislosti z oficiálního repozitáře Three.js, včetně licence.
Potom nahrajte vytvořenou složku `locenice/vendor` a upravený `locenice/data/app-config.json`.
Stahovací skript se nespouští na webu a neslouží jako veřejný instalátor.
Jeho síťovou část zde kvůli blokovanému připojení nebylo možné ověřit.
## Model, projekt a dodané fotografie
Stavební geometrie i svažitý terén jsou převzaté z dodaného modelu ALLSTAV v2.
Neproběhlo nové zaměření ani kompletní přemodelování domu z PDF.
Kuchyň a obývací prostor dosavadního modelu zůstávají včetně zelených čel, desky, vinotéky, vybavení a trámů.
Čtyři nově dodané obrázky jsou dostupné v dialogu pro porovnání.
Obrázky nejsou zaměřené ani mezi sebou zcela shodné; jejich odlišné rámy a dispozice neřídí přesun oken.
Nejde o fotorealistickou rekonstrukci, BIM, výrobní návrh kuchyně nebo dokumentaci pro stavbu.
Výškopis je dostupný jako podklad a lze zapnout jeho body nad 3D modelem.
Výšková nula je 591,840 m Bpv. Grafické x/z polohy 27 bodů jsou převzaté z dosavadního modelu.
Souřadnice S-JTSK z geometrického plánu jsou uložené odděleně, nepředstírají souřadnice vytyčení domu.
Doklad uvádí parcelu 3480/37 o výměře 1 010 m²; dosavadní grafický obrys modelu má 987,89 m².
Tento rozdíl je uvedený, nikoli skrytě odstraněný deformací modelu.
Výšky upraveného terénu u domu a původní zaměření nejsou zaměnitelné.
## Standardy a sdílení
Zachované volby: dveře, parapety, okapy, krytina, žaluzie, podlahy po místnostech, obklady,
malba, vnitřní dveře, kuchyň, sprcha a další specifikace.
Žaluzie se týkají devíti obdélníkových otvorů, nikdy trojúhelníku nebo vstupních dveří.
Výchozí barvy jsou RAL 7016 / antracit / CERN 015 / tmavě šedivá.
Na webu je export samostatného HTML nahrazen **odkazem s výběrem**.
Odkaz otevře tento web s vloženým nastavením. Obsahuje i poznámku pro dodavatele; nevkládejte do ní citlivé údaje.
Nastavení je ve fragmentu URL za `#`; neukládá se do serverové databáze.
Zachovaný je export/import JSON, TXT a export viditelného modelu GLB; PNG zachycuje 3D canvas.
Soubor `models/dum.glb` je kompletní editovatelný zdroj. Export **viditelného výběru** ho nenahrazuje.
Dosavadní JSON výběry lze importovat. Lokální uložení je pouze v daném prohlížeči.
Změna výchozích hodnot v katalogu nepřepíše již uložený výběr; použijte tlačítko obnovy výchozích voleb.
## Úpravy v Blenderu
Soubor `.blend` v balíčku není. Přiložený skript jej vytvoří ve vašem Blenderu:
```sh
blender --background --python blender/prepare_model.py
```
Výsledek: `blender/dum_locenice.blend`. Skript vytvoří pojmenované kolekce a skryje neaktivní varianty.
Skript zde nebyl spuštěn, protože Blender není v prostředí nainstalovaný.
Alternativně importujte `locenice/models/dum.glb` do Blenderu ručně.
Neslučujte vše do jednoho objektu ani materiálu. Zachovejte vlastnosti `loceniceId`, `interiorLayer`, `stdWhen`, `stdBlind` a `windowNode`.
Při exportu do GLB zapněte vlastní vlastnosti / **Custom Properties (extras)**.
Exportujte všechny varianty, nikoli jen viditelné objekty; vypněte filtr **Visible / Renderable / Selected objects only**.
Pak spusťte:
```sh
python tools/prepare_export.py upraveny_model.glb --out pripraveno
```
Nástroj znovu naváže čísla objektů a materiálů na stabilní ID a doplní celý katalog textur.
Po záloze webu vyměňte **oba** soubory `models/dum.glb` a `data/scene.json` za připravené výsledky.
Nástroj byl ověřen na testu s přeházeným pořadím objektů a materiálů, ne na skutečném exportu z Blenderu.
Transformované objekty po novém exportu vyžadují Three.js; původní záložný renderer je pro takový model odmítne namísto chybného zobrazení.
Změna dispozice navíc vyžaduje kontrolu kolizních obrysů, poloh žaluzií, podlah a připravených kamer v `data/scene.json`.
Samotné přejmenování nebo výměna GLB tyto pravidla automaticky nepřeprojektuje.
## Soukromí a provoz
Balíček obsahuje referenční obrázky a výřezy podkladů v `assets`. Na veřejném webu jsou přímo dostupné.
Pro neveřejný projekt chraňte **celou složku**, nikoli pouze `index.php`.
Meta `noindex` není zabezpečení. Aplikace sama nemá přihlášení ani serverové ukládání.
## Ověření a omezení
Ověřena je syntaxe PHP a JavaScriptu, vracení stránky přes PHP, HTTP cesty a typy souborů,
struktura GLB, katalog a jeho vazby, změny výběrů a rozložení rozhraní na desktopu i mobilu.
Testy ovládání použily simulované grafické API. **Nejde o ověření skutečného 3D vykreslení.**
Zdejší prohlížeč blokuje WebGL i externí knihovny, proto nebyl renderer Three.js plně spuštěn.
Barevné podání a výkon je potřeba zkontrolovat po nasazení v běžném prohlížeči.
Opakovatelná kontrola dat na počítači s Node.js:
```sh
node tests/data_checks.mjs
```
Node.js je zde pouze pro dobrovolný test, nikoli pro hosting nebo běh webu.