Search the Community
Showing results for tags 'ratchet and clank'.
-
ps3 (PS3) Ratchet & Clank: Future series terrain models "UFrags"
VELD-Dev posted a topic in 3D/2D models
Hey ! I figured out most of the structure of Post-Resistance 2 games made on the Insomniac Engine (or Luna Engine for the intimates), here's basically how it's made: The Zones have a specific section for them (this was discovered way before my discovery), 0x6200 and within this section, UFrags metadata are built up like this: [StructureSize(0x80)] public struct UFragNewEngine { [Offset(0x00)] public ulong tuid; [Offset(0x30)] public Vector3 position; [Offset(0x40)] public uint indexOffset; [Offset(0x44)] public uint vertexOffset; [Offset(0x48)] public ushort indexCount; [Offset(0x4A)] public ushort vertexCount; [Offset(0x50)] public ushort shaderIndex; } Credits: NefariousTechSupport So this is was figured by NTS, as far as I know, correct me if I'm wrong. Although, what I've discovered about them is that they DO NOT have a transformation matrix inside of them. Instead they ONLY have a position Vector3 of single precision floating point numbers. Their vertices are built up like this. This was also mostly figured out by NefariousTechSupport: [StructureSize(0x18)] public struct UFragVertex { [FileOffset(0x00)] public short x; [FileOffset(0x02)] public short y; [FileOffset(0x04)] public short z; //[FileOffset(0x06)] public ushort unkConst; // Idk maybe it's used for something [FileOffset(0x08)] public Half UVx; [FileOffset(0x0A)] public Half UVy; } This part is interesting because as you can see, vertices have a Vector3 of signed half precision integral numbers, commonly called "short". Of course, when they are placed as is in space, it makes very very odd results, to be fair the models are just gigantic. What NTS doing before is that they were dividing the value they obtained for each coordinate by 0x7FFF, as these were "short" integers, dividing by max and min value would probably make sense. Although doing that was making the models very very small, so a very very large quest of "finding the constant" began. NTS did all that great work, did a huge work to make R&C:Future worlds viewable, but this part was weird and they lost motivation. I then helped, and searched for that number. The constant that would help to have correct models. It took me 3 weeks to find it. After trial and error, trying to find transformation matrices and all this kind of stuff, I ended up by finding this number. The coordinates had to be divided by 256. Although, that done, there's still one issue that remains: There's huge gaps. The position I'm using, the one that is into the UFrags metadatas higher, is close, but not exact. This is where I need help. I can't figure why the position is approximate and not always the exact perfectly right one. Above that, the UFrags organization is still unknown for pre-R2 games, so all the games before Resistance 2 (Ratchet & Clank: Tools of Destruction, Rathcet & Clank: Quest For Booty, Resistance 1) I had a theory: This is their bounding position, used for the mesh culling. it seems to be common in these games, and I guess in all games. Please help me.
ResHax.com: Empowering Curious Minds in the World of Reverse Engineering
Delving into the Art of Code Unraveling: ResHax.com - Your Gateway to the Thrilling World of Reverse Engineering, Where Curiosity Meets Innovation!