CIS 410/510: Isosurfacing (pt 2)

Slides:



Advertisements
Similar presentations
Reconstruction from Voxels (GATE-540)
Advertisements

A Robust Super Resolution Method for Images of 3D Scenes Pablo L. Sala Department of Computer Science University of Toronto.
COMP 175 | COMPUTER GRAPHICS Remco Chang1/6103b – Shapes Lecture 03b: Shapes COMP 175: Computer Graphics February 3, 2015.
Advanced Iso-Surfacing Algorithms Jian Huang, CS594, Spring 2002 This set of slides are developed and used by Prof. Han-Wei Shen at Ohio State University.
VIS Group, University of Stuttgart Tutorial T4: Programmable Graphics Hardware for Interactive Visualization Pre-Integrated Splatting (Stefan Roettger)
Volume Graphics (lecture 5 : Contour Tree / Contour Spectrum) lecture notes acknowledgement : J. Snoeyink, C. Bajaj Bong-Soo Sohn School of Computer Science.
Hank Childs, University of Oregon November 6 th, 2013 Spatial-Based and Variable-Based Selections.
Hank Childs, University of Oregon November 15 th, 2013 Volume Rendering, Part 2.
Isocontour/surface Extractions 2D Isocontour 3D Isosurface.
CSE554ContouringSlide 1 CSE 554 Lecture 4: Contouring Fall 2013.
CDS 301 Fall, 2009 Scalar Visualization Chap. 5 September 24, 2009 Jie Zhang Copyright ©
University of British Columbia CPSC 314 Computer Graphics Jan-Apr 2005 Tamara Munzner Information Visualization.
lecture 4 : Isosurface Extraction
Surface Reconstruction from 3D Volume Data. Problem Definition Construct polyhedral surfaces from regularly-sampled 3D digital volumes.
Marching Cubes A High Resolution 3D Surface Construction Algorithm.
Graphing Inequalities and Functions Major Project 2 Educ220 Rachel Harrington.
CS 445 / 645 Introduction to Computer Graphics Lecture 18 Shading Shading.
Mathematical Processes GLE  I can recognize which symbol correlates with the correct term.  I can recall the correct definition for each mathematical.
COMP 175: Computer Graphics March 24, 2015
Scalar Visualization Chap. 5 September 23, 2008 Jie Zhang Copyright ©
Voronoi diagrams and applications Prof. Ramin Zabih
Advanced Computer Graphics Depth & Stencil Buffers / Rendering to Textures CO2409 Computer Graphics Week 19.
Hank Childs, University of Oregon October 3, 2014 CIS 441/541: Intro to Computer Graphics Lecture 2: The Scanline Algorithm.
Advanced Computer Graphics Advanced Shaders CO2409 Computer Graphics Week 16.
Hank Childs, University of Oregon Oct. 10, 2014 CIS 441/541: Introduction to Computer Graphics Lecture 4: Interpolating Colors and the Z-buffer.
Hank Childs, University of Oregon Lecture #6 CIS 410/510: Advection (Part 1)
Hank Childs, University of Oregon Lecture #4 Fields, Meshes, and Interpolation (Part 3)
Hank Childs, University of Oregon Lecture #3 Fields, Meshes, and Interpolation (Part 2)
3D Volume Visualization. Volume Graphics  Maintains a 3D image representation that is close to the underlying fully-3D object (but discrete)  경계표면 (Boundary.
CSE554ContouringSlide 1 CSE 554 Lecture 4: Contouring Fall 2015.
Hank Childs, University of Oregon Lecture #10 CIS 410/510: Isosurfacing.
Arrangements and Duality Motivation: Ray-Tracing Fall 2001, Lecture 9 Presented by Darius Jazayeri 10/4/01.
Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)
Hank Childs, University of Oregon Isosurfacing (Part 3)
Hank Childs, University of Oregon Unstructured Grids.
Hank Childs, University of Oregon Volume Rendering, Part 3.
Hank Childs, University of Oregon Volume Rendering, pt 1.
CHAPTER 5 CONTOURING. 5.3 CONTOURING Fig 5.7. Relationship between color banding and contouring Contour line (isoline): the same scalar value, or isovalue.
Visual Appearance Chapter 4 Tomas Akenine-Möller Department of Computer Engineering Chalmers University of Technology.
UNC Chapel Hill M. C. Lin Delaunay Triangulations Reading: Chapter 9 of the Textbook Driving Applications –Height Interpolation –Constrained Triangulation.
Hank Childs, University of Oregon Overview of VTK (Pt 3)
Advisor : Ku-Yaw Chang Speaker : Ren-Li Shen /6/12.
1 Introduction to Computer Graphics with WebGL Ed Angel Professor Emeritus of Computer Science Founding Director, Arts, Research, Technology and Science.
Solid Modeling Dr. Scott Schaefer.
Computer Graphics CC416 Lecture 04: Bresenham Line Algorithm & Mid-point circle algorithm Dr. Manal Helal – Fall 2014.
1 E. Angel and D. Shreiner: Interactive Computer Graphics 6E © Addison-Wesley 2012 Marching Squares Ed Angel Professor Emeritus of Computer Science University.
Model Optimization Wed Nov 16th 2016 Garrett Morrison.
Planar Graphs Hubert Chan (Chapter 9.7) [O2 Proof Techniques]
Visualization Fundamentals
Hank Childs, University of Oregon
POLYGON MESH Advance Computer Graphics
Visual Appearance Chapter 4
Hank Childs, University of Oregon
Hank Childs, University of Oregon
CSc4730/6730 Scientific Visualization
Orthogonal Range Searching and Kd-Trees
Real-Time Volume Graphics [06] Local Volume Illumination
Hank Childs, University of Oregon
Procedural Animation Lecture 3: Types of 3D models
Hank Childs, University of Oregon
The Graphics Pipeline Lecture 5 Mon, Sep 3, 2007.
Lecture 3 : Isosurface Extraction
Volume Graphics (lecture 4 : Isosurface Extraction)
Introduction to Meshes
CS-378: Game Technology Lecture #4: Texture and Other Maps
Functions and Graphing
Visual Algebra for Teachers
Marching Squares Ed Angel
Introduction to Meshes
Presentation transcript:

CIS 410/510: Isosurfacing (pt 2) Lecture #11 Hank Childs, University of Oregon

Outline Announcements Review Isosurfacing

Outline Announcements Review Isosurfacing

Announcements Fri OH: 3:30-4:30 Class canceled Monday YouTube lecture on SVN instead Project 5: REVERSAL 510 only. Not 410 If you want an excused absence for Final, tell me now… Also: quiz on Weds October 28th

Outline Announcements Review Isosurfacing

Height field over a terrain

Height field over a terrain

Transparent grey plane at fixed elevation (height=20)

Rendering just the intersection of the plane and the height field

Projecting the “height = 20” lines back to 2D space These lines are called isolines. Isolines represent a region where the field is constant. The isovalue for this plot is 20.

Plotting both isolines and height Have you ever seen a plot like this before? Where?

Isolines vs Isosurfaces Input: scalar field over 2D space Output: lines Isosurfaces: Input: scalar field over 3D space Output: surface Commonalities: Reduce topological dimension by 1 Produce output where scalar field is constant

Isosurface of temperature from star explosion simulation (ignore blue haze)

Iterating Over Cells For isosurface/isoline calculation, we can iterate over the cells. At the end, we take the results from each cell and put them into a single scene.

Per pixel sampling of the field Colors: >0.5: red <0.5: blue 0.5: white What observations can we make from this sampling?

Reality Check: context for isolines We have millions of cells If one cell can produce tens or hundreds of lines, then the isolines could take much more memory than the input data set

Big picture: what do we want from our isosurface? Tractable computation Can’t create 100s or 1000s of line segments per cell for super-accurate representation Continuous surface Triangles (or lines for isolines) need to connect up … no gaps.

Big idea #1: approximate the isolines / isosurface Isolines: represent them with a minimal # of segments Isosurface: represent them with a minimal # of triangles

Quiz: how to approximate our “quarter circle”?

Big picture: what do we want from our isosurface? Tractable computation Can’t create 100s or 1000s of line segments per cell for super-accurate representation Quiz: did we accomplish this? Yes: very few per cell Continuous surface Triangles (or lines for isolines) need to connect up … no gaps. Answer: we got the answer exactly right at the edge of the cell … hence no gaps. 

Effect of different isovalues Field = 0.25 Field = 0.7 Field = 0.9 What are the similarities between these pictures? Assume this cell layout X:01, Y:01, F(0,0) = 0, F(1,0) = F(1,1) = F(0,1) = 1 Quiz: write pseudocode to calculate the isoline for any V, 0 < V < 1

Assume this cell layout X:01, Y:01, F(0,0) = 0, F(1,0) = F(1,1) = F(0,1) = 1 Quiz: write pseudocode to calculate the isoline for any V, 0 < V < 1 Answer: { return ((V, 0), (0, V)); } Field = 0.25 Field = 0.7 Field = 0.9

Consider arbitrary layout A < V V < B V < C V < D (V == isovalue) F(0,1) = C F(1,1) = D Where is isoline? Note that the mesh coordinates are pretty simple … you will need to take real coordinates into account. F(0,0) = A F(1,0) = B

Consider arbitrary layout Where is isoline? F(0,1) = C F(1,1) = D P1 = (x,0) P2 = (0,y) Quiz: What are x and y? A < V V < B V < C V < D (V == isovalue) P1 P2 t = (V-A)/(B-A) x = 0+t*(1-0) F(0,0) = A F(1,0) = B t = (V-A)/(C-A) y = 0+t*(1-0)

Claim: we understand one case F(P0) < V V < F(P1) V < F(P2) V < F(P3) Quiz: how many cases are there? Answer: 2 possible states for each point P: F(P) < V or V < F(P) (note we ignore F(P) == V for today) 4 vertices, so … 24 = 16 cases Some cases are similar to each other

Outline Announcements Review Isosurfacing (some of the following slides we did cover last time)

The 16 cases Case 0 Case 1-5 Case 6-10 Case 11-15

Quiz: write down cases #s that are similar to case 14 The 16 cases We explored case 14 Quiz: write down cases #s that are similar to case 14 Case 0 Case 1-5 Case 6-10 Case 11-15

Quiz: how many different groupings are there? The 16 cases Quiz: how many different groupings are there? Case 0 Case 1-5 Case 6-10 Case 11-15

Quiz answer: There are 4 groupings The 16 cases

Problem case: ambiguity!! Solution: just pick one and go with it.

Physical interpretation of ambiguity One way connects them up, the other separates them. What’s right?

Big idea #2: pre-computation of all cases If you knew which case you had, then you would know how to proceed Pre-compute correct answers for all 16 cases and store them in a lookup table For each cell, identify which case it is in Then use corresponding lookup table to generate isosurface

Big idea #2: pre-computation of all cases If you knew which case you had, then you would know how to proceed Pre-compute correct answers for all 16 cases and store them in a lookup table For each cell, identify which case it is in Then use corresponding lookup table to generate isosurface

Pre-compute correct answers for all 16 cases and store them in a lookup table Observations about correct answers for a case: It contains one or two line segments The ends of the line segments are always along edges.

Pre-compute correct answers for all 16 cases and store them in a lookup table Edge 0 Edge 1 Edge 2 Edge 3 The ends of the line segments are always along edges. We will need to number the edges

Pre-compute correct answers for all 16 cases and store them in a lookup table Edge 0 Edge 1 Edge 2 Edge 3 Correct answer for this case: There is one line segment That line segment has end points on edge 0 and edge 3

Big idea #2: pre-computation of all cases If you knew which case you had, then you would know how to proceed Pre-compute correct answers for all 16 cases and store them in a lookup table For each cell, identify which case it is in Then use corresponding lookup table to generate isosurface

For each cell, identify which case it is in Vertex 1 Vertex 2 Vertex 3 Vertex 0 4 vertices Each has one of 2 possible classification values Lower than isovalue Call this “0” Higher than isovalue Call this “1” (ignore equality case) 1 Quiz: write down classification value for each vertex

For each cell, identify which case it is in Vertex 1 Vertex 2 Vertex 3 Vertex 0 Goal: turn classification values into a number Number should be between 0 and 15 Idea: use binary numbers V3V2V1V0  1 1 1 0  14 1 This is case 14

The 16 cases Case 0 Case 1-5 Case 6-10 Case 11-15 1 1 1 1 1 1 1 1 1 1 The 16 cases Case 0 1 1 1 1 1 Case 1-5 1 1 1 1 1 Case 6-10 1 1 1 1 1 Case 11-15

Big idea #2: pre-computation of all cases If you knew which case you had, then you would know how to proceed Pre-compute correct answers for all 16 cases and store them in a lookup table For each cell, identify which case it is in Then use corresponding lookup table to generate isosurface

Then use corresponding lookup table to generate isosurface int numSegments[16]; numSegments[0] = 0; ... numSegments[6] = 2; numSegments[14] = 1; numSegments[15] = 0;

Then use corresponding lookup table to generate isosurface int lup[16][4]; // lup == lookup lup[0][0] = lup[0][1] = lup[0][2] = lup[0][3] = -1; ... lup[6][0] = 0; lup[6][1] = 1; lup[6][2]=2; lup[6][3] = 3; … lup[14][0] = 0; lup[14][1] = 3; lup[14][2] = lup[14][3] = -1; lup[15][0] = lup[15][1] = lup[15][2] = lup[15][3] = -1;

Then use corresponding lookup table to generate isosurface int icase = IdentifyCase(cell); // case is a reserved word in C++ int nsegments = numSegments[icase]; for (int i = 0 ; i < nsegments ; i++) { int edge1 = lup[icase][2*i]; float pt1[2] = // Interpolate position along edge1 int edge2 = lup[icase][2*i+1]; float pt2[2] = // Interpolate position along edge2 AddLineSegmentToOutput(pt1, pt2); }

Isosurfacing Will follow a very similar game plan. Pre-compute correct answers for all cases and store them in a lookup table For each cell, identify which case it is in Then use corresponding lookup table to generate isosurface

Quiz: where should the isosurface go? Isosurfacing 1 Quiz: where should the isosurface go?

Quiz: where should the isosurface go? Isosurfacing 1 Quiz: where should the isosurface go?

Quiz: where should the isosurface go? Isosurfacing 1 1 Quiz: where should the isosurface go? 1 1

Quiz: where should the isosurface go? Isosurfacing 1 1 Quiz: where should the isosurface go? 1

Quiz: where should the isosurface go? Isosurfacing 1 1 Quiz: where should the isosurface go? 1

Quiz: where should the isosurface go? Isosurfacing 1 1 Quiz: where should the isosurface go? 1

Quiz: where should the isosurface go? Isosurfacing 1 1 Quiz: where should the isosurface go? 1

Quiz: where should the isosurface go? Isosurfacing 1 1 Quiz: where should the isosurface go? 1

Quiz: where should the isosurface go? Isosurfacing 1 1 Quiz: where should the isosurface go? 1

Isosurfacing V6 V7 V4 V5 We need conventions! V2 V3 V0 V1 Z Y X

Isosurfacing V6 V7 V4 V5 E2 E3 V2 V3 E1 V0 E0 V1 We need conventions! Z Y X

Isosurfacing V6 E6 V7 E7 V4 V5 E5 E4 V2 V3 V0 V1 We need conventions! Z Y X

Isosurfacing V6 V7 V4 V5 E11 E10 E9 E8 V2 V3 V0 V1 We need conventions! E10 E11 E9 E8 V2 V3 V0 V1 Z Y X

Isosurfacing V6 V7 V4 V5 V2 V3 V0 V1 static int edges[12][2] = { {0,1}, {1,3}, {2,3}, {0,2}, {4,5}, {5,7}, {6,7}, {4,6}, {0,4}, {1,5}, {2,6}, {3,7} }; V2 V3 V0 V1 Z Y X

Different cell types We know how to contour cubes How do we do tetrahedrons? Prisms? Wedges?

Our isosurface approximation is improved by computer graphics