====== 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|}}