Editing some other files with hex editor

I think each vertex have an id number (for the face...) and i have to search where is located this float.
I have to found 3 vertex id number to know the face.
 
From my dabbling with 3d programming, and I suspect there is no difference here, the gpu file is filled with vertex buffer data and index buffer data. The vertex buffer is defined by the shader, and would contain positions, normals, uvs, and tangents. The index buffer is just a list of numbers defining the triangle faces. So it would look like so: 0, 1, 2, 1, 2, 4, 2, 4, 5, .....
I'm just making up those numbers, but the gist is that the first face is made from vertices 0 1 and 2, the second face is verts 1 2 and 4.
 
I don't know where is the vertex index for the faces...
01.jpg
 
It looks like the very beginning of the gcmesh_pc file contains the index list, starting on byte 16.
gcmesh format:
int crc
byte padding[12]

It could be specifying triangle lists, but it seems odd that it contains degenerate faces. Or perhaps the second set of 3 numbers means something else.
it looks like this for the brute minigun:
0, 1, 2, 2, 3, 3, 3, 4, 5, 5, 6, 6, 6, 7, 8, 8, 9, 9, 9, 10, 11, 11, 12, 12, 12, 13, 14, 14, 15, 15, 15, 16, 17, 12, 12, 18, 18, 19, 20, 19, 21, 22

face:
0, 1, 2
2, 3, 3 (degenerate) or this data is something else
3, 4, 5
5, 6, 6 (degenerate)
6, 7, 8
8, 9, 9 (degenerate)
9, 10, 11
11, 12, 12 (degenerate)
12, 13, 14
14, 15, 15 (degenerate)
15, 16, 17
12, 12, 18 (degenerate)
18, 19, 20
19, 21, 22

I'd try connecting your vertices like that and see what happens.
 
Those second sets of numbers could be indeces into a different set of data. Like perhaps uv channel information or something like that.
 
heres the vertex data for vert #1
78 0b 06 be 1f 24 c5 3c 46 31 30 3f 90 5e 05 04 15 38 83 00 ff 00 00 00 00 ff ff ff b5 02 a0 02

you need the following pieces of information for a vertex:
position, normal, tangent, uv, and bone weighting information.

The position data is:
78 0b 06 be 1f 24 c5 3c 46 31 30 3f
which translates into 3 floating point values: 0xbe060b78, 0x3cc5241f, 0x3f303146
which converts to: -0.130903, 0.0240651, 0.688252

then there is this info, which I don't know what it is, but it has to be normal/tangent information
90 5e 05 04 15 38 83 00
I can't make sense of it right now. It might be compressed

then this:
ff 00 00 00 00 ff ff ff
This is almost assuredly bone transforms and bone weighting
ff 00 00 00 means:
100%, 0%, 0%, 0% weighting
00 ff ff ff means:
bone 0, bone 255, bone 255, bone 255.
So in simple terms, that vert is 100% weighted to bone 0

Then there is b5 02 a0 02
I suspect this is 2 shorts:
0x02b5 and 0x02a0
or
693, 672
These numbers range everywhere from 0 to 1024. So I suspect they are uv values multiplied x 1024.
so:
0.67675, 0.65625
 
Proud to be witnessing progress here.

Can't wait to get my hands on the 3D models once we're able to properly handle them.
 
if you could give me an example mesh name with all the info about it, i can probably break down a lot of the information from the CC file. For example, a specific mesh, the number of verts in each lod, and the number of faces in each lod. I can then evaluate that cc mesh and find where those values are stored.
 
Back
Top