and TaylorMouse thanks for your hard work and for keeping the thread alive
![Very Happy :D](images/smilies/[colon]D.gif)
Still a lot of unk structs.TaylorMouse wrote:Damn!! I wanted to beat this one![]()
But.. Finale00, nice one
T.
Code: Select all
float[6] bbox?
Where are extraction tool version final?TaylorMouse wrote:well,
buy the game
use the extraction tool in the forum to extract the models from their archive
download Naosis
get the py script from Finale00 dropbox ( get everything, it's great)
start naosis and look at the models
export them to whatever
import them into your favorite 3D tool !
I'm making a little tool myself to do this in c# (convert to OBJ) but it is not finished yet...
T.
Code: Select all
public static Material GetMaterial(string fileName)
{
string file = fileName + ".bmat";
Material mat = new Material();
if (!File.Exists(file)) return null;
using (BinaryReader br = new BinaryReader(new FileStream(file, FileMode.Open, FileAccess.Read)))
{
Debug.WriteLine("- " + br.ReadString(3)); // BOD
br.ReadByte(); // FD
int nbrTextures = br.ReadInt16();
int unk1 = br.ReadInt16();
uint unk2 = br.ReadUInt32();
uint unk3 = br.ReadUInt32();
int unk4 = br.ReadByte();
int unk5 = br.ReadByte();
uint unk6 = br.ReadUInt32();
uint unk7 = br.ReadUInt32();
int len = br.ReadInt16();
br.ReadString(len); // Material
br.ReadBytes(13);
len = br.ReadInt16();
br.ReadString(len); // Name
br.ReadBytes(10);
len = br.ReadInt16();
br.ReadString(len); // Model name
br.ReadBytes(9);
len = br.ReadInt16();
Debug.Write(" - " + br.ReadString(len) + ": "); // Shader Name
br.ReadBytes(10);
len = br.ReadInt16();
Debug.WriteLine(br.ReadString(len)); //
br.ReadBytes(9);
len = br.ReadInt16();
br.ReadString(len); // parameters
br.ReadBytes(16);
len = br.ReadInt16();
Debug.Write(" - " + br.ReadString(len) + ": " ); // Emissive map
br.ReadBytes(15);
len = br.ReadInt16();
br.ReadString(len); // texture parameters
br.ReadBytes(13);
len = br.ReadInt16();
br.ReadString(len); // value
br.ReadBytes(10);
len = br.ReadInt16();
mat.EmisMap = br.ReadString(len) + ".dds";
Debug.WriteLine(mat.EmisMap); // TEXTURE EMIS .dds
br.ReadBytes(9);
len = br.ReadInt16();
br.ReadString(len); // UAddress Mode
br.ReadBytes(14);
len = br.ReadInt16();
br.ReadString(len); // VAddress Mode
br.ReadBytes(26);
len = br.ReadInt16();
br.ReadString(len); // Specular Color
br.ReadBytes(15);
len = br.ReadInt16();
br.ReadString(len); // Vector4 Parameter
br.ReadBytes(55);
len = br.ReadInt16();
br.ReadString(len); // EmissiveColor
br.ReadBytes(66);
len = br.ReadInt16();
Debug.Write( " - " + br.ReadString(len) + ": ") ; // Diffuse Map 1
br.ReadBytes(30);
len = br.ReadInt16();
mat.DiffMap = br.ReadString(len) + ".dds";
Debug.WriteLine(mat.DiffMap); // TEXTURE DIFFUSE .dds
br.ReadBytes(41);
len = br.ReadInt16();
Debug.Write(" - " + br.ReadString(len) + ": "); // Specular Map
br.ReadBytes(30);
len = br.ReadInt16();
mat.SpecMap = br.ReadString(len) + ".dds";
Debug.WriteLine(mat.SpecMap ); // TEXTURE SPECULAR .dds
br.ReadBytes(41);
len = br.ReadInt16();
Debug.Write(" - " + br.ReadString(len) + ": "); // Normal Map
br.ReadBytes(30);
len = br.ReadInt16();
mat.NormMap = br.ReadString(len) + ".dds";
Debug.WriteLine(mat.NormMap); // TEXTURE NORMAL .dds
br.ReadBytes(9);
len = br.ReadInt16();
br.ReadString(len); // SRGBTexture
br.ReadBytes(23);
len = br.ReadInt16();
br.ReadString(len); // FloatParameters
br.ReadBytes(25);
br.Close();
}
mat.FileName = file;
return mat;
}