1 / 100

Vizualizavimo Sistemos

Vizualizavimo sistemų kūrimo programinė įranga. Vizualizavimo Sistemos. Paruošė: IG-08 grupės studentas Andrius Mikalajūnas. Programin ės įrangos klasifikacija. Žemo lygio atvaizdavimo programinė įranga: DirectX komponentė Direct3D (Microsoft), OpenGL (SGI, IRIS GL),

murray
Download Presentation

Vizualizavimo Sistemos

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Vizualizavimosistemų kūrimo programinė įranga Vizualizavimo Sistemos Paruošė: IG-08 grupės studentas Andrius Mikalajūnas

  2. Programinės įrangos klasifikacija Žemo lygio atvaizdavimo programinė įranga: • DirectX komponentė Direct3D (Microsoft), • OpenGL (SGI, IRIS GL), Aukštesnio lygio atvaizdavimo programinė įranga: • Java3D (SUN, 3D API, naudoja OpenGL arba Direct3D), • Open Inventor (SGI, OpenGL pagrindu, VRML failai). Visualizavimo bibliotekos ir įrankių rinkiniai (Toolkits): • VTK (Visualization ToolKit), • VisAD (Visualization for Algorithm Development, Java Swing, Java3D, University of Visconsine). Modulinės vizualizavimo aplinkos (MVE): • AVS(AplicationVisualization System) Express by Advanced Visual Systems). • OpenDX (IBM Visualization Data Explorer), • IRIS Explorer (Numerical Algorithms Group,pagrįstas Open Inventor, ImageVision, OpenGL),

  3. Žemo lygio atvaizdavimo programinė įranga Artimai bendrauja su aparatine įranga: • Geriausiai tinka kodo optimizavimui, • Sukuriamos pačios greičiausios ir efektyviausios programos, Sunku dirbti vartotojui: • Reikalauja aukščiausios kvalifikacijos, • Mažiausias automatizacijos lygis (dėl optimizacijos), • Daugiausia programuotojo pastangų ir laiko (žmogiškųjų resursų). Istorija ir pirmtakai: • GKS (Graphical Kernel System) – 1970 atvaizdavimo standartas, • PHIGS– 3D atvaizdavimoAPI standartas(1990), • Atskiri paketai: DEC PHIGS, IBM's graPHIGS, Sun's SunPHIGS. • Naudojamas kartu su PEX (PHIGS Extension to X), t.y. X Window sistemos palaikymu. • Palaikė tik bazines funkcijas: geometriją, tinklus ir paprastus spalvinimus.

  4. OpenGL OpenGL (Open Graphics Library) – tai standartinė specifikacija: • Nepriklausanti nuo programavimo kalbos, • Nepriklausnati nuo operacinės sistemos, • Greitai ir efektyviai atliekanti sudėtingas atvaizdavimo operacijas, • Vienintelė laisva OpenGL realizacija yra Mesa3D. OpenGL apibrėžia API skirtą rašyti 2D ir 3D kompiuterinės grafikos programoms: • Gimė C programavimo kalbos pagrindu. • Suderintas su programavimo kalbomis:Ada, C++, Fortran, Python, PerlirJava. • API susideda iš virš 250 skirtingų funkcijų kvietinių, • Programavimo stilius yra pakankamai elegantiškas (lyginant su Direct3D). Aparatinės įrangos gamintojai kuria savo bibliotekas, kurios atitinka OpenGL specifikaciją.

  5. OpenGL Dirba ne tik su geometrija, bet ir su atvaizdžiais. Algoritminėje sekoje viršūnių operacijos sąlyginai atskirtos nuo pikselių operacijų. • Pikselių operacijos atsakingos už darbą su tekstūromis.

  6. OpenGL GLX, GLU ir DRI –bibliotekos sudarančios OpenGL aplinką: • GLX užtikrina OpenGL sąsają su X Windows sistema (koduoja X protokolo srautą), • GLU yra pagrindinis OpenGL pagalbinių įrankių rinkinys (tekstūrų mipmaps, NURBS). • DRI (Direct Rendering Infrastructure) koordinuoja Linux branduolį, X window sistemą, 3D grafinę aparatinę įrangąir OpenGL atvaizdavimą. Windows naudojama WGL biblioteka.

  7. OpenGL Aukštesnio lygio bibliotekos, pagrįstos OpenGL: • Open Inventor– aukštesnio lygio atvaizdavimo programinė įranga, pasižyminti lanksčiu scenos grafo kūrimu, • IRIS Performer– išplečia OpenGL funkcionalumą greito atvaizdavimo srityse (visual simulation ir virtualumas), • OpenGL Optimizer– užtikriną efektyvią sąveiką su vartotoju (CAD/CAM), • OpenGL Volumizer– tūrinio atvaizdavimo API, • OpenGL Shader– vizualinių efektų platforma, palaikoma ir grafinėse plokštėse, GLUT yra paprasčiausias OpenGL pagalbinių įrankių rinkinys, kuris sudaro nuo platformos nepriklausantį API: • Bazinė (laisva, bet skurdoka) grafinės sistemos aplinka, • Sukurta programa atvaizduoja paprastame lange.

  8. DirectX DirectX – tai API kolekcija, skirta grafinėms programoms kurti Microsoft Windows platformoje: • Direct3D®grafikos programavimo ir atvaizdavimo API, • DirectInput®valdo įvedimo/išvedimo įrenginius (palaiko ir force-feedback technologiją), • DirectPlay®skirtas tinkliniams žaidimams programuoti, • DirectSound®skirtas kurti audio aplikacijas, kurios groja ir skaito(waveform audio), • DirectMusic®skirtas dirbti su muzikiniais takeliais(waveforms, MIDI sounds). • DirectShow®skirtas nuskaityti ir atkurti aukštos kokybės multimedia srautus ( multimedia streams). DirectXturi integruotą programavimo aplinką (Software Development Kit, Developer Studio) ir išplėstą įrankių biblioteką D3DX.

  9. Ditrect3D

  10. Ditrect3D

  11. Ditrect3D Direct3DkontroliuojamasMicrosoftir pagrįstasWindowsplatforma: • Gimė C++ aplinkoje. • Tradiciškai SDK palaikomas C/C++ ir C# kalbomis, • Dalis galimybių palaikomos Microsoft® Visual Basic®, • Egzistavo miglotos galimybės Borland Delphi. Direct3Ddažniausiai yra greitesnis už OpenGL, nes jis artimiau susijęs su aparatineįranga (OS Windows): • Turi tiesioginį priėjimą prie video-atminties ir kitų resursų, • Puikiaioptimizuojamas. Direct3Dgreičiau palaiko naujas technologijas, nes tai komercinis produktas. DirectX pripažino beveik visi žaidimų gamintojai, nes jis tam ir skirtas: • Pripažinimas atėjo ne iš karto, nes pirmosios Direct3D versijos buvo beviltiškos.

  12. Aukšto lygio atvaizdavimo programos Užtikrina pakankamai gerą programų efektyvumą: • Dažnai naudoja žemo lygio atvaizdavimo programinę įrangą, • Pakankamai greitos programos, optimizuoti kodai. Palengvina programuotojo darbą: • Programuotojo kvalifikacija išlieka labai aukšta, • Daugiau abstrakcijos (aukštesnis lygis), • Sumažina programuotojo žmogiškųjų resursų kiekį. Galutinės išvados: • Retai naudojamos paprastų vartotojų, • Dažniausiai naudojamos profesionalių programuotojų, • Rinkoje paplito daugiau aukšto lygio atvaizdavimo programų pavadinimų, bet žemo lygio programinė įranga yra populiaresnė.

  13. Java3D Scenos grafu pagrįstas 3D atvaizdavimo API: • SUN produktas, pagrįstas Java aplinkos įrankiais, • Suderinamas su Swing, • Nepriklausomas nuo platformos, • Pagrįstas OO koncepcija ir atlieka žemo lygio atvaizdavimo operacijų inkapsuliavimą, • Tam tikslui naudojasi OpenGL arba Direct3D. Leidžia vartotojui pasirinkti optimizacijos variantus: • Išnaudoja aparatinės įrangos galimybes (atlieka dalį operacijų), • Deja, pati Java yra pakankamai lėta ...

  14. Java3D

  15. Java3D kodo pavyzdys import com.sun.j3d.utils.universe.SimpleUniverse; import com.sun.j3d.utils.geometry.ColorCube; import javax.media.j3d.BranchGroup; public class Hello3d { public Hello3d() { SimpleUniverseuniverse = new SimpleUniverse(); BranchGroupgroup = new BranchGroup(); group.addChild(newColorCube(0.3)); universe.getViewingPlatform().setNominalViewingTransform(); universe.addBranchGraph(group); } public static void main( String[] args) {    new Hello3d(); } } // end of class Hello3d

  16. Open Inventor Open Inventor – OOP 3D atvaizdavimo API: • SGI produktas, skirtas aukštesnio lygio programavimui OpenGL bazėje, • Pagrįstas programavimo kalba C++. Daug dėmesio skirta programų rašymo paprastumui ir programų greitaveikai: • Ilgą laiką yra (buvo) populiariausias produktas šioje klasėje, • Turi gausybę “widgets” ir įrankių, • Open Inventor failų formatas davė pagrindą geometrijos saugojimo standartui VRML! Open Inventor kodas tapo atviru 2000: • Nuo to laiko jis nėra aktyviai vystomas ir prižiūrimas, • Nepaisant garbingo amžiaus, dažnai naudojamas įvairiose vizualizavimo programose.

  17. Open Inventor IVVIEW: • Open Inventor Vieweris.

  18. Visualizavimo bibliotekos ir įrankių rinkiniai Neprileidžia vartotojo prie aparatinės įrangos: • Žemo lygio atvaizdavimui dažniausiai naudoja OpenGL ir t.t., • Sumažina kodo optimizavimo galimybes, • Programos veikia lėčiau, • Programos kuriamos greičiau. Vartotojui pateikiamas platus funkcijų rinkinys: • Reikalauja programuotojo kvalifikacijos (pakankamai daug kodo), • Reikalauja bazinių vizualizavimo žinių, • Išsaugo programos kodo lankstumą ir pasirinkimo laisvę. Pagrindinės išvados: • Puikiai tinka vizualizacijos sistemų kūrimui (programuotojams), • Netinka mokslininkui, siekiančiam vizualizuoti savo rezultatus (vartotojams).

  19. Visualizavimo bibliotekos ir įrankių rinkiniai Struktūrinė realizacija: • Datasets realizuojamos duomenų struktūromis, • Algoritmai realizuojami funkcijomis OOD realizacija: • Viskas realizuojama įvairios paskirties objektais, • Galima išskirti pagrindines objektų grupes.

  20. VisAD VisAD didelė Java biblioteka, skirta vizualizavimui: • Nepriklauso nuo platformos (kaip ir Java), • Palaiko WEB ir tinklinį programavimą, todėl puikiai tinka nuotoliniam vizualizavimui. Atvaizdavimui naudojama Java3D: • VisAD nėra greita, nes Java ir Java3D nėra sukurtos greičiui ... Bibliotekos funkcionalumas yra pakankamai ribotas: • Lyginant su VTK! Palaiko kvietimus iš Python scenarijų: • Vartotojas gali naudotis ir nemokėdamas programuoti Java.

  21. VisAD Sudarytas iš penkių bazinių komponentų: • Duomenys (dažniausiai nekintantys), • Displėjaus komponentai vaizduoja kelis susijusius duomenų komponentus, • Celių komponentai vykdo vartotojo apibrėžtus skaičiavimus su susijusiais duomenų komponentais, • Duomenų nuorodos atlieka kintamųjų vaidmenį, • Vartotojo sąsajos komponentai atlieka “widgets” vaidmenį ir sudaro GUI.

  22. VisAD VisAD komponentai lengvai pritaikomi vartotojo poreikiams: • Set klasę galima išplėsti naujų “sampling” technologijų bei interpoliacinių algoritmų palaikyti, • Function klasė apibrėžia tolydžius duomenis (pvz. harmonines kreives), • Form gali apibrėžti naujų duomenų failų formatų ar duomenis generuojančių API serverių palaikymą, • Cell leidžia vartotojui į vizualizavimo algoritminę seką diegti savo specializuotus skaičiavimus, • DataRender klasė leidžia vartotojui interaktyviai interpretuoti Data komponentų vizualizavimą, • Naujos Display komponentų klasės gali palaikyti naujus grafinius API arba pritaikyti egzistuojančius naujiems API kurti: • VisAD naudoja Java3D ir Java2D. • Virtualios realybės kūrimas ImmersaDesk, Java3D pagrindu.

  23. VisAD Palaiko HDF ir netCDF formatą duomenų saugojimui. Palaiko daug specializuotų formatų: • FITS, BioRad, McIDAS, Vis5D, OpenDAP. Palaikopaskirstytobei bendro vizualizavimokoncepsijas: • Pagrįstas Java RMI protokolu, • Leidžia procesoriams vizualizuoti skirtingos rezoliucijos atvaizdžius, • Galima sugeneruoti grubų bendrą vaizdą, o tada “zoominti” atskirų procesorių zonas.

  24. VisAD: Collaboration

  25. VisAD Sąsajoms kurti naudojamas Swing: • Labai plačios galimybės, bet ... • Su standartiniais “interface widgets” dar reikia padirbėti ...

  26. VisAD Sąsajoms kurti naudojamas Swing: • Labai plačios galimybės, bet ... • Su standartiniais “interface widgets” dar reikia padirbėti ...

  27. VisAD Daug dėmesio skiriama sąveikai su vartotoju: • DirectManipulationRendererJ3D klasės objektai leidžia vartotojui keisti duomenis (vaizdą), keičiant “markerių” padėtį ekrane,

  28. VisAD Daug dėmesio skiriama sąveikai su vartotoju: • CurveManipulationRendererJ3D klasės objektai leidžia pažymėti dalį vizualizuojamų objektų “laisvomis” kreivėmis.

  29. VisAD VisAD pagrindu sukurta daug specializuotos vizualizacijos programinės įrangos, skirtos galutiniam vartojimui: • VisAD SpreadSheet paprasta programa, kuri atlieka nesudėtingas operacijas ir vizualizavimą (tiekiama su VisAD), • IDV(Integrated Data Viewer) naudojamas aplinkos duomenims vizuaizuoti “Unidata Program Centre”, • VMET(Visual Meterology Tool) meteorologiniams reiškiniams vizualizuoti JAV nacionaliniame atmosferos tyrimų centre NCAR. • VisBio sukurtas biologinių uždavinių vizualizavimui Viskonsino Universiteto “Laboratory for Optical and Computational Instrumentation”, • NuView naudojamas astronominių stebėjimų (detektorių AMANDA ir IceCube) rezultatams vizualizuoti.

  30. VisAD: SpreadSheet

  31. VisAD: IDV

  32. MVE: Idėjos MVE(Modular Visualization Environment) skirti vizualizavimo aplikacijoms kurti. Pagristos vizualiu programavimu: • Algoritmai vadinami moduliais ir vaizduojami blokais, • Blokai turi savo įvesties ir išvesties portus bei parametrus,

  33. MVE: Idėjos Pagristos vizualiu programavimu: • Vieno bloko išvesties portas jungiamas su kito bloko įvesties portu “viela”, • Sukurta programa reprezentuojama vizualizavimo tinklu.

  34. MVE: Idėjos Duomenų srauto paradigma (pirminė): • Duomenys perduodami vizualizavimo tinklu, • Moduliai veikia kaip skaičiavimo mazgai, kurie juos apdoroja, transformuoja, vizualizuoja ir t.t., • Moduliai gali būti kompiliuojami kaip atskiri vykdomieji failai, kas labai paranku paskirstytam vizualizavimui, • Kiekvienas modulis daro savo duomenų kopiją ...

  35. MVE: Idėjos Duomenų adresų paradigma (patobulinta): • Efektyviau ir taupiau tvarko atmintį, • Vizualizavimo tinklu perduodami ne duomenys, bet jų adresai, • Gerai realizuojama OOP, • Duomenys gali būti saugomi “globalioje” atmintyje, • Labai patogu naudojimui “bendrosios atminties” super-kompiuteriuose.

  36. MVE: Privalumai ir trūkumai Pagrindiniai privalumai: • Labai universalios,nes skirtos visoms vizualizavimo sritims, • Pakankamai lanksčios, nes leidžia diegti savo modulius, • Pateikiamas platus modulių pasirinkimas ir “fantastiška” grafinė aplinka. MVE orientuotos vartotojams: • Labai patogu dirbti, • Vartotojui nebūtina programuoti, • Nepaisant to, jis gali kurti programas kitiems vartotojams. Pagrindinės išvados: • Universalios sistemos yra pakankamai griozdiškos, todėl jas sunku optimizuoti specifinei aplikacijai, • Artimesnės vartotojams, nei programuotojams, • Developerių naudojamos sudėtingiems galutiniams vartotojų produktams kurti, kuriuos naudoja stambios korporacijos.

  37. AVS/Express AVS (Application Visualization System) pimoji MVE: • Turi virš 800 modulių (ko gero daugiausia), • Moduliai sujungti į kryptingą beciklį grafą (directed acyclic graph). Skirta kelioms vartotojų grupėms: • Galutiniams vartotojams, kuriems nebūtina turėti daug programavimo įgūdžių ar subtilų vizualizavimo supratimą, • Patyrusiems vartotojams ar programuotojams, kurie turi pakankamai įgūdžių išplėsti sistemos funkcionalumą (kurti savo modulius ir t.t.), • Profesionaliems programuotojams, siekiantiems greitai kurti galutines vartotojų programas, o jų dalis panaudoti kitoms programoms. 1994 išleistas pilnai OO produktas AVS/Express.

  38. AVS/Express Ankstyvojo AVS trūkumai: • Neefektyvus atminties modelis, • Kiekvienas modulis yra atskiras vykdomasis failas (neefektyvu PC), • Sunkiai plečiamas duomenų tipas, • Palaikomos tik Fortran, C, C++ kalbos. • Ribota vartotojo sąsajos architektūra. AVS/Exprerss naujovės: • Duomenų adresų (Data reference) atminties modelis, • Unifikuoti struktūriniai ir nestruktūriniai duomenys, • Sukurta interpretatoriaus kalba, palengvinanti vartotojo darbą (nereikia pastoviai kompiliuoti/linkinti), • Pilnai OO architektūra, leidžianti tam tikras C++ klases diegti kaip savo modulius.

  39. AVS/Express: UI Network Editor rodo darbinę erdvę: • Sugrupuotų modulių bibliotekas (Toolkit Libraries) • Vizualizavimo tinklą, • Reikalui esant “išplečiam” modulio vidinę struktūrą.

  40. AVS/Express: UI Network Editor rodo darbinę erdvę:

  41. AVS/Express: UI Data Viewer rodo vizualizuotus duomenis: • Atvaizdavimo paviršių, • Vartotojo sąsajos widgetus, • Atvaizdavimo posistemės parametrus.

  42. AVS/Express: UI Data Viewer rodo vizualizuotus duomenis:

  43. AVS/Express: Moduliai AVS moduliai gali būti suskirstyti kategorijomis: • Vizualizavimo moduliai: • Duomenų įvestis/išvestis, • Filtrai, • Mappers (kuria naują geometriją), • Field Mappers (iš pirminių duomenų generuoja tinklinius duomenis). • Vartotojo sąsajos GUI kūrimo moduliai: • Klasikiniai sąsajos widgetai (buttons, sliders, frames). • Interaktyvios sąveikos su vartotoju moduliai: • Reikšmių zondai, • Kameros kelio redaktoriai, • Geometrijos redaktoriai. • Specializuotų programų kūrimo moduliai: • Subprocesų vykdymas, • Procesų nutraukimas, • Dinaminis modulių pakrovimas.

  44. AVS/Express: Moduliai AVS modulio pirminė struktūra: • Atitinka ankstyvąją vizualinio programavimo paradigmą, • Modulio sąsaja apibrėžiama įvesties/išvesties portais bei parametrais, kurie gali būti vartotojo koreguojami per “widgetus” ar “kontrolės panelius”, • Modulio skaičiavimai ar kitos operacijos nusakomos Fortran/C ar C++ programinių kalbų kodais.

  45. AVS/Express: Moduliai AVS modulio patobulinta struktūra: • Vėlyvesnioji vizualinio programavimo paradigma išplėtė šią koncepciją, • Ji tapo labiau OO, palaikoma interpretatorių kalbų, • Leidžia naujus modulius kurti dirbant grafinėje aplinkoje, • “Makro” moduliai kuriami iš kitų modulių su grafiniu redaktoriumi, • Duomenų nuskaitymo moduliai (readers) kuriami su specialiais grafiniais redaktoriais.

  46. AVS/Express: Moduliai Object Manager valdo modulius (objektus) ir turi kelias sąsajas: • Network Editor pagalba – aukščiausio lygio grafinė sąsaja nepatyrusiems vartotojams, kuri leidžia kurti objektus, apibrėžti ryšius, inicializuoti ir redaguoti objektus, • V interpretatoriaus kalba – labiau patyrę vartotojai naudoja greitam “prototype editing”, • Object Manager API – žemiausio lygio sąsaja Fortran, C ir C++ kodams. Naujų modulių kūrimas: • Grafinis modulio generatorius generuoja modulio kodo skeletą, kurį užpildžius turiniu, gaunamas AVS modulis įprastinėje aplinkoje, • “Run-time generation” kuriams modulio vykdomasis failas, kuris gali būti vykdomas platfoemoje be AVS instaliacijos.

  47. AVS/Express: Duomenų tipas Standartinis lauko duomenų tipas: • Unifikuoja struktūrinius ir nestruktūrinius tinklus, • Paskutinėse versijose efektyviai palaiko priklausančius nuo laiko duomenis, • Atvaizdžiai, • Tūriai, • Geometrija, • Baigtinių skirtumų metodas, Baigtinių elementų metodas.

  48. AVS/Express: Atvaizdavimas Data Display Kit integruoja atvaizdavimo darbus ir palaiko įvairią žemo lygio atvaizdavimo programines įrangą: • Kiekvienai palaikomai platformai (Cave, Reality Centre), • Papildomai teikiama OpenGl ar XGL, PEXlib. • Duomenis atvaizduoja tiesiogiai, be pavertimo geometrija, • 3D duomenis, 2D duomenys ir atvaizdžiai gali būti pateikiami viename vaizde.. DDK architektūra leidžia lengvai įdiegti: • Naujo tipo duomenis, • Naują atvaizdavimo programinę įrangą, • Naujas vartotojo sąsajas.

  49. AVS/Express: Atvaizdavimas DDK architektūra: • Palaiko daug atvaizdavimo sub-sistemų, • Lengvai diegiamos naujos!

  50. AVS/Express: Atvaizdavimas AVS/Express Multipipe Edition įdiegta SGI Multipipe Toolkit: • Palaiko lygiagretumą, komunikacijas tarp procesorių, • Veikia įvairiose platformose, tame tarpe ir virtualios realybės “immersive” aplinkose, • OpenGl aplikacijos gali migruoti tarp skirtingos platformos superkompiuterių ir grafinės aparatinės įrangos konfiguracijų, • Nepalaiko scenos grafo, todėl dinaminiai scenos pokyčiai atvaizduojami efektyviau.

More Related