[GSoC 2008 - Accepted] OgreCollada
Posted: Tue Mar 04, 2008 7:17 am
I know this is not directly part of Ogre, but heck, OgreCollada can be a major asset to the Ogre community. It's a fantastic replacement for the dotScene format (which we know needs an update) and I'm sure most of us have been plagued at one stage or another by getting that dang camera animation from [insert your 3D animation package here] to Ogre or animate all those objects in place or just to get the general feeling of "gee, that was easy to load the whole scene and all it's animations",
At the moment things that needs to be finished on the project:
*animation support – both skeletal and morph/pose.
*Collada Viewer - which will also double as an editor and exporter
*Throw a multitude of different Collada files at the OgreCollada to make sure it works
Any comments?
-----------
Here is the latest edit of the proposal (April 1st):
OgreCollada - Digital Asset Exchange for Ogre.
OgreCollada Overview:
---------------------
The OgreCollada project (written in C++, utilising the FCollada API) was started by Gregory "Xavier" Junker. The idea is to use COLLADA as intermediate format the Ogre content create pipeline. OgreCollada has a command line utility, ColladaConverter, which is used to convert COLLADA files to production ready content, e.g., using COLLADA as a scene graph format while storing mesh data in Ogre's binary format and writing COLLADA FX shaders to Ogre materials scripts (Note that the ColladaConverter utility is not yet functional). Another utility in the OgreCollada toolset is the ColladaViewer. The purpose of the viewer is, at the moment, mainly to preview COLLADA documents (meshes, shaders, animations). This GSoC will mainly focus on implementing skeletal animation support for OgreCollada.
Motivation:
-----------
The main advantage that OgreCollada provides is an improvement in Ogre's content creation pipeline. Many popular 3D modelling / shader authoring software sports COLLADA and/or COLLADA FX exporters. This relieves Ogre users of the burden of having to develop specialised exporters, intermediate file formats and parsers. OgreCollada would allow Ogre users to gain access to as much authored content as possible and can then selectively use whatever they need.
OgreCollada Scope for GSoC 2008:
--------------------------------
This will be a continuation of the OgreCollada project started by Gregory Junker. The biggest piece missing in the puzzle is support for skeletal animation. It has been mentioned on the Ogre forums that "skeletal animation" on its own does not sound ambitious enough for a full GSoC term. This has been discussed with Gregory Junker, who already attempted to implement skeletal animation support, and he advised that it may easily take up to 80% of the GSoC term to implement it. To emphasise the fact it is difficult consider that the original ColladaPlugin (see Ogre addons) had no animation support whatsoever. As for other 20% (or maybe a bit less) of the GSoC I'd like to spend 10-15% of that time testing skeletal animation support with various COLLADA documents and other 5% to writing proper documentation for OgreCollada explaining the inner workings as well as illustrating how to use OgreCollada. The documentation should include a list of features that are currently implemented, features that are pending and COLLADA features that is not of interest (similar to this page: http://colladablender.illusoft.com/cms/ ... ory/18/44/).
A DAE repository will be created with sample COLLADA files demonstrating the major areas of functionality. Each major functionality will have a sample file exported from Maya as well as 3D Studio Max. (XSI testing will follow at a later stage. Not in this GSoC term). Each .DAE file will have an accompanying text file that describes the data contained within, including the program, exporter and version numbers used to create the file as well as any additional information that might be relevant.
DAE Repository: Major areas of functionality
--------------------------------------------
The repository will have one sample file each illustrating a major area of functionality in OgreCollada. For each major area a sample file will exported from 3D Studio Max and another from Maya (more files will be added in the future as the application testing base expands, starting with XSI).
- Shaders: Single pass programmable CG shaders.
- Shaders: Multi pass programmable CG shaders.
- Scene node animation: nodes with transformation, scaling and rotation animations.
- Animated cameras.
- Animated lights.
- Skinned mesh with skeletal animation.
License:
--------
OgreCollada has been developed under the MIT license.
Current State of OgreCollada:
-----------------------------
The OgreCollada plugin can load triangulated mesh data (ignores other types of mesh data for now), textures/materials, lighting, scene node animations (translation, rotation, scaling), uv coordinates and COLLADA FX shaders. The COLLADA FX shader support is quite mature and very usable. OgreCollada already supports single and multipass programmable shaders but the COLLADA FX support for setting render targets, performing scene blending, etc., has not yet been implemented. Note that only the CG shading language is currently supported. OgreCollada also has a nifty callback mechanism that would allow the programmer to process content in a custom manner. This can be used when a programmer might want to put all the scene nodes who's names start with "trigger_" to be grouped under a specific scene node called "Triggers". Another use of the callback mechanism might be when using some sort of editor that would alter the actual COLLADA document (by using the FCollada API) in order to write it back out again. Note that callbacks are implemented as support for Ogre's resource types are added to OgreCollada.
The ColladaViewer can currently open Collada documents and allow the user to rotate/zoom as well as play the scene node animations. The ColladaViewer is developed with wxWidgets for portability. OgreCollada's command line converter, ColladaConverter, is a work-in-progress which is not usuable at the moment.
Things not part of the GSoC 2008 scope:
---------------------------------------
The most important thing to not that falls outside of the GSoC 2008 scope is vertex animation (morph/pose). Skeletal animation has proved itself a daunting adversary and implementing vertex animation has not yet been explored therefor the complexity of vertex animation is unknown. Note that the vertex animation if a potential rabbit hole (who knows how deep it may go).
The ColladaConverter will also fall outside the scope of the GSoC 2008 because skeletal animation has the highest priority which runs the risk of occupying the whole GSoC term.
Scope Constraints / Development Plan:
-------------------------------------
In order to make the skeletal animation implementation more managable, the following constraints will be followed. Implementation will focus on the COLLADA 1.4.x specification. It will also only support loading of animation clips (unnamed animation sequences will be ignored, for now). The skeletal animation will the tested against Maya and 3D Studio Max exports (using the ColladaMaya and ColladaMax plugins from Feeling Software, respectively).
1) Startup Phase: Familiarise with FCollada API and existing source code (2-4 days)
2) Implementation Phase: (from 30th of May onward)
- If this is functional by 21st of July, then start the testing phase.
- If it is not functional, then work until 4th August then start the documentation phase.
3) Testing Phase (2 Weeks: from 21 July to 3 August):
- Perform rigorous testing with COLLADA documents containing a single skinned mesh and multiple skinned meshes from both 3D Studio Max and Maya.
- Fix skeletal animation bugs uncovered by testing.
- Document known bugs that still requires fixing by the end of this phase.
4) Documentation Phase (1 Week: 4th of August through 10th of August)
- Write a user manual explaining the usage as well as the inner workings of OgreCollada
- Clearly document implemented features and missing/pending features and known bugs.
5) Soft pencils down (11th of August to 17th of August)
- Scrub the code and finish up the documentation if it is not complete already.
Deliverables:
-------------
* Support for animation of skeletal structures: First due date: 21st July. If not completed yet then the final due date is: 4th August.
* DAE repository: Sample files with descriptive text files. Part of the testing phase. Due 4th August.
* Documentation: User manual, feature list, known bugs list. Due 10th of August.
A Note on various application exports:
--------------------------------------
Different applications may export their accompanied by extra or profile tags that may require interpretation in order to correctly load the data. This will be application specific and would require that many application exports be tested. Also, there are many ways of exporting the same thing so different applications will export the data differently (although it may still be according to specification). OgreCollada simply has to be tested thoroughly with various exports to make sure that the widest range of COLLADA documents are supported.
Additional Work:
----------------
If it happens, by some miracle, that the skeletal animation is done before the GSoC term is complete then some more work can be picked from this list:
* Fix bugs in the ColladaViewer and make sure skeletal animations can be previewed correctly. Also check that the animation menus are cleared and populated correctly when a new COLLADA document is loaded.
* Start working on vertex animation support (first morph, then pose animation).
* Implement/fix support for XSI scene node animations.
At the moment things that needs to be finished on the project:
*animation support – both skeletal and morph/pose.
*Collada Viewer - which will also double as an editor and exporter
*Throw a multitude of different Collada files at the OgreCollada to make sure it works
Any comments?
-----------
Here is the latest edit of the proposal (April 1st):
OgreCollada - Digital Asset Exchange for Ogre.
OgreCollada Overview:
---------------------
The OgreCollada project (written in C++, utilising the FCollada API) was started by Gregory "Xavier" Junker. The idea is to use COLLADA as intermediate format the Ogre content create pipeline. OgreCollada has a command line utility, ColladaConverter, which is used to convert COLLADA files to production ready content, e.g., using COLLADA as a scene graph format while storing mesh data in Ogre's binary format and writing COLLADA FX shaders to Ogre materials scripts (Note that the ColladaConverter utility is not yet functional). Another utility in the OgreCollada toolset is the ColladaViewer. The purpose of the viewer is, at the moment, mainly to preview COLLADA documents (meshes, shaders, animations). This GSoC will mainly focus on implementing skeletal animation support for OgreCollada.
Motivation:
-----------
The main advantage that OgreCollada provides is an improvement in Ogre's content creation pipeline. Many popular 3D modelling / shader authoring software sports COLLADA and/or COLLADA FX exporters. This relieves Ogre users of the burden of having to develop specialised exporters, intermediate file formats and parsers. OgreCollada would allow Ogre users to gain access to as much authored content as possible and can then selectively use whatever they need.
OgreCollada Scope for GSoC 2008:
--------------------------------
This will be a continuation of the OgreCollada project started by Gregory Junker. The biggest piece missing in the puzzle is support for skeletal animation. It has been mentioned on the Ogre forums that "skeletal animation" on its own does not sound ambitious enough for a full GSoC term. This has been discussed with Gregory Junker, who already attempted to implement skeletal animation support, and he advised that it may easily take up to 80% of the GSoC term to implement it. To emphasise the fact it is difficult consider that the original ColladaPlugin (see Ogre addons) had no animation support whatsoever. As for other 20% (or maybe a bit less) of the GSoC I'd like to spend 10-15% of that time testing skeletal animation support with various COLLADA documents and other 5% to writing proper documentation for OgreCollada explaining the inner workings as well as illustrating how to use OgreCollada. The documentation should include a list of features that are currently implemented, features that are pending and COLLADA features that is not of interest (similar to this page: http://colladablender.illusoft.com/cms/ ... ory/18/44/).
A DAE repository will be created with sample COLLADA files demonstrating the major areas of functionality. Each major functionality will have a sample file exported from Maya as well as 3D Studio Max. (XSI testing will follow at a later stage. Not in this GSoC term). Each .DAE file will have an accompanying text file that describes the data contained within, including the program, exporter and version numbers used to create the file as well as any additional information that might be relevant.
DAE Repository: Major areas of functionality
--------------------------------------------
The repository will have one sample file each illustrating a major area of functionality in OgreCollada. For each major area a sample file will exported from 3D Studio Max and another from Maya (more files will be added in the future as the application testing base expands, starting with XSI).
- Shaders: Single pass programmable CG shaders.
- Shaders: Multi pass programmable CG shaders.
- Scene node animation: nodes with transformation, scaling and rotation animations.
- Animated cameras.
- Animated lights.
- Skinned mesh with skeletal animation.
License:
--------
OgreCollada has been developed under the MIT license.
Current State of OgreCollada:
-----------------------------
The OgreCollada plugin can load triangulated mesh data (ignores other types of mesh data for now), textures/materials, lighting, scene node animations (translation, rotation, scaling), uv coordinates and COLLADA FX shaders. The COLLADA FX shader support is quite mature and very usable. OgreCollada already supports single and multipass programmable shaders but the COLLADA FX support for setting render targets, performing scene blending, etc., has not yet been implemented. Note that only the CG shading language is currently supported. OgreCollada also has a nifty callback mechanism that would allow the programmer to process content in a custom manner. This can be used when a programmer might want to put all the scene nodes who's names start with "trigger_" to be grouped under a specific scene node called "Triggers". Another use of the callback mechanism might be when using some sort of editor that would alter the actual COLLADA document (by using the FCollada API) in order to write it back out again. Note that callbacks are implemented as support for Ogre's resource types are added to OgreCollada.
The ColladaViewer can currently open Collada documents and allow the user to rotate/zoom as well as play the scene node animations. The ColladaViewer is developed with wxWidgets for portability. OgreCollada's command line converter, ColladaConverter, is a work-in-progress which is not usuable at the moment.
Things not part of the GSoC 2008 scope:
---------------------------------------
The most important thing to not that falls outside of the GSoC 2008 scope is vertex animation (morph/pose). Skeletal animation has proved itself a daunting adversary and implementing vertex animation has not yet been explored therefor the complexity of vertex animation is unknown. Note that the vertex animation if a potential rabbit hole (who knows how deep it may go).
The ColladaConverter will also fall outside the scope of the GSoC 2008 because skeletal animation has the highest priority which runs the risk of occupying the whole GSoC term.
Scope Constraints / Development Plan:
-------------------------------------
In order to make the skeletal animation implementation more managable, the following constraints will be followed. Implementation will focus on the COLLADA 1.4.x specification. It will also only support loading of animation clips (unnamed animation sequences will be ignored, for now). The skeletal animation will the tested against Maya and 3D Studio Max exports (using the ColladaMaya and ColladaMax plugins from Feeling Software, respectively).
1) Startup Phase: Familiarise with FCollada API and existing source code (2-4 days)
2) Implementation Phase: (from 30th of May onward)
- If this is functional by 21st of July, then start the testing phase.
- If it is not functional, then work until 4th August then start the documentation phase.
3) Testing Phase (2 Weeks: from 21 July to 3 August):
- Perform rigorous testing with COLLADA documents containing a single skinned mesh and multiple skinned meshes from both 3D Studio Max and Maya.
- Fix skeletal animation bugs uncovered by testing.
- Document known bugs that still requires fixing by the end of this phase.
4) Documentation Phase (1 Week: 4th of August through 10th of August)
- Write a user manual explaining the usage as well as the inner workings of OgreCollada
- Clearly document implemented features and missing/pending features and known bugs.
5) Soft pencils down (11th of August to 17th of August)
- Scrub the code and finish up the documentation if it is not complete already.
Deliverables:
-------------
* Support for animation of skeletal structures: First due date: 21st July. If not completed yet then the final due date is: 4th August.
* DAE repository: Sample files with descriptive text files. Part of the testing phase. Due 4th August.
* Documentation: User manual, feature list, known bugs list. Due 10th of August.
A Note on various application exports:
--------------------------------------
Different applications may export their accompanied by extra or profile tags that may require interpretation in order to correctly load the data. This will be application specific and would require that many application exports be tested. Also, there are many ways of exporting the same thing so different applications will export the data differently (although it may still be according to specification). OgreCollada simply has to be tested thoroughly with various exports to make sure that the widest range of COLLADA documents are supported.
Additional Work:
----------------
If it happens, by some miracle, that the skeletal animation is done before the GSoC term is complete then some more work can be picked from this list:
* Fix bugs in the ColladaViewer and make sure skeletal animations can be previewed correctly. Also check that the animation menus are cleared and populated correctly when a new COLLADA document is loaded.
* Start working on vertex animation support (first morph, then pose animation).
* Implement/fix support for XSI scene node animations.