Current outstanding issues: LWOB: - no support for layered LightWave[TM] object files (lwlo) - some indices are mangled? (office/moderdes/modernde.lwo) - no support for double sided surfaces (preliminary, but doesn't work well) 3DS: - some polys are flipped sometimes (or should be double sided?) ([coyote,violin].3ds) - some surfaces/objects are skipped? (poser.3DS) Misc - some solution for short/long indices and float/double vertices - with double sided sourfaces normal calculation is wrong usually. if angle between normals of two neighbourgh polys is bigger than 90 degrees one of them should be flipped. question is which one to choose for flipping and how to implement it effectively for whole meshes - quite a few unportable stuff, especially to 64bit archs, 32bit endianess issues are mostly solved, sometimes ineffective though Glib macros and typedefs could help here, but we don't need all its calls here at all - provide autoconf macro, - provide a libmorph.spec.in - make all missing loaders - surfaces need reference counting like objects so we can destroy them when some destroyed mesh isn't using them any more, - surfaces need to be in a linked list not array of pointers. with formats like 3ds, where no surface count is provided, it is faster to create surfaces one by one, link 'em and if needed create an array in client, than to scan file twice (1st pass -- count surfaces, create number of surfaces, 2nd pass read surface data). - models in linked list as well, so we can load multiply meshes to create a scene.