Page 1 of 4

Rohan Online: GMF Models

Posted: Tue Aug 14, 2007 7:05 am
by mariokart64n
can anyone looking into this if they got time. I'm a n00b at findingfloats, and can't seem to find any logical xyz coordinates. I'm not even sure the first ones I'm pulling out are even vertices.. maybe there bone positions

http://www.datafilehost.com/download.php?file=13f7272e

Posted: Tue Aug 14, 2007 9:54 pm
by fatduck
This game looks petty good that why I am interest!

Here is what I found about GMF:

Code: Select all

Since this one out-dated, so I deleted it. See the new formats below

Posted: Wed Aug 15, 2007 12:50 am
by mariokart64n
:eek:
wow that whole upper chunk was just all info on the bones in the transform matrix eh

surprising, there where just static items in the game too. that seems memory consuming, with all that junk.

you want me to upload a few character files?

Posted: Fri Aug 17, 2007 9:07 pm
by fatduck
I want to download the whole client but I can't found any download in their website? http://www.rohan.cn/
Could you point me to the right direction!?

Posted: Sat Aug 18, 2007 6:12 am
by babebabe

Posted: Sat Aug 18, 2007 8:17 am
by fatduck
1.8G for the client and it's in Japanese!? >_<!
I lost my interest to download it!

Could you upload some character models with textures for me. So I can look up for the format.

Posted: Wed Aug 29, 2007 5:13 pm
by babebabe
http://www.bibabibo.net/A.rar

Here guy, a plenty of GMF file (6M compressed), many of them is ver 1000, abit different from 900 and 1200, hope you findout soon ^^
If you needed a texture, I will upload later
Regards,

Posted: Wed Aug 29, 2007 11:59 pm
by fatduck
Holy shit! I was wrong about the format before! I think the 1st and the 2nd section should be another mesh with bone/skin data!

Does this game use Normal Map, Specular Map etc!? It seem to have more than 1 layer of texture coordinate as well!

And also there should have some external skeleton files as well as animation files!

Could you upload:
1. Texture files for the about mesh
2. Material files
3. Skeleton files and/or animation files

PS: I think ver 900 and 1000 are the same! Will post the new format I found later.

Posted: Thu Aug 30, 2007 7:53 am
by babebabe
Hey guys, here http://www.bibabibo.net/Data.rar (9M)
GAF file is for animation
GRF file is material
GTX file is texture
GMF is mesh, of course ^_^
As I see, Rohan just used standard texture, not normal map.
Next day I will upload bigger package containt all monster data ^_^

Posted: Thu Aug 30, 2007 9:54 am
by fatduck
I had a quick look on the animation file(GAF)! There is no bones structure(skeleton parent/child info.) inside!

Is there any skeleton file as well!?

Posted: Thu Aug 30, 2007 5:29 pm
by babebabe
0h 5h!t, I just forgot it ^_^
Here http://www.bibabibo.net/Ske.ra

Posted: Thu Aug 30, 2007 11:28 pm
by fatduck
OK, here is what I got so far!
I use the "0bear01_01.gmf" as base and wonder if "m_bear101.grf" exist? Otherwise the name for looking up the material use internal name for it!? Maybe there are some script/info file to control the conbination of all sort of files together.

Format of the Mesh/Geometry file: GMF
Strange enough there are 3 meshes in one GMF, all with same verts and faces count!? And the direction of V texture coordinate in mesh 1 oppisite in Mesh 2 and Mesh 3. Mesh 2 usually divided in small pieces like for the explosiion!?

Code: Select all

==============
Header Section
==============
char[4]		header	//CMF
dword		ver	//Version
dword		??	
dword		nMLen	//length of material name
char[nMLen]	sMtl	//material name(internal)??

==============
Mesh 1 Section
==============
dword		nVerts	//Verts count
dword		nFaces	//Faces count
dword		??
dword		nLayer	//No. of UV layers
*dword		??	//appears in version 1200 only
struct VertPool {
 float X 3	posXYZ	//Position XYZ
 float X 3	norXYZ	//Normal XYZ
 byte X 7	??	//always FF
 dword		??	//always 0
 struct TexCoord {
  float X 2	uv	
 } TexCoord[nLayer]
 dword		nABone	//No. of Bones for this vert
 struct BoneSkin {			//appears when bFlag == 1
   dword	nBLen	//length of Bone name
   char[nBLen]	sBone	//Bone name
   float	wgt	//Bone weight
   float X 3		//another set of position ??
   float X 3		//another set of normal ??
 } BoneSkin[nABone]
} VertPool[nVerts]
struct Face {
 dword 		nIdx1	//Face index 1
 dword 		nIdx2	//Face index 2
 dword 		nIdx3	//Face index 3
} Face[nFace]

==============
Mesh 2 Section
==============
dword		nLOD	//always 20
dword		nPart	//No. parts of this mesh
struct MeshPart {
 dword		nBone	//No. bones for this part
 struct BonesData {
  dword		nLen	//length of bone name
  char[nLen]	sBName	//Bone name
 } BonesData[nBone]
 dword		nFidx	//face index count
 struct face {
  word	f1	//face index 1
  word	f2	//face index 2
  word	f3	//face index 3
 } face[nFidx/3]
 dword	nVert	//vert count
 struct vertPool {
  float X 3	vt	//Position xyz
  byte X 4	??	//Vert color??
  float X 3	norl	//Normal
  float X 3	??
  *dword		??	//appears in version 1200 only
  float X 2	uv	//Texture coordinate
  *float X	??	//7 bytes for ver 1200, 5 for the others
 } vertPool[nVert]
} MeshPart[nPart]
==============
Mesh 3 Section
==============
Same as Mesh 2 Section
Format of the material file: GRF

Code: Select all

char[4]		header	//CRF
dword		ver	//Version
dword		nMLen	//length of material name
char[nMLen]	sMtl	//material name (Internal name)??
byte X 4 	colAmb	//Ambient Color RGB, 4th byte possibly not used
byte X 4 	colDif	//Diffuse Color RGB
byte X 4 	colSpc	//Specular Color RGB
byte X 4	??	//possibly another color
dword		nTex	//Texture count
byte		??	//always 1, terminator
struct Texture {
 dword		nTLen	//length of Texture name
 char[nMLen]	sTex	//texture name
} Texture[nTex]
Format of the Skeleton file: GSF

Code: Select all

char[4]		header	//CSF
dword		ver	//Version
dword		nBones	//Bones count
struct Bone {
 dword		nBLen	//length of Bone name
 char[nBLen]	sBone	//Bone name
 float X 3	pos1	//Position XYZ
 float X 4	rot1	//Rotation Quat XYZW
 float X 3	pos2	//another set of Position XYZ ??
 float X 4	rot2	//another set of Rotation Quat XYZW ??
 dword		nPLen	//length of Parent name
 char[nBLen]	sPBone	//Parent name
 dword		nChild	//Children count
 struct ChildBone {
  dword		nCLen	//length of Child name
  char[nBLen]	sCBone	//Child name
 } ChildBone[nChild]
} Bone[nBones]
Format of the Animation file: GAF

Code: Select all

char[4]		header	//CAF
dword		ver	//Version
float		fTime	//Length of this animation in second
dword		??	//always 1, No. of amnimation ??
dword		nBones	//No. of bones
struct Animation {
 dword		nBLen	//length of Bone name
 char[nBLen]	sBone	//Bone name
 dword		nKeys	//no. of key frames
 struct KeyData {
  float		fKTime	//key time
  float	X 3	posXYZ	//position XYZ
  float X 4     rotXYZW	//rotation quat XYZW
 } KeyData[nKeys]
} Animation[nBones]
The last one texture file: GTX is actually DDS file. Just rename it will do.

I havn't tested the skeleton and animation file so not sure if they are correct!

Posted: Tue Sep 04, 2007 8:14 pm
by mariokart64n
yay, i can't wait to see more :D ..any luck on the characters

Posted: Wed Sep 05, 2007 5:14 pm
by fatduck
There are no different between Items and Characters.

The formats above had been tested!

Posted: Wed Sep 05, 2007 5:23 pm
by fatduck
Forgot to mention that the skeleton format had been tested correct as well.
Since I am not going to write any program for it so I am not able to test the animation. I should leave these for anyone who interested in! :P