Google Summer of Code 2009
From K-3D
Overview
The Google Summer of Code (GSOC) 2009 is a program providing $4500 summer stipends to students contributing to Free and Open Source Software.
Unfortunately, K-3D's application to participate this year was turned-down. You can see our Google Summer of Code 2007 Report and Google Summer of Code 2008 Report to get a feel for K-3D's past participation in GSOC. Of course, normal development on K-3D continues as it has for the past 15 years: anyone is welcome to browse through the following project suggestions, develop their own projects, and contribute to K-3D at any time!
Resources
- K-3D Mailing List - the mailing list is your main resource for getting questions answered.
- Visualization Pipeline - this is a "Must Read" for potential contributors.
- Plugin Design - An overview of how K-3D plugins work.
- Plugin Tutorial - A "hands-on" guide to creating your own plugins.
- Future Work - additional sources for project ideas.
Project Starter Ideas
Game Engine Integration
Mentor: Bart Janssens, bart.janssens@lid.kviv.be
Problem: Many open-source game / render engines lack robust content-creation support.
Goal: Provide content-creation support for an existing open-source game engine using K-3D. K-3D's modular structure lends itself perfectly to integration with an external realtime rendering engine, such as CrystalSpace or OGRE 3D.
Deliverables: Use K-3D's plugin system to provide integration with a game engine. Example plugins would include:
- A viewport displaying its contents using the external engine.
- Painters rendering different kinds of K-3D geometry in the new viewport.
- Elements specific to the engine used, i.e. light sources, particle sources, materials, etc.
- Conversion between game-engine file formats and K-3D data structures.
Requirements: Good C++ experience recommended. Experience with the engine being integrated is a plus.
References:
Multi-Core / Parallel Processing
Mentor: Timothy M. Shead, tshead@k-3d.com
Problem: As physical limits make it increasingly difficult to improve CPU speeds, hardware manufacturers are turning to "multi-processor" machines and "multi-core" processors to meet demands for greater computing power. The change from traditional single-CPU, single-core systems to ubiquitous multi-core, multi-processing machines requires significant changes in the way software is written. Some initial parallel experiments have been performed in K-3D, but much work remains.
Goal: K-3D's pipeline architecture is uniquely suited to parallel programming. Exploit multi-core, multi-processing hardware using K-3D's pipeline architecture, and develop empirical data on which techniques are best under different circumstances.
Deliverables: A successful project will deliver a set of plugins that perform computation in parallel on multi-core / multi-processor architectures, plus corresponding capabilities for instrumentation and testing. Your mentor will work with you to develop a set of plugins to be created / converted. The list will include computations of varying complexity from "embarassingly-parallel" on.
Requirements: Access to multi-core/multi-processor for development is required. Strong C++ experience recommended. Knowledge of parallel programming techniques is a plus.
References:
- Threading Building Blocks - Used in current K-3D parallel experiments.
Pipeline Visualization
Mentor: Timothy M. Shead, tshead@k-3d.com
Problem: K-3D is designed around a flexible Visualization Pipeline architecture, where data sources, filters, and sinks are interconnected by users to create a document. Currently, there is only rudimentary support for providing users with a graphical view of a subset of the pipeline.
Goal: Expand the current pipeline visualization support. Any solution will have to scale both in the number of nodes, properties, and connections, as well as providing users with a useful (not overwhelming) display of their document. We leave the nature of the display deliberately vague, to encourage out-of-the-box thinking. See Visualization Pipeline Display for ideas.
Requirements: A successful project will require good C++ programming skills and familiarity with graphical user interface programming. Experience with / interest in infoviz topics such as graph layout and visualization will be of great help.
References:
- http://cairographics.org/ - The current K-3D pipeline visualization support is written using Cairo.
Verse Protocol Implementation
Mentor:
Problem: Interacting quickly with other graphics applications.
Goal: As a first goal, implementing a client for the verse protocol supporting basic meshes. Later more complicated objects and features. (bitmaps from gimp for example)
Deliverables: Once implemented the protocol Blender could be used as an importer/exporter for various 3D data formats. Automating this task would be helpful.
Requirements: Good C++/C experience recommended. Knowledge of 3D data types, 2D textures and 3D textures projections. Familiarity with verse is a plus.
References:
Physics engine integration
Mentor: Bart Janssens, bart.janssens@lid.kviv.be
Problem: K-3D currently does not provide any tools to automate animation involving the dynamics of rigid bodies.
Goal: Integrate an existig physics engine, such as ODE
Deliverables: A set of plugins to interface with the chosen dynamics engine, to allow the animator to set forces such as gravity and to simulate collisions between K-3D meshes. Other possibilities include joints and constraints. The exact set of plugins can be negotiated with the mentor.
Requirements: Good C++ experience, knowledge of mechanics and/or the engine to be integrated is a plus.
References:
Inverse Kinematics Tools and Skin Plugin
Mentor:
Problem: K-3D lacks from appropriate tools for animating Characters. IK is a must have tool for achieving this. Also in most cases a Skin plugin is needed to deform a shape.
Goal: Provide K-3D with a set of tools to animate characters. Create the needed tools and plugins for manipulating and adjusting the character animation.
Deliverables:
- Create an IK engine o use some library.
- Develop tools to represent it like bones and for setting the engine properties.
Requirements: Good C++ experience recommended. Experience with IK theory is a plus.
References:
Integrating K-3D with the CLAM Audio Library
Mentor:
Problem: Add sound support to K-3D. CLAM follows the same philosophy as K-3D, its a procedural Audio Engine.
Goal: Add audio support to K-3D through the CLAM library. Search for the best way to create GUI to manage CLAM.
Deliverables:
- Create the necessary set of plugins to interact with the CLAM library.
- Add user interface for managing CLAM connections.
Requirements: Good C++ experience recommended. Experience with CLAM audio library is a plus.
References:
Adding more tools and manipulators to K-3D
Mentor:
Problem: K-3D has many plugins but the are hard to manipulate from the Viewport.
Goal: Create a set manipulators to easily interact with already created plugins. This set of manipulators should be combinable in order to manipulate a specific plugin.
Deliverables:
- A set of manipulators
- 3d manipulators
- 2d manipulators
- Develop a plugin to plug this manipulators into a plugin.
- This plugin should have a config file where the user could add mathematical expression, like the one handled in the ScalarExpression plugin.
Requirements: Good C++ experience recommended. Experience with 3D applications, GUI tools and OpenGL API is a plus.
References:
Enhance the snap tools of K-3D
Mentor:
Problem: The snap tool framework is already in place to be used, but the different snapping criteria need to be developed.
Goal: Create a set of snapping tools in order to model with precision with K-3D.
Deliverables:
- A set of span tools
- Snap to 3d objects (faces, edges, points)
- Snap to helpers (grids, lines)
Requirements: Good C++ experience recommended.
References:
Creating a Python Editor
Mentor:
Problem: The K-3D Python API is not supported by standard Python editors, so there is no code completion or online help for K-3D specific functions.
Goal: Create a Python editor or integrate an existing editor so that code completion and online help are available
Deliverables: A K-3D plugin for editing Python scripts, that recognises and completes K-3D commands and provides online help on the available functions. Care should be taken in the design, so that the system used to interrogate the K-3D Python API and the documentation can be reused in other systems.
Requirements: Good C++ experience, knowledge of mechanics and/or the engine to be integrated is a plus.
References: