User:Barraemme
From K-3D
Game Engine Integration
Introduction
Idea
The idea is to make it as simple as possible for the user to use K-3D as a content creation system for the chosen engine.
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.
Guide line
Project details
The project can be divided in more plugins:
- Import/Export plugins (using Collada format)
- Viewport plugin that use game engine to display and test k3d contents (for beginning I choose Ogre3d but it can be extended to other engine)
- A filter plugin that converts K-3D meshes to the format supported by the render engine, in-memory
- Basic light source ,material and particles support plugins
Import/Export plugins
For these plugins I have choose COLLADA, an open standard to represent 3d data (for more information visit http://www.collada.org/mediawiki/index.php/COLLADA ). The COLLADA supports all the features that modern 3-D interactive applications need and it is used by many game engine like Irrlicht and Ogre3D ( complete list at http://www.collada.org/mediawiki/index.php/Portal:Products_directory ). These plugins will be developed using Collada DOM API that provides a C++ object representation of a COLLADA XML instance document.
Engine viewport plugin
This plugin add a new perspective for embedding Ogre render windows (this will be write using Gtkmm).
Filter plugin
With this plugin new K-3D mesh datatype are converted (at runtime) into engine datatype and the rendered into engine viewport. It seems that OGRE do not support yet COLLADA runtime database so I have to converter K-3D nodes into OGRE specific nodes representation.
Light source and material support
This plugin add support for light and material into game engine viewport. These element will be converted (using filter plugins) into compatible Ogre3D format and then rendered into viewport.
Agenda for this summer
14 March - 30 March
- Explain project details and discuss about it.
- Complete idea project by learning about tecnologies that will be applicated at it.
- Set up system (download source code from svn, setting IDE, and more).
31 March - 26 May
- Read documentation of:
- Ogre3D (documentation and tutorial at wiki page http://www.ogre3d.org/wiki/index.php/Main_Page) - Collada (file format, features, wiki page http://www.collada.org/mediawiki/index.php/Main_Page) DONE - K3d (source code, wiki page)
- Build of a Collada mesh reader. DONE link to source specifications
- Build of a Collada document importer. WORK IN PROGRESS
- Build of a Ogre3d viewport that show some standard OGRE primitive. DONE link to specifications
27 May - 1 June
- Explain analisys and design orientation about plugins in wiki pages
2 June - 15 August
- Implement plugins int his order:
- build a viewport plugin and test it - build a filter plugin and test it - build a support for light, material plugin and test it - build a import plugin for Collada files and test it - build a export plugin for Collada files and test it
I have 3 exams at June. I do not have any other occupation in the time between July and October so I have time to concentrate on k3d fully,
Work in progress
Building a plugin for importing COLLADA polygonal mesh. DONE ->TESTING link
Building a viewport for OGRE3D. DONE -> TESTING link
About me
Hi, I am a 21 year old student of Informatics at Department of Pure and Applied Mathematics, University of Padova (Italy). I have experience in:
- programming:
C/C++ (5 years) with wxwidgets and Qt4 libraries Java (5 years) with graphics and networks libraries
- informatics algoritms and data structures
- operative systems (Unix ,Windows)
- Artificial Intelligence
- Graphics with OpenGL
- database management
- networks