The LodeStone Manifesto. |
However, it is notable that there is no similar set of 3D model file loaders. The reason for that is that whilst almost any application can accept an image in memory as a two dimensional array of pixels, and every image file loader can produce data in that format, there is no such 'defacto standard' for the interface between a 3D file loader and the application.
This makes life very difficult for developers of 3D applications. In the end, just about every user either writes their own loader, or reaches for one of the MANY so-called "Scene Graph API" libraries.
However, for every scene graph API, there is another set of loaders. Each one implements a different subset of the 3D formats - and each ends up missing a different set of flags and options for those files.
The result is that if you construct a model in some particular modeller, it not only will look different when it's finally loaded into the application, but it may also look different still when it's loaded into a different application.
At SigGraph 2001's OpenGL Birds-of-a-Feather meeting, there was some discussion amongst the (alarmingly) large number of Scene Graph authors about the usual issues of convergance, commonality, etc and as a result of that conversation, it was decided to start a project which I'm calling 'LodeStone'. That project is registered at SourceForge (addresses below).
Lodestone will have five objectives:
Something like:
lsNewBranch() lsAddBranchAttributes(branch,....) lsNewLeaf() lsAddChild(branch,branch_or_leaf) lsAddPolygon(leaf,vx1,vx2,vx3) lsAddState(polygon,...and not much else. The barest minimum needed to load a file into memory. There will be NO unnecessary calls - but we will consider providing some kind of extension mechanism (a'la OpenGL) to allow loaders to query the existance of advanced features. As with OpenGL, these will periodically be rolled into the standard if it emerges that all Scene Graphs can implement them.)
This API specification will be royalty-free and maintained communally by its contributors. Use of the LodeStone logo and name would only be allowed for applications and libraries that sucessfully load and appropriately display the conformance models (see below).
Once we have agreement to port loaders into LodeStone from a reasonable number of Scene Graph authors, I'll undertake to port all of the PLIB/SSG loaders (18 of them) to Lodestone and hand them over to that project so that they should "just work" with other conformant scene graph API's.
However, there is no such thing as a free lunch and I won't port my loaders until other authors make the commitment to port theirs and/or write new loaders to cover formats that PLIB doesn't currently support.