GSoC/GCI Archive
Google Summer of Code 2015

The Visualization Toolkit

License: New and Simplified BSD licenses

Web Page: http://www.vtk.org/Wiki/VTK/GSoC_2015

Mailing List: http://www.vtk.org/mailman/listinfo/vtk-developers

The Visualization Toolkit (VTK) is an open-source, freely available software system for 3D computer graphics, image processing and visualization. VTK consists of a C++ class library and several interpreted interface layers including Tcl/Tk, Java, and Python. VTK supports a wide variety of visualization algorithms including: scalar, vector, tensor, texture, and volumetric methods; and advanced modeling techniques such as: implicit modeling, polygon reduction, mesh smoothing, cutting, contouring, and Delaunay triangulation. VTK has an extensive information visualization framework, has a suite of 3D interaction widgets, supports parallel processing, and integrates with various databases on GUI toolkits such as Qt and Tk. VTK is cross-platform and runs on Linux, Windows, Mac and Unix platforms.

Projects

  • CAD Model and Simulation Spline Visualization This project aims at adding a few extensions to the VTK library to support spline curve- and surface-based visualizations. In this project, we will focus on rational Bézier patches which are parametric surfaces generated from the Cartesian product of two Bézier curves, since isogeometric spline simulations of many different types can generate them. Supporting this widely-used parametric representation will give VTK the ability to visualize meshes and simulations processed from CAD models.
  • Eulerian Motion Magnification This project aims to develop algorithms to extract out subtle changes in a time-dependent data set and amplify them. The data set can be considered as videos(2D data at each temporal resolution). We also plan to build custom views for Video magnification in VTK. We extract out temporal and spatial frequencies from the given data and amplify specific frequencies according to our use case, which results in minute motion, normally invisible being magnified.
  • External Faces in VTK-m I would like to develop an external facelist module in the VTK-m toolkit. Specifically, I am considering two ideas for the external faces problem, using data parallel primitives: traditional hashing and a sorting-based hashing approach. For these two approaches, I will conduct a set of experiments, spanning multiple architectures and data sets. Finally, I will focus on the more-efficient method, productize it, and contribute it back to VTK-m.
  • Improvements to Earth and Space Science Visualization Geophysical data visualization is a crucial part for the study of various areas of earth science, such as oil and mineral exploration, seismic monitoring etc. Related functions have been integrated into commercial software like Avizo, Open Inventor, Geoviz, etc. But in open source community, we still lack such software to provide solution for visualizing these kinds of data. In this project, I would like to add support for visualizing geophysical objects in VTK.
  • Shared Memory Parallelism in VTK In the first section I introduce strategies that should be considered when converting current image filters to the new SMP framework to achieve the best speed up. These strategies cover both cache coherency as well as good data access patterns. In the second section, I address potential enhancements of the SMP framework by introducing TBB/KAAPI specific functionality and discuses their advantages. The final enhancement proposed is an upgrade of the current Iso-line implementation.
  • VTK Parallel Partitioning Project Proposal VTK has a distributed data filter to partition data in non-overlapping pieces. Another more efficient implementation, which uses zoltan library, is done by pv-zoltan plugin of vtk. First part of this project is to re-implement same plugin filters using newer zoltan2 library. Second part involves, identification of ghosts cells, writing unit tests and exploring possible algorithms related to ghosts cells. Last part is to write multithreaded code to utilize all cores on node in partitioning.