Cabela's+Big+Game+Hunter+2008

This is a hunting game published by Activision. The Data file (DATA.ARC) is compressed but can be decompressed with the tools "Game Extractor" http://www.watto.org/extract

The basic format for the animal models is simple: Just a large 12byte array of Vertexes followed by a 8byte array of texture UV coordinates. The mesh's faces are defined implicitly by connecting 3 adjoining vertexes at a time. The meshes are contained in the \OBJECTS and end in the extension .SKIN media type="custom" key="22295376"

A bear model. The converted main texture for the leopard.

PS2 Version: BGH 2008
Files Extensions: .AP .BAT .BSP .CFG .DEF .EXP .FF .FNT Fonts .FX .GRASS .ICO .LOG .MAT .MODEL .MTP .PLOT .PST Textures (??) .RES .SCR .SCRIPT .SKIN .SND .SPJ .SPL .TXT .VAG Audio .XSC

Every .SKIN file contain geometry data regardless it is an animal or water. A subheader inside the file more closely defines the type of mesh. In each .SKIN animal mesh file the first four byts are the text: "FBSF" and the hex bytes "12 04" followed by 4 unknown bytes that change with each model and the text without the quotes: "Make Model (build 1085 - Aug 14 2007)" This is probably an internal tool used to compile the meshes. This 48 byte header is in every .Skin file. Then there are 4 empty bytes: 00 00 00 00 Followed by the length of the text string of the corresponding .model file: example: 0C weasel.model followed by: 00 01 00 followed by the length of the text string: 07 Default 01 00 followed by the length of the text string: 06 weasel E3 EF followed by ?? ?? ?? 00 01 00 followed by the text string: 08 ModelLOD followed by a weight which is normally -1: 00 00 80 BF followed by: 01 00 07 MeshRSD followed by: 00 00 00 00 00 00 10 RSDBlendedLitPS2 followed by: 04 00 00 01 17 00 04 00 ?bone? where ?bone? is the 4byte number of bones that the mesh has. For each bone the length of the bone name followed by the bone name with no spaces in between for example: 07 BipHead 08 BipRFoot 0A BipRfinger.....

It should be noted that the bones are given the same names regardless of the animal. Right after the whole list is the bones positions for each bone in the list. StartBoneX, StartBoneY, StartBoneZ, EndBoneX, EndBoneY, EndBoneZ followed by: 01 00 00 00 2Byte#Vertex 01 00 ?bone? 00 00 00 00 00 00

where 2Byte#Vertex is the number of vertexes in the model.

This is followed by a weight: Weight1, Weight2, Weight3, Weight4, Weight5, Weight6 where each weight component is a 4byte floating point.

This is followed by: a listing of each bone counting from 00 to ?bone? -1 for example with 5 bones it is: 00 01 02 03 04

This is followed by 2byte#Vertex which is followed by the connection bytes which is 4bytes for each vertex:

?? ?? ?? {01}

In this game each 4th byte is almost always 01. Followed by all of the Vertexes position: verX, verY, verZ, Followed by all of the unit sphere normals

Then Followed by all of the UV texture coordinates: texX, texY

Other closely related formats are __RSDRigidLitPS2__ used for Boats and Horns/Antlers which the game uses the term Antlers even if it is a horn

__RSDPertRRPS2__ used for water

__RSRigidPrelitPS2__ used for camp fires and level terrain

PC Version: BGH 2008
The meshes for the animals in the PC version are also in the .SKIN files with the subtype "MeshBlendedPrelit" These files contain 3 complete meshes: One high detail mesh, One low detail mesh, and one skeletal mesh. {4ByteFloatVertexes(X,Y,Z) 4ByteFloatNormalMappings(X,Y,Z) FF FF FF FF 4ByteFloatTextureMappings(U,V)} .... 2ByteFaceIndex(Vertex#1,Vertex#2,Vertex#3) ... BONES: BeginningBone(4ByteFloat(X,Y,Z)), EndBone(4ByteFloat(X,Y,Z))