Zagreb, ali kao gotova Unity lokacija
Ne krećete od prazne scene. Otvorite Unity i pred vama je Zagreb — teren, zgrade, vegetacija, ortofoto podloga i podaci vezani uz stvarne lokacije.




Kompleksni tehnički formati
Grad Zagreb ima tehničke 3D modele
Geodetski formati, ogromne teksture, visinski modeli i stotine tisuća zgrada.
GIS formati nisu prirodni Unityju
Koordinatni sustav nema veze s klasičnom Unity scenom.
Grad ne možeš samo "ubaciti u scenu"
Direktni import nije opcija — treba pipeline.
Performanse pucaju
Bez streaminga i LOD managementa scena se ruši.


Most između otvorenih podataka i Unitya
Vanjski podaci
Teren, ortofoto, zgrade, maske vegetacije
Priprema / Pack
Python + GDAL obrada i pakiranje
StreamingAssets
Manifest + složena struktura paketa
Unity Runtime / Editor
Stream oko igrača ili fiksna regija
Runtime Streaming
Dinamički stream velikih površina oko igrača — cijeli grad bez učitavanja odjednom.
Editor Populate
Fiksna regija učitana u scenu — uređujete je dalje kao obične Unity objekte.

Što developer stvarno dobiva
1:1 teren
Ortofoto ili street podloga u stvarnom mjerilu.
Zgrade s LOD-om i colliderima
Renderiraju se, selektiraju i nose podatke.
Vegetacija iz maski
GPU instancing umjesto tisuća ručnih objekata.
Klik / hover na zgradu
Metadata popup sa stvarnim atributima.
Debug HUD i loading flow
Build zna čekati inicijalne tileove.



Stvarna georeferenca, u Unity prostoru
EPSG:3765 projekcija
Hrvatski koordinatni sustav kao izvorna geodetska logika.
Unity X/Z = stvarne koordinate − origin
Grad nije složen "od oka".
Svaka pločica zna gdje je u Zagrebu
Zgrada nije samo mesh — zna gdje je i što je.
Kasnije moguće
GPS, POI, OSM podaci, AR overlay.

Kompletan pripremni pipeline

Python / GDAL priprema
Heightmape, ortofoto, maske, zgrade — van Unityja.
Packager
Slaže manifest i strukturu StreamingAssets foldera.
Runtime_Streaming
Controller učitava samo ono što treba oko kamere.
Build & Play
Build koristi isti pripremljeni paket.
Streaming: grad se ne učitava odjednom
Blizu kamere: 1×1 km tileovi
Puni detalj tamo gdje igrač gleda.
Srednja udaljenost: 2×2 HLOD
Supertileovi smanjuju broj draw poziva.
Daljina: 4×4 HLOD
Horizont ostaje pun, a jeftin.
Load / unload hysteresis
Sprječava flickering na rubu zone.
Memorija pod kontrolom
Osjećaj velikog grada — bez cijelog Zagreba u RAM-u.



| Prsten | Load dist. | Unload dist. | Rezolucija |
|---|---|---|---|
| 1×1 | 1500 m | 2000 m | Puna |
| 2×2 | 5000 m | 6000 m | Srednja |
| 4×4 | 15000 m | 16000 m | Niska |
RealtimeStreamingController: mozak scene
Čita manifest
Jedan indeks cijelog dataseta.
Prati kameru ili playera
Odlučuje što se priprema, finalizira ili izbacuje.
Upravlja svim slojevima
Teren, zgrade, vegetacija i basemape — jedan kontroler.
Progress API
Loading screen zna koliko je još ostalo.
Tuning bez promjene pipelinea
Pretvara pripremljeni dataset u živi runtime prostor.


Najskuplji sloj — zato je kontroliran
Render distance i LOD pragovi
Broj detalja uvijek pod kontrolom.
Pre-baked building bundleovi
Zgrade dolaze spremne, bez runtime obrade.
Lazy collider load
Physics se pali samo blizu igrača.
Facade stilovi + metadata
Vizualni stil i podaci ostaju vezani uz zgradu.
Grad dobiva život


Vegetacija iz RGBA maski
Ne stablo po stablo ručno.
GPU instancing
Umjesto tisuća GameObjecta.
Draw distance
Prilagodba za slabije strojeve.
Podloge kao slojevi
Ortofoto / OSM / stilizirane.
Zgrada nije samo kulisa
Raycast iz kamere
Hover highlight označava zgradu pod kursorom.
Klik otvara BuildingInfoPopup
Zgrada postaje izvor informacija.
Adresa, katovi, godina, površina, OSM tagovi
Stvarni atributi na stvarnoj geometriji.
Metadata se učitava lazy
Bez troška dok ne zatreba.
Otvara put prema igrama, simulacijama, urbanističkim alatima, turističkim vodičima i edukaciji.


Stream ili Populate?


Integracija u vlastitu igru
Dodaj RealtimeStreamingController u scenu
Postavi cameraTransform na player kameru
Osiguraj StreamingAssets/ZGConnect u buildu
Zamijeni demo FlyCameru svojim controllerom
Character, vozilo, letjelica — što god gameplay treba.
Po potrebi: progress API za loading screen
var streamer = FindAnyObjectByType<RealtimeStreamingController>();
streamer.cameraTransform = playerCamera.transform;
// StreamingAssets/ZGConnect → ide u build
while (!streamer.IsIntroInitialLoadComplete())
yield return null;

Što se ovime može graditi

Gaming
Open-world prototipi i gamejam mape na stvarnom Zagrebu.

Simulacije
Promet, dronovi, intervencije — u stvarnom prostoru grada.

Urbanizam
Urban planning i prikaz projekata u stvarnom kontekstu.

Edukacija & AR/VR
Edukacija, turizam i AR/VR iskustva grada.