6

« **on:** September 06, 2016, 10:29:44 pm »
I don't know how much this would help, and I apologize if it is something that you already know, but I can tell you what little I know.

First, keep in mind that 3d for artists is different than 3d for programmers. To an artist there are joints, bones,constraints, etc, but to a programmer there are matrices. So what is a matrix? Basically it's a mess of numbers that you can do some fancy stuff with. 3d graphics only use a subset of set theory and linear algebra, so there is much, much more to this than the relatively little that you need to know (aka: don't get discouraged if you feel in over your head, especially if you look this up on Wikipedia or such.)

Matrices can easily move, scale, and do complex rotations on vectors, vertex positions, normals and everything else that can be expressed as an array (so computers are naturally good at this.) You can even combine several transformation matrices together and apply it to data all at once just by multiplying. There is one issue you need to know, matrix multiply isn't commutative like regular multiply is. So [A] * [C] does not equal [C] * [A], which means to undo a transformation you have to figure out the inverse of the matrix and multiply that to the matrix. Luckily modern exporting APIs will have functions to do all that and most everything else you might need built in.

What an artist sees as a skeleton is really a stack of matrices where each transformation is applied to the previous one for that set of verts. This is how you get the parent-child relationships and all the local/global movement goodness to happen.

Again I apologize if this is unhelpful, known information.

Now you seem to be saying that the vertices are all duplicated? I don't know why they would do that (collision volumes? Not sharing verts for different faces? Shading reasons? Filler?) but if they are just duplicates, for whatever reason, they should be treated as just additional verts to proccess.

Oh and don't worry too much about how the game works the information, just feed it the proper data and it should be able to handle it. Or maybe it won't and you'll find some limitations you weren't aware of before.