[Bf-committers] GSoC 2009 Proposal Draft: Collada Support Improvements For Blender

Chingiz Dyussenov chingiz.ds at gmail.com
Fri Mar 27 12:43:45 CET 2009


COLLADA SUPPORT IMPROVEMENTS FOR BLENDER


Synopsis
========

COLLADA is a flexible and versatile digital assests exchange format
created by the Khronos Group consortium. It is supported by the top
commercial DCC tools like Maya, 3ds Max, Lightwave 3D, Cinema 4D and
Unreal Engine. This project is about improving COLLADA support in
Blender.


Benefits to the Blender Community
=================================

Before introduction of COLLADA there was no simple way to interchange
such complex data like skeletal animation between DCC tools. With
COLLADA this has become possible. For Blender users robust COLLADA
support means good interoperability with other DCC tools.

Current COLLADA import/export module was developed in 2006-2007 by
Illusoft. In mid-2007 the development halted and the module, in it's
current state, is incomplete and unstable.

Blender users are often having problems with current COLLADA module
due to it's instability. The module doesn't support skeletal animation
and object animation support contains flaws. Also it does little or
nothing to inform users when it fails.

In this project I will work to improve the module's stability and add
new functionality, namely object-based and skeletal animation. The
final module will also provide necessary user feedback about
unsupported features.


Deliverables
============

- Stable COLLADA import/export module supporting geometry, transforms,
  materials, lights & cameras, skinning and animation.
- Test files that demonstrate module's new capabilities and stability.
- Documentation that describes current module state and will help
  future contributors get started.


Project Details
===============

The first step will be to determine whether we need FCollada or not.

FCollada is an open-source C++ library which "offers incomparable
support for COLLADA interoperability" [2]. Basically, it is an API
which will help me concentrate on managing data structures without
worrying about how data is stored on disk.

Current python API (in collada.py) has disadvantages:
- it has to be modified to support new COLLADA versions
- it is less stable than FCollada

Why FCollada?
- it's usefulness has been proven: popular plugins like ColladaMaya &
  ColladaMAX are already using FCollada successfully
- no maintenance problems: current python module may not support
  future COLLADA versions - with FCollada we get this out-of-the-box
- FCollada "provides a higher-level interface and can import all
  versions of COLLADA" ([1])

Since FCollada is written in C++ it will have to be integrated with
Blender build system in order to be compiled and used. FCollada
compiles on Linux, Mac and Windows ([3]).

Problems:
- another C++ module into Blender source code
- will need to create a python wrapper for it
- rewrite from scratch of COLLADA module (not really, I will use
  existing module and just adapt and modify it to use FCollada)

Another option is the COLLADA DOM API, but, according to [1], "it is
limited to reading and writing only one version of COLLADA, making it
difficult to upgrade as new versions are released".

The above may seem like an enormous amount of work to do, but I think
that with FCollada integration it will not be a "rewrite from scratch"
but rather a "replace calls to current python COLLADA API with
FCollada".

After all, this issue needs to be considered by the core Blender
developers.

Current COLLADA module already contains code for geometry, materials &
textures that works well.

In this project the new functionality I will concentrate on is
animation, object-based and skeletal. This includes support for
"skinned" characters.

COLLADA specification has other features attractive for Blender users:
kinematics (1.5), shaders, assets/libraries.


Project Schedule
================

[first 3 weeks]
- get myself comfortable with COLLADA - read specs and FCollada API.
- discuss and prepare for FCollada integration into Blender 2.5 source
  tree - figure out dependencies, successfully compile it on linux,
  windows & mac
- inspect existing COLLADA module - code in main phase will be based
  on what I learn from here

[main phase]
Integrate FCollada, write Python wrapper for it and start coding
implementing features in the following sequence: get old features back
working (geometry, materials, textures), add new features: animation,
skinning, skeletal animation.

As development progresses I will send the module to my mentor and/or
other interested developers for feedback.

[end of May - mid June]
We (painting students) are having "plen air"
(http://en.wikipedia.org/wiki/En_plein_air) and will be painting
outdoors half-a-day, so I will be able to code a bit less per day. But
is not too bad :).

[last 2 weeks]
Code finalization, UI improvements, bug hunting and developer documentation.


Bio
===

I'm a 20 year old coder (in free time) and a painting major student. I
began coding when I was 17.

My main coding interest is game development. Since COLLADA file format
supports most of data needed for game assets and is also available in
most popular DCC tools (which is important, since game artists may
prefer one or another DCC tool), it is my current subject of interest.

My previous experience includes coding a demo (which can become a game
in future) where I experimented with the path-finding algorithm A*,
skeletal animation and terrain level-of-detail. The demo can be
downloaded from my homepage [4], please read the README.txt before
launching it. The website also contains Blender models I have created
and other artwork.

I have also coded an exporter script for Blender which writes geometry
data to a custom XML-based file format. It can also be found on my
website.


References
==========

[1] Wikipedia article about COLLADA http://en.wikipedia.org/wiki/COLLADA
[2] FCollada homepage
http://www.feelingsoftware.com/content/view/62/76/lang,en/
[3] Feature set of COLLADA tools
http://www.feelingsoftware.com/content/view/74/91/lang,en/
[4] My Homepage
http://arystan.abani.kz/jom/index.php?option=com_content&view=article&id=1&Itemid=2


Are these features sufficient for a GSoC?
Should FCollada be used?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.blender.org/pipermail/bf-committers/attachments/20090327/57c6bb06/attachment.htm 


More information about the Bf-committers mailing list