VTK/GSoC 2014
Project ideas for the Google Summer of Code 2014
Guidelines
Students
These ideas were contributed by developers and users of VTK and ParaView. If you wish to submit a proposal based on these ideas you should contact the community members identified below to find out more about the idea, get to know the community member that will review your proposal, and receive feedback on your ideas.
The Google Summer of Code program is competitive, and accepted students will usually have thoroughly researched the technologies of their proposed project, been in frequent contact with potential mentors, and ideally have submitted a patch or two to fix bugs in their project (through Gerrit), instructions are here. Kitware makes extensive use of mailing lists, and this would be your best point of initial contact to apply for any of the proposed projects. The mailing lists can be found on the project pages linked in the preceding paragraph. Please see GSoC proposal guidelines for further guidelines on writing your proposal.
Adding Ideas
When adding a new idea to this page, please try to include the following information:
- A brief explanation of the idea
- Expected results/feature additions
- Any prerequisites for working on the project
- Links to any further information, discussions, bug reports etc
- Any special mailing lists if not the standard mailing list for VTK
- Your name and email address for contact (if willing to mentor, or nominated mentor)
If you are not a developer for the project concerned, please contact a developer about the idea before adding it here.
Project Ideas
Project page, mailing lists, dashboard.
Project: Biochemistry Visualization
Brief explanation: Addition of new data types, mappers and visualizations for biochemistry visualization. VTK has already been used in several open source biochemistry applications, but only has limited support for protein ribbons. This would build on previous work done in chemistry. Features such as marching cubes, GPU accelerated volume rendering and glyph mappers could be leveraged here. This could also make use of existing work in infovis and 2D charting to display numerical data associated with biochemistry and bioinformatics applications. Looking at the boundary between quantum calculations and molecular dynamics, with QMMM data and other output ideally.
Expected results: Support for standard biochemical representations, advanced visualization techniques of electronic structure using volume rendering, surfaces, contours etc.
Prerequisites: Experience in C++, some experience with VTK and/or OpenGL ideally, but not necessary.
Mentor: Marcus Hanwell (marcus dot hanwell at kitware dot com).
Project: Supporting a Visualization Grammar
Brief explanation: Visualization grammars like Vega are new declarative techniques for rendering arbitrary visualizations by mapping data attributes to visual properties. This project would provide a baseline implementation of a visualization grammar in VTK, combining rapid prototyping of visualizations with the graphical power and OpenGL performance of VTK.
Expected results: The result would be VTK classes to support a grammar such as Vega that for example supports that JSON specification completely or a significant subset. Features would include grammar mark implementations in VTK/OpenGL, data specification and mapping to VTK data objects like vtkTable, and infrastructure for custom interaction binding. A scripting language such as VTKPython could be potentially utilized to drive grammar creation and generation.
Prerequisites: C++ experience required, Javascript and Python experience a plus.
Mentor: Jeff Baumes (jeff dot baumes at kitware dot com).
Biocomputing In Situ Visualization
Brief explanation: Biocomputing involves using computer simulations to study biological problems. Of particular interest is [GROMACS], a versatile package to perform molecular dynamics, i.e. simulate the Newtonian equations of motion for systems with hundreds to millions of particles. It is primarily designed for biochemical molecules like proteins, lipids and nucleic acids that have a lot of complicated bonded interactions. GROMACS is optimized to run on distributed memory clusters with recent support for GPU and SSE optimization. These GROMACS supercomputing simulations produce enormous (terabytes) file output to be analyzed post process by tools that only read the trajectory (position, velocity, and forces) or coordinate (molecular structure) information, and simply guess at the topology rather than using the simulations topology defined in GROMACS.
This project would provide a baseline implementation of ParaView Catalyst for molecular in situ visualization and data analysis embedded in GROMACS based on GROMACS' computed topology and trajectory information.
Expected results: The result would be ParaView Catalyst adaptors, example python scripts, and new advanced visualization techniques for GROMACS in order to enhance the biocomputing workflow.
Prerequisites: C++ and python experience required, some experience with VTK and ParaView ideally, but not required.
Mentor: Patrick O'Leary (patrick dot oleary at kitware dot com).
CAD Model and Simulation Spline Visualization
Brief explanation: While spline curves and surfaces have been used for many years to describe CAD models, these flexible representations have often been discarded during the meshing and simulation process that is used to estimate the behavior of CAD-modeled parts in a particular environment or during a particular event. Recently, a group of techniques called IsoGeometric Analysis (IGA) has evolved in order to reduce the amount of work required to prepare simulations and to improve their accuracy. This project would develop support for arbitrary-dimensional, rational spline patches in VTK so that these simulations can be visualized properly. This may involve conversion to handle the variety of spline formats (T-Splines, NURBS, Catmull-Clark surfaces, etc.).
Expected results: The result would be a new mesh representation class, a reader, and a suite of 2-3 filters for contouring, cutting, and rendering these meshes.
Prerequisites: C/C++ experience, knowledge of rational splines and techniques for processing them (degree elevation, knot insertion/removal), and preferably some experience with VTK
Mentor(s): David Thompson (david dot thompson ta kitware dot com) and/or Bob O'Bara (bob dot obara ta kitware dot com)
Brief explanation: Development of multi-threaded algorithms in VTK. Multiple R&D efforts are leading the creation of an infrastructure to support next generation multi-threaded parallel algorithm development in VTK. These efforts are based on modern parallel libraries such as Intel TBB and Inria KAAPI. The main goal of this project will be the development of algorithms that leverage this infrastructure. The focus will be on upgrading existing core algorithms such as iso-surfacing, clipping, cutting, warping etc. to be parallel.
Expected results: A number of algorithms that execute in parallel using shared memory. Scalability of new algorithms will have to be measured and documented. Development of regression tests and examples will be also expected.
Prerequisites: Experience in C++ and multi-threaded code development. Understanding of core visualization algorithms and data structures. Some experience in VTK ideally but not necessary.
Mentor: Berk Geveci (berk dot geveci at kitware dot com)
Climate and Geo-spatial data visualization in VTK
Brief explanation: Observations show that global climate is changing and poses a serious challenge for cities around the world. The goal of this project to enhance VTK to support climate and other geospatial data visualizations which will enable the visualization community to create effective and powerful geo-informatics for urban-planners, policy-makers, farmers, and all other stakeholders to assess climate change and its impact on future environmental conditions for their region.
Expected results: The result would be VTK classes to support interactive climate and geo-spatial data visualizations, combining data from various geospatial and climate data sources such as from NASA, NOAA, and DOE, and exporting data in convenient formats such as CSV, Shapefile, GeoTIFF, PNG, Or JPEG. Development of a prototype using new functionality will also be expected.
Prerequisites: C++ experience required
Mentor: Aashish Chaudhary (aashish dot chaudhary at kitware dot com).
Project: Improving Hardware Transparency Support in VTK
Brief explanation: VTK's currently uses a depth peeling approach to provide support for transparency. Though its current implementation produces acceptable results it currently supports a limited range of graphics accelerators. This effort will investigate providing transparency support in VTK for a much larger range of hardware.
Expected results: Integrating a transparency mechanism in VTK that will support both NVidia and ATI GPUs.
Prerequisites: Experience in C++, OpenGL, GPU programing and understanding of core visualization algorithms and data structures. Some experience in VTK ideal but not necessary.
Mentor: Bob O'Bara (bob dot obara at kitware dot com).
Project: Improving Hardware Volume Rendering Support in VTK
Brief explanation: Though its current implementation produces acceptable results VTK's GPU-based volume rendering approach currently supports a limited range of graphics accelerators. This effort will investigate providing GPU-assisted volume rendering support in VTK for a much larger range of hardware.
Expected results: Integrating a GPU-assisted Volume rendering mechanism in VTK that will support both NVidia and ATI GPUs.
Prerequisites: Experience in C++, OpenGL, GPU programing and understanding of core volume rendering algorithms and data structures. Some experience in VTK ideal but not necessary.
Mentor: Bob O'Bara (bob dot obara at kitware dot com).
Project: Improving Advanced Edge Rendering Support in VTK
Brief explanation: Wireframe and Edge rendering is important for several applications, including CAD, solid modeling, non-photorealistic rendering, and technical illustration. Rendering the wireframe is important for revealing structural information of the underlying mesh used to model the object. This is especially true in scientific visualization of models submitted to numerical simulations, where the quality of the mesh is of great significance and thus has to be inspected. This project would investigate advance edge rendering techniques such as texture-based rendering for meshed surfaces.
Expected results: Integrating an advanced edge rendering mechanism in VTK.
Prerequisites: Experience in C++, OpenGL, GPU programing and understanding of core visualization algorithms and data structures. Some experience in VTK ideal but not necessary.
Mentor: Bob O'Bara (bob dot obara at kitware dot com).
Project: Supporting Solid Model Geometry in VTK
Brief explanation: Traditionally VTK has addressed the visualization needs of post-processed simulation information. Typically in these cases a tessellated mesh represents the geometric domain. This project will extend VTK's role in the simulation lifecycle by investigating approaches that will enable VTK to visualize the parametric boundary representation information used in solid modeling kernels such as CGM and OpenCASCADE, which is typical pre-processing description of the geometric domain.
Expected results: A VTK module that interfaces with one or more solid modeling kernels.
Prerequisites: Experience in C++, and data structures. Some experience in VTK, parametric surfaces and solid modeling kernels ideal but not necessary.
Mentor: Bob O'Bara (bob dot obara at kitware dot com).
Project: Cloud Enabled Remote VTK Process
Brief explanation: VTK has a powerful suite of processing and visualization filters and has support for distributed or HPC environments at a low level. However, web and cloud based processing has typically been addressed at a higher level using applications such as ParaViewWeb. This project will enable web and cloud processing directly in VTK using the python wrapped VTK engine. The resulting application will need to interact with IPython Notebooks to accept user commands and will need to interact with data sources such as JSON, XML and web hosted files/databases for input and output. The benefits of this application are three-fold. First, this will encourage reproducible research by enabling the sharing of the specific algorithms and data. Second, this will enable transparent migration of VTK code from a local installation to the cloud as problem sizes increase. And third, this becomes a powerful teaching tool for algorithms in 3D computer graphics, image processing and visualization.
Expected results: A VTK/python based application suitable for cloud processing of distributed data resources.
Prerequisites: Experience in web development, C++, VTK, and Python.
Mentor: Wes Turner (wes dot turner at kitware dot com).
Project: In Situ Analysis of Large-Scale AMR-Based Cosmological Simulations
Brief explanation: In Situ analysis is an effective technique to analyze data from large-scale simulations and alleviate the I/O limitations and performance bottlenecks. During the past year, an in situ analysis framework targeting large-scale cosmological simulations, called CosmologyTools [1], has been developed. The framework currently supports N-Body particle-based simulations. However, a lot of cosmology simulation codes utilize an AMR discretization to incorporate additional physics, such as hydrodynamics.
This project is geared towards extending the CosmologyTools framework to support AMR-based simulations. Of particular interest are, the FLASH [2] and Nyx [3] simulation codes.
Expected results: Expected results from this project are the following: (a) Extension of the CosmologyTools interface for AMR, (b) coupling with either FLASH or Nyx, (c) developing an in situ AMR-based analysis algorithm, such as, FFT or feature extraction and (d) wrapping the algorithm within the ParaView plugins provided in CosmologyTools.
Prerequisites: C/C++ knowledge required. Experience with working on distributed memory architectures and MPI would be ideal, but, it is not required. Willingness to work hard and produce results with scientific impact.
Mentor: George Zagaris (george dot zagaris at kitware dot com).
Connect VTK to Thingiverse
Brief explanation: Provide a vtkweb and/or ParaViewWeb interface to easily import and export VTK datasets to and from Thingiverse, to open up the the possibility of editing them using VTK filters from within a python-scripted pipeline. For example, VTK has filters to perform implicit modeling, resampling, subdivision smoothing, mass-property estimation (for computing volumes of ABS/PLA filament required), and scaling. The ultimate goal of the project would be to provide flexible access to these in a simple user interface; the first steps would be an interface to download Thing files, provide a way to process them into intructions/comments or modified Thing files, and then to upload the results.
Expected results: The result would be a small vtkweb application that would import/export datasets to/from Thingiverse and provide ways for people to analyse and modify the models with a small set of VTK filters.
Prerequisites: Javascript/Python experience, knowledge of Twisted, and preferably some experience with VTK or ParaView in C/C++ form.
Mentor(s): David Thompson (david dot thompson ta kitware dot com)