Google Summer of Code 2009

From K-3D

Jump to: navigation, search

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

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:

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:

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: