Technologie: Microsoft Surface

Microsoft Surface je hardwarová a softwarová platforma pro vývoj aplikací, které poskytnou zcela netradiční uživatelský zážitek. Klasické ovládání myší a klávesnicí je odsunuto stranou – díky tomu, že uživatelé mohou s aplikací interagovat prostřednictvím dotyků rukou nebo dokonce jiných fyzických objektů, získává používání přirozenější rozměr (proto se takové ovládání označuje jako Natural User Interface – NUI).

Surface zvenku

Obrázek nahoře napoví, že Surface je vlastně stůl s jakousi plastovou deskou. Uvnitř něj tiká obyčejné PC, ale zásadní rozdíl je v ovládání. Pod povrchem se nachází soustava infračervených kamer, které ho neustále snímají. Záznam v podobě surového videa se posílá na tzv. Vision System a ten jej převede na data. Systém pak provádí rozpoznávání obrazů v infračerveném spektru, takže dokáže vyhodnotit prsty, objekty označené speciálními štítky nebo různé tvary. Tyto informace zpracovává aplikace a výsledek posílá na obrazovku zpětnou projekcí.

Horní deska tedy není sama o sobě dotyková (o to se starají infračervené kamery, které ji snímají). To dovoluje povrch leštit jakýmkoliv čisticím prostředkem, položit na něj i velmi těžká závaží (třeba se na něj posadit) nebo třeba rozlít šálek s čajem. Zároveň díky tomu není omezen počet simultánních dotyků (narozdíl od např. touchpadu notebooků nebo displeje mobilních telefonů).

Pohled dovnitř

(zdroj obrázku: http://www.popularmechanics.com/technology/industry/4217348.html?page=2)

Stolek je poháněn běžným procesorem Intel Core 2 Duo s 2 GB operační paměti. O projekci se stará 30“ XGA DLP projektor a grafická karta ATI X1650 s 256 MB RAM. Konektivitu zajišťuje Wifi adaptér, Bluetooth nebo ethernetová přípojka. Mezi další konektory patří: 6× USB 2.0, 2 stereo jacky, S-VGA, port pro externí monitor a další. Operační systém je Windows Vista SP1, který je možné provozovat ve dvou režimech: administračním, kde je přístup ke všem nastavením systému, nebo uživatelském, kde je spuštěna pouze vybraná aplikace a systém zůstává „neviditelný“.

Specifika vývoje

Protože na pozadí běží minimálně modifikovaný systém Windows Vista, programování aplikací pro Surface se příliš neliší od standardního vývoje pro jiný desktop. Vision System dodá vyšším vrstvám všechny potřebné informace o dění na horní desce. Aplikace tak má možnost reagovat na každý nový předmět, přečíst hodnotu štítku nebo vyhodnotit dotyk prstu.

Architektura Microsoft Surface

Ve videu Developing on Microsoft Surface se Eric Havir ptá týmu Stimulant na to, jak se jim pro Surface vyvíjelo. Z odpovědí vyplývá několik zajímavých informací.

S tím, jak jsou větší možnosti, které vývojáři mají, je i více způsobů, jak udělat chybu. Klasické aplikace na obyčejných PC počítají s tím, že je uživatel ovládá klávesnicí a myší (případně navíc herním ovladačem) a že s nimi pracuje vždy jeden uživatel v jednu chvíli. U Surface toto neplatí – přidává se multitouch, tedy více vstupů najednou, není omezen počet lidí, kteří budou aplikaci ovládat ve stejný čas, je možné přikládat fyzické objekty atp.

Při designu aplikace je třeba počítat se zcela novými situacemi. Co když přijde pět lidí a najednou sáhne na obrazovku? Klidně mohou aplikaci shodit. Je nutné se připravit na více operací najednou pro více uživatelů najednou. Také není jednoduché rozhodnout, co který dotyk znamená. Už neplatí, že klik na objekt následovaný klikem mimo objekt automaticky znamená zrušit výběr.

Při programování se více pracuje s matematikou a fyzikou (výpočty kolizí, transformací apod.). Mnohem důležitější je ovšem design aplikace, kvůli důvodům zmíněným výše.

Surface SDK

Základní rozhraní Surface API obaluje, a tvorbu aplikací pro Surface tak značně zjednodušuje, balík Surface SDK. Součástí jsou ukázkové aplikace, dokumentace, šablony projektů pro Visual Studio a simulátor, který umožňuje testovat aplikace na běžném počítači, takže není nutné mít Surface u sebe.

  • SDK rozšiřuje třídy původního API o nové vlastnosti, které zrychlují a zjednodušují vývoj (výpis uvádí [1]),
  • podporuje aplikace služeb (service applications), které přetrvávají mezi relacemi uživatelů, umí se restartovat v případě pádů (Surface Loader), spouštět další Surface aplikace atd.,
  • zvládá automaticky detekovat jazyk nastavený v hostitelském Windows Vista a na základě toho zobrazit rozhraní v dané lokalizaci (je-li k dispozici),
  • zobrazuje zpětnou vazbu v místě doteku, takže uživatel vidí, jak jej deska snímá a ovládání působí jistějším dojmem,
  • je integrováno do WPF a přináší speciální ovládací prvky.

Simulátor

Jedná se o samostatnou aplikaci, která je schopná komunikovat s Visual Studiem. Snaží se přesně napodobit obrazovku Surface včetně vícedotykového prostředí (připojením několika myší najednou).

Simulátor prostředí Surface

(zdroj obrázku: http://blog.kristofrennen.be/index.php/2009/05/getting-started-with-microsoft-surface-development/)

Rozlišení simulátoru je 1024×768. Aplikaci lze spustit buď v simulátoru výběrem na obrazovce Launcher (za předpokladu, že je registrována), nebo mimo něj – přímo jejím spustitelným souborem nebo příkazem Run ve Visual Studiu (chceme-li ji ladit). Použitím simulátoru se detailnějí zaobírá [2].

Předměty

Kromě prstů lze na Surface přikládat i různé předměty. Systém na nový předmět upozorní a aplikace může zjistit jeho pozici, orientaci, obtahový rámeček (bounding box) a pokud je vybaven speciálním štítkem, tak i přečte jeho hodnotu.

Ačkoliv dokáže systém „vidět“ okraje objektů a pracovat s nimi, pro pokročilejší zpracování je třeba implementovat složitý algoritmus rozpoznávání obrazů. Abychom se tomu vyhnuli, můžeme předměty označit štítky, které jsou tvořeny přesně danými obrazci z teček a přenášejí digitální informace.

Surface SDK obsahuje nástroj pro vytváření štítků – Identity Tag Printing Tool (http://msdn.microsoft.com/en-us/library/ee804803.aspx).

Surface podporuje dva typy štítků:

  1. Byte Tags, které mají kapacitu 8 bitů, tedy 1 bajt,
  2. Identity Tags s kapacitou 128 bitů.

Byte Tag

Identity Tag

Klidně je možné použít několik štítků se stejnou hodnotou (např. ve hře šachy by osm stejných štítků značilo pěšce jedné barvy, dva by představovaly koně, jeden krále…). Kromě prostého rozpoznání objektů mohou štítky spouštět akce (zobrazit menu, načíst galerii apod.) nebo ovládat prvky v závislosti na své orientaci (třeba zvětšit hlasitost přehrávače otočením ve směru hodinových ručiček).

Více informací o práci se štítky najdete na MSDN.

Požadavky

Dle požadavků, které uvádí [2], by měl vývojářský počítač disponovat grafickou kartou s alespoň 256 MB paměti a podporou DirectX 9.0c i Pixel Shader 2.0. Požadavky na software jsou následující:

  • Windows Vista SP1 (ačkoliv na ně lze SDK nainstalovat, nejsou podporovány 64bitové edice ani Windows Vista Home Basic, Windows Vista Starter a Windows 7),
  • Visual C# 2008 Express nebo Visual Studio 2008 (.NET Framework 3.5),
  • XNA Framework Redistributable 2.0,
  • Surface SDK 1.0 SP1, Workstation Edition,
  • DirectX 9.0 August 2007 (požadované součásti DirectX se doinstalují v případě potřeby samy)

Odkazy

Zdroje

[1] Release Notes for Microsoft Surface SDK 1.0 SP1. http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=3db8987b-47c8-46ca-aafb-9c3b36f43bcc
[2] Start Here for Microsoft Surface SDK 1.0 SP1 Workstation Edition. http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=3db8987b-47c8-46ca-aafb-9c3b36f43bcc