[Plib-devel] [Fwd: Model / 3D Object format that is easy to use, yet powerful? (fwd)]
Brought to you by:
sjbaker
From: Steve B. <sjb...@ai...> - 2000-04-11 02:20:13
|
I spotted this on the Opengl-Gamedev list, it seemed like it may be of some interest to this list. It's talking about the ASE file format - and some known problems with the 3DS ASE writer... > ---------- Forwarded message ---------- > From: Joe Demers <JD...@nv...> > Having worked on a couple projects that made extensive use of the .ASE > format, > I personally wouldn't choose to use that format for anything again. > > The problems we ran into mainly stemmed from the fact that > the .ase exporter is just a sample plugin, and wasn't intended as a real > file format. > As such, it is ridden with bugs, and completely unsupported. > (That wasn't intended as a cut on the author - I mentioned it's just a > sample plugin) > > Anyways, here are the main problems we ran into: > 1) transformations - .ase has the transformations stored in a full matrix, > plus the components of the matrix (rotation, scale, etc.) > which just happen to not match up. > (One of them is just totally wrong - and I don't remember which) > 2) no documentation - there are several completely unintuitive things > about the 3ds max architecture that you become exposed to but using .ase. > For example: > 2a) normals - normals are sometimes in world space, and sometimes in > object space, > and the space they're in is determined by whether they're being > animated, > whether their parent transforms are being animated, etc. > 2b) ignore rotation flags - there are a couple flags on each matrix > that specify whether or not to inherit its parent's > rotation/scale/translation, > which is awkward for the programmer, albeit useful for the artist. > The problem is, the flag means exactly the opposite of what it's > named. > (inheritRotation true -> don't inherit parent's rotation) > 3) animation - keyframes for mesh animation and transform animation aren't > sync'ed, > so if you have an animation with both, you need to untransform all the > mesh animations > at each transform animation keyframes, which requires you to exactly > mimic > the interpolation going on within max - which isn't trivial for TCB > interpolated quaternions. ;) > (We were able to do this last only after bugging the developers for their > 3dsmax > TCB interpolation code - Ugh - most of the comments in the batch of 10 > files > were commented out code, and the one classic: "However, I think this code > is incorrect.") > > I might suggest the .obj file format, > for which there are free exporters available from max, > although, of course, it won't export animation or skeletons. > It's trivial to read, but again, it's probably not > as fully functional as you may need. > > The best alternative is, given the time and motivation, > is to write a plugin that exports the data you want, > but even this isn't foolproof, given the bug in max > that causes IK to be unavailable to any plugin. > > Oops, my coworked just corrected my list of problems. > The normals problem is actually part of a larger one: > > transforms and vertices are in global space, > normals are usually in local space, unless they're below a space warp, > (which isn't written into the .ase file, so there's no way to know this) > in which case they're also in global space. > > mesh keyframes are in local space, > transformation keyframes are in global space, > and rotational transformation keyframes are in global space, > but every keyframe except the first is a relative keyframe. > (all other keyframes (mesh and non-rotational transformation) are absolute. > > Whew. > Sorry for the novel, > but that's finally it. > > So, I'd suggest using .obj (and .mtl) if you can, > and if not, seriously consider spending the time > writing a 3dsmax plugin. (or a Maya plugin, or whatever) -- Steve Baker http://web2.airmail.net/sjbaker1 sjb...@ai... (home) http://www.woodsoup.org/~sbaker sj...@ht... (work) |