Pokud zpracováváte fotogrammetrii z velkých datasetů, ortofoto z pole, mapování lesa nebo interiérový sken pro 3D model, dřív nebo později narazíte na stejnou stěnu jako my. Metashape při běžném (single-instance) zpracování během align photos nebo dense cloud kroku prostě vyčerpá dostupnou RAM a spadne nebo úplně zamrzne.

Metashape Network Launcher: vyberete složku projektu a aplikace spustí server i workera
U menších projektů (pár set fotek) to nevadí. Ale řádově od tisíce fotek výš, ať už z dronového letu nebo z dlouhého video skenu, je to už prakticky garantovaný problém. Řešení existuje přímo v Metashape Pro a jmenuje se network processing. Většina lidí ho zná jako nástroj pro renderfarmy s víc počítači, ale dá se použít i na jediném PC, a právě to nás zajímalo.
Proč to vůbec funguje
Network processing odděluje dvě role:
Server
Koordinuje úlohu a drží frontu joblistů.
Worker (node)
Fyzicky počítá jednotlivé processing kroky.
Když server a worker běží odděleně (i na stejném stroji), Metashape zpracovává úlohu po menších interních blocích a mezitím uvolňuje paměť, místo aby držel celý projekt v RAM najednou jako při klasickém single-instance zpracování. Pro nás to v praxi znamenalo, že jsme zvládli zpracovat dataset, který předtím spolehlivě shazoval celou aplikaci.
Důležité je, že stejný princip funguje i přes víc počítačů v síti. Pokud máte k dispozici druhý stroj, může běžet jako další worker připojený na stejný server, a zpracování se mezi ně rozloží. My to zatím provozujeme na jednom PC, ale nastavení je prakticky identické:
- na serveru necháte naslouchat na všech rozhraních (0.0.0.0:5840 místo 127.0.0.1:5840)
- na workerech (i na dalších strojích v síti) zadáte IP adresu serveru, např. 192.168.1.10:5840
- port 5840 je výchozí port Metashape network processingu, pokud se worker nepřipojí, zkontrolujte firewall na serveru
Jak se to spouští
Network mód se spouští přes dva oddělené procesy, server a worker (node), každý vlastním příkazem. V praxi to vypadá takto:
server.bat
@echo off "C:\Program Files\Agisoft\Metashape Pro\metashape-server.exe" --server --host 127.0.0.1:5840 --resume-workers PAUSE
node.bat
@echo off "C:\Program Files\Agisoft\Metashape Pro\metashape.exe" --worker --host 127.0.0.1:5840 --root "C:\Users\honza\Desktop\DJI_001" PAUSE
Postup:
- Spustíte server.bat, naběhne lokální server na portu 5840
- Spustíte node.bat, worker se připojí na server a čeká na úlohy
- Otevřete běžné Metashape Pro GUI, připojíte se na 127.0.0.1:5840 jako network klient
- Dál pracujete úplně normálně, align photos, dense cloud, mesh, jen se zpracování odehrává přes worker proces, ne v okně, které máte otevřené
Pro víc počítačů v síti je princip stejný, jen --host ukazuje na IP adresu serveru viditelnou v síti (např. 192.168.1.50:5840) a --root musí být cesta dostupná všem strojům (sdílená síťová složka).
Praktický problém, který nás přiměl tohle zautomatizovat
Cesta v --root parametru je v .bat souboru natvrdo zadaná. Při každém novém projektu jsme museli ručně otevírat .bat, přepisovat cestu, ukládat, spouštět. Funkční, ale otravné a náchylné na překlepy.
Proto jsme napsali jednoduchý Windows launcher (WPF, .NET 9), Metashape Network Launcher. Místo přepisování .bat souborů vyberete složku projektu v GUI a aplikace spustí server i workera se správnými parametry. Job submission zůstává ruční, stejně jako dřív, po spuštění serveru a workera se přepnete do Metashape Pro GUI a pracujete normálně.
Co umí navíc oproti holým .bat souborům:
- folder picker pro kořenovou složku projektu i pro instalační cestu Metashape Pro
- editovatelné pole host:port (výchozí 127.0.0.1:5840), pro síť stačí přepnout server na 0.0.0.0:5840 a workerům zadat IP serveru
- historie posledních 10 použitých složek
- log okno se stdoutem/stderr obou procesů v reálném čase
- volitelný auto-restart workera při pádu (užitečné při běhu přes noc, server s --resume-workers po pádu workera úlohu sám naváže)
- zapamatování nastavení mezi spuštěními (config.json)
Žádná automatizace samotného zpracování, to je a zůstává v rukou člověka v Metashape GUI. Nástroj jen odstraňuje opakované ruční úpravy konfiguračních souborů.
Shrnutí
Network processing = řešení pro velké datasety, ne jen pro renderfarmy.
Funguje i na jediném PC, díky odděleným server/worker procesům se RAM neakumuluje stejně jako u single-instance zpracování.
Stejný princip se škáluje i na víc počítačů v síti, stačí upravit --host a sdílet --root adresář.
Drobný launcher ušetří opakované ruční úpravy .bat souborů.