# Mapové okolie a ilustračná panoráma Bešeňovej

## Predvolené fotografické pozadie

### Priestorová medzivrstva

Medzi projektom a cubemapou sa vykresľuje **3D krajina do 3,2 km**, ktorá používa existujúci 50 m DEM v `surroundings.json`. Do 2,5 km zachováva mapový reliéf (s úpravou pri projekte a rieke); posledný pás 2,5–3,2 km sa spúšťa za bližšie kopce a farebne spája s cubemapou, aby nevznikol presvitajúci okraj v oblohe. Sieť má jemnejšie delenie pri projekte a presne spojené vrcholy na hranici pôvodného terénu ±400 m. Bezprostredné okolie už nezaniká v bielom páse: terén, porasty, voda aj budovy používajú spoločné materiály a atmosféru. Na vonkajšom okraji shader vzorkuje cubemapu rovnakým smerom ako kamera a plynulo k nej približuje výslednú farbu 3D povrchu.

- Ďalších 172 budov a 108 cestných línií pochádza z existujúceho OSM výrezu, ktorý pokrýva časť obce, nie celý 3,2 km okruh. Pôdorysy sú mapované; strechy, okná a chýbajúce výšky sú ilustračné. Okná nie sú rekonštrukciou skutočných fasád.
- Polia a lesy používajú kompaktnú klasifikačnú masku z ortofotomapy SR, doplnenú registrovaným povrchovým detailom vo väčšej vzdialenosti. Ide o približnú klasifikáciu podľa farieb snímky. Reálne osvetlenie, siluetu a paralaxu vytvára geometria.
- Porasty: približne 34 800 inštancií na desktope, menej na mobile. Každá má tri prekrížené textúrované plochy (6 trojuholníkov), nie plný botanický mesh. Umiestnenie je deterministická ilustrácia v odhadnutých lesných plochách; nejde o zamerané jednotlivé stromy. Rovnaká textúra nahrádza jednoduché koruny blízkych stromov.
- Textúru jelše/duba vytvoril vstavaný **image_gen**. Originál: `source/panorama/tree-alder-v1.png`, prompt: `source/panorama/tree-prompt.txt`, runtime: `midground.tree.webp` (768 px, alpha).
- Váh pokračuje podľa úplnej uloženej OSM relácie. Hladina zostáva na projektovom približnom datume, nie na hydrologicky meranom pozdĺžnom profile. Kontaktné stmavenie pri domoch je odvodené z pôdorysov, nie fyzikálne vypočítaný tieň každej stavby.
- Medzivrstva má približne **240 tisíc trojuholníkov** na desktope, celá scéna približne 2,25 milióna a 212 draw calls. Prenos medzivrstvy: **383 151 B** s Brotli JSON / **448 716 B** bez Brotli. Spolu s panorámou približne **754 kB desktop / 526 kB mobil**, navyše k už existujúcemu projektu a `surroundings.json`.
- `npm run build:midground` reprodukuje všetky runtime podklady bez siete zo zdrojov v tomto repozitári. Viewer nevolá mapové ani generačné API. Pri zlyhaní medzivrstvy zostane jednoduchý pôvodný terén; pri prepnutí modelu sa uvoľnia geometrie a zdieľané textúry.

Cubemapa zostáva výtvarne vymyslená: plynulé farebné napojenie neznamená geograficky presný vzdialený horizont. Textúrované stromy sú kompromis pre prenos a výkon, najmä pri pohľade zblízka alebo priamo zhora.

Na žiadosť používateľa je vzdialená krajina ilustračná, vygenerovaná vstavaným nástrojom **image_gen**. Nejde o fotografiu Bešeňovej ani o presnú geografickú panorámu. Reálne mapové dáta bezprostredného okolia a samotný projekt zostávajú v 3D.

Štyri originálne PNG pohľady a prompty sú v `source/panorama/`. Prvý celok `liptov-artistic-v1.png` slúžil ako výtvarná referencia; finálny horizont používa detailnejšie `front/right/back/left-v1.png`. `npm run build:panorama` ich offline premietne do šiestich štandardných strán cubemapy (+X, −X, +Y, −Y, +Z, −Z), vyhladí prechody smerov a zakóduje do WebP v `panorama/`. Obloha a spodná hmla dopĺňajú fotografický horizont. Táto projekcia nezaručuje fyzicky súvislú fotografiu; vzdialené pozadie sa pri pohybe kamery neposúva.

- Desktop: 1536 × 1536 px na stranu, spolu **369 472 B**, približne **72 MiB GPU pamäte** vrátane mipmap.
- Mobil (šírka viewera pod 700 px): 768 × 768 px na stranu, spolu **140 982 B**, približne **18 MiB GPU pamäte** vrátane mipmap.
- Viewer načíta iba zvolenú sadu a malý manifest spolu s medzivrstvou; zdrojové PNG ani 20 km regionálny atlas sa nestiahnu. Voľba rozlíšenia prebehne pri načítaní projektu. Súbory používajú ETag cache.
- Načítanie pozadia neblokuje projekt. Pri zlyhaní zostáva pôvodný jednoduchý mapový terén. Pri prepnutí modelu sa uvoľnia cubemapa aj prechodová geometria, aj keď sa požiadavka dokončí neskoro.
- Tlačidlo **Krajina** alebo `?model=property&view=landscape` ukáže nízky pohľad. **Zhora** obnoví prehľad. Pôvodný reálny regionálny terén je voliteľný cez `&landscape=map`; nasledujúce odseky o ortofotomapách opisujú tento variant.

Viewer načítava lokálny `surroundings.json` (približne 172 kB). Pri prehliadaní neposiela požiadavky na mapové servery. Obnovenie odvodených dát zo zdrojových snímok:

```sh
npm run build:context
```

## Rozsah a presnosť

- Detail projektu zostáva v pôvodnom GLB a v pôvodnej mierke.
- 73 okolitých budov: pôdorysy OpenStreetMap, výber podľa vzdialenosti stredu budovy do 200 m od najbližšej projektovej parcely. Výšky vychádzajú z `height` / `building:levels`, inak ide o odhad 7 m (drobné stavby 3,2 m). Tvary striech a jemný okenný vzor v hybridnom režime sú ilustračné.
- Cesty používajú mapované osi a šírku z tagu `width`, prípadne odhad podľa triedy. Pokračujú do prechodového pásma 235 m. Presná projektová komunikácia a parcely majú prednosť pred mapou.
- Váh používa úplný vodný multipolygón OSM, nie odhad šírky z osi rieky. Nahrádza pôvodný ilustračný vodný pás. Hladina nadväzuje na projektových −1,94 m; nejde o meranie aktuálnej hladiny.
- 151 jednoduchých stromov je deterministicky rozmiestnených v mapovaných lesných a krovinatých plochách do 200 m. Nejde o zamerané jednotlivé stromy. Osem pôvodných projektových stromov zostáva v GLB.
- Terén pri projekte má sieť s krokom 10 m; zdrojový DEM je hrubší. Pri parcelách je terén vyrovnaný a medzi 18–210 m plynulo prechádza na DEM. Breh má lokálne modelované napojenie na hladinu. Pôvodný 3,2 km terén zostáva rýchlym úvodným podkladom a zálohou pri chybe načítania.
- Reálne horské pozadie do približne 20 km (štvorcový výrez 40 × 40 km) sa načítava dodatočne. Používa 100 m výškový raster, sieť s krokom 100 m pri bližších kopcoch a 200 m v diaľke, 107 520 trojuholníkov a jediný draw call. Reliéf nemá umelé prevýšenie.
- Povrch hôr pochádza z oficiálnej ortofotomapy SR: blízky výrez a regionálny výrez tvoria jeden WebP atlas 3072 × 1536 px. Prechod snímok prebieha medzi 1,8–3 km. Skutočné lesy, polia a skaly nahrádzajú pôvodný zelený farebný prechod. Snímka už obsahuje osvetlenie, preto ju materiál znovu nenasvecuje silnými projektovými svetlami. Atmosférická perspektíva potláča vzdialené detaily.
- Prenos horského doplnku: textúra 547 596 B, výšky 257 052 B s Brotli / 321 602 B bez kompresie, metadáta približne 1,4 kB. Spolu približne 806 kB / 871 kB. Lokálny server používa ETag a obnovu cache; na inom hostingu je vhodné doručovať `.bin.br` s `Content-Encoding: br`. Aj bez kompresie zostáva doplnok pod 1 MB. Pri prepnutí modelu sa uvoľnia geometria a textúra, vrátane neskorého dokončenia načítania.

## Georeferencia

Pôvodný model parciel bol prekreslený z obrázka s rozmermi, neobsahoval geodetické súradnice. Zarovnanie v `source/registration.json` používa 13 zodpovedajúcich vrcholov parciel 286/63, 286/204, 286/203, 286/62 a 286/88 odčítaných z oficiálneho WMS rastra. Referenčný raster, jeho presný URL, pixelové kontrolné body aj transformačné parametre sú uložené vedľa seba.

Transformácia zachováva metre: otočenie približne 0,388° a posun v lokálnych východných/severných súradniciach vzhľadom na WGS84 bod 19,423093° E, 49,097018° N. RMS rezíduum kontrolných bodov je 0,87 m, maximum 1,99 m. Toto vyjadruje zhodu s ručne odčítaným rastrom, nie garantovanú geodetickú presnosť. Three.js používa X východne a Z južne po inverznom otočení; zdrojový Blender používa Z ako výšku.

## Zdroje a licencie

- © [OpenStreetMap contributors](https://www.openstreetmap.org/copyright), [ODbL 1.0](https://opendatacommons.org/licenses/odbl/1-0/). Zdroj `source/osm.json` je geometrický výrez zo snímky 23. 9. 2026, prevzatý z existujúceho mapového projektu. Úplná [relácia Váhu 7130720](https://www.openstreetmap.org/relation/7130720) bola načítaná 24. 9. 2026 a je v `source/water.json`. Odvodené mapové dáta v `surroundings.json` sú dostupné pod ODbL; zmeny zahŕňajú projekciu, orezanie a zjednodušenie pre 3D zobrazenie.
- © ÚGKK SR, [katastrálna WMS služba](https://www.gku.sk/gku/produkty-sluzby/kataster-nehnutelnosti/wms.html), [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/). Raster načítaný 24. 9. 2026; kontrolné body boli ručne odčítané a použité na odvodenú transformáciu.
- [Terrain Tiles / Mapzen–Tilezen](https://registry.opendata.aws/terrain-tiles/), verejné Terrarium dlaždice zoom 12, X 2268–2269, Y 1404–1405, načítané 24. 9. 2026. Originálne PNG sú uložené v `source/`. Výšky sa dekódujú ako R × 256 + G + B / 256 − 32768 a bilineárne vzorkujú do 50 m rastra. Lokálny DEM datum je 504,64 m. [Úplné atribúcie poskytovateľov](https://github.com/tilezen/joerd/blob/master/docs/attribution.md).

Europe terrain data produced using Copernicus data and information funded by the European Union — EU-DEM layers. Global GMTED2010 and SRTM terrain data courtesy of the U.S. Geological Survey.

### Podklady realistického horského pozadia

Ortofotomozaika © GKÚ Bratislava / ÚGKK SR, [oficiálna WMS služba](https://www.gku.sk/gku/produkty-sluzby/zbgis/wms.html), CC BY 4.0. Oba výrezy boli načítané 24. 9. 2026. Ide o dátum načítania, nie dátum leteckého snímkovania. Presné URL, geografické rozsahy, rozmery atlasu a dátumy sú v `mountains.json`; pôvodné snímky sú v `source/regional/ortho*.jpg`. Úpravy: zmenšenie, spojenie do atlasu, kompresia WebP a premietnutie na terén. Regionálne výšky používajú Terrain Tiles zoom 10 (X 566–568, Y 350–352) s rovnakými atribúciami Copernicus / EU-DEM / USGS uvedenými vyššie. `scripts/build-property-mountains.mjs` reprodukuje výsledné dáta bez siete.
