Technologie používané v průmyslové automatizaci jsou
proto hodně tradiční, ověřené lety a časti i desetiletími
praktických nasazení. Investují-li lidé do svých koníčků, chtějí vždy
to nejlepší, aktivně se zajímají o nejmodernější technologie a
velmi pečlivě při každém nákupu zvažují poměr cena-výkon.
V zaměstnání však většinou pracují s přidělenými nástroji a
motivace k používání nejvýkonnějších prostředků zde není obvykle
tak přímočará. Naštěstí ale ani v tomto oboru není vše jen černé
nebo jen bílé. I zde existuje dost aktivních a tvůrčích lidí,
kteří stále hledají cestu vpřed.
Ještě relativně nedávno se pro vizualizaci průmyslových procesů
běžně používalo programové vybavení pracující v textovém módu
grafických adaptérů. Pomocí semigrafických znaků tyto programy svižně
zobrazovaly sloupcové indikátory, potrubí a otevřené či uzavřené
ventily. A to bylo v době, kdy jsme již mnoho let psali
dopisy a e-maily v grafickém prostředí Windows. Kde je však
v dnešní době semigrafika. Její používání mohla opodstatnit jen
technická nedostatečnost počítačů a existence textových terminálů.
A ti, kteří tvrdili, že pro průmyslovou automatizaci to bude
navždy stačit, neboť semigrafika je naprosto dostačující, naštěstí
neměli pravdu (dobře si tehdejší "plodné" diskuse dodnes pamatuji).
Standardem dnešní doby je při vizualizaci technologických procesů
využívání dvourozměrné vektorové grafiky. A opět je jisté, že to
tak navždy nevydrží.
2D vektorová a bitmapová grafika
V dalším textu se budeme věnovat grafických technologiím
přístupným v prostředí Microsoft Windows. O zobrazování
dvourozměrné grafiky a textu se stará systém GDI (Graphics Device
Interface). Je to jeden ze tří hlavních a nejstarších částí
operačních systémů Windows. Moduly KERNEL, USER a GDI jsou
základem Windows již od verze 1.0, dvourozměrná grafika je tedy
již "odjakživa" pevnou součástí služeb jádra operačního
systému.
Systém GDI se s novými generacemi operačních systémů stále
zdokonaluje a rozšiřuje, stále však tento grafický jazyk udržuje
kontinuitu s původní, dnes již velmi letitou, koncepcí.
Současné požadavky na 2D vizualizace samozřejmě předpokládají
podporu animací, průhledností, gradientních výplní a obrazových
transformací. Proto bývá ve vizualizačních programech obvykle nad
GDI vystavěn složitější a mocnější vykreslovací systém. Dnes je
i samotný systém Windows vybaven dalšími technologiemi pro
vytváření obrazu. Je zde systém GDI+, jehož API je přímo tvořeno
hierarchií C++ tříd a především velmi mocný systém Direct3D. GDI+
přináší mnoho nových možností ve 2D vektorové grafice (např.
gradientní štětce, maticové transformace souřadného systému
i barevného prostoru, alpha blending atd.), při manipulaci
s bitmapami i v typografii. Těžko odhadovat budoucí
podporu tohoto rozhraní, může se jednat o slepou vývojovou
větev. Naproti tomu Direct3D je postaven na standardech rozhraní
COM. Tento 3D vykreslovací systém lze (stejně jako OpenGL) velmi
dobře využít i pro vektorovou 2D grafiku.
Jak jsme již uvedli, GDI služby jsou součástí jádra operačního
systému (i když je docela těžké vysledovat, co vše je řešeno
na straně klienta a co uvnitř jádra). Řada volání těchto služeb
z aplikace do jádra systému představuje určitou režii
spojenou s přepnutím kontextu. Tato režie je často delší, než
vlastní realizace grafického primitiva grafickým akcelerátorem.
Sebelepší grafická karta pak již není schopna přispět
k lepšímu výkonu grafiky. Tyto potíže pomáhá řešit akumulace
funkčních volání a jejich následné hromadné předání systému při
dokončení kresby. Takto je 2D grafika řešena i ve vektorovém
vykreslovacím systému v prostředí Control Web.

Obr.1: Vlastní kresby lze v prostředí
Control Web ukládat do knihoven pro další
použití
Dalším problémem bývá rušivé blikání obrazu během
překreslování. Je způsobeno tím, že vykreslovací systém obvykle
přímo modifikuje paměťový rámec v grafické kartě, který je
využíván pro generování obrazového signálu pro monitor. Systém
Control Web se s tímto vypořádává zcela
principiálně a shodně pro veškerou 2D grafiku v aplikaci
obsaženou. Každému panelu lze nastavením parametru mode =
off_screen zajistit vykreslování do neviditelné paměti a
přenesení výsledku do viditelného rámce najednou následně po
dokončení kresby. Tato operace je vždy podporována v hardware
grafické karty a je velmi rychlá. Výsledkem je čistý obraz bez
rušivého blikání.

Obr.2: Ukázka 2D vektorového obrázku v prostředí
systému Control Web
Je-li takto přenášen vždy výsledný hotový obraz, je již
lhostejno, jakou technologií byl vytvořen (nezáleží ani na tom,
jde-li o 2D nebo 3D grafiku). Moderní vykreslovací systémy
pro generování obrazu využívají vektorový procesor pracující
s plovoucí řádovou čárkou a rasterizer pro tvorbu výsledného
bitmapového obrazu. Takto pracují např. vykreslovací systémy
Macromegia Flash nebo Adobe PDF a Adobe SVG Viewer (Scalable
Vector Graphics - W3C XML standard pro přenositelnou grafiku).
Trochu podobným směrem kráčí budoucí generace Windows známá pod
jménem Longhorn. Nové grafické rozhraní Avalon – XAML (eXtensible
Application Markup Language) umožní deklarativní popis grafického
uživatelského rozhraní. I když pro vytváření obrazu používáme
některou z moderních technologií, bez spolupráce s GDI
se alespoň při manipulaci s kontextem zařízení a poté při
umísťování výsledného obrazu do patřičného okna stejně neobejdeme.
Systém GDI nás bude provázet ještě velmi dlouho a jistě bude
součástí připravovaného OS Windows Longhorn. Nás ale nyní nejvíce
zajímá, co můžeme ku prospěchu našich aplikací využívat již nyní.
Pojďme tedy k tomu nejzajímavějšímu - k interaktivní3D
grafice.
3D grafika
Co pro nás dělá 3D vykreslovací systémy tak zajímavými?
Pomineme-li nedostižně vizuálně působivé obrazy, pak jsou to
rozhodně schopnosti současných grafických akcelerátorů. 3D
akcelerátor máme v každém současném počítači a nevyužívat jej
je velká škoda. Jako bychom např. trvali pouze na černobílém
zobrazení v době, kdy jsou již dávno všechny monitory
barevné. Princip tvorby obrazu je podobný, jako jsem již
popisovali v předchozí kapitole. Základem výkonu akcelerátorů
je zřetězení a paralelizace. Např. současný akcelerátor GeForce
6800 s více než 220 miliony tranzistorů má ve svém hardware 6
paralelních vektorových procesorů 16 paralelních pixelových
procesorů (při zápisu do z-bufferu a stencil bufferu dokonce 32
paralelních pixelových kanálů - a to je pro Control Web a moderní vykreslovače vůbec velmi přínosné).
Výsledkem jsou datové propustnosti v řádech desítek gigabyte
za sekundu a schopnosti vykreslit stovky milionů stínovaných
trojúhelníků za sekundu. No uznejte sami - můžeme si tyto možnosti
dovolit nechat ležet ladem?

Obr3: Zřetězený proces tvorby obrazu systémem
OpenGL

Obr.4: Obraz se zrcadlením, odlesky a prostorovými
stíny vykreslený systémem Control Web
s využitím víceprůchodových vykreslovacích
technik
Krátké ohlédnutí do historie
Oblast 3D počítačové grafiky prochází v současné době
prudkým technickým rozvojem. Hnacím motorem tohoto pokroku
jsou bezesporu počítačové hry. Díky velikosti trhu
s hrami se vyvíjejí stále výkonnější 3D akcelerátory.
Výkony v oblasti stovek milionů trojúhelníků za sekundu a
datové toky v řádu desítek gigapixelů za sekundu již
patří k běžným parametrům.
Milníkem ve vývoji počítačové 3D grafiky byl rok 1992, kdy
firma Silicon Graphics (SGI) uvedla svůj Reality Engine. Tento grafický
akcelerátor obsahoval 8 grafických procesorů
s hardwarovou podporou transformací, osvětlení a
rasterizace včetně mapování textur. Stál asi milion dolarů a
byl velký jako domácí lednička. Dnes i levné grafické
karty za méně než 50 dolarů výkon tohoto ve své době
revolučního zařízení výrazně překonávají. Za 10 let tak klesla
cena srovnatelného grafického adaptéru asi 20000 krát!
Éru levných grafických 3D akcelerátorů pro PC zahájila
firma 3Dfx svou kartou Voodoo 1 v roce 1996. Tento
úspěšný adaptér nenechal nikoho na pochybách
o užitečnosti hardwarové podpory 3D grafiky. Dnes je již
3D grafický akcelerátor tak samozřejmou součástí každého
domácího PC jako je např. myš nebo pár reproduktorů.
A blízká budoucnost - hardwarová podpora 3D grafiky již
nezadržitelně míří i do oblasti počítačů do dlaně a
mobilních telefonů.
Jak jsme se již zmiňovali, s trochou pragmatismu můžeme
z uživatelského hlediska říci, že nám nezáleží na principech
a způsobech tvorby obrazu. Zajímá nás jen to, aby byl obraz hezký
a byl vytvořen velmi rychle. Zde se budeme držet zásady, že co
nelze vykreslit v reálném čase, je lépe nekreslit vůbec.
A nechceme-li se specifickou problematikou 3D grafiky
hlouběji zabývat, nemusíme. Při tvorbě aplikace v prostředí
systému Control Web se často ani nemusíme
zatěžovat budováním opravdu prostorové scény, stačí využít část
potenciálu 3D vykreslovacího systému v běžné 2D
vizualizaci.

Obr.5: Vizualizace průmyslové technologie, vykreslené
jedním průchodem bez využití dalších grafických efektů
I tehdy nám 3D vykreslovací systém
v prostředí Control Web přinese navíc
mnohý užitek:
využijeme mohutného vykreslovacího výkonu 3D akcelerátoru
- část grafické zátěže se přenese do paralelně běžící GPU
grafické karty
aplikace získá perfektní vzhled osvětleného a plastického
vygenerovaného obrazu
aplikační program běží plynuleji a přesněji
v reálném čase - vykreslovací server běží ve vlastním
vláknu a jeho klienti běžící v reálném čase se grafikou
vůbec nezabývají

Obr.6: Při jednoprůchodovém vykreslování maximálně
využijeme "hrubý" výkon grafické karty a nejvíce šetříme výkonem
CPU
Budeme-li někdy chtít využít z této grafické
technologie více, máme k dispozici:
editaci 3D prostorové scény "na místě" přímo v ploše
integrovaného vývojového prostředí
volný pohyb kamery ve scéně včetně interpolací pozice
i úhlů, a to při editaci i za běhu aplikace
řadu předpřipravených 3D objektů pro rychlé a
bezstarostné sestavení vizualizace
stromový systém transformací a animací objektů a možnost
plné programové kontroly scény
částicový systém pro realistické a dynamické zobrazování
prostorových efektů s předem připravenými objekty (oheň,
kouř, jistry atd.)
editovatelné materiály s možností průhlednosti,
texturování atd.
import 3D modelů (*.obj, *.3ds) z různých 3D
modelovacích programů
vizualizace zdrojů světla a simulace odlesků a rozptylů
světla v optice kamery 
Obr.7: Prostorové stíny současně s vizualizací
zdroje světla
zrcadlové plochy
planární stíny
prostorové dynamické stíny s výkonným a robustním
algoritmem
a mnoho dalšího ...

Obr.8: In-place 3D editor vývojového prostředí systému
Control Web umožňuje volný pohyb ve vytvářené
scéně včetně vykreslování všech obrazových efektů
Tyto možnosti dokumentují technologickou vyspělost
vykreslovacího systému a samozřejmě jich ve svých aplikacích vždy
nemusíme využívat. Ale je příjemné mít je k dispozici.

Obr.9: Architektura 3D vykreslovacího stroje
v systému Control Web
Důležité je také informace o architektuře 3D
vykreslovacího systému a jeho zařazení do struktur prostředí
Control Web. Jak je vidět na obr. 8, vykreslovací
systém poskytuje své služby pouze patřičným virtuálním přístrojům
a nikoliv jádru systému Control Web. Vykreslovací
systém se tedy dynamicky zavádí až spolu s prvním virtuálním
přístrojem, který jej potřebuje. Rozhodně tedy nemusíme mít obavu,
že by v aplikacích soft PLC bez vizualizace nebo
v aplikacích s 2D vizualizací komponenty 3D
vykreslovacího systému jakkoliv překážely, zabíraly místo ve
virtuálním pamětovém prostoru a jakkoliv zdržovaly start
aplikace.
3D vykreslování v reálném čase
Je dobré se také zamyslet, proč bychom se vůbec
v průmyslové automatizaci měli zabývat 3D grafikou (když už
jsme se tak dlouho bez ní docela obešli :-)). Argument proti se dá vymyslet asi jen jeden
jediný, a to ten, že sestavit vizualizaci dá o něco více
práce. Do jisté míry je to pravda, avšak právě snadnost tvorby
3D vizualizací byla hlavním návrhovým cílem 3D grafického
prostředí v systému Control Web.
V řadě případů můžeme vytvořit 3D scény zcela bez hlubší
znalosti problematiky i bez nutnosti relativně pracného
kreslení externích 3D modelů. Na druhé straně argumentů ve
prospěch 3D zobrazování je hned několik:
Vzhled — v současnosti se jedná o nejkvalitnější
dostupnou zobrazovací technologii. Vykreslování obrazu ve 3D
prostoru (3D rendering) se využívá pro tvorbu filmů,
v počítačových hrách, při zobrazování modelů ve vědě a
výzkumu, v CAD programech, při prezentaci dat atd. je tedy
nejvyšší čas i pro průmyslovou automatizaci.
Výkon — 3D akcelerátor je
samozřejmou součástí každého současného PC a je škoda tohoto
potenciálu nevyužívat.
Architektura — klient-server vykreslovací systém, maximum
vykreslování je řešeno mimo jádro operačního systému. To přináší
lepší možnosti optimalizace a plynulejší reáln6ý čas
aplikací.
Cena — používáme stejný
počítač a aplikace vytváříme prakticky stejným způsobem jako
jsme byli dříve zvyklí u 2D vizualizací. Získáváme tedy vyšší
kvalitu bez nutnosti cokoliv připlácet.

Obr.10: Logo systému Control Web
vykreslované v reálném čase přímo systémem Control Web
Nevyužívat pro vizualizace 3D grafický systém, je-li
v podobě grafické karty a instalovaných ovladačů na počítači
přítomen (a to je téměř vždy), je jako bychom svým autem stále
jezdili jenom na první rychlostní stupeň.
Oblast průmyslové automatizace je tradičně velmi konzervativním
oborem, který bohužel ani zdaleka nepatří k technologickým
průkopníkům na poli informačních technologií. Avšak v systému
Control Web v trojrozměrné grafice můžeme nyní
využít nejen skvělého výkonu moderních akcelerátorů, ale díky
implementaci řady nejnovějších softwarových technologií
a algoritmů třírozměrného zobrazování v reálném čase získat
pro své aplikace rychlou a vizuálně působivou grafickou prezentaci.
Nemusíme již tedy, jak je často k vidění, prostorové zobrazení
pouze napodobovat pomocí předem připravených bitmap. Můžeme mít
opravdové trojrozměrné zobrazování v reálném čase!
Roman Cagaš, rc@mii.cz
|