====== 4. Cvičení - 1. model do galerie - Laser Scan ====== Sraz v **16:15** v místnosti **327**. V doprovodu vyučujícího přesun do místnosti **419 (VRLab)**. ===== Popis zařízení ===== * název: Konica-Minolta Vivid 9i * url: http://sensing.konicaminolta.asia/products/vivid-9i-3d-laser-scanner/ , http://www.qubic.com.au/minolta_9i.htm * skenovací vzdálenost * standard mode: od 0.6 do 1.0m (v tomto režimu dosahuje scanner nižší hladiny šumu) * extended mode: od 0.5 do 2.5m * typ scanneru: rotující zrcátko řízené galvanometrem * přesnost: +- 0.05 mm (TELE objektiv, STANDARD mode, vzdálenost 0.6m) * čas 1 skenu: 2.5sec, ukládání do PC, 1.5sec * rozlišení: 640 x 480 (3D data i barevná informace) | objektiv | FOV [mm] (extended mode, 0.5m)| FOV [mm] (extended mode, okolo 2m) | | Tele f=25 mm| 93 x 69 x 26 | 463 x 347 x 680 | | Middle f=14 mm| 165 x 124 x 42 | 823 x 618 x 1100| | Wide f=8 mm| 299 x 224 x 66 | 1495 x 1121 x 1750 | {{courses:A7B39MVR:tutorials:04b:img_20131010_104736.jpg?300|Vivid 9i ve VRLabu}} {{courses:A7B39MVR:tutorials:04b:img_20131010_110232.jpg?320|Vivid 9i "v akci"}} ===== Kalibrace ===== ==== Kalibrace objektivu ==== Aktuálně je scanner zkalibrován s TELE objektivem. Otočný stoleček je přibližně 750mm od čočky objektivu. Pozorovací objem scanneru je tedy přibližně 150 x 100 x 30 mm. Kalibrace objektivu scanneru se provádí pouze po výměně objektivu, po delší době nepoužívání a nebo po náročnějším transportu. ==== Kalibrace osvětlení místnosti ==== Aktuální nastavení bílé na scanneru je při zapnuté lampičce na stole u scanneru, stropní zářivky vypnuté a zatažené rolety. ===== Snímání ===== {{courses:A7B39MVR:tutorials:04b:scan_01.png?200|01 - polygon editing tool - start scan}} {{courses:A7B39MVR:tutorials:04b:scan_02.png?200|02}} {{courses:A7B39MVR:tutorials:04b:scan_03.png?200|}} {{courses:A7B39MVR:tutorials:04b:scan_04.png?200|}} {{courses:A7B39MVR:tutorials:04b:scan_05.png?200|}} - Spusťe aplikaci **PET** (Polygon Editing Tool) která umí komunikovat se scannerem - V levém horním rohu stiskněte ikonu pro scanování ({{courses:A7B39MVR:tutorials:04b:scan_01.png?linkonly|obr. 1}} ) - Pokud se objeví chybová hláška, že scanner nebyl nalezen, zkontrolujte připojení USB kabelu ke scanneru a zapnuté napájení. Pak restartujte aplikaci PET. - Zobrazí se rozhraní pro ovládání scanneru, v levém obr. se zobrazuje aktuální náhled na scénu ({{courses:A7B39MVR:tutorials:04b:scan_02.png?linkonly|obr. 2}} ) - Stiskneme tlačítko **Scan**, scanner ožije a začne vydávat zvuky - nejprve nalezne optimální vzdálenost objektu - pokud snímání selže v tomto kroku, zobrazí se chybová hláška. Tato chyba je způsobena umístěním scanovaného objektu v nevhodné vzdálenosti od scanneru. Řešíme buď přepnutím scanneru do **EXTENDED / STANDARD** módu (tlačítko Option) nebo posunutím objektu blíže/dále od scanneru, případně výměnou objektivu. - pak si nastaví výkon paprsku dle aktuálního osvětlení - a měl by pokračovat scanováním v 1 až 4 stejných scannech (dle nastavení v Option). Všechny scany se složí do jednoho, opakování má pouze vliv na výslednou kvalitu. - Při úspěšném scanování se v levém náhledu zobrazí hloubková mapa ({{courses:A7B39MVR:tutorials:04b:scan_03.png?linkonly|obr. 3}} ), pokud jsme spokojeni s výsledkem, uložíme ji stiskem tlačítka **Store**. Objekt se zobrazí včetně barev v pravém náhledu. - Skenovaný objekt otočíme (přibližně o 45°), včetně šachovnicové podložky a znovu stiskneme tlačítko **Scan**. - Nyní vidíme vlevo aktuální pohled na scénu a v pravo poslední uložený pohled ({{courses:A7B39MVR:tutorials:04b:scan_04.png?linkonly|obr. 4}} ). - Pomocí přepínače pod náhledem vlevo si přepneme aktuální zobrazení z hloubkové mapy na reálné barvy (**Color**) a zadáme korespondující body mezi aktuálním pohledem a předchozím uloženým ({{courses:A7B39MVR:tutorials:04b:scan_05.png?linkonly|obr. 5}} ). - Korespondující body zadáváme na střídačku v levém a pravém náhledu. Po zadání 3 párů bodů se provede zarovnání modelů. Zarovnání postřehneme v 3D pohledu na scénu (s pravým horním 3D pohledem můžeme libovolně manipulovat, ačkoli to tak na první pohled nevypadá). - Nové body se přidávají levým tlačítkem myši, pravým se odebírají. Pokud při stisku levého tlačítka podržíme klávesu Shift, 3D objekty se registrují ihned a ne až po třetím páru. Toto dobře funguje pro ne-planární objekty. - Nápovědy k nástrojům jsou často zobrazeny pod aktuáním pohledem (červená linka pod náhledem vlevo) - Opakujeme od bodu 5, dokud nemáme objekt celý nascanovaný. ==== "Quality Issues" ==== === Tmavé části chybí v modelu === - Scanner provádí zároveň dvě akce (pořízení barevné fotografie a 3D měření pomocí laseru) a každá vyžaduje jiné podmínky na prostředí. Pro pořízení fotografie je potřeba vhodné osvětlení a 3D měření je nejúčinnější ve tmě. V případě že vám příjde, že osvětlení místnosti nevhodně ovlivňuje měření, můžete vyzkoušet následující postup. - Zamezte slunečním paprskům vnik do místnosti (zatáhněte rolety) a případně zhasněte. - Tlačítkem **Scan** pořiďte hloubkovou mapu ({{courses:A7B39MVR:tutorials:04b:scan_06.png?linkonly|obr. 6}} a {{courses:A7B39MVR:tutorials:04b:scan_07.png?linkonly|7}} ). - Rozsviťte. - Tlačítkem **Color Read** znovu vyfotíte objekt (barevnou informaci) bez opětovného scanování ({{courses:A7B39MVR:tutorials:04b:scan_08.png?linkonly|obr. 8}} ). - Porovnání scanu při vypnutém a zapnutém osvětlení je na {{courses:A7B39MVR:tutorials:04b:scan_09-scanWithLight.png?linkonly|obr. 9}} (nastavení scanneru bylo stejné). - Druhou možností je zvýšení výkonu scanneru (checkbox **Intensity** a **LD** a **Gain**) ale toto vede ke zvýšení šumu a je vhodné pouze pokud nemůžeme modifikovat osvětlení scény. {{courses:A7B39MVR:tutorials:04b:scan_06.png?200|}} {{courses:A7B39MVR:tutorials:04b:scan_07.png?200|}} {{courses:A7B39MVR:tutorials:04b:scan_08.png?200|}} {{courses:A7B39MVR:tutorials:04b:scan_09-scanWithLight.png?200|}} === Vzdálené/blízké části objektu nejsou nasnímány. === - Scanner má poměrně malou hloubku ve které je schopen snímat v jednom průchodu (jednotky cm - je to závislé na vzdálenosti objektu od skaneru a na módu snímání). Proto části objektu, které jsou příliš blízko či daleko nejsou zaznamenány (nohy panáčka na {{courses:A7B39MVR:tutorials:04b:scan_10.png?linkonly|obr. 10}} vlevo). - Oprava automatiky: zkuste posunout střed snímaného objemu. Zaškrtněte položku **Distance** a změňte vzdálenost do vhodnější pozice a stiskněte tlačítko **Scan**. Na {{courses:A7B39MVR:tutorials:04b:scan_10.png?linkonly|obr. 10}} vpravo můžete posoudit změnu v oblasti nohou. - Slepení více scanů z jednoho pohledu. Pořiďte více scanů s různým nastavením atributu **Distance**, každý scan připojte pomocí kontrolních bodů k ostaním pohledům a uložte tlačítkem **Store** (viz bod 8 v popisu snímání). {{courses:A7B39MVR:tutorials:04b:scan_10.png?200|}} === Přebytečné části obrázku === - Již při snímání jsou rozpoznatelné některé zašuměné části obrázku, případně některé části nechcete rekonstruovat. - Následující postup umožňuje provádět editaci aktuálně snímaného pohledu. - Stiskněte tlačítko **Edit** ({{courses:A7B39MVR:tutorials:04b:scan_12.png?linkonly|obr. 12}} ). - Levým tlačítkem myši můžete do levého náhledu přidávat body polygonální oblasti, pravým tlačítkem myši oblast uzavřete. V případě, že chcete opustit editaci, zmáčkněte Ctrl + pravé tl. myši. - Po vybrání oblasti levým tlačítkem smažete vnitřek oblasti, pravým vše vně oblasti ({{courses:A7B39MVR:tutorials:04b:scan_13.png?linkonly|obr. 13}} ). {{courses:A7B39MVR:tutorials:04b:scan_12.png?200|}} {{courses:A7B39MVR:tutorials:04b:scan_13.png?200|}} ===== Spojení geometrie a úpravy ===== Pokud se vám zdá, že rozhraní programu je deaktivováno, je to nejspíš způsobené tím, že program čeká na vaši konkrétní akci. Nápovědu k akci většinou najdete ve statusbaru pod aktuálním pohledem. - Předpokládáme, že jednotlivé scany jsme si již nahrubo složili při snímání - Nyní provedem doladění registrace. V seznamu elementů (pravý panel) označte všechny položky a spusťte příkaz **Build - Registration - Fine - Elements**, jako základní element vyberte první pořízený. Tím se provede přesnější slícování jednotlivých pohledů. - Pro budoucí export bude vhodné, když otočíme celou scénu tak, aby podložka byla co nejvíce vodorovně. - Vyberte opět všechny elementy. - Spusťte příkaz **Build - Rotate - Elements** ({{courses:A7B39MVR:tutorials:04b:scan_14.png?linkonly|obr. 14}} ). - Vyberte osu rotace, zadejte úhel a stiskněte tlačítko **Apply**, to otočí elementy. Postupné aplikování otočení není aditivní (otočení 2x o 5° není ve výsledku otočení o 10° ale pouze o 5°). - Až po stisku tlačítka **Ok** se provede finální otočení. - Následuje složení jednotlivých scanů do jednoho 3D modelu - Vyberte opět všechny elementy. - Spusťte příkaz **Build - Merge** ({{courses:A7B39MVR:tutorials:04b:scan_15a.png?linkonly|obr. 15a}} ) a nastavne vhodné vyvážení mezi přesností a hladkostí modelu. - Po stisku **Ok** se vám vytvoří nový model ({{courses:A7B39MVR:tutorials:04b:scan_16.png?linkonly|obr. 16}} ). - Barevná informace je uložena pro každou část modelu zvlášť a po složení textur vznikají viditelné artefakty ({{courses:A7B39MVR:tutorials:04b:scan_17a.png?linkonly|obr. 17a}} ). Proto je vhodné na výsledném objektu spustit **Build - Texture Blending**, který prolne hraniční textury. Bohužel tím dojde i k mírnému rozmazání textur v dobře zaznamenaných částech ({{courses:A7B39MVR:tutorials:04b:scan_19.png?linkonly|obr. 19 vpravo}} ). {{courses:A7B39MVR:tutorials:04b:scan_14.png?200|}} {{courses:A7B39MVR:tutorials:04b:scan_15a.png?200|}} {{courses:A7B39MVR:tutorials:04b:scan_16.png?200|}} {{courses:A7B39MVR:tutorials:04b:scan_17a.png?200|}} {{courses:A7B39MVR:tutorials:04b:scan_19.png?200|}} ===== Export do VRML ===== - Finální model můžeme exportovat do několika formátů, pro naše účely je nejvhodnější formát VRML. - Příkazem **File - Export - Elements** exportujte vybraný element (finální model), viz {{courses:A7B39MVR:tutorials:04b:scan_18a.png?linkonly|obr. 18a}} . - Jako typ uložení vyberte VRML2.0, zaškrtněte **With Images** a **With Merged Images**, jenom tato kombinace umožňuje export složené textury pro finální model. - Dále je potřeba vybrat typ mapování textury ({{courses:A7B39MVR:tutorials:04b:scan_18c.png?linkonly|obr. 18c}} ). - Dle tvaru objektu vyberte vhodnější projekci. - Velikost textury nastavte na počet px vhodný pro VRML (mocniny dvou) - Export se provede po stisku **Ok** - Exporter programu **PET** bohužel vloží texturu přímo do VRML jako uzel **PixelTexture**, což je nevhodné vzhledem k následné velikosti souboru s modelem. Proto využijeme další exporter, abysme získali texturu v nějkém obr. fotmátu. - Opakujeme kroky 2 a 3 s tím rozdílem, že jako výstupní formát nastavíme SoftImage. Je důležité, abyste nastavili projekci textury stejně jako u VRML. - Při exportu do tohoto formátu vzniknou 4 soubory, nás zajímá ten s příponou .PIC, ve kterém je uložena textura. - Sobor .PIC zkonvertujeme do námi preferovaného formátu (.PNG nebo .JPG), např. pomocí programu XnView. Důležité je, že při **konverzi** musíme také obrázek **vertikálně převrátit** aby odpovídal uzlu TextureCoordinate v souboru VRML. - Otevřeme si VRML soubor v editoru a uzel PixelTexture nahradíme za ImageTexture odkazující na texturu získanou přes SoftImage exporter. Nezapomeňte u VRML souboru zapnout //GZ// kompresi. ==== LOD ==== - Výše uvedeným postupem jsme sice získali model ve formátu VRML, ale nevhodný pro online prezentaci (příliš mnoho trojúhelníků), proto je potřeba model ještě upravit pro LOD. - Pro zmenšení počtu trojuhelníků použijeme příkaz **Build - Subsample - Adaptively - Element** ({{courses:A7B39MVR:tutorials:04b:scan_20.png?linkonly|obr. 20}} ). - Vytvoříme si postupně dva modely jeden např. z 10000 bodů a druhý z 1000 bodů. - Modely exportujeme stejným postupem jako je popsán výše s tím rozdílem, že textura se může použít již ta exportovaná. - Pomocí programu Chisel snižte velikost souborů (např. snížení přesnosti desetiných čísel). - Modely složíme pomocí LOD do finálního VRML jak bylo popsáno v [[courses:a7b39mvr:tutorials:04:zaloha_2016|cvičení 4]] . - Snížení počtu trojúhelníků můžete také provést až na exportovaném detailním VRML souboru pomocí programu MeshLab. Tento postup je popsán v rámci [[courses:a7b39mvr:tutorials:05:start|6. cvičení]] . {{courses:A7B39MVR:tutorials:04b:scan_18a.png?200|}} {{courses:A7B39MVR:tutorials:04b:scan_18c.png?200|}} {{courses:A7B39MVR:tutorials:04b:scan_19.png?200|}} {{courses:A7B39MVR:tutorials:04b:scan_20.png?200|}} ===== Ukázka ===== * LOD model, detailní level byl získán v programu PET, low-level model byl získán konverzí v programu MeshLab. Textura nebyla blendována, proto jsou v něketrých místech vidět černé trojúhelníky a nespojitosti v barvě textury. * {{:tutorials:04b:panak.wrl|}}