120 likes | 260 Vues
Piccolo is a robust graphics toolkit that supports the creation of structured graphical objects and a hierarchical scene-graph model, ideal for developing interactive applications. This toolkit enables the construction of custom controls compatible with Windows.Forms while supporting 2D object-oriented graphics and efficient animations. With capabilities like zoomable user interfaces, cameras, layers, and views, Piccolo is designed for versatility across platforms—from .NET to Java. Developed at the University of Maryland’s Human-Computer Interaction Lab, it is a powerful choice for enhancing user experience.
E N D
Piccolo: A Scalable Structured Graphics Toolkit Aaron Clamage, Jesse Grosjean Ben Bederson University of Maryland Human-Computer Interaction Lab Computer Science Department
Piccolo:What is it? • Toolkit that supports: • structured canvas of graphical objects • hierarchical scene-graph model • creation of “controls” for use within Windows Forms • Supports 2D object-oriented graphics • hierarchies (transformation, transparency, etc.) • animation, event handling • cameras, layers, views • efficiency mechanisms • Missing structure that relies on underlying renderer • GDI+, Direct3D, OpenGL, Java2D, etc. => Open, Extensible and Efficient Human-Computer Interaction Lab
What Is It Good For? • => Structured graphics • Custom interaction • Zoomable User Interfaces Gentleware.com - Poseidon PaperLens – Microsoft Research University of Maryland Human-Computer Interaction Lab
What Is It Good For? • Structured graphics • => Custom interaction • Zoomable User Interfaces International Children’s Digital Library www.icdlbooks.org Demo SpaceTree Range Slider Human-Computer Interaction Lab
What Is It Good For? • Structured graphics • Custom interaction • => Zoomable User Interfaces U. Victoria – Ontology Visualization Demo PhotoMesa www.photomesa.com Human-Computer Interaction Lab
Where Does It Run? • Almost everywhere • Piccolo.NET • (C#) .NET for Windows • PocketPiccolo.NET • (C#) Compact Framework for Pocket PC • Piccolo.Java • (Java) for everywhere else Human-Computer Interaction Lab
Class Hierarchy Typical run-time structure How Does It Work? • => Monolithic scene-graph • Simple class hierarchy • Extend PNode to make new nodes • Simple runtime structure • Supports Custom Interaction • Efficiency mechanisms • Utilities for easy startup Human-Computer Interaction Lab
How Does It Work? • Monolithic scene-graph • => Efficiency Mechanisms • Picking • Validating bounds and updating display • Damage/repair • Driven by UI cycle • Utilities for easy startup Human-Computer Interaction Lab
How Does It Work? • Monolithic scene-graph • Efficiency Mechanisms • => Utilities for easy startup • Embedded Piccolo canvas • Designer enabled using UMD.HCIL.Piccolo; using UMD.HCIL.Piccolo.Nodes; using UMD.HCIL.PiccoloX; public class PHelloWorld : PForm { public override void Initialize() { PText text = new PText("Hello World!"); Canvas.Layer.AddChild(text); } static void Main() { new PHelloWorld(); } } Code Human-Computer Interaction Lab
Performance Analysis Scenegraph manipulation speed Rendering Speed [Bederson, Grosjean, Meyer - TSE 2004] Human-Computer Interaction Lab
Conclusions / Directions • Scenegraphs are useful to • Provide efficient picking and rendering • Support highly customized interaction • But at a cost… • Not always the best way to store the data • Harder to plug in new visualizations • Toolkits are usually worth their weight • Piccolo’s Future: • Finish website, tutorials, etc. • Hook up to other renderers (Direct3D, OpenGL) • Build more apps! • Funded by: • Microsoft • Initially by: • DARPA • NSF www.cs.umd.edu/hcil/piccolo Human-Computer Interaction Lab
My Interest in this Workshop • I want to better understand • Challenges other IV toolkit designers are facing • How Piccolo fits in with other toolkits • I want to explore the feasibility of creating a universally useful infrastructure Human-Computer Interaction Lab