Mobuis wrote:
These are homogenous vectors that have a w component as you can see when you made the W NULL or 0 I assume it turned the vector into a direction vector moving out from the origin of the model. All that is useful here is the position x,y,z for the mesh parts so you will want to store the position from these 32 bit floats, also you have the formula wrong for pos = [x/w,y/w,z/w,w] where w =1 , they use 4D vectors here because they want to do a transform of some kind its easier to do matrix multiplication with a 4D matrix and 4D vector because they can incorporate translations into the matrix which ultimately allows translations and rotations, scaling in one matrix.
Those "not used" I believe are used the effect isn't evident you should see if you change the one of the values of the float 32 into say a large number to see the effect leaving W as it is so what you would need to do is modify the 32 bit float into an integer number say like 5 and see what that "not used object is" for instance if I took the first 32bit float(TORSO) and changed it to an integer 4 but respecting the 32 bit float TYPE so playing with the 32 bits of the float to turn it into 4, so that the game which will read the 4bytes and interpret it as a float will say that float is 4.00 the torso effectively will move up 4 units.
I appreciate you joining, its an honor to have someone of your experience contribute to this project.
I understand what your saying, but I've already tested these things out. those bones just don't have any affect in game.
the only way to find out is verify with the DOAX2 skeleton we have and make assumptions based off the current parenting list in the cat file
And in relation to the ganjul situation, I would have to agree with you. I'm sorry things happened the way they did and I understand the documents were not of a "programmer" caliber.
However you must understand that I am not a programmer like you. and unlike you, I do not have 10 years experience.. more like 10months
I feel the problem happened on both sides, and I don't think things are going to be fixed so easily. I would hope this issue will finally be dropped. He is backing out of his own choice, its not like I'm harassing him in any way.
Please lets move forward, and finally destroy the secrets behind the CAT file
-mariokart64n
EDIT
b0ny wrote:
you say it's easy - can you please explain what have you dug up
also i can see from this image that the first(green) and the second(gray) element first offset(0x8ec4) is the same.
p.s. it's interesting to see what's happening when using an xpr with a cat from a model with the same skin but with a different haircut. the game will use the clothes, the neck, etc to build the hair described in the cat file(at least i've seen that effect on the "kasumi with a helmet" skin).
I haven't broken the physics blocks down at all, I just got what you've detailed in your image.
I follow the header offsets to the physics block, read the offset list.
follow the offsets to each physics header and read the node, or the point4 or vectors defined there in the physics header.
theres an index there to link the vertices, but the list seems to be a variable length. I can't parse it because there's no terminator or count. cant loop/read it
the 4 bytes in the physics header relates to which object that header is for. you'll see 0x01 used more commonly, since the hair mesh is usually the first mesh
again.. I haven't drilled much into this, these were premature findings, as I'm unable to make any use of what I currently know about it.
EDIT
the W value is always 0, I replaced it with like 1,000,000.00, no change. its seems silly to have that wasted space, I think something is suppressing that value. or more or less overriding this value from causing an effect
I also rechecked my original tested, by writting huge values to the position entries.. and theres no change from my previous discovery. no changes to items marked unused.
..very weird that there is values on them though
Code: Select all
00 00 00 00 AE 47 E1 3D 00 00 00 00 00 00 00 00 Torso
00 00 00 00 B0 03 67 3D 65 19 62 3C 00 00 00 00 Neck
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Not Used?
00 00 00 00 67 44 C9 BE 00 00 00 80 00 00 00 00 Not Used?
1F 85 6B 3E 00 00 00 00 00 00 00 80 00 00 00 00 Not Used?
1F 85 6B 3E 00 00 00 00 00 00 00 00 00 00 00 00 Not Used?
2E 90 A0 3D A6 9B 44 BB D7 34 EF BB 00 00 00 00 Left Thigh
00 00 00 00 63 EE DA BE 00 00 00 00 00 00 00 00 Left Lowerleg
22 FD F6 3D 00 00 00 00 00 00 00 00 00 00 00 00 Left Upperarm
00 00 00 00 67 44 C9 BE 00 00 00 80 00 00 00 00 Not Used?
1F 85 6B BE 00 00 00 00 00 00 00 80 00 00 00 00 Not Used?
1F 85 6B BE 00 00 00 00 00 00 00 00 00 00 00 00 Not Used?
2E 90 A0 BD A6 9B 44 BB D7 34 EF BB 00 00 00 00 Right Thigh
00 00 00 00 63 EE DA BE 00 00 00 00 00 00 00 00 Right Lowerleg
22 FD F6 BD 00 00 00 00 00 00 00 00 00 00 00 00 Right Upperarm
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Not Used?
00 00 00 00 EA 04 34 3E 52 49 9D BC 00 00 00 00 Not Used?
FE 65 F7 3C EB 73 35 3D 46 B6 73 3D 00 00 00 00 Left Eye
00 00 00 00 04 E7 8C BD 41 82 E2 3D 00 00 00 00 Not Used?
00 00 00 00 7E 1D 78 3E 31 08 AC BC 00 00 00 00 Not Used?
00 00 00 80 EA 04 34 3E 52 49 9D BC 00 00 00 00 Right Eye
FE 65 F7 BC EB 73 35 3D 46 B6 73 3D 00 00 00 00 Not Used?
00 00 00 00 04 E7 8C BD 41 82 E2 3D 00 00 00 00 Not Used?
00 00 00 00 15 1D C9 3D 00 00 00 00 00 00 00 00 Not Used?
F3 FF C7 42 F3 FF C7 42 F3 FF C7 42 00 00 00 00 Not Used?
anyway here is kasumi using the parrie dogs bones
EDIT2
before I was editing the file in memory, I tried again editing the file, and booting in the game. the unused sections do have an effect. I'm trying to map it now
EDIT3
I've studied the position data from that bloc, its local or relative to the parent node.
here in this image you can see what I mean
I used this concept to rebuild young tina's skeleton or well offset the meshes. the results are pretty cool
the arms are stretched because that tiny skeleton is now trying to pull to kasumis animations. the hitboxes follow the new positions, so its not glitchy really. asides that her feet are off the ground. I'm not sure this can be helped?
heres what I was able to figure out
-- 01 Torso
-- 02 Neck
-- 03 UNKNOWN
-- 04 Left Foot
-- 05 Left Forearm?
-- 06 Left Hand
-- 07 Left Thigh
-- 08 Left Lowerleg
-- 09 Left Upperarm
-- 10 Right Foot
-- 11 Right Forearm?
-- 12 Right Hand
-- 13 Right Thigh
-- 14 Right Lowerleg
-- 15 Right Upperarm
-- 16 UNKNOWN
-- 17 UNKNOWN
-- 18 Left Eye
-- 19 UNKNOWN
-- 20 UNKNOWN
-- 21 UNKNOWN
-- 22 Right Eye
-- 23 UNKNOWN
-- 24 UNKNOWN
-- 25 UNKNOWN
young tina's corrdinates;
001 @ [0.000000,0.105000,0.007000]
002 @ [0.000000,0.175910,-0.021000]
003 @ [0.000000,0.000000,0.000000]
004 @ [0.003861,-0.272710,0.000000]
005 @ [0.161420,0.000000,0.000000]
006 @ [0.161420,0.000000,0.000000]
007 @ [0.051240,-0.010850,-0.017290]
008 @ [0.000000,-0.273000,0.000000]
009 @ [0.078050,0.168000,-0.015960]
010 @ [0.003861,-0.272710,0.000000]
011 @ [-0.161000,0.000000,0.000000]
012 @ [-0.161000,0.000000,0.000000]
013 @ [-0.051240,-0.010850,-0.017290]
014 @ [0.000000,-0.273000,0.000000]
015 @ [-0.078000,0.168000,-0.015960]
016 @ [0.000000,0.000000,0.000000]
017 @ [0.000000,0.000000,0.000000]
018 @ [0.024683,0.112868,0.047947]
019 @ [0.000000,0.000000,0.000000]
020 @ [0.000000,0.000000,0.000000]
021 @ [0.000000,0.000000,0.000000]
022 @ [-0.025000,0.112868,0.047947]
023 @ [0.000000,0.000000,0.000000]
024 @ [0.000000,0.000000,0.000000]
025 @ [99.999901,99.999901,99.999901]
Hitomi
001 @ [0.000000,18.500000,0.520000]
002 @ [-0.000000,30.146431,-2.624170]
003 @ [0.000000,0.000000,0.000000]
004 @ [-0.000000,-41.639999,0.000000]
005 @ [24.698000,0.000000,0.003750]
006 @ [24.700001,-0.103069,0.000000]
007 @ [7.840000,-2.830000,-2.640000]
008 @ [0.000000,-40.000004,0.000000]
009 @ [12.420028,22.090002,-2.439998]
010 @ [-0.000000,-41.639999,0.000000]
011 @ [-24.698168,0.000000,0.003750]
012 @ [-24.699970,-0.103069,0.000000]
013 @ [-7.840000,-2.830000,-2.640000]
014 @ [0.000000,-40.000004,0.000000]
015 @ [-12.420000,22.090002,-2.439998]
016 @ [0.000000,0.000000,0.000000]
017 @ [0.000000,0.000000,0.000000]
018 @ [2.915629,10.437886,7.997448]
019 @ [0.000000,0.000000,0.000000]
020 @ [0.000000,0.000000,0.000000]
021 @ [0.000000,0.000000,0.000000]
022 @ [-2.916000,10.437886,7.997448]
023 @ [0.000000,0.000000,0.000000]
024 @ [0.000000,0.000000,0.000000]
025 @ [9999.990234,9999.990234,9999.990234]
you can enter these into bloc 1 in the cat file
an easy way is to write these over the materials. you'll need to change the byte for that section from 0x03 to 0x08
otherwise to add it on, you'll need to expand the listing in bloc 1, then add it onto the end of the cat blocs. remember to correct the 4 offsets in the CAT header.
the beneifit of defining our own skeleton in the cat, is now characters can be interchanged with any character
animation.
I'll have a look at the EXE tomorrow and see if I can find the bone sets for all the characters. but if not I'll just figure a few out manually. ^_^ I can finally get rid of BASS