1 / 46

Vizualizavimo Sistemos

V TK Architektūra. Vizualizavimo Sistemos. Paruošė: IG-08 grupės studentas Andrius Mikalajūnas. VTK: Kas tai yra?. VTK (Visualization Toolkit) – biblioteka arba įrankių rinkinys: Sukurta 1996 išėjusiai knygai papildyti bei iliustruoti, Plačiai naudojama atvirojo kodo programinė įranga:

aideen
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. VTK Architektūra Vizualizavimo Sistemos Paruošė: IG-08 grupės studentas Andrius Mikalajūnas

  2. VTK: Kas tai yra? VTK (Visualization Toolkit) – biblioteka arba įrankių rinkinys: • Sukurta 1996 išėjusiai knygai papildyti bei iliustruoti, Plačiai naudojama atvirojo kodo programinė įranga: • Kompiuterinė grafika, • Vaizdų apdorojimas, • Vizualizavimas. Pakankamai aukštas abstrakcijos lygis. Parašyta C++, bet galima kviesti iš įvairių kalbų: • Java, • Python, • Tck/Tk. Universaliausia (daugiausia funkcijų) savo srityje: • Daugiaunei850 C++ kalbosklasių, • Tame tarpe virš 200 filtrų. Tvarkoma Kitware, Inc.

  3. VTK: Kas tai yra? Pagrįsta OOD (Objektiškai Orientuotas Dizainas), tačiau • Nėra Multiple Inheritance, • Nėra Public Template Clases (meta-programavimo), todėl lengviau įvynioti į interpretacines scenarijų kalbas, • Bendra super klasė vtkObject, iš kurios išvedami visi kiti objektai, • Kitas New() metodas nei C++ kalboje paslepia aparatinę įrangą nuo vartotojo (atvaizdavimo programinė įranga, t.y. ją inkapsuliuojanti klasė, nustatoma vykdymo metu) ir dinamiškai krauna naujas sub-klases (optimizuotas). Atminties valdymas: • Įdiegtas Reference Counting ir atmintis išvaloma, kai jis lygus 0, • Patobulinta duomenų srauto paradigma, kai objektai išnaudoja OOD privalumus ir nesaugo kelių duomenų kopijų, o nuorodas į duomenis. Vizualizavimo algoritminės sekos vykdymą galima kontroliuoti iš GUI ar net interaktyvių widget pagalba: • Command/Observer strategija, • Kiekvienas filtras turi kelis pagrindinius įvykius: Start/Progress/End, kurių pagalba mes galim nustatyti kiek darbo įvykdyta.

  4. VTK: Ką daro (vizualizavimas)? Standartiniai vizualizavimo algoritmai: • Skaliarinių laukų, • Vektorinių laukų, • Tenzorinių laukų. Daugiakampių skaičiaus mažinimas. Tinklo glodinimas. Automatinis jungčių (elementų) generavimas. Vaizdų apdorojimas. Geometrija gali išsaugoti formatais: • VRML, • X3D.

  5. VTK: Ką daro (KG)? Paviršių atvaizdavimas. Tūrių atvaizdavimas: • Spindulių trasavimas programinėje įrangoje, • Tekstūrų žemėlapiai (2D) aparatinėje įrangoje, • Specializuotos aparatinės įrangos (VolumePro) tekstūrų žemėlapiai. Šviesos ir kamera. Tekstūros. Atvaizdžiai išsaugomi įvairiais formatais: • PNG, • JPG.

  6. VTK: Algoritminė seka Source - nuskaito duomenis iš failo arba juos sugeneruoja. Mapper - iš duomenų suformuoja geometriją: • viduje permeta į OpenGL. Actor - reprezentuoja objektą su visom išvaizdos savybėm. Renderer - atlieka atvaizdavimą. Window - langas displėjuje ir jo parametrai. Interactor – sąveika su vartotoju arba interaktyvumas - vaizdo valdymas: • Klaviatūta, pele, • Joystick, trackball.

  7. VTK: 7+1 pagrindiniai objektai (1) vtkRenderWindow– valdo langą displėjaus įtaise: • Nepriklauso nuo platformos, t.y. OS. • Gali atvaizduoti keli vtkRender objektai. • Lango dydis, pozicija, pavadinimas, gylis, double buffering. vtkRenderer– atlieka scenos atvaizdavimą: • Surenka vtkLight, vtkCamera, vtkActor informaciją. • Objektai vtkLight ir vtkCamera gali būti sukurti pagal nutylėjimą. • Privalo turėti nuorodą į vtkRenderWindowir vtkViewport, kur atvaizduos. vtkLight – šviesos šaltinio parametrai: • Begalinės šviesos (kryptis), taškinės (pozicija, kampas, silpnėjimas). vtkCamera – kameros parametrai: • Standartiniai parametrai: padėtis, fovea, kerpamosios plokštumos, “upvector”. • Papildomi: elevation, azimuth, zoom, roll. • Aukštasis pilotažas: stereo vaizdas.

  8. VTK: KG algoritmas vtkRendererir vtkRenderWindow – sąsaja tarp grafinės mašinos ir kompiuterio langų sistemos: • vtkViewport – vtkWindow dalis, kurioje piešia vtkRenderer, • vtkRenderWindowInteractor – užtikrina sąsają su vartotoju, • keli vtkRender gali atvaizduoti į vieną vtkRenderWindow, nors galuima sukurti ir kelis vtkRenderWindow.

  9. VTK: VTK sąveika su OpenGL VTK atvaizdavimas atliekamas žemo lygio programine įranga: • OpenGL – dažniausiai taikoma UNIX operacinėse sistemose.

  10. VTK: 7+1 pagrindiniai objektai (2) vtkActor – reprezentuoja vizualizuojamus objektus: • Pozicija ir orientacija pasaulinėje koordinačių sistemoje (objektas vtkTransform), • Transformacijos gali būti sukurtos pagal nutylėjimą. • Savybės: spalva, spalvinimas ir t.t. (objektais vtkProperty), • Glaudžiai siejasi su, vtkMapper ir turi kelias klases, nusakančias objektų elgesį, • vtkAssembly palaiko aktorių hierarchiją, kai reikia koordinuoti transformacijas. • vtkFollower visada orientuotas į kamerą (labai tinka tekstui). vtkProperty – reprezentuoja aktoriaus išvaizdos savybes: • Spalvos, permatomumas, • Šviesos atspindėjimo komponentės (diffuse, specular), • wireframe ar solid. vtkMapper – sąsaja tarp KG ir vizualizavimo algoritmų: • Pagrindinis dalykas – reprezentuoti aktorių geometriją! • Keli aktoriai gali kreiptis sietis su vienu vtkMapper objektą, • Gali “sukurti” ir viršūnių spalvas. vtkScalarsToColors subklasės duomenis paverčia spalva: • vtkLookupTable – taikomas bendriems atvejams (vizualizacijos pagrindas), • vtkColorTransferFunctions – taikomas “Volume Rendering”.

  11. VTK: vtkProp ir vtkActor vtkProp – bendriausia scenos objektų reprezentacija: • vtkProp3D – manipuliuojamos 3D ir turi bendrą 4x4 matricą, • vtkActor – tiesiogiai naudojama subklasė representuojanti objektą, • vtkActor2D – skirta 2D objektams (dažniausiai atvaizdžiams),

  12. VTK: vtkProp ir vtkActor vtkProp– bendriausia scenos objektų reprezentacija: • vtkVolume – skirta objektams tūrio atvaizdavime. • vtkProperty – reprezentuoja vtkActor išvaizdos savybes, • vtkTransform – vidinis vtkActor ar vtkVolume objektas, turintis 4x4 matricą, kontroliuojančią objekto poziciją, mastelį, orientaciją.

  13. VTK: vtkProp ir vtkMapper

  14. VTK: interaktyvumas vtkRenderWindowInteractor – užtikrina sąveika su vartotoju. Atlieka vaizdo lange valdymą: • e ar q – išeiti, • r – keičia kameros parametrus. Palaiko įvairius įtaisus: • j – “joystick” režimas, • t – “trackball” režimas. Pagrindiniai reprezentacijos modeliai: • w – “wireframe” modelis, • s – “solid” modelis. Pagrindinės “Viewer” funkcijos, t.y. transformacijos: • but1 – posūkis, • but2 – poslinkis, • but3 – mastelis.

  15. VTK: Vizualizavimo Algoritmas VTK vizualizacijos algoritmas sudarytas iš trijų operacijų: • Sources nuskaito duomenis iš išorinio šaltinio arba sugeneruoja juos pagal parametrus. • Filters apdoroja įvesties duomenų objektus ir gražina vieną ar kelis išvesties duomenų objektus į vizualizacijos tinklą. • Mappers duomenų objektus paverčia grafiniais primityvais ir pabaigia vizualizavimo algoritmą. Vizualizavimo algoritminės sekos pabaigoje sukuriami aktoriai. Aktoriai atvaizduojami KG algoritmine seka.

  16. VTK: VTK vizualizavimo objektai VTK vizualizavimo algoritmo arba tinklo pagrindą sudaro: • Duomenų objektai – reprezentuoja duomenis (informaciją): • Pateikia metodus, kurie kuria, trina, modifikuoja informaciją, • Pateikia metodus, kurie skaičiuoja duomenų charakteristikas (min, max), • Kitu būdu informacija neprieinama (inkapsuliacija), • Duomenų objektai skirstomi pagal vidinę VTK duomenų struktūrą, nes skiriasi jų apdorojimo metodai ir efektyvumas. • Procesų objektai – apdoroja duomenis ir yra skirstomi į grupes: • Sourcesobjektai, • Filtersobjektai, • Mappersobjektai.

  17. VTK: Duomenų objektai • vtkFieldData – klasė vidinei objektų reprezentacijai. Bendru atveju VTK duomenų objektai realizuoti kaip Arrays of Array. • vtkFieldData sudarytas iš vtkDataArray vienmačio masyvo, kur kiekvienas narys gali būti skirtingo tipo • Tik keli metodai tiesiogiai dirba su šios klasės objektais (duomenimis).

  18. VTK: Duomenų objektai • Mazgai ir atributai dažniausiai reprezentuojami duomenų masyvais (Arrays). • vtkDataArray – abstrakti bazinė klasė iš kurios išvedamos konkrečių duomenų tipų subklasės. • Figūroje pavaizduota tik dalis VTK klasių.

  19. VTK: Duomenų objektai • vtkFloatArray – realių skaičių vienmatis masyvas arba eilutė, taip vadinami contigous data arrays. • Turi ne tik vardą ar komponentų skaičių, bet ir atminties dydį. • Tai dinaminiai masyvai, todėl bet koks bandymas įrašyti duomenis už masyvo ribų, automatiškai kviečia Resize() metodą. • MaxId nurodo įrašytų duomenų pabaigą.

  20. VTK: Duomenų srauto koncepcija VTK naudoja duomenų srauto koncepciją, kurios pagrindą sudaro: • vtkDataObject – bendriausias duomenų objektas, neturintis konkrečios informacijos, • vtkProcessObject – dirba su duomenų objektais, kurdami naujus duomenų objektus.

  21. VTK: Reference Counting Nuorodos į objektus pakeitė daugkartinį saugojimą: • Reference Counting pagrįsta OOP, • Vidiniuose objektuose saugomos tik nuorodos, • Duomenys saugomi centralizuotai, • Nuorodos skaičiuojamos ir kai RefCount=0 duomenų objektas atlaisvinamas, • Efektyviai panaudojama atmintis!

  22. VTK: Procesų objektai Procesų objektai – apdoroja duomenis ir yra skirstomi: • Sources neturi įvesties duomenų objektų, bet turi vieną ar kelis išvesties duomenų objektus • Filters turi vieną ar kelius įvesties duomenų objektus ir vieną ar kelis išvesties duomenų objektus. • Mappers – turi vieną ar kelius įvesties duomenų objektus, bet neturi išvesties duomenų objektų.

  23. VTK: Procesų objektai Filtrai – dažniausiai sutinkami procesų objektai, sudaromi iš: • Algoritmų objektų, kurie apdoroja duomenų objektus ir informaciją. Paveldimi iš vtkAlgorithm. • Vykdymo objektų, kurie atsakingi už vykdymo valdymą. Jie pasako filtrui, kada dirbti ir kokius duomenis ar informaciją apdoroti. Paveldimi iš vtkExecutive. • Objektai tampa visiškai savarankiškais!

  24. VTK: Procesų objektai Procesų objektai (tame tarpe ir filtrai) bendrauja per portus: • Portas atitinka vieną filtro loginę įvestį (išvestį), • Tiek įvesties (Input port), tiek ir išvesties (OutputPort) portų gali būti keletas, • Porte saugoma: • Duomenys, t.y. objektas išvestas iš vtkDataObject, • Sekos informacija, objektas išvestas iš vtkInformation. • Duomenų objektai atskirti nuo porto, todėl iš anksto nereikia žinoti jų tipo.

  25. VTK: Informacijos objektai Realizuoti heterogeniniais žemėlapiais, saugo įvairaus tipo informaciją: • Sekos informacijos objektai saugo info apie sekos vykdymą. Saugomi vtkExecutive objektuose. Pasiekiami vtkExecutive:GetOutputInformation(). • Porto informacijos objektai saugo info apie porto duopmenų tipą. Saugomi vtkAlgorithm objektuose. Pasiekiami vtkAlgorithm:GetInputPortInformation(). • Užklausos informacijos objektai saugo užklausos parametrus. Perduodami ProcessRequest() metodais. • Duomenų informacijos objektai saugo info apie duomenų objektą vtkDataObject. Pasiekiami vtkDataObject:GetInformation() metodu. • Algoritmo informacijos objektai saugo info apie algoritmo objektą vtkAlgorithm. Pasiekiami vtkAlgorithm:GetInformation() metodu.

  26. VTK: Sekos vykdymo modelis Užklausa (Request) yra pagrindinė sekos atnaujinimo priemonė: • Užklausas generuoja filtrų vykdytojai Executive, • Užklausos realizuotos kaip informacijos objektai, • Keliauja per seką Executive objektų metodų ProcessRequest() pagalba. • Vykdomos Algorithm objektų metodu ProcessRequest() pagalba. • Užtikrinama algoritmų ir vykdytojų nepriklausomybė.

  27. VTK: Sources VTK Sources objektaiskirstomiį dvi kategorijas: • Reader objektai nuskaito duomenis iš išorinio šaltinio ir konvertuoja į vidinį formatą, • Procedural objektai generuoja duomenis pagal parametrus. Teoriškai, Sources objektai gali dirbti su išoriniais įrenginiais ar programomis: • Nuskaityti matavimų duomenis iš matavimų eksperimentinės įrangos. • Nuskaityti skaitinius duomenis iš modeliavimo programinės įrangos.

  28. VTK:Sources • VTK naudoja duomenų srauto koncepciją, kurios pagrindą sudaro: • vtkDataObject – bendriausias duomenų objektas, • vtkProcessObject – taip vadinami filtrai, dirba su duomenų objektais, kurdami naujus duomenų objektus.

  29. VTK: Filters VTK filtraiskirstomiį dvi kategorijas: • Imaging filtrai, • Vizualizacijos filtrai. Vizualizacijos filtrus galima skirstyti pagal įvesties parametrus: • Filtruoja vtkDataSet, • Filtruoja vtkPointSet, • Filtruoja vtkPolyData (juos gali filtruoti ir vtkDataSet bei vtkPointSet filtrai), • Filtruoja vtkStructuredGrid (juos gali filtruoti ir vtkDataSet bei vtkPointSet filtrai), • Filtruoja vtkRectilinearGrid (juos gali filtruoti ir vtkDataSet filtrai), • Filtruoja vtkUnstructuredGrid (juos gali filtruoti ir vtkDataSet filtrai).

  30. VTK: Filters

  31. VTK: Mappers • VTK mapperiaiskirstomiį dvi kategorijas: • vtkAbstraktMapper – duomenis paverčia geometrija, kuri atvaizduojama ekrane, • vtkWriter – įrašo duomenis į failą, • vtkDatasetMapper – dirba su visomis Dataset, • vtkImageMapper – dirba su atvaizdžiais, • vtkLabeledDataMapper – generuoja duomenims 3D tekstines žymes, • vtkPolyDataMapper – dirba su daugiakampiais, • vtkPolyDataMapper2D – piešia vtkPolyData ant plokštumos, • vtkTextMapper – piešia 2D tekstines anotacijas, • vtkVolumeProMapper – VolumePro aparatinės įrangos pagalba dirba su tūriais, • vtkVolumeRayCastMapper – spindulių trasavimo metodu dirba su tūriais, • vtkVolumeTextureMapper2D – 2D tekstūrų pagalba dirba su tūriais.

  32. VTK: Mapper

  33. VTK: Dataset VTK duomenys yra organizuojami į formalias struktūras Dataset: • vtkDataset – klasė, tvarkanti formalizuotus duomenis,

  34. VTK:Dataset • vtkSructuredGrid – aprašo strukturizuotus duomenis. • vtkStructuredGrid būtinai reikia visos informacijos apie mazgus, todėl jis išvedamas iš vtkPointSet.

  35. VTK:Dataset Nestruktūriniai mazgai tvarkomi klasėmis: • vtkPolyData – daugiakampių duomenys (kaip OpenGL), • vtkUnstructuredGrid – nestruktūriniai tinklai iš įvairių elementų, • “Unstructured points” klasės nėra, jie tvarkomi su vtkPolyData.

  36. VTK:vtkCell • vtkCell – bazinė visų elementų klasė, • vtkNonLinearCell – bazinė netiesinių elementų klasė, • vtkNonLinearCell – bazinė 3D elementų klasė.

  37. VTK:vtkCell vtkGenericCell – gali reprezentuoti bet kurį elementą. Elementai apibrėžiami sutvarkytu taškų sąrašu. VTK palaiko daug celių/elementų tipų: • 0D – VTK_VERTEX, VTK_POLY_VERTEX, • 1D – VTK_LINE, VTK_POLY_LINE, • 2D – VTK_TRIANGLE, VTK_TRIANGLE_STRIP, VTK_POLYGON, VTK_PIXEL, VTK_QUAD, • 3D – VTK_TETRA, VTK_VOXEL, VTK_WEDGE, VTK_PYRAMID, VTK_HEXAHEDRON.

  38. VTK:1D ir 2D elementai • VTK naudoja duomenų srauto koncepciją, kurios pagrindą sudaro: • vtkDataObject – bendriausias duomenų objektas, • vtkProcessObject – taip vadinami filtrai, dirba su duomenų objektais, kurdami naujus duomenų objektus.

  39. VTK:Trimačiai elementai

  40. VTK:Netiesiniai Elementai

  41. VTK:Netiesinių elementų padalinimas

  42. VTK:Atributai VTK palaikomi atributai priskiriami taškams arba elementams pagal Dataset modelį. vtkDataSetAttributes – bazinė atributų klasė: • Koordinuoja duomenų judėjimą iš vieno proceso objekto į kitą ir apdorojimą, • SetScalars() metodas parodo kurį lauko masyvą traktuoti kaip skaliarą. vtkPointData ir vtkCellData – subklasės konkretiems atributams.

  43. VTK:Atributai VTK palaikomi atributai (tiek taškams, tiek elementams): • Scalar – nuo 1 iki 4 skaliarų, • Normal – vienetinio ilgio vektorius, • Vector – nestruktūriniai tinklai iš įvairių elementų,

  44. VTK:Atributai VTK palaikomi atributai (tiek taškams, tiek elementams): • Tensor – 3x3 tenzorius, • Texture coordinate – 2D ar 3D indeksai į tekstūros žemėlapį, • VTK Field Data – bendriausias atributas.

  45. VTK: Dideli duomenų kiekiai Data streaming koncepcija, kuri leidžia duomenis į atmintį krauti ir apdoroti dalimis: • Valdoma trimis etapais: • UpdateInformation() – pirminė informacija, • UpdateExtents() – nustatomas atminties dydis ir išskiriama atmintis, • UpdateData() – atliekamas duomenų apdorojimas. • Viskas atliekama automatiškai. • Ši technologija tiesiogiai taikoma lygiagretiems skaičiavimams. Lygiagretūs skaičiavimai leidžia uždavinį spręsti keliais procesoriais: • SMP kompiuteriuose taikoma Multi-threading technologija, • Paskirstytos atminties kompiuterių klasteriuose taikoma MPI biblioteka, • Atliekama TriggerAsynchronousUpdate() pagalba. VTK pagrindu sukurtas galutinis vartotojo paketas ParaView, skirtas dideliems duomenų kiekiams vizualizuoti:

  46. VTK: Išvados Lengvai kuriamos grafinės aplikacijos: • OOD – lengva kurti naujas klases, Atvirojo kodo programa palaikoma programavimo įrankių: • Gerai ištestuota ir turi gausybę vartotojų, • Kompiliavimas, atliekamas su CMake, nepriklauso nuo platformos, • Testavimas atliekamas DART aplinkoje, • Dokumentacija saugoma klasių header’iuose, o Doxygen automatiškai generuoja HTML man puslapius, • Turi komercinį palaikymą (Kitware, Inc.). Įdiegta daugybė modernių algoritmų. Vizualizavimo “mašina” nėra labai greita: • Portabilumas (tinka daugeliui platformų), • C++ dynamic bindings. Plati klasių hierarchija – sunku pradėti mokytis.

More Related