1 / 21

Vizualizavimo Sistemos

V TK Interaktyvumas. Vizualizavimo Sistemos. Paruošė: IG-08 grupės studentas Andrius Mikalajūnas. VTK: Command/Observer modelis. VTK da žnai naudojama interaktyvioms programoms kurti, todėl reikalinga sąsaja su vartotojo programomis ar kitomis sistemomis: Sąsaja su GUI,

cate
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 Interaktyvumas Vizualizavimo Sistemos Paruošė: IG-08 grupės studentas Andrius Mikalajūnas

  2. VTK: Command/Observer modelis VTK dažnainaudojama interaktyvioms programoms kurti, todėl reikalinga sąsaja su vartotojo programomis ar kitomis sistemomis: • Sąsaja su GUI, • Bendra sąsaja su kita programine įranga, • Vykdant operaciją, pateikti objektų statusą. Realizuotas atgalinių kvietimų (callbacks) mechanizmas: • Command/Observer modelis, • Kiekvienas VTK objektas palaiko AddObserver() metodą, • Stebėtojai išvedami iš vtkCommand klasės, • Privaloma įdiegti virtualų vtkCommand klasės Execute() metodą, kuriame realizuojama reikiama “komanda”. AddObserver() metodas turi du pagrindinius argumentus: • Įvykį (Event), kurį reikia užfiksuoti, • Komandą (Command), kuri kviečiama įvykiui įvykus. Dažniausiai naudojama interaktyvumui, GUI palaikymui ir “widgets”. VTK objektai tampa nepriklausomais nuo konkretaus GUI.

  3. VTK: Command/Observer modelis Pagrįstas įvykiais (Events), kurie signalizuoja įvykus svarbiai operacijai: • Vartotojui atvaizdavimo lange paspaudus kairįjį pelės klavišą, VTK fiksuoja LeftbuttonPressEvent įvykį, • Dauguma filtrų palaiko įvykius StartEvent/ProgressEvent/EndEvent, • vtkRenderWindow palaiko AbortCheckEvent įvykį. Stebėtojų (Observers) objektai registruoja įvykius ir į juos reaguoja: • vtkRenderWindow užfiksuojamas langų sistemos įvykis, • Įvykis paverčiamas VTK įvykiu ir perduodamas registruotam stebėtojui, • Stebėtojas reaguoja į įvykį atlikdamas apibrėžtus veiksmus ir gali: • Permesti įvykį pagal prioritetą sekančiam stebėtojui, • Panaikinti tolimesnį įvykio apdorojimą (neperduoti jo kitiems stebėtojams). Daug stebėtojų objektų gali laukti to paties įvykio: • Didelis Command/Observer modelio privalumas, • Paprastai pelės klavišo paspaudimą gali apdoroti vtkInteractorStyle, vtk3DWidget ar bet kuris kiras stebėtojas.

  4. 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.

  5. VTK: vtkRenderWindowInteractor vtkRenderWindowInteractor: • Atvaizdavimo lange vtkRenderWindow užfiksuoja įvyki, • Paverčia specifinį langų sistemos įvykį VTK įvykiu, • Persiunčia VTK įvykį vtkInteractorStyle arba vtk3DWidget klasės objektui. vtkRenderWindowInteractor realizuojamas konkrečiomis klasėmis: • vtkWin32RenderWindowInteractorWindows OS, • vtkWin32RenderWindowInteractorX windows Unix OS, • Inicializuojamas Initialize() metodu, • Įvykiai pradedami fiksuoti (EventLoop) po metodo Start() kvietimo. vtkInteractorStyle klasės objektų pavyzdžiai: • vtkInteractorStyleTrackBallCamera manipuliuoja kamera “trackball” stiliuje, • vtkInteractorStyleJoysticCamera manipuliuoja kamera “joystick” stiliuje, • vtkInteractorStyleJoysticCamera gali perjungti tarp“trackball” ir “joystick” stilių bei kameros ir aktoriaus manipuyliacijos, • vtkInteractorStylerubberBandZoom “zoomina” objektąpiešiant lange kvadratą.

  6. VTK: Įvykiai (Events) Visi filtrai (išvesti iš vtkAlgorithm) palaiko įvykius: • StartEvent signalizuoja, kad filtras pradėtas vykdyti, • ProgressEvent parodo kiek darbo atlikta (palaikomas ne visuose filtruose), • EndEvent signalizuoja, kad filtras baigtas vykdyti, • vtkDemandDrivenPipeline įvykdo StartEvent/EndEvent įvykius visuose filtruose, • Labai patogu GUI parodyti naudotojui vykdymo eigą. Visos vtkInteractorStyle ir vtk3DWidget poklasės palaiko įvykius: • StartInteractionEvent fiksuojamas nuspaudus pelės butoną (pvz), • InteractionEvent fiksuojamas judinant pelę ir reikalauja veiksmo (pvz),, • EndInteractionEvent fiksuojamas atleidus pelės butoną (pvz). vtkRenderWindow atvaizdavimo metu palaiko įvykį: • AbortCheckEvent, kuris leidžia naudotojui nutraukti atvaizdavimą.

  7. VTK: Įvykiai (Events) vtkRenderWindowInteractor palaiko įvykius: • StartPickEvent signalizuoja, apie pelės spragtelėjimą, • UserEvent fiksuoja klavišo “u” paspaudimą atvaizdavimo lange, • EndPickEvent signalizuoja, apie pelės spragtelėjimo pabaigą, • UserEvent fiksuoja klavišo “e” paspaudimą atvaizdavimo lange. VTK sąsajos su Tcl/Tk iliustracija: • Atvaizdavimo lange paspaudus “u” fiksuojamas įvykis UserEvent, • Reaguojant kviečiamas Tk GUI “widgetas” vtkInteractor, • Pastarasis leidžiantis įvedinėti Tcl komandas, o rezultatą matyti VTK lange.

  8. VTK: Sąveika ir GUI sąsajos Įvairios programinės įrangos sistemos turi daug įrankių GUI kurti, todėl sąsajos mechanizmas yra labai naudingas: • Interpretacinė kalba Tcl pateikia populiarius ir patogius Tk “widgetus”, o vtkRenderWindow tiesiogiai “įdedamas” į Tk programos aplinką. • Java kalba turi galingą JavaSwing GUI kurti ir nuotolinio darbo įrankius, o VTK pateikia Java AWT terpės atvaizdavimo langą vtkPanel.

  9. VTK: Sąveika ir GUI sąsajos Didžiausi darbo su Java privalumai: • Nuotolinio darbo įrankiai, • Integruota aplinka NetBeans IDE, • GUI kuriami galingu JavaSwing.

  10. VTK: Sąveika ir GUI sąsajos VTK atvaizdavimo langas tiesiogiai įterpiamas į įvairių terpių GUI: • MFC (Microsoft Foundation Classes) – gali valdyti daug langų vienu metu, • Qt pagrįstas vizualizavimo paketo ParaView dizainas.

  11. VTK: Sąveika ir GUI sąsajos VTK atvaizdavimo langas tiesiogiai įterpiamas į įvairių terpių GUI: • wxWindows, • Pavyzdys darytas su Python.

  12. VTK: Widgets vtk3Dwidget–aukšto lygio interaktyvaus VTK vizualizavimo įrankiai: • Pozicionuoja objektus atvaizdavimo lange: taškus, linijas, plokštumas, kubus, sferas, skaliarų spalvines legendas, • Manipuliuoja splainais, ortogonaliomis plokštumomis tūriuose.

  13. VTK: Widgets vtk3Dwidget pateikia: • Pozicijos ir transformacijų informaciją, • Neišreikštines funkcijas (pjūviams, karpymui, pašalinimui), • Primityvus: taškus ir linijas (srovės funkcijoms, zondavimui).

  14. VTK: Widgets vtk3Dwidget turi reprezentacija atvaizdavimo lange: • Reprezentaciją sudaro “widget” geometrija (pvz. tiesė, plokštuma, sfera), • Reprezentaciją papildo specialios sferos, skirtos interaktyviai transformuoti geometriją (pvz. sferos atkarpos galuose vtkLineWidget), • Reprezentacijos valdymas pasižymi intuityvumu, specialiomis detalėmis.

  15. VTK: vtk3DWidgets vtk3DWidgets išvedami iš klasės vtkInteractorObserver: • vtk3DWidgets stebi įvykius lange vtkRenderWindow, kuriuos užfiksuoja vtkRenderWindowInteractor, • vtkInteractorStyle išvedami iš tos pačios klasės, bet jie neturi reprezentacijos atvaizdavimo lange, • vtkInteractorEventRecorder registruoja įvykius ir perduoda juos sekančiam stebėtojui, kurių gali būti ne vienas.

  16. VTK: vtk3DWidgets Bendra vtk3DWidgets panaudojimo procedūra: • Sukuriamas “widgeto” objektas: • vtkBoxWidget *boxWidget = vtkBoxWidget::New(); • Susiejamas su fiksuojančiu įvykius vtkRenderWindowInteractor; • boxWidget->SetInteractor(iren); • Kuriamas stebėtojas reaguojantis į nurodytą įvykį(pagrindiniai įvykiaiStartInteractionEvent, StartInteractionEvent, EndInteractionEvent) • vtkMyCallback *callback = vtkMyCallback::New(); • boxWidget->AddObserver(vtkCommand::InteractionEvent, callback); • “Widgetas” susiejamas su objektais: • Su vtkDataSet metodu SetInput(), • Su vtkProp3D metodu boxWidget->SetProp3D(coneActor); • “Widgetas” pozicionuojamas scenoje: • Jei susietas su objektu, tai boxWidget->PlaceWidget(); • Kitaip, boxWidget->PlaceWidget(double bounds[6]); • “Widgetas” įjungiamas: • Klavišo “i” nuspaudimu, • boxWidget->On();

  17. VTK: Widgets realizacija vtk3Dwidget realizavimas išskaidytas į dvi bazines klases: • vtkAbstractWidgetapdoroja įvykius (events), • vtkWidgetRepresentation apibrėžia “widget” geometrine reprezentaciją, • Reprezentacija pilnai atskirta nuo įvykių apdorojimo. vtkAbstractWidget atlieka: • Prideda stebėtojus (observers), • Apdoroja įvykius (events), • Atlieka atgalinius kvietimus (callbacks) ir t.t vtkWidgetRepresentation sudaro: • Pagrindas vtkProp (gali būtu sudaryta iš kelių vtkProp), • API komunikacijai su “widget”, • Metodai interaktyviam reprezentacijos pasirinkimui ir manipuliavimui, • Reprezentacija nieko nežino jos “widget”.

  18. VTK: Įvykių sąsajos (customization) Įvykių sąsajų pritaikymas individualiems poreikiams: • VTK įvykiai (VTK Event), • “Widgetų” įvykiai (WidgetEvent), • Metodų kvietimai (Method invocation), • Pokyčiai žemame lygyje.

  19. VTK: Įvykių sąsajos (customization) Aparatinės įrangos įvykiai lanksčiai siejami su veiksmais: • VTK įvykiai (VTK Event) atskirti nuo “widgetų” įvykių (WidgetEvent), • “Widget” įvykiai siejami su metodų kvietimais (Method invocation), • LankstusvtkWidgetEventTranslatoržemėlapis veikia EventId pagrindu, bet atrenkant iš sąrašo EventList įvertinami ir kiti vtkEvent kvalifikatoriai.

  20. VTK: vtk3DWidgets vtkBoxWidget reprezentuojamas stačiakampe dėže: • Manipuliuoja transformacijų matrica, • Gali pateikti neišreikštinę funkciją pašalinimui, karpymui.

  21. VTK: vtk3DWidgets vtkImagePlaneWidget vizualizuoja 3D duomenis 3 plokštumomis: • Gaunami vaizdai yra 2D, bet plokštumos interaktyviai stumdomos.

More Related