NocturnalRhys Posted September 20 Posted September 20 I need help understanding the model format in Play 3. I need to see what this part of the modelModel part.rar looks like. AWG is a container for model parts. Currently, it is one part
Engineers h3x3r Posted September 20 Engineers Posted September 20 (edited) Send more samples. But it looks simple. Good sign, it doesn't use tri strips I also figured out name of the game > Dragon Ball Z HD. Can you also provide textures? I don't think that uv's are like that... Edited September 20 by h3x3r
NocturnalRhys Posted September 20 Author Posted September 20 11 hours ago, h3x3r said: Send more samples. But it looks simple. Good sign, it doesn't use tri strips I also figured out name of the game > Dragon Ball Z HD. Can you also provide textures? I don't think that uv's are like that... Hands(Texture ID 14).dds In 0x2830 start Model 3D Data GOKU.rar A3T GOKu - Textures.rar
NocturnalRhys Posted September 20 Author Posted September 20 11 hours ago, h3x3r said: Send more samples. But it looks simple. Good sign, it doesn't use tri strips I also figured out name of the game > Dragon Ball Z HD. Can you also provide textures? I don't think that uv's are like that... Hands(Texture ID 14).dds In 0x2830 start Model 3D Data Face Goku.rar
Engineers h3x3r Posted September 21 Engineers Posted September 21 So the first sample was just part of the file right? Anyway after aplying texturte I am now sure that uv's are fine. They need to be just fliped vertically or texture.
NocturnalRhys Posted September 21 Author Posted September 21 14 minutes ago, h3x3r said: So the first sample was just part of the file right? Anyway after aplying texturte I am now sure that uv's are fine. They need to be just fliped vertically or texture. the hands i showed from the .awg came from the goku.awo file as well, below i showed a .rar called face.rar which is goku's .awg face, could you provide me with information on how the .awg parts are structured? i know a way to create an awg and add model parts in dbz b3 for ps2, but i still don't know how the .awg model parts work in the ps3 version, if you tell me it would be a great help! so i can try to create an obj to awg converter and insert it into an .awo model
Engineers h3x3r Posted Sunday at 02:34 PM Engineers Posted Sunday at 02:34 PM (edited) So you want to know the struct of the #AWG or the whole #AWO? So here's struct for #AWG, there are still some unparsed data... A lot of unknowns too 😉 //------------------------------------------------ //--- 010 Editor v14.0 Binary Template // // File: // Authors: // Version: // Purpose: // Category: // File Mask: // ID Bytes: // History: //------------------------------------------------ OutputPaneClear(); BigEndian(); local string FileName=GetFileName(),FilePath=FileNameGetPath(FileName,true),BaseName=FileNameGetBase(FileName,false); local uint32 i,j,k,l; struct { char Sign[4]; uint32 DataOffset; uint32 Unknown_0; uint32 Unknown_1; uint32 Unknown_2; uint32 Unknown_0_Offset; uint32 Unknown_3; uint32 ShapeNameOffset; uint32 Unknown_1_Offset; uint32 Unknown_4; uint32 VertexBufferOffset; uint32 VertexBufferSize; uint32 IndexBufferOffset; uint32 IndexBufferSize; uint32 Unknown_2_Offset; uint32 Unknown_5; }Header; struct { FSeek(Header.ShapeNameOffset); struct { string ShapeName; }Name; struct { FSeek(Header.Unknown_1_Offset); struct { float Unknown_0[8]; uint32 Unknown_1; uint32 Unknown_2; uint32 Unknown_3; uint32 Unknown_4; uint32 Unknown_5; uint32 Unknown_6; uint32 Unknown_7; uint32 Unknown_8; uint32 Unknown_9; uint32 Unknown_10; }Info; FSeek(Header.Unknown_0_Offset); float Unknown_0[12]; ubyte Unknown_1; ubyte Unknown_2; ubyte Unknown_3; ubyte Unknown_4; uint32 TypeInfoOffset[7]; struct { uint32 Type; uint32 Offset; }TypeInfo[Unknown_3]; for (i=0; i < Unknown_3; i++) { if (TypeInfo[i].Type == 0) { FSeek(TypeInfo[i].Offset); float Unknown[16]; } else { FSeek(TypeInfo[i].Offset); uint32 Unknown_5[4]; float Unknown_6[6]; uint32 Unknown_7; uint32 Stride; uint32 Unknown_8; uint32 Unknown_9; uint32 Unknown_10; uint32 VertexCount; uint32 Unknown_11; uint32 IndexCount; // *3 ubyte Unknown_12; string MaterialName; // Not sure ubyte Unknown_13; uint16 Unknown_14; } } }MainInfo; struct { FSeek(Header.VertexBufferOffset); struct { float PosX,PosY,PosZ; float Unknown_0; uint32 Unknown_1; float VNPosX,VNPosY,VNPosZ; uint32 FFFFFFFF; float UVPosX,UVPosY; //Printf("v %f %f %f\nvt %f %f\nvn %f %f %f\n",PosX,PosY,PosZ,UVPosX,UVPosY,VNPosX,VNPosY,VNPosZ); }Vertices[MainInfo.VertexCount]<optimize=false>; //Printf("\ng %s_Shape\n",Name.ShapeName); FSeek(Header.IndexBufferOffset); struct { uint16 F1,F2,F3; //Printf("f %u/%u/%u %u/%u/%u %u/%u/%u\n",F1+1,F1+1,F1+1,F2+1,F2+1,F2+1,F3+1,F3+1,F3+1); }Indices[MainInfo.IndexCount]<optimize=false>; //OutputPaneSave(FilePath + Name.ShapeName + ".obj"); }Buffers; }Shape; Edited Sunday at 03:08 PM by h3x3r
Solution NocturnalRhys Posted Monday at 06:55 AM Author Solution Posted Monday at 06:55 AM 16 hours ago, h3x3r said: So you want to know the struct of the #AWG or the whole #AWO? So here's struct for #AWG, there are still some unparsed data... A lot of unknowns too 😉 //------------------------------------------------ //--- 010 Editor v14.0 Binary Template // // File: // Authors: // Version: // Purpose: // Category: // File Mask: // ID Bytes: // History: //------------------------------------------------ OutputPaneClear(); BigEndian(); local string FileName=GetFileName(),FilePath=FileNameGetPath(FileName,true),BaseName=FileNameGetBase(FileName,false); local uint32 i,j,k,l; struct { char Sign[4]; uint32 DataOffset; uint32 Unknown_0; uint32 Unknown_1; uint32 Unknown_2; uint32 Unknown_0_Offset; uint32 Unknown_3; uint32 ShapeNameOffset; uint32 Unknown_1_Offset; uint32 Unknown_4; uint32 VertexBufferOffset; uint32 VertexBufferSize; uint32 IndexBufferOffset; uint32 IndexBufferSize; uint32 Unknown_2_Offset; uint32 Unknown_5; }Header; struct { FSeek(Header.ShapeNameOffset); struct { string ShapeName; }Name; struct { FSeek(Header.Unknown_1_Offset); struct { float Unknown_0[8]; uint32 Unknown_1; uint32 Unknown_2; uint32 Unknown_3; uint32 Unknown_4; uint32 Unknown_5; uint32 Unknown_6; uint32 Unknown_7; uint32 Unknown_8; uint32 Unknown_9; uint32 Unknown_10; }Info; FSeek(Header.Unknown_0_Offset); float Unknown_0[12]; ubyte Unknown_1; ubyte Unknown_2; ubyte Unknown_3; ubyte Unknown_4; uint32 TypeInfoOffset[7]; struct { uint32 Type; uint32 Offset; }TypeInfo[Unknown_3]; for (i=0; i < Unknown_3; i++) { if (TypeInfo[i].Type == 0) { FSeek(TypeInfo[i].Offset); float Unknown[16]; } else { FSeek(TypeInfo[i].Offset); uint32 Unknown_5[4]; float Unknown_6[6]; uint32 Unknown_7; uint32 Stride; uint32 Unknown_8; uint32 Unknown_9; uint32 Unknown_10; uint32 VertexCount; uint32 Unknown_11; uint32 IndexCount; // *3 ubyte Unknown_12; string MaterialName; // Not sure ubyte Unknown_13; uint16 Unknown_14; } } }MainInfo; struct { FSeek(Header.VertexBufferOffset); struct { float PosX,PosY,PosZ; float Unknown_0; uint32 Unknown_1; float VNPosX,VNPosY,VNPosZ; uint32 FFFFFFFF; float UVPosX,UVPosY; //Printf("v %f %f %f\nvt %f %f\nvn %f %f %f\n",PosX,PosY,PosZ,UVPosX,UVPosY,VNPosX,VNPosY,VNPosZ); }Vertices[MainInfo.VertexCount]<optimize=false>; //Printf("\ng %s_Shape\n",Name.ShapeName); FSeek(Header.IndexBufferOffset); struct { uint16 F1,F2,F3; //Printf("f %u/%u/%u %u/%u/%u %u/%u/%u\n",F1+1,F1+1,F1+1,F2+1,F2+1,F2+1,F3+1,F3+1,F3+1); }Indices[MainInfo.IndexCount]<optimize=false>; //OutputPaneSave(FilePath + Name.ShapeName + ".obj"); }Buffers; }Shape; Thanks! Thank you so much, really. With this I'll be able to make an OBJ to AWG converter. When I have it, I'll share it, although I don't know if many people like the B3HD version, but I'll post it anyway! Thanks in advance for the help, and I'll continue learning more as a researcher.
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