Is there a specified format for the material name, a URL for example, or is it a logical name that the app should understand?
No specific format - it's a string which identifies some other thing. Use a URL or whatever you like. The only thing it has to do is help whatever renderer you are using to determine how to draw the triangles. It could, for example, just be a colour "r,g,b,a", or it could be the name of a texture. The reference implementation renderer is going to use it to lookup something that is Renderable in a Map and call render() on it before drawing driangles.
It's not exactly how I like to see XML written - I prefer <bone> elements to be in a <bones> section etc, but that's personal preference.
I might add surrounding tags but they're almost redundant, and I so hate
Is it worth putting an id on repeated elements? It'd be easier to use if the numbers used by e.g. triangle definitions are present in the file - not for the computer, but for the user. You'd have to change things to not work on file order but on id number instead - probably not a big change.
No, not really worth it. The order of the elements in the XML file is significant, so why not use the implicit ordering? Besides - this XML is almost 100% certain to be machine generated anyway.
I don't know anything about bone animation - I trust that the system presented both works and will be implementable in many different modellers! I've always seen bones described as having length, but I guess that's just a visual aid.
Neither do I
Elias is hopefully going to help me here. A bone is apparently just a matrix which transforms a vertex. In the 3d modeller it will be represented probably with actual "bones" with length and so on, but when they are exported they just boil down to a matrix.
You have a bone count field, but not a vertex, triangle or animation count. Why?
The bone count and vertex counts (there's a vertex count in cvs too) are used as sanity checks to check the triangle indicies and ensure that the animation frames and skin specify the correct number of elements. The triangle count need not be checked against anything so it's not specified.
What is the timing information - specified units or application-interpreted?
Application-interpreted floats. So probably "seconds" to most apps.
Do you have updated XML fragments for us? I don't see any examples in CVS.
Loader.loadBone(): if you're making m3* optional, shouldn't you make m*3 optional as well?
You need to learn more maths
The last row in the matrix should pretty much always be 0,0,0,1 or some really freaky things
happen. That's why they're optional, and if not specified, default to 0,0,0,1. The right hand column, on the other hand, specifies a translation.
Might vertex colours be worth considering, for non-textured worlds?
I considered it and then thought - no-one ever uses vertex colours in a real game! Leastways, not specified in the actual model data. But seeing as you've asked for them, I'll add them in the skin as optional data.
Note that the model provides for no animation of texture coordinates, nor will it provide for animation of colours, nor will it provide compound models. Although I have some ideas to create a compound model class.
Here's what I will do tonight then:
1. Wrap tags around the data sets to make Charlie happy
2. Create 2 example XML files
3. Play Morrowind a bit more.
4. Add colours.
5. Play Morrowind a bit more.
6. Do a little bit more on the simple Renderer implementation