Meshroom - jednoduchý 3D scan objektu pomocí fotogrammetrie
Potřebujete převést reálné těleso do 3D digitálního modelu a nevíte si s tím rady? Možností je vícero. Můžete si nainstalovat některý z 3D designerských programů a začít modelovat. Línější (a chytřejší) napadne použít 3d skener, avšak brzy zjistí, že cena takovýchto skenů není zrovna levnou záležitostí a především, že jejich těleso může být pro takovýto sken příliš rozměrné / těžko přepravitelné. Naštěstí existuje snadná a levná cesta tvorby 3D digitálních modelů skutečných těles - fotogrammetrie.
Co je fotogrammetrie?
Fotogrammetrie je vědní obor zabývající se rekonstrukcí tvarů, měřením rozměrů a určováním polohy předmětů z fotografických snímků. V rámci 3D scanu těles se využívá vícesnímkové fotogrammetrie. Její podstatou je modelace digitálního tělesa na základě série fotografií zachycujících dané reálné těleso.
Fotogrammetrii lze provádět s použitím celé řady softwarů, a to placených i bezplatných. Zvolený software je přitom rozhodujícím pro časovou náročnost a kvalitu výsledného 3d modelu získaného fotogrammetrii. Dříve se pro běžné použití nejčastěji využívaly bezplatné programy jako Colmap, 3DF Zephyr (limit na 50 zdrojových fotek v bezplatné verzi) nebo Visual SFM. Dnes je naším favoritem software MeshRoom.
Proč dělat fotogrammetrii v MeshRoom?
Meshroom je bezplatný open-source software (zdrojový kód si můžete projít zde) s velmi snadnou ovladatelností a intuitivním prostředím. Zpracování fotografií probíhá s využitím fotogrammetrického frameworku pro počítačové vidění AliceVision. Tento framework je produktem spolupráce několika univerzit, laboratoří a postprodukční francouzské společnosti Mikros Images. Mezi partnery pomáhající s AliceVision patří i České vysoké učení technické v Praze.
Generování modelů fotogrammetrií v Meshroom je velice snadné, doslova spočívá pouze v označení zdrojových fotografií, jejich přetažení do okna softwaru, kliknutí na volbu start / compute a několikahodinovém čekání na přepočet a převod předmětu zachyceného na fotografiích do kvalitního 3D digitálního modelu. Mimo tento jednoduchý mód generování, Meshroom umožňuje i volby rozšířeného a živého generování - oba módy umožňují do již částečně vygenerovaného modelu přidávat další zdroje dat za účelem dosažení vyšší kvality výsledního modelu.
Software Meshroom je dostupný pro operační systém Windows i OSX/Linux a pro svůj běh vyžaduje podporu knihovny CUDA (dostupná v rámci grafických karet nVidia, uživatelé AMD mají smůlu, případně si musí modifikovat kód související s potřebami CUDA). Instrukce k instalaci, stejně jako istalační soubory, jsou k dispozici na stránce programu.
Softwarovou část máme. Nyní se zaměřme na metodiku získávání zdrojových fotografií pro výslednou modelaci 3D scanu objektu.
Jaký fotoaparát pro fotogrammetrii použít a s jakým nastavením?
Pořízení fotografií pro fotogrammetrii lze provést s využitím jakéhokoliv fotoaparátu, včetně videokamery s následovným vytažením jednotlivých framů z video záznamu. Od kvality fotografií je posléze odvislá ostrost digitálního modelu tělesa z fotografií.
Fotoaparát mobilního telefonu bývá pro většinu aplikací dostatečný. Používání kamery s následným využitím jednotlivých framů nedoporučujeme, výsledná ostrost je oproti způsobu s použitím fotografií značně snížená. Optimální je použít zrcadlovku a to s clonou na hodnotě alespoň 5-6. Ideálně navíc s nastaveným fotografováním do formátu RAW.
Jaké předměty, kdy a jakým způsobem fotit?
Fotogrammetrií lze tvořit digitální dvojče jakéhokoli fyzického 3D tělesa. Problém bývá s lesklými a průhlednými povrchy. Takový povrch je potřeba před fotografováním ošetřit - buď aplikací barvy nebo alespoň lepící pásky zabraňující odleskům. Pro začátek doporučujeme začít s něčím jednodušším - například sochou - ty disponují hrubým a texturovaným povrchem který je pro fotogrammetrii ideální.
Fotografování těles venku je vhodné provádět za stálého počasí a světla, bez ostrých stínů. Ideálně když je pod mrakem.
Při běžném fotografování mimo laboratoř nikdy nehýbejte "skenovaným" tělesem, namísto toho se s fotoaparátem pohybujte kolem daného tělesa vy. Počet fotografií volte alespoň ve středních desítkách - minimální počet si odvoďte z následujících pravidel:
- Je nutné nafotit všechny části, které mají být digitalizované
- Každá další fotografie musí obsahovat alespoň 60-80% překryv fotografie předcházející
- Skenovaný objekt musí zabírat podstatnou část každého snímku
- Software pro fotogrammetrii nemusí akceptovat všechny nahrané fotografie (např. pokud nenajde dostatek společných bodů s body na dalších snímcích). Berte to na vědomí.
- Meshroomu nevadí snímky s různým zoomem ani snímky s pořízené s odlišným nastavením, včetně snímků z různých kamer. Nicméně aplikování tohoto není přínosem.
Máme fotografie pro použití ve formě zdrojových dat i nainstalovaný Meshroom software. Konečně se můžeme pustit do modelování...
Standardní, rozšířená nebo živá rekonstrukce - kdy kterou volit?
- Standardní rekonstrukce - Možnost standardní rekonstrukce je vhodná v případech, kdy máte sadu fotografií bez možnosti pořízení a přidání dalších (např. se skenovaným tělesem jste od doby fotografování pohnuli, fotografování bylo provedeno na vzdáleném místě (dovolená, výlet) atd.)
- Augmented reconstruction (Rozšířená rekonstrukce) - Máte kompletně nafoceno a stále možnost v případě potřeby další fotografie nafotit a přidat (skenované těleso stále stojí na původním místě, s obdobným okolním prostředím). Možnosti přidávat další snímky se využije v případě, kdy určitá část vygenerovaného modelu nebude dosahovat dostatečné kvality - ať už vlivem opomenutých fotografií daného místa, případně vyřazením fotografií z důvodu nízkého počtu detekovaných shod s dalšími (okolními) snímky. Přidané fotografie se synchronizují se všemi již nahranými fotografiemi, nejde tedy jen o doplnění chybějících částí, namísto toho i o doplnění dalších zdrojů umožňující propojení doposud vzájemně nepropojených fotografií.
- Live reconstruction (Živá rekonstrukce) - Živá rekonstrukce je řízena fotografiemi vloženými do zdrojové složky určené pro modelaci 3D digitálního tělesa - těleso je modelováno průběžně s tím, jak do dané složky jednotlivé sady fotografií průběžně vkládáte. Využít tuto možnost je optimální, pokud nevíte, kolik fotografií tělesa bude celkově potřeba (začnete s 10 a postupně přidáváte), případně, pokud máte dostatek času a chcete si užít trochu fotogrammetrické zábavy.
Jak jednotlivé volby rekonstrukce nastavit a na co si dát pozor?
- Standardní rekonstrukce
- Zajistěte, aby všechny fotografie určené pro fotogrammetrii tělesa byly v 1 složce na disku počítače
- Označte všechny fotografie a přesuňte do okna Meshroom
- Uložte rozpracovaný projekt (File → Save) do cílové složky, ve které mají být data finálního 3d modelu vložena.
- Ve spodní liště najeďte na box "StructureFromMotion", a po kliku na něj pravým tlačítkem myši vyberte možnost "compute". Výpočet zabere pár hodin. Přerušit jej můžete kdykoli stisknutím tlačítka stop. Po dokončení výpočtu uvidíte finální model i informaci o tom, které fotografie byly spárovány (použity pro model) a které ne. Samotné soubory 3D modelu jsou ve složkách počítače Texturing a MeshFiltering.
- Pokud se stane, že výsledný 3d model vznikl s použitím pouze mála fotografií (většina byla vyloučena), je nutné další fotografie přidat, popřípadě zkusit upravit nastavení rekonstrukce.
- Augmented reconstruction (Rozšířená rekonstrukce)
Při rozšířené rekonstrukci doporučujeme využívat částečných (časově optimálnějších) výpočtů a kompletní výpočet (z kliku na nejnižší texturing level) provést až pro finální výpočet.
-
Live reconstruction (Živá rekonstrukce)
Volba živé rekonstrukce vyžaduje prvotní nastavení, to se provede následujícím způsobem:
- V záložce View zvolte možnost "Live reconstruction"
- Zvolte zdrojovou složku (kam plánujete nahrávat fotografie) a minimální počet pro zpracování v každém kroku (např. 5)
- V Panelu Live reconstruction klikněte na tlačítko "Start".
- Nakopírujte do zdrojové složky první sadu fotografií (ideálně 10-20 fotografií zaměřených na obecný tvar tělesa)
- Zmodifikujte propojenost uzlů - je nutné zaměnit propojenost uzlu "PrepareDenseScene" s uzlem "StructureFromMotion", který se v dané liště nachází 2x (uprostřed a na konci). V live rekonstrukci je nutné propojení uzlu "PrepareDenseScene" právě s posledním uzlem "StructureFromMotion" namísto prostředním. To se provede odstraněním vazby existující a následným vytvořením vazby nové.
- Vypočet generování modelu spusťte volbou "compute" z uzlu "Texturing".