hohenheim Posted December 5 Posted December 5 I'd like to be able to modify the 3D models in this game, but to do that I need to be able to extract and import them. So far, what I've noticed is that their header is always (54 67 4D 44) [TgMD], the animations always seem to have the header (4B 4D 44 73 71) [KMDsq], while the textures are basically TM2 with the header (4B 32 54 78 80 00 00 00 80 00 01 00 80) [K2Tx€] located at the end of the model. It seems quite simple and organized, but so far no program I've tested has even been able to read it. What I also know about the game is that the models were made in Softimage, and the engine seems to be a custom Renderware engine; I imagine the model is designed to take advantage of the PS2's fast memory. I don't know if there's an easy way to edit them in Blender or another program, but if anyone can help in any way they can, I would appreciate it. Here is one model of the game. Tenchu PS2.zip
Engineers shak-otay Posted December 5 Engineers Posted December 5 (edited) Got a point cloud character and some normals, edit: got rid of them: Edited December 6 by shak-otay 1
hohenheim Posted Sunday at 02:41 AM Author Posted Sunday at 02:41 AM There's a PSP game in the same series that uses a similar 3D model format, but it's simpler, so it might be easier to visualize things in them. Tenchu PSP.zip
Engineers shak-otay Posted Monday at 11:44 PM Engineers Posted Monday at 11:44 PM (edited) Same here with the uvs. Will try again tomorrow. Good night, Reh! edit: I see you got a proper fake mesh using a reduced set of vertices (upps, it's PSP) edit2: uvs are not obvious; checked for HF or wordUV at pos (FVFsize-8) for example at no avail Edited Tuesday at 10:49 AM by shak-otay
hohenheim Posted Tuesday at 05:40 PM Author Posted Tuesday at 05:40 PM 17 hours ago, shak-otay said: Same here with the uvs. Will try again tomorrow. Good night, Reh! edit: I see you got a proper fake mesh using a reduced set of vertices (upps, it's PSP) edit2: uvs are not obvious; checked for HF or wordUV at pos (FVFsize-8) for example at no avail I tried ripping the model using Ninja Ripper, but it didn't come out in T-pose and there's no way to insert it back. However, using Noesis, specifically the Data Viewer, some model data appears, perhaps that will help. I also have the PS2 model ripped aswell. RIKIMARU.fbm.zip ps2.zip
Engineers roocker666 Posted 13 hours ago Engineers Posted 13 hours ago (edited) I was analyzing PS2 file, There are a lot of kmd blocks, it seems like those are the meshes(with submeshes) but with 2 different formats. Some use shorts(kmds) and other use floats(kmdp), I cut all kmdp blocks and used MR, those are part of the face and the hands. The first part of the file is like a table with pointers to meshes and textures: 54 67 4D 44 90 01 00 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 80 DA 01 00 FF FF FF FF FF FF FF FF F0 E3 01 00 10 24 02 00 30 64 02 00 50 A4 02 00 70 E4 02 00 90 24 03 00 B0 64 03 00 D0 A4 03 00 FF FF FF FF F0 E4 03 00 A0 34 04 00 50 84 04 00 00 D4 04 00 B0 23 05 00 60 73 05 00 FF FF FF FF FF FF FF FF FF FF FF FF 10 C3 05 00 50 32 06 00 90 A1 06 00 D0 10 07 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 10 80 07 00 C0 EA 07 00 70 55 08 00 20 C0 08 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 20 F1 09 00 70 03 0E 00 D0 2A 09 00 C0 4B 09 00 D0 69 09 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF A0 7F 09 00 0B 00 00 00 C0 9B 09 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF Groups of pointers separated by FF FF FF.... bytes. First 4 bytes magic 54 67 4D 44(TgMD), then the first mesh at 0x190, then FF FF FF FF... more pointers, FF FF FF FF... more pointers, etc. But there is something weird with those kmds meshes, they have more UVs than vertices, I don't know why... This is my research so far, I hope it helps. Edited 13 hours ago by roocker666
Engineers shak-otay Posted 13 hours ago Engineers Posted 13 hours ago (edited) 3 hours ago, roocker666 said: But there is something weird with those kmds meshes, they have more UVs than vertices, I don't know why... Sometimes there's a 2nd uv channel. Do you mean that? (In another case one could also double special vertices to get the same amount like uvs but I forgot how to do that... iterate through faces, somehow. edit: found it, answer from Daniol Dan, ""thus each vertex has its own single UV coord"" Not sure whether this will apply to your problem, though. Edited 10 hours ago by shak-otay 1
Engineers roocker666 Posted 3 hours ago Engineers Posted 3 hours ago 9 hours ago, shak-otay said: Sometimes there's a 2nd uv channel. Do you mean that? Wait, I think I did something wrong, lol. I can see other unknow block or buffer before UVs. I thought that was the start of UVs but no! So Uvs have the same count as verts after all. The format is: verts/normals buffer: 3 shorts verts, 1 short flag, 3 shorts normals, 1 short flag. unk buffer: ?? UVs buffer: 2 shorts UVs, 4 bytes unk(maybe vertex colors?) Well, it looks like that but I am not sure. About the meshes with floats is: verts/normals buffer: 3 floats verts, 1 short flag, 1 short pad, 3 floats normals, 1 short flag, 1 short pad UVs buffer: 2 shorts UVs, 4 bytes unk(maybe vertex colors?) So meshes with floats don't have that unk buffer. And like always, each buffer has a 4 bytes tag, Here is the last part of the 1st submesh, you cn see that unk buffer before UVs: 1
hohenheim Posted 2 hours ago Author Posted 2 hours ago 10 hours ago, shak-otay said: Sometimes there's a 2nd uv channel. Do you mean that? (In another case one could also double special vertices to get the same amount like uvs but I forgot how to do that... iterate through faces, somehow. edit: found it, answer from Daniol Dan, ""thus each vertex has its own single UV coord"" Not sure whether this will apply to your problem, though. I wanted some way to modify it, but it's okay if there isn't an easy way to do it 4 minutes ago, roocker666 said: Wait, I think I did something wrong, lol. I can see other unknow block or buffer before UVs. I thought that was the start of UVs but no! So Uvs have the same count as verts after all. The format is: verts/normals buffer: 3 shorts verts, 1 short flag, 3 shorts normals, 1 short flag. unk buffer: ?? UVs buffer: 2 shorts UVs, 4 bytes unk(maybe vertex colors?) Well, it looks like that but I am not sure. About the meshes with floats is: verts/normals buffer: 3 floats verts, 1 short flag, 1 short pad, 3 floats normals, 1 short flag, 1 short pad UVs buffer: 2 shorts UVs, 4 bytes unk(maybe vertex colors?) So meshes with floats don't have that unk buffer. And like always, each buffer has a 4 bytes tag, Here is the last part of the 1st submesh, you cn see that unk buffer before UVs: From what I see in the PS2 model, it's separated into parts, and when ripped directly from the game using Ninja Ripper, it's possible to erase some details, revealing, for example, the arms (covered by a type of armor) and the neck by removing the scarf. If its too complicated to edit the model or do anything, that's fine, im hoping to at least have a better way to extract them without using Ninja Ripper. It still would help alot.
hohenheim Posted 2 hours ago Author Posted 2 hours ago (edited) 41 minutes ago, roocker666 said: Wait, I think I did something wrong, lol. I can see other unknow block or buffer before UVs. I thought that was the start of UVs but no! So Uvs have the same count as verts after all. The format is: verts/normals buffer: 3 shorts verts, 1 short flag, 3 shorts normals, 1 short flag. unk buffer: ?? UVs buffer: 2 shorts UVs, 4 bytes unk(maybe vertex colors?) Well, it looks like that but I am not sure. About the meshes with floats is: verts/normals buffer: 3 floats verts, 1 short flag, 1 short pad, 3 floats normals, 1 short flag, 1 short pad UVs buffer: 2 shorts UVs, 4 bytes unk(maybe vertex colors?) So meshes with floats don't have that unk buffer. And like always, each buffer has a 4 bytes tag, Here is the last part of the 1st submesh, you cn see that unk buffer before UVs: The game has a debug mode, maybe this will help in some way. Edited 2 hours ago by hohenheim 1
Engineers roocker666 Posted 2 hours ago Engineers Posted 2 hours ago 10 minutes ago, hohenheim said: I wanted some way to modify it, but it's okay if there isn't an easy way to do it From what I see in the PS2 model, it's separated into parts, and when ripped directly from the game using Ninja Ripper, it's possible to erase some details, revealing, for example, the arms (covered by a type of armor) and the neck by removing the scarf. If its too complicated to edit the model or do anything, that's fine, im hoping to at least have a better way to extract them without using Ninja Ripper. It still would help alot. Ninja ripper works but not always, the best way is to extract models from game files. Now, each of those KMDs blocks have a skeleton(I don't know why you need so many, that is weird), I cut the first KMDs at 0x190 and this is part of the header(see image below). Now we need to analyze mesh headers of KMDs and KMDp. It seems like KMDp header is more easy to undersntand. I will try to analize both later.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now