CSCI 4972 Introduction to Visualization Fall 2010

Slides:



Advertisements
Similar presentations
National Alliance for Medical Image Computing Slicer3 Architecture.
Advertisements

1.1 Designed and Presented by Dr. Ayman Elshenawy Elsefy Dept. of Systems & Computer Eng.. Al-Azhar University
CP411 Computer Graphics, Wilfrid Laurier University Introduction # 1 Welcome to CP411 Computer Graphics 2012 Instructor: Dr. Hongbing Fan Introduction.
Altaf H. Khan. Great tool for effectively communicating ideas to an audience All electronic Easy to make last minute changes The undo feature encourages.
Week 7 - Monday.  What did we talk about last time?  Specular shading  Aliasing and antialiasing.
® Microsoft Office 2010 Excel Tutorial 4: Enhancing a Workbook with Charts and Graphs.
Using the Crosscutting Concepts As conceptual tools when meeting an unfamiliar problem or phenomenon.
Chapter 1 - An Introduction to Computers and Problem Solving
© by Pearson Education, Inc. All Rights Reserved.
Graphics-1 Gentle Introduction to Computer Graphics Based on: –David Brogan’s “Introduction to Computer Graphics” Course Slides, University of Virginia.
Video Object Tracking and Replacement for Post TV Production LYU0303 Final Year Project Spring 2004.
LYU0603 A Generic Real-Time Facial Expression Modelling System Supervisor: Prof. Michael R. Lyu Group Member: Cheung Ka Shun ( ) Wong Chi Kin ( )
English Word Origins Grade 3 Middle School (US 9 th Grade) Advanced English Pablo Sherman The etymology of language.
10/5/04© University of Wisconsin, CS559 Fall 2004 Last Time Compositing Painterly Rendering Intro to 3D Graphics Homework 3 due Oct 12 in class.
2. Introduction to the Visual Studio.NET IDE 2. Introduction to the Visual Studio.NET IDE Ch2 – Deitel’s Book.
Aurora: A Conceptual Model for Web-content Adaptation to Support the Universal Accessibility of Web-based Services Anita W. Huang, Neel Sundaresan Presented.
TerraForm3D Plasma Works 3D Engine & USGS Terrain Modeler Heather Jeffcott Craig Post Deborah Lee.
GIS for Environmental Science ENSC 3603 Class 19 3/24/09.
C O M P U T E R G R A P H I C S Guoying Zhao 1 / 16 Computer Graphics Course Introduction.
COMP 175: Computer Graphics March 24, 2015
Zhonghua Qu and Ovidiu Daescu December 24, 2009 University of Texas at Dallas.
Computer Graphics Computer Graphics is everywhere: Visual system is most important sense: High bandwidth Natural communication Fast developments in Hardware.
High level & Low level language High level programming languages are more structured, are closer to spoken language and are more intuitive than low level.
VTK: The Visualization Toolkit Part I: Overview and object models March 28, 2001.
1. 2 Plan Introduction Overview of the semester Administrivia Iterated Function Systems (fractals)
Student Centered Teaching Through Universal Instructional Design Part II.
Parser-Driven Games Tool programming © Allan C. Milne Abertay University v
Creating a PowerPoint Presentation
Week 2 - Wednesday CS361.
Computer Graphics. Requirements Prerequisites Prerequisites CS 255 : Data Structures CS 255 : Data Structures Math 253 Math 253 Experience with C Programming.
Examples of different formulas and their uses....
Data Presentation & Graphing Introduction to Mechanical Engineering The University of Texas-Pan American College of Science and Engineering.
SURFACE RECONSTRUCTION FROM POINT CLOUD Bo Gao Master’s Thesis December, 2007 Thesis Committee: Professor Harriet Fell Professor Robert Futrelle College.
Passage Three Multimedia Application. Training target: In this part , you should try your best to form good reading habits. In order to avoid your ill.
(c) University of Washington08-1 CSC 143 Models and Views Reading: Ch. 18.
Nick Draper 05/11/2008 Mantid Manipulation and Analysis Toolkit for ISIS data.
Introduction to MATLAB 7 Engineering 161 Engineering Practices II Joe Mixsell Spring 2010.
VTK. VTK Online Resources On-line Resources VTK –Manual: –Examples:
NA-MIC, 2008 June Workshop, IHK Akademie Westerham VTK
VTK: The Visualization Toolkit Qaiser Chaudry Georgia Institute of Technology June 28, 2006.
Mark Nelson 3d projections Fall 2013
Advanced Computer Graphics Spring 2014 K. H. Ko School of Mechatronics Gwangju Institute of Science and Technology.
INTRODUCTION GORT is a virtual 3D modeling environment for computer programmers. Its main area of focus is to aid in the education of programmers learning.
Review on Graphics Basics. Outline Polygon rendering pipeline Affine transformations Projective transformations Lighting and shading From vertices to.
In the name of God Computer Graphics.
Introduction to MATLAB 7 Engineering 161 Engineering Practices II Joe Mixsell Spring 2012.
Subject Name: Computer Graphics Subject Code: Textbook: “Computer Graphics”, C Version By Hearn and Baker Credits: 6 1.
Chapter 5 Introduction To Form Builder. Lesson A Objectives  Display Forms Builder forms in a Web browser  Use a data block form to view, insert, update,
Supported in part by the National Science Foundation under Grant No. HRD Any opinions, findings, and conclusions or recommendations expressed.
DATA OUTPUT  maps  tables. DATA OUTPUT output from GIS does not have to be a map many GIS are designed with poor map output capabilities types of output:
Computer Graphics Matrices
PRESENTED BY : Dr. Sarah M.Eljack 8/31/ The course codeThe course nameCredit hours COMP413Computer graphics3 The course contents (lectures + exercises)
Visualization Programming: “Libraries” and “Toolkits” Class visualization resources CSCI 6361.
INTRODUCTION TO THE WIDA FRAMEWORK Presenter Affiliation Date.
4-0 MULTIMEDIA INFORMATION AND COMMUNICATION TECHNOLOGY.
Charts MOAC Lesson 6.
Design Evaluation Overview Introduction Model for Interface Design Evaluation Types of Evaluation –Conceptual Design –Usability –Learning Outcome.
Graphics Programming. Graphics Functions We can think of the graphics system as a black box whose inputs are function calls from an application program;
USING ILLUSTRATIONS AND GRAPHICS Lesson 8 - #1.08.
6. (supplemental) User Interface Design. User Interface Design System users often judge a system by its interface rather than its functionality A poorly.
Defining the Competencies for Leadership- Class Computing Education and Training Steven I. Gordon and Judith D. Gardiner August 3, 2010.
- Introduction - Graphics Pipeline
In the name of God Computer Graphics.
MPEG-4 Binary Information for Scenes (BIFS)
VTK: The Visualization Toolkit
Computer Graphics.
Lecture 25.
The Graphics Rendering Pipeline
(c) 2002 University of Wisconsin, CS 559
Model, View, Controller design pattern
Presentation transcript:

CSCI 4972 Introduction to Visualization Fall

“Introduction” to Visualization: Where do we start? Art Computer Graphics Computation Perception Color Theory Simulation Technology Human Vision Science Graphic Design Layout User Interface Design Visualization what? why? how?

Introductions of People Barb Cutler – Faculty in Computer Science – Computer Graphics & Computational Geometry & Architectural Design Tools David Doria – PhD student in Electrical, Computer, & Systems Engineering – Research in Computer Vision & Point Cloud Data – VTK contributer And you? – Major/Research Area – Skills & Strengths

Course Structure Design Critiques Application to your area of interest/study/research Homework Assignments in VTK Readings Final Project Presentation in EMPAC Online Posts & Discussions

Readings (20%) Several readings (typically academic research papers in visualization) assigned each week Select one paper and read it carefully – If the paper is too advanced, pick one concept from the paper and use Google/Wikipedia/etc. to read more about that concept – Make a post about the paper on LMS focusing on what you learned by – Join the online discussion of the papers

Participation & Presentations (15%) Contribute to in-class & online discussions Each student will do a 3 minute presentation of one of the readings during the semester – Focus on the contributions of the paper – Summarize the online discussion

Homework Assignments (35%) Weekly programming assignments – In C++ using the VTK libraries – We’ll start working on the homework during the last half of each Wednesday class period (bring your laptop to class) – Generally due on 11pm – Individual & team-based assignments Creativity & thoughtful design encouraged and will be rewarded

Final Project (20%) Topic of your choice Team projects *highly* encouraged Last 5 weeks of the semester Presentation/Demonstration in EMPAC Studio 2

EMPAC Studio 2

Today’s Class Webpage, Syllabus, Course Structure, etc. Learning Outcomes Highlights from Assignment #0 Readings for Next Week VTK Overview Using Transformations

Learning Outcomes Analyze, interpret, and evaluate a specific visualization example and discuss how the visualization might be improved for more accurate interpretation or communication of patterns in the data. Select or design an effective visualization strategy for a variety of different types of data. Create a visualization of a new dataset using available open-source visualization resources. Use visualization to communicate results of experiments and research in their field of study. Incorporate visualization for debugging and improved program development or experimental data analysis in their field of study.

Visualization of Tetrahedra Quality 1,050K tetras (133K faces) zero-angle & zero-volume good angle, but small-volume near-equilateral & ideal-volume

Visualization of Tetrahedra Quality Octree or Adaptive Distance Field (ADF) 461K tetras (108K faces)

Visualization of Tetrahedra Quality After Simplification & Mesh Improvement 10K tetras (3K faces)

Visualization of Simplification Algorithm

Today’s Class Webpage, Syllabus, Course Structure, etc. Learning Outcomes Highlights from Assignment #0 Readings for Next Week VTK Overview Using Transformations

Visualization Design Principles Scientific Visualization vs. Information Visualization Simple clean design vs. “Chart Junk” Managing & leveraging huge amounts of data Understanding your Audience – E.g., Visualization for Science, Communication, Education, Debugging, etc. Importance of companion text (title, axis labels, legend, caption) Targeting visualization design to human perception & low-level vision processing

Visualization Design Principles Scientific Visualization vs. Information Visualization Simple clean design vs. “Chart Junk” Managing & leveraging huge amounts of data Understanding your Audience – E.g., Visualization for Science, Communication, Education, Debugging, etc. Importance of companion text (title, axis labels, legend, caption) Targeting visualization design to human perception & low-level vision processing

Visualization Design Principles Scientific Visualization vs. Information Visualization Simple clean design vs. “Chart Junk” Managing & leveraging huge amounts of data Understanding your Audience – E.g., Visualization for Science, Communication, Education, Debugging, etc. Importance of companion text (title, axis labels, legend, caption) Targeting visualization design to human perception & low-level vision processing

Visualization Design Principles Scientific Visualization vs. Information Visualization Simple clean design vs. “Chart Junk” Managing & leveraging huge amounts of data Understanding your Audience – E.g., Visualization for Science, Communication, Education, Debugging, etc. Importance of companion text (title, axis labels, legend, caption) Targeting visualization design to human perception & low-level vision processing

Visualization Design Principles Scientific Visualization vs. Information Visualization Simple clean design vs. “Chart Junk” Managing & leveraging huge amounts of data Understanding your Audience – E.g., Visualization for Science, Communication, Education, Debugging, etc. Importance of Companion text (title, axis labels, legend, caption) Targeting visualization design to human perception & low-level vision processing

Visualization Design Principles Scientific Visualization vs. Information Visualization Simple clean design vs. “Chart Junk” Managing & leveraging huge amounts of data Understanding your Audience – E.g., Visualization for Science, Communication, Education, Debugging, etc. Importance of companion text (title, axis labels, legend, caption) Targeting visualization design to human perception & low-level vision processing

Today’s Class Webpage, Syllabus, Course Structure, etc. Learning Outcomes Highlights from Assignment #0 Readings for Next Week VTK Overview Using Transformations

Readings for Next Week: "Eenie, Meenie, Minie, Moe: Selecting the Right Graph for Your Message" Stephen Few, 2004

Readings for Next Week: "Automating the design of graphical presentations of relational information" Jock Mackinlay, 1986

Readings for Next Week: "Designing Effective Step-By-Step Assembly Instructions" Agrawala et al., 2003

Today’s Class Webpage, Syllabus, Course Structure, etc. Learning Outcomes Highlights from Assignment #0 Readings for Next Week VTK Overview Using Transformations

Introduction To VTK: Overview

Outline What is VTK? What can it do? Typical workflow – (the “pipeline”)

Visualization ToolKit o Scientific visualization o Information visualization o Written in c++ o C++, Java, Python, Tcl API’s Much more than that: o Excellent framework for scientific programming

Basic Terminology Taken from: al/Tutorial.html

Sources The source of data flowing through the visualization pipeline Two types (not distinguished) o Readers: read data out of files in a wide variety of formats (images, 3D data, just about anything you can think of) o Generative sources: generate data based on input parameters. (E.g. a cone source, which generates information describing a cone, given its radius and height.) Source To pipeline…

Filters Components that receive data from other components Modify the data in some way Deliver the modified data as output to be used by other components Source Triangulate filter

Filter Connections Can have multiple input and output connections Filter Input 0 Input N … Output 0 Output N … Set/get outputs with: filter->SetInputConnection(someFilter->GetOutputPort()); If the input is an object, not a filter, use: filter->SetInputConnection(someObject->GetProducerPort());

Mappers VTK conceptually divides the pipeline into two segments o Data processing – consists of sources and filters o Rendering – consists of actors, renderers, and windows (OpenGL and OS style things) Mappers serve as the transition between the two segments Mapper DataActor

Actors Components that allow for the adjustment and control of the appearance properties (color, thickness, etc) of objects rendered onto the screen Source Mapper/actor

Renderer and RenderWindow The end of the pipeline – display your work on the screen Renderer o World to Screen coordinate conversions o Lighting RenderWindow o “Contains” a renderer o Set the window size/title/etc Source Mapper/actor Renderer/Rende rWindow

RenderWindowInteractor Determine how user actions affect the scene Right now, you just need to call Start() to display the RenderWindow More on this in a later class…

Updating the Pipeline VTK components do not normally generate their output until requested to do so To update the pipeline, call Update() on the object that you want to update! This will cause the pipeline to issue an Update() request to all if its inputs, which will in turn issue Update() requests to all of their inputs, and so on

Examples: Weather

Examples: Mathematics F(x,y,z) = a 0 x 2 + a 1 y 2 + a 2 z 2 + a 3 xy + a 4 yz + a 5 xz + a 6 x + a 7 y + a 8 z + a 9

Examples: Medical Data

Examples: Chemistry

Examples: “Excel style” plots

Examples: Generic data visualization

What does the code look like? #include int main(int, char *[]) { //Create a sphere vtkSmartPointer sphereSource = vtkSmartPointer ::New(); sphereSource->SetCenter(0.0, 0.0, 0.0); sphereSource->SetRadius(5.0); //Create a mapper and actor vtkSmartPointer mapper = vtkSmartPointer ::New(); mapper->SetInputConnection(sphereSource->GetOutputPort()); vtkSmartPointer actor = vtkSmartPointer ::New(); actor->SetMapper(mapper); //Create a renderer, render window, and interactor vtkSmartPointer renderer = vtkSmartPointer ::New(); vtkSmartPointer renderWindow = vtkSmartPointer ::New(); renderWindow->AddRenderer(renderer); vtkSmartPointer renderWindowInteractor = vtkSmartPointer ::New(); renderWindowInteractor->SetRenderWindow(renderWindow); //Add the actor to the scene renderer->AddActor(actor); renderer->SetBackground(.3,.6,.3); // Background color green //Render and interact renderWindow->Render(); renderWindowInteractor->Start(); return EXIT_SUCCESS; }

Code Breakdown: Includes #include Get used to seeing long lists of includes. This is about the minimal set.

Code Breakdown: Objects //Equivalent using smart pointers vtkSmartPointer sphereSource = vtkSmartPointer ::New(); sphereSource->SetCenter(0.0, 0.0, 0.0); sphereSource->SetRadius(5.0); sphereSource->Update(); //Create a sphere vtkSphereSource* sphereSource = vtkSphereSource::New(); sphereSource->SetCenter(0.0, 0.0, 0.0); sphereSource->SetRadius(5.0); sphereSource->Update();

Code Breakdown: Rendering “Stuff” //Create a mapper and actor vtkSmartPointer mapper = vtkSmartPointer ::New(); mapper->SetInputConnection(sphereSource->GetOutputPort()); vtkSmartPointer actor = vtkSmartPointer ::New(); actor->SetMapper(mapper); //Create a renderer, render window, and interactor vtkSmartPointer renderer = vtkSmartPointer ::New(); vtkSmartPointer renderWindow = vtkSmartPointer ::New(); renderWindow->AddRenderer(renderer); vtkSmartPointer renderWindowInteractor = vtkSmartPointer ::New(); renderWindowInteractor->SetRenderWindow(renderWindow); //Add the actor to the scene renderer->AddActor(actor); renderer->SetBackground(.3,.6,.3); // Background color green //Render and interact renderWindow->Render(); renderWindowInteractor->Start(); (Luckily, this is usually a “copy/paste” with a few name replacements!)

Today’s Class Webpage, Syllabus, Course Structure, etc. Learning Outcomes Highlights from Assignment #0 Readings for Next Week VTK Overview Using Transformations

Introduction to VTK: Transforms

Types of Transforms Basic transforms include: o “Rigid” transforms Translation Rotation o “Similarity” transformations Scale

Translation

Rotation

Scale

Order is Important! A translation followed by a rotation typically does not produce the same result as a rotation followed by a translation This is because the rotation is performed on the whole space around the world origin transform->PostMultiply() makes operations behave in the order that you specify them

Order is Important Demo Translation Then RotationRotation Then Translation

Transformations in VTK Can apply transformation either to the data itself (before Mapper) or to an Actor Why transform data? o You have access to the numerical result Why transform actor? o Faster o Can have multiple instances of the same data In either case, there is no reason to ever look at a transformation matrix

Transforming Data Construct a vtkTransform and then apply it with vtkTransformPolyDataFilter vtkSmartPointer transformation= vtkSmartPointer ::New(); transformation >Translate(double x, double y, double z); transformation ->RotateX(double angle); transformation ->Scale(double x, double y, double z); vtkSmartPointer transformFilter = vtkSmartPointer ::New(); transformFilter->SetInputConnection(sphereSource->GetOutputPort()); transformFilter->SetTransform(translation); transformFilter->Update();

Transforming Actor Construct a vtkTransform and then apply it directly to an actor vtkSmartPointer transform = vtkSmartPointer ::New(); transform->RotateZ(90.0); actor->SetUserTransform(transform);