CIS 788.14k Project Ideas
Every student is expected to implement
one of the projects below, or a proposed (and accepted) alternative project.
I encourage you to work on or propose a project that you are personally
interested in and motivated to work on. Please schedule a time to meet with
me to discuss possible projects. You may work alone or in small teams. I
would also encourage teams composed of a member from the applications area
and one or two CIS members to tackle a specific problem in the application
area. If you have a problem, but can not see an easy avenue of exploration,
please come see me. A little brainstorming with a problem in hand can usually
lead to several additional ideas.
General Project Guidelines
What I expect from the projects:
- Initial task description, plan of attack and proposed timeline.
- Abstracts for at least 4 background papers (two not covered in class).
If you are working in teams, then 7 for teams of two, 9 for teams of three,
and two per team member for teams of four or more.
- Project Notebook. Preferably on the WWW. Include the items above, plus
project diary, design decisions, intermediate results, timings, data set
descriptions, and final results (images and possibly animations).
- Evaluation of the technique implemented, describing the pros and cons
of the technique and avenues for further exploration.
- Twenty minute presentation of the project for the class and other interested
parties.
- Lots of learning and lots of fun.
Project Deadlines
- Proposed Project: November 2, 1999.
- Project Plan: November 2, 1999.
- Initial Notebook: November 2, 1999.
- Progress check (updated notebook): November 23, 1999.
- Final Project and Presentation: December 6, 1999 (finals week).
Resources Available
Software
- I have several C++ Open Inventor classes for implementing textured
splats, Line Bundles, Data Slicing and Noise Splats.
- I have Marching Cubes code in a C routine and Visual C++ project file.
- LLNLs MeshTV package is installed in my project directory.
- The Volume Graphics Research Group has many volume renderers (ray tracer,
slice-based, splatting, etc.).
- LLNL has several additional C++ Open Inventor classes for tetrahedra
based volume visualization, flow volumes, and texture warping.
- AVS and Vtk are installed in the graphics lab.
Data
- The Volume Graphics Research Group has several medical and non-medical
data sets.
- I have several regular and unstructured data sets. Some with time varying
data. These include a large climate model simulation, flow fields for several
material simulations, fluid flow past a post, and a test tornado data set.
- Mathematical functions and some creativity works great for generating
test cases. I would like to see the techniques applied to at least one
real data set.
References
In addition to the campus libraries, I have the
following resources available in my office. Some of these you can check
out, others I would prefer you perused and made quick copies of (notable
the SIGGRAPH and Vis. Proceedings).
- SIGGRAPH Proceedings 1978 till current (except 79 and 81).
- IEEE Visualization Proceedings.
- IEEE Computer Graphics and Applications (CG&A).
- IEEE Transaction on Visualization and Computer Graphics.
- The Visual Computer
- SIGGRAPH Course notes (1993?)
- Other journals
People
We have many grad students in graphics and scientific
visualization that may be willing to offer advice, code or even substantial
help (if it is in their research area). Please inform me of any substantial
involvement with members outside of the class.
Possible Projects
Student Project Notebooks
Scientific Visualization
- Time Varying Data Slicing Use the Data Slicing technique described
in Visualization '96 to produce very quick time-varying iso-contours. Since
the compression was rather impressive for a single time step, create a
stream containing the points within the user specified range. Cycle through
sets of these points in real-time. Look at the compression ratios and disk
streaming issues. The user should be able to rotate, pan, zoom, change
the contour level as the animation in time is proceeding.
- Multivariate Volume Rendering As part of my thesis, I developed
a technique to represent multi-variate volumes using Noise Splats. Here,
I examined several techniques to embed noise into the texture splat reconstruction
footprint. The amount of noise represents a separate variable, and the
color of the noise can represent a third. The noise can be made to flicker
to highlight areas where the secondary variable is high. I could use some
help in applying it to real data sets and strengthening a paper I have
developed. Perhaps there are some additional extensions to look at.
- Time-varying Flow Volumes The flow volumes presented by Becker,
presented problems in turbulent flows, as the resulting topology became
twisted. One solution to this is to view the seed polygon releasing smoke
as emitting gaussian meta-balls. This would also extend the meta-ball technique
by Brill to time-varying. The basic idea is to propagate gaussions. Now,
for time dynamics, what forces are exerted on the gaussians. How do they
disperse? An alternative is to release thousands of individual point particles
and advect them each time. To get a flow volume, we either superimpose
a grid and sum the number of particles in each grid to get a volume, or
we treat each particles as a small gaussion and reconstruct a volume at
the superimposed grid. For constant color, the grid points can be splatted
in arbitrary order.
- Span-space curves for time-varying data. Generate
- Rafe's ideas
-
- Slicing of finite-element meshes Dave Reed's implementation of
slices is view oriented. We can also take slices in each of the x, y, and
z planes to in essence, resample the mesh into a more regular space. Do
this resampling with a hierarchical (quadtree, wavelet, etc.) structure.
Store and compress as a multi-resolution video. Can play back a slice loop,
or pick the proper direction and volume render.
- Decimation for smooth animation Determine system constraints to
show a smoothly changing iso-surface from a time dynamic simulation. What
are the polygons per second, the time to load the next representation into
memory, etc. With this information, either determine the amount of decimation
needed to reduce the model to the necessary size, or select a small enough
region to show. Could also extend hierarchical models to time dynamics.
- Decimation for multi-valued data sets I don't think this has been
done yet. Isosurfaces typically encode an additional variable on the surface
using color. A decimation algorithm needs to preserve sharp changes in
this color or texture as well.
- Texture mapped surfaces Some really cool papers in the 1997 IEEE
Visualization conference proceedings with texture mapped surfaces.
- Marching cubes with data texture mapped onto it Texture map multiple
data values on the surface of a contour surface. Use of color, bump maps,
displacement maps, texture maps, vector carpets, etc.
- Span space algorithm with Marching Cubes Implement a span-space
algorithm for marching cubes. Prune the interval tree and look at compaction
issues. Develop strategies for distributing work across an MPP and a graphics
workstation. Store the pruned interval tree on the local machine. Use it
to inform the processors of which zones to apply contouring to. Can we
calculate approximately how many triangles will be generated and use that
to determine a level of decimation needed to achieve interactive rates.
- Ray traced unstructured grids with acceleration Can we surround
an unstructured mesh with either a bounding cube or sphere and pre-calculate
and store the entry points for a ray tracing volume renderer? That is,
we want to avoid the complex operation of determining the first intersection
point for a ray tracer (and subsequent entry points after holed) at each
redraw. Can we precompute this and store it.
- Complex transfer function editor Develop a user interface and
algebra for generating multi-valued and complex transfer functions.
- Pick-and-Query for Splatting Highlight the splat as a 3D cursor
moves through it. Can we rasterize a textual message and place it on the
splat as we move through. If not, have a separate window displaying the
pertinent information. For scientific data, there is all kinds of interesting
data/metadata to display. For medical, show tissue classification. Show
decision support tree for classification.
- Realistic Material Textures Design textures for use in textured
splats, such that when composited together produce a texture. Sample textures
for muscle fibers, cellulite and spotted liver can be developed. Design
a set of textures with a phase shift animation to simulate bleeding.
- Multi-Splatting Use a splatting technique and for each data point.
Splat several entities for a multivariate representation. Can use a texture
splat to show a scalar field and a vector field, followed by a line bundle
to show another vector field, followed by a point cloud to show another
scalar field.
- Use of Indexed Texture maps Use the indexed texture maps of SGI
and Microsoft to achieve dynamic transfer changes, sharp transfer function
edges, and embedded contour lines. Apply this to 2D data sets and a 3D
slice based volume renderer.
- Histogram galore Explore the use of histograms as an analysis
tool in new and unique ways. Plot the histogram of a variable as a function
of time. Compute the histogram over a surface contour surface, slice, sphere,
etc. Calculate and save histograms (and other data) for many data sets.
Can we use these in data mining and searching tools? Histogram the span
space intervals. Histogram other weird entities.
- Eigenvector Visualization Calculate and map the principle eigenvector
of the stress tensor to create a vector field. Apply one of the advection
vector field techniques and one of the global vector visualization techniques
to this field.
- Magic Mirror - user interface for scientific visualization Rather
than deal with everything at high-resolution. Pass a bounding cube through
the data with a three-dimensional widget. High-res, volume render, whatever
within the cube. This can be used to load a small portion of a volume into
a 3D texture map and hardware volume render. Can also be used to sample
a finite-element mesh and place the resulting 3D volume into 3D texture
mapped hardware.
- Consistent Tetrahedralization of Finite-Element meshes Many algorithms
currently require tetrahedra in their visualization (or modeling) algorithms.
Care must be taken to ensure adjacent faces are subdivided consistently.
For hexahedra, a brute force approach would split each hex into 24 tets.
With careful analysis, I think the average number can approach 5-6, yielding
a great efficiency in algorithms operating on the resulting tets.
- Comparison Visualization Techniques Develop techniques for comparing
two simulation runs.
- Time Varying Data Visualization Develop techniques for visualizing
time-varying data.
- Visualization in Image Space Develop a set of precomputed images
that can be subsequently combined to produce a wide variety of visualizations.
Store the alpha channel with each image. Example, store the mesh topology,
separate part masks, etc. How can we encode the data into an image to preserve
either range or precision? What effect does image compression have on this?
Which images can be compressed? Can we support pick 'n query in this mode?
- Parallel or Distributed Visualization Implement any visualization
algorithm in a parallel or distributed fashion.
- Brushing for Scientific Visualization Apply and extend the brushing
techniques of multivariate visualization to more traditional visualization
setting. Is this the same as the magic mirror?
- Sharp Edged volume intervals Extend Dave Reed's slicing algorithm
to use a 1-D texture map for a sharp cut off, or sharp color and opacity
changes. Can also add contour lines with a black line.
- Volume Deformations Use free-form deformations and the texture
mapping transformation separately for a coarsely gridded FFD. We can sort
the FFD parallel-pipeds to volume render in back to front order. What is
the sort within a FFD box? It is based on the transformation.
- Selecting regions of interest using multi-variate information
Take an isocontour with associated data at each vertex. Generate hash functions
to control what portions of the surface get shown in an effort to declutter
the image space. Have the hash function based on the x,y,z or a radial
value as well as the data values d1, d2, d3, ... Now, loop through the
hash table to determine which set of triangles from the isosurface should
be displayed. Only those where the pressure exceeds 10? Only those in this
thin slab? Develop a boolean algebra based on interval trees from the different
variables. Allow for the union and intersection of slices through the interval
trees. This will produce a set of zones for various visualization tasks.
Information Visualization
- Fisheye views of many pages Create a fisheye view with Texture
memory - have a fixed Quadmesh - wrap the texture map around it and shift
it on view changes - replot higher resolution image in focus area.
- Textured Splats for the stock exchange Create textures with the
company logos and use those as splats
- Visualization techniques for Musical Instruction James Pyne in
the school of music wants to develop an interactive clarinet coaching system.
He has done research to investigate the FFT spectrum of the clarinet. Tonal
quality is directly related to the basic harmonics of this spectra. Tonal
quality is also very difficult for a Master clarinetist to convey to his
or her students verbally. It also sounds different to the performer due
to the conduction of the sound through bone rather than air. This system
would allow the performer to visually compare their tonal quality (as well
as pitch and other properties) to desired pieces. The end goal is a real
time system with simplified graphics to instruct the performer.
Algorithm Visualization
- Interactive fly-throughs of program modules during execution Mary
Jean Harrold wants to incorporate a visual traversal of the calling chain
during execution. The first task would be to have a three-dimensional or
two dimensional representation of the program structure and then automatically
"fly" from module to module in a nice smooth fashion. Lorensen's
Boolean Textures (Viz '93) may work well for this. Issues of scoping -
this module is contained in this package, etc. would be further extensions.
Work in layout design is needed to produce a 3D (or 2D) representation
that is not severely cluttered. Mary Jean also has several different models
of software, the latest being a software architecture model.
- Program Analysis - calling chain At each time slice in a program,
they is a distinct calling chain (the stack). Take a structured program
design diagram and select just that portion in the current calling chain.
Extrude this in 3D, where the third dimension represents time. As time
progresses, the calling chain changes. Areas of constant structure represent
bottlenecks in the code.
- Program Analysis - memory changes Create a 3D volume of memory
versus time. How can we represent this to determine memory changes?
- Quantize the memory values into a fixed number of colors and volume render
- Like above, but only have opacity values where the values change.
- Display as 2D multi-resolution video and allow the temporal dynamics
to catch the users attention.
- Only encode the gradient (in time) of the memory.
- Associate the PC register with the volume to determine routine that changed
the memory
- Time history plot of the PC register Use wavelets to represent
the time history of the pc. Can zoom in on specific changes, or out to
see global fluctuations. If the PC can be "segmented" to represent:
a) the type of module (e.g., graphics lib, Motif lib, system, user code,
etc.)
b) the routine
c) function or attribute of routine (I/O, functional, etc.)
Case Study
- Two or more Scalar 3D Variables Apply several visualization techniques
to look at the relationship between two variables.
- Mixed Scalar and Vector Data Apply several visualization techniques
to represent each variable and at least one to show the relationship between
them.
- Time-varying Data Examine several techniques and assess their
relative merits in illustrating time dynamics. Assess them both in an interactive
or real-time setting and in a batch visualization setting.
Education Visualization
- Elementary Numerical Analysis Write Java applets (and corresponding
WWW pages) to illustrate the iterative methods of root finding, polynomial
or transcendental interpolation, or numerical integration rules. For root
finding, show how this technique can be applied to calculating the sqrt(a)
or 1/a, where the user inputs the value of a. For polynomial interpolation,
show the fit and the error for using polynomials to approximate common
transcendental functions.
- Taylors Series
- Math Visualization
- Newtonian Physics
- Fourier or Wavelet Series
- Steepest Descent Show this in both 2D (surface) and 3D (volume).
- Simplex Method We have all seen the diagrams for this is 2D. Show
a similar depiction or develop a system to walk through the bounding volumes
in 3D. Explore techniques to represent this in 4D.
- ODE's and Fourth Order Runge-Kutta Develop animations and explanations
on one-step and multiple steps for the solution of initial value problems.
- Statistical Algorithms
- Chemistry / Physics Show the particle excitation with a rise in
temperature, and use this as an aid to explain P=VT. Develop one or two
similar animations and WWW pages.