COLLADA SUPPORT IMPROVEMENTS FOR BLENDER<br><br><br>Synopsis<br>========<br><br>COLLADA is a flexible and versatile digital assests exchange format<br>created by the Khronos Group consortium. It is supported by the top<br>
commercial DCC tools like Maya, 3ds Max, Lightwave 3D, Cinema 4D and<br>Unreal Engine. This project is about improving COLLADA support in<br>Blender.<br><br><br>Benefits to the Blender Community<br>=================================<br>
<br>Before introduction of COLLADA there was no simple way to interchange<br>such complex data like skeletal animation between DCC tools. With<br>COLLADA this has become possible. For Blender users robust COLLADA<br>support means good interoperability with other DCC tools.<br>
<br>Current COLLADA import/export module was developed in 2006-2007 by<br>Illusoft. In mid-2007 the development halted and the module, in it&#39;s<br>current state, is incomplete and unstable.<br><br>Blender users are often having problems with current COLLADA module<br>
due to it&#39;s instability. The module doesn&#39;t support skeletal animation<br>and object animation support contains flaws. Also it does little or<br>nothing to inform users when it fails.<br><br>In this project I will work to improve the module&#39;s stability and add<br>
new functionality, namely object-based and skeletal animation. The<br>final module will also provide necessary user feedback about<br>unsupported features.<br><br><br>Deliverables<br>============<br><br>- Stable COLLADA import/export module supporting geometry, transforms,<br>
  materials, lights &amp; cameras, skinning and animation.<br>- Test files that demonstrate module&#39;s new capabilities and stability.<br>- Documentation that describes current module state and will help<br>  future contributors get started.<br>
<br><br>Project Details<br>===============<br><br>The first step will be to determine whether we need FCollada or not.<br><br>FCollada is an open-source C++ library which &quot;offers incomparable<br>support for COLLADA interoperability&quot; [2]. Basically, it is an API<br>
which will help me concentrate on managing data structures without<br>worrying about how data is stored on disk.<br><br>Current python API (in collada.py) has disadvantages:<br>- it has to be modified to support new COLLADA versions<br>
- it is less stable than FCollada<br><br>Why FCollada?<br>- it&#39;s usefulness has been proven: popular plugins like ColladaMaya &amp;<br>  ColladaMAX are already using FCollada successfully<br>- no maintenance problems: current python module may not support<br>
  future COLLADA versions - with FCollada we get this out-of-the-box<br>- FCollada &quot;provides a higher-level interface and can import all<br>  versions of COLLADA&quot; ([1])<br><br>Since FCollada is written in C++ it will have to be integrated with<br>
Blender build system in order to be compiled and used. FCollada<br>compiles on Linux, Mac and Windows ([3]).<br><br>Problems:<br>- another C++ module into Blender source code<br>- will need to create a python wrapper for it<br>
- rewrite from scratch of COLLADA module (not really, I will use<br>  existing module and just adapt and modify it to use FCollada)<br><br>Another option is the COLLADA DOM API, but, according to [1], &quot;it is<br>limited to reading and writing only one version of COLLADA, making it<br>
difficult to upgrade as new versions are released&quot;.<br><br>The above may seem like an enormous amount of work to do, but I think<br>that with FCollada integration it will not be a &quot;rewrite from scratch&quot;<br>
but rather a &quot;replace calls to current python COLLADA API with<br>FCollada&quot;.<br><br>After all, this issue needs to be considered by the core Blender<br>developers.<br><br>Current COLLADA module already contains code for geometry, materials &amp;<br>
textures that works well.<br><br>In this project the new functionality I will concentrate on is<br>animation, object-based and skeletal. This includes support for<br>&quot;skinned&quot; characters.<br><br>COLLADA specification has other features attractive for Blender users:<br>
kinematics (1.5), shaders, assets/libraries.<br><br><br>Project Schedule<br>================<br><br>[first 3 weeks]<br>- get myself comfortable with COLLADA - read specs and FCollada API.<br>- discuss and prepare for FCollada integration into Blender 2.5 source<br>
  tree - figure out dependencies, successfully compile it on linux,<br>  windows &amp; mac<br>- inspect existing COLLADA module - code in main phase will be based<br>  on what I learn from here<br><br>[main phase]<br>Integrate FCollada, write Python wrapper for it and start coding<br>
implementing features in the following sequence: get old features back<br>working (geometry, materials, textures), add new features: animation,<br>skinning, skeletal animation.<br><br>As development progresses I will send the module to my mentor and/or<br>
other interested developers for feedback.<br><br>[end of May - mid June]<br>We (painting students) are having &quot;plen air&quot;<br>(<a href="http://en.wikipedia.org/wiki/En_plein_air">http://en.wikipedia.org/wiki/En_plein_air</a>) and will be painting<br>
outdoors half-a-day, so I will be able to code a bit less per day. But<br>is not too bad :).<br><br>[last 2 weeks]<br>Code finalization, UI improvements, bug hunting and developer documentation.<br><br><br>Bio<br>===<br><br>
I&#39;m a 20 year old coder (in free time) and a painting major student. I<br>began coding when I was 17.<br><br>My main coding interest is game development. Since COLLADA file format<br>supports most of data needed for game assets and is also available in<br>
most popular DCC tools (which is important, since game artists may<br>prefer one or another DCC tool), it is my current subject of interest.<br><br>My previous experience includes coding a demo (which can become a game<br>
in future) where I experimented with the path-finding algorithm A*,<br>skeletal animation and terrain level-of-detail. The demo can be<br>downloaded from my homepage [4], please read the README.txt before<br>launching it. The website also contains Blender models I have created<br>
and other artwork.<br><br>I have also coded an exporter script for Blender which writes geometry<br>data to a custom XML-based file format. It can also be found on my<br>website.<br><br><br>References<br>==========<br><br>
[1] Wikipedia article about COLLADA <a href="http://en.wikipedia.org/wiki/COLLADA">http://en.wikipedia.org/wiki/COLLADA</a><br>[2] FCollada homepage <a href="http://www.feelingsoftware.com/content/view/62/76/lang,en/">http://www.feelingsoftware.com/content/view/62/76/lang,en/</a><br>
[3] Feature set of COLLADA tools <a href="http://www.feelingsoftware.com/content/view/74/91/lang,en/">http://www.feelingsoftware.com/content/view/74/91/lang,en/</a><br>[4] My Homepage <a href="http://arystan.abani.kz/jom/index.php?option=com_content&amp;view=article&amp;id=1&amp;Itemid=2">http://arystan.abani.kz/jom/index.php?option=com_content&amp;view=article&amp;id=1&amp;Itemid=2</a><br>
<br><br>Are these features sufficient for a GSoC? <br>Should FCollada be used?<br>