S4L Model Exporting

Post questions about game models here, or help out others!
fatduck
mega-veteran
mega-veteran
Posts: 315
Joined: Wed Aug 02, 2006 10:07 pm
Has thanked: 10 times
Been thanked: 94 times

Re: [Request] Model Exporting

Post by fatduck »

The format basically like this:

Code: Select all

dword	SCN_Version				//? alway 1
<object>
<object>
...


struct Common_Obj_Properties {
  dword	Object_ID
  char[]	Object_Name
  char[]	Parent_Name
  float		??				//always 0.1
  float[16]	Object_Transform_Matrix		//Object_Version = 0.1 parent base, or 0.2 world base
  float	Object_Version
}


struct SCN_ROOT {				//Object_ID = 0x6278D57A
  Common_Obj_Properties
  dword		num_Object
  *char[]	??				//only on Object_Version = 0.2
}


struct Bonesystem {				//Object_ID = 0x5E74333F
  Common_Obj_Properties
}


struct Bone {					//Object_ID = 0x6D411AD1
  Common_Obj_Properties
  dword		num_Animation

  struct Anim {
    char[]	Anim_Name
    *char[]	Anim_Copy			//same animation as this name
    dword	Anim_Tick_Time
    byte	Unknown_Flag
    float[3]	Initial_Translation
    float[4]	Initial_Rotation
    float[3]	Initial_Scale
    
    dword	num_Trans_Animation
    struct Trans_Anim {
      dword	Tick_Time
      float[3]	Trans_XYZ
    }

   dword	num_Rotate_Animation
    struct Rotate_Anim {
      dword	Tick_Time
      float[4]	Rotate_XYZW
    }

   dword	num_Scale_Animation
    struct Scale_Anim {
      dword	Tick_Time
      float[3]	Scale_XYZ
    }

    dword	num_Visibility_Animation
    struct Visibility_Anim {
      dword	Tick_Time
      float	Visibility_Value
    }
    
  }

}


struct Helper {					//?? Object_ID = 0x25ADF0D1
  Common_Obj_Properties
  float[16]	??
}


struct Light {					//?? Object_ID = 0xC3E8BE62
  Common_Obj_Properties
  float[4]	Color01_RGBA
  float[4]	Color02_RGBA
  float[4]	Color03_RGBA
  float[11]	??
}


struct Line {					//?? Object_ID = ADEE38A2
  Common_Obj_Properties
  float[7]	??
}


struct Mesh {					//Object_ID = 0x081098F8
  Common_Obj_Properties
  dword		??
  float		??
  dword		ExtraUVs
  dword		num_Texture

  struct Texture {
    char[128]	Texture_Name
    dword	Face_Start
    dword	Face_Count
  }

  dword	num_Vert
  struct Vert_Coord {
    float[3]	Coord_XYZ
  }

  dword	num_Face
  struct Face {
    word[3]	Index_XYZ
  }

  dword	num_Normal
  struct Normal {
    float[3]	Normal_XYZ
  }

  dword	num_UV
  struct UV {
    float[2]	Tex_UV
  }

  dword	num_Tangent
  struct Tangent {
    float[3]	Tangent_XYZ
  }

  struct Skin {
    dword	num_Skin_Bone
    struct Skin_Bone {
      char[]	Bone_Name
      float[16]	Inverse_Matrix
      dword	num_Skin_Data
      struct Skin_Data {
        dword	Vert_Index
        float	weight
      }
    }
  }

  dword	num_Animation
  struct Anim {
    char[]	Anim_Name
    *char[]	Anim_Copy				//same animation as this name
    dword	Anim_Tick_Time
    byte	Unknown_Flag
    float[3]	Initial_Translation
    float[4]	Initial_Rotation
    float[3]	Initial_Scale
    
    dword	num_Trans_Animation
    struct Trans_Anim {
      dword	Tick_Time
      float[3]	Trans_XYZ
    }

   dword	num_Rotate_Animation
    struct Rotate_Anim {
      dword	Tick_Time
      float[4]	Rotate_XYZW
    }

   dword	num_Scale_Animation
    struct Scale_Anim {
      dword	Tick_Time
      float[3]	Scale_XYZ
    }

    dword	num_Visibility_Animation
    struct Visibility_Anim {
      dword	Tick_Time
      float	Visibility_Value
    }

    dword	num_Morph_Animation			//??
    struct Morph_Animation {
      dword	Tick_Time
      dword	count1
      struct Anim_Data1 {
        dword	 Index
        float[3] value
      }
      dword	count2
      struct Anim_Data2 {
        dword	Index
        word[2]	??					//?
        float	value
      }
    }

  }

}
Animation just not look right in Object_Version 0.2. (possibly I don't have patient to reuse/copy keys)
Last edited by fatduck on Sun Jun 01, 2014 9:26 am, edited 3 times in total.
No more Fatduck, no more FatImporter, Byebye everyone!
fatduck
mega-veteran
mega-veteran
Posts: 315
Joined: Wed Aug 02, 2006 10:07 pm
Has thanked: 10 times
Been thanked: 94 times

Re: [Request] Model Exporting

Post by fatduck »

Let's start form a simple file: 27_female_face.scn
You should phase the file like this.
27_female_face_SC.jpg
offset 0x04 is the first object with Object_ID: 0x6278D57A
start form 0x08 is the Common_Obj_Properties

offset 0x68 is the 2nd object with Object_ID: 0x6D411AD1
2nd Common_Obj_Properties start form 0x6C

3rd Object start from 0x127, Object_ID: 0x081098F8
3rd Common_Obj_Properties start form 0x12B

etc...
You do not have the required permissions to view the files attached to this post.
No more Fatduck, no more FatImporter, Byebye everyone!
User avatar
Seyren
advanced
Posts: 63
Joined: Sat Oct 30, 2010 1:39 pm
Has thanked: 18 times
Been thanked: 9 times

Re: [Request] Model Exporting

Post by Seyren »

I got stuck here...

Code: Select all

	if ChunkID == 135305464 then
	(	
		print "--------------------------------"
		print "Chunk ID: Mesh"
		Common_Obj_Properties()
		readlong f
		readfloat f
		readlong f
		readlong f
		
		Texture_array=#()
		counter = 2048
		
		for i = 1 to counter do
		(	
			tex = readstring f
			if tex != "" then
			(
				counter = counter - (tex.count)
				append Texture_array tex
				
			)
		)
			print "Textures:"
			print Texture_array
			print counter
		
	)	
I don't know how to update the counter, it always goes to 2048... if i were able to update the counter so it removes the string sizes it could fit and go ahead to the mesh...

I tried puting the counter as global value but i got no luck...

Also it's my first ever maxscript so noob errors are expected... i had a hard time finding some stuff so it's probably a very poor script ><
fatduck
mega-veteran
mega-veteran
Posts: 315
Joined: Wed Aug 02, 2006 10:07 pm
Has thanked: 10 times
Been thanked: 94 times

Re: [Request] Model Exporting

Post by fatduck »

Try using do/while instead of for/next

Code: Select all

SCN_Version = readlong fstream
num_object = 1     --since there is at least SCN_ROOT object(0x0x6278D57A) there
obj_counter = 0
do (
 object_ID = readlong fstream
 Common_Obj_Properties ()
 if object_ID = 0x0x6278D57A then (
  num_object += readlong fstream
 ) else if object_ID = XXX then (
  ...
 ) else if object_ID = XXX then (
  ...
 )
 obj_counter += 1 
) while obj_counter < num_object
No more Fatduck, no more FatImporter, Byebye everyone!
User avatar
Seyren
advanced
Posts: 63
Joined: Sat Oct 30, 2010 1:39 pm
Has thanked: 18 times
Been thanked: 9 times

Re: [Request] Model Exporting

Post by Seyren »

YESSSSSSSSSSSSSSSSSSSSSS

Thank you for your help! :)

Image

I'm SO HAPPY ABOUT THIS

However this was face 00, not 27


Image for some reason this happens when i use the 27 one...

I guess i'll have to do some fixes to make this work since this one is weird, but all of them work except this one o_o

EDIT: Okay so i did the new structure you gave me and it works in some faces like 00 female but in some others it doesn't...
Last edited by Seyren on Sat May 03, 2014 6:37 pm, edited 1 time in total.
User avatar
Seyren
advanced
Posts: 63
Joined: Sat Oct 30, 2010 1:39 pm
Has thanked: 18 times
Been thanked: 9 times

Re: [Request] Model Exporting

Post by Seyren »

Sorry for the double post, it's just to point out some progress >_<

I remade the whole script again (Ver 5, the 4 is old now)

And now i'm able to import almost all weapons and faces

Image

However there are Some Ver 0.2 Weapons like the katana which has a different Animation pattern

Image

The "BASE" Animation shares the same structure than other ones, however after that one Starts putting up Animation Names without any property

AT first i don't know how to deal with this but i know i solve it soon...

EDIT: Another known Issue

Skin is not readed properly

I'm trying to parse properly the Skin Weights but something goes wrong.

The file i'm trying to parse is attached in this post.

This is the code i'm using according to fatduck's file structure

Code: Select all

Num_Skin = readlong f
		print "Number of Skin Weights:"
		print Num_Skin
		
		for i = 1 to Num_Skin do
		(
			num_Skin_Bone = readlong f
			for i = 1 to Num_Skin_Bone do
			(
				BoneName = readstring f
				print "Bone Name:"
				print BoneName
				
				for m = 1 to 16 do readfloat f
				
				num_Skin_Data = readlong f
				for i = 1 to num_Skin_Data do
				(
					Vert_Index =readlong f #unsigned
					Weight = readfloat f
				)
			)
The log displays like this:

Code: Select all

"Number of Vertex:"
820
"Faces:"
841
"Normals:"
820
"Number of UV's:"
820
"Number of Tangents:"
820
"Number of Skin Weights:"
13
"Bone Name:"
"ip01 Pelvis"
"Bone Name:"
"Bip01 Spine"
"Bone Name:"
"Bip01 Spine1"
"Bone Name:"
"Bip01 Spine2"
"Bone Name:"
"Bip01 Neck"
"Bone Name:"
"Bip01 Head"
"Bone Name:"
"Bip01 L Clavicle"
"Bone Name:"
"Bip01 L UpperArm"
"Bone Name:"
"Bip01 L Forearm"
"Bone Name:"
"Bip01 R Clavicle"
"Bone Name:"
"Bip01 R UpperArm"
"Bone Name:"
"Bip01 R Forearm"
"Bone Name:"
"Female_Breast_Bone_01"
"Bone Name:"
""
"Bone Name:"
""
"Bone Name:"
""
"Bone Name:"
undefined
-- Error occurred in i loop; filename: C:\Users\Seyren Windsor\Desktop\test5.ms; position: 8445; line: 447
--  Frame:
--   i: 17
--   BoneName: undefined
--   num_Skin_Data: undefined
--   called in i loop; filename: C:\Users\Seyren Windsor\Desktop\test5.ms; position: 8453; line: 448
--  Frame:
--   i: 1
--   num_Skin_Bone: 1107296256
--   called in anonymous codeblock; filename: C:\Users\Seyren Windsor\Desktop\test5.ms; position: 8459; line: 449
--  Frame:
--   Texture_array: #("00_female_body_atex.tga", "00_female_body_n.tga")
--   Num_UV: 820
--   msh: undefined
--   counter: 2010
--   vert_array: #([-0.00652255,200.618,-18.3713], [-0.00652228,198.654,-18.7464], [0.0582619,202.839,13.8164], [-0.00651711,196.875,10.6435], [-0.00652487,193.976,-15.546], [-0.00652486,208.534,15.4597], [-19.1828,222.384,1.24953], [-16.7811,212.394,-6.7046], [-17.0796,215.661,-2.37712], [-13.1488,214.932,-5.28716], [-12.9451,206.757,-13.887], [-8.3649,210.683,-14.4909], [-5.14348,203.351,-19.7685], [-3.39289,206.063,-18.6364], [-14.6014,215.671,15.6438], [-15.5689,209.907,15.5989], [-7.75438,208.534,15.4149], [-5.93106,199.075,-20.038], [-13.9935,200.026,-15.2819], [-16.0568,203.013,-10.0848], ...)
--   Num_Tangent: 820
--   Normal_array: #([-0.267179,0.190111,-0.944708], [0.0372846,-0.230603,-0.972333], [0.118771,-0.362523,0.924376], [0.139529,-0.254226,0.957027], [0.0244996,-0.388565,-0.921095], [0.0160021,-0.238871,0.970919], [-0.319085,0.575294,-0.753141], [-0.668708,0.45332,-0.589348], [-0.494675,0.350334,-0.795338], [-0.376597,0.642894,-0.66698], [-0.640225,0.357189,-0.680094], [-0.487356,0.498109,-0.717197], [-0.0998374,0.231343,-0.967736], [-0.014206,0.392957,-0.919447], [0.203665,0.0452499,0.977994], [-0.193522,-0.224551,0.955053], [-0.00535212,-0.142643,0.98976], [-0.166585,-0.214546,-0.962403], [-0.776572,-0.124208,-0.617663], [-0.949303,-0.109832,-0.294553], ...)
--   UV_array: #([0.440083,0.27141,0], [0.440376,0.255625,0], [0.0186661,0.299197,0], [0.0186661,0.243351,0], [0.440558,0.216921,0], [0.0186661,0.352517,0], [0.289006,0.452292,0], [0.282699,0.370048,0], [0.295327,0.415993,0], [0.32787,0.390824,0], [0.344095,0.324518,0], [0.366027,0.355734,0], [0.403793,0.29453,0], [0.420272,0.315937,0], [0.0887454,0.431739,0], [0.099458,0.3775,0], [0.0577131,0.352517,0], [0.398121,0.260445,0], [0.342347,0.270135,0], [0.311871,0.293816,0], ...)
--   bitmappath: undefined
--   Object_ID: 135305464
--   i: 2010
--   Tg_array: #([0.963603,0.0621032,-0.260025], [0.9993,0.00567165,0.0369736], [-0.992166,-0.0796488,0.0962444], [-0.985402,-0.130858,0.108904], [0.9997,0.00889141,0.0228395], [-0.999871,-0.00516332,0.015209], [0.584509,0.745002,0.321437], [0.72264,0.209703,-0.658647], [0.732925,0.659959,-0.165155], [0.92519,0.224586,-0.305915], [0.732238,0.016096,-0.680859], [0.836196,0.0296461,-0.54763], [0.99481,0.00402659,-0.101668], [0.996922,0.0764695,0.0172788], [-0.749569,-0.635404,0.185495], [-0.978189,-0.0307155,-0.205432], [-0.801131,-0.591742,-0.0896132], [0.985032,0.00763363,-0.172203], [0.624883,-0.0268144,-0.780258], [0.303927,-0.0812187,-0.949227], ...)
--   Num_Vertex: 820
--   Num_Skin: 13
--   map: undefined
--   Num_Face: 841
--   face_array: #([10,8,9], [9,7,10], [10,11,8], [11,10,12], [12,14,13], [13,11,12], [14,1,13], [17,15,16], [18,13,1], [1,2,18], [13,18,19], [19,11,13], [8,11,20], [20,21,8], [22,21,20], [21,22,86], [86,85,21], [24,23,85], [85,86,24], [25,8,21], ...)
--   NumAnim: undefined
--   tex: ""
--   Num_Normals: 820
--   num_faces: 841
-- Unable to convert: undefined to type: Integer
So we can see it actually gets the Model right, but when it's trying to parse the Skinning something goes wrong.
The first thing that is pointed out is that it doesn't get the first bone name right, "ip01 Pelvis" instead of "Bip01 Pelvis", this was done by using readbyte the fstream instead of readlong in hopes to do the trick (if i use readlong it gets "1 Pelvis"), but it didn't

This is really strange for me because in the file it actually fits a double byte
Image

After reading some Bones it starts to get messed up until it reaches to "SOH" which is under Breast, so it stops reading bones or something is wrong in the pattern.

I know no one really cares about this game because it's involved in a Online f2p game, but my intentions are not inside the online game and i don't have intentions to involve this to the actual game, and well, i'm doing my best to make my first ever MAXScript perfect :P

If someone is interested he is welcome to help :)
You do not have the required permissions to view the files attached to this post.
fatduck
mega-veteran
mega-veteran
Posts: 315
Joined: Wed Aug 02, 2006 10:07 pm
Has thanked: 10 times
Been thanked: 94 times

Re: [Request]S4 League Model Exporting

Post by fatduck »

sorry my fault, there SHOULD NOT have "dword num_Skin" in then structure!!!

So delete your following lines(Outer i loop) will do:

Code: Select all

Num_Skin = readlong f
      print "Number of Skin Weights:"
      print Num_Skin
      
      for i = 1 to Num_Skin do
      (


      )
@0xC075: that 0x0D is actually num_Skin_Bone!
No more Fatduck, no more FatImporter, Byebye everyone!
User avatar
Seyren
advanced
Posts: 63
Joined: Sat Oct 30, 2010 1:39 pm
Has thanked: 18 times
Been thanked: 9 times

Re: [Request]S4 League Model Exporting

Post by Seyren »

Again, you are awesome, thank you ^_^ i don't know what i could have done without you :P


What i found today:

In the Mesh ID, there is a dword before the Texture strings that tells you the number of Textures the model has.

With this new information i'm trying to get a good loop for the textures, but i'm having a hard time, since the multi textured models have a strange pattern.

I'm using as an example ds4_station.scn which i attached on the post.

This is mi loop (pretty crappy)

Code: Select all

		Num_Tex = readlong f
		print "Number of Textures:"
		print Num_Tex
		Texture_array=#()
		
		for i = 1 to Num_Tex do
		(	
			texture = readstring f
			counter = (2051 - texture.count)
			for i = 1 to counter do readbyte f
			append Texture_array texture	
		)
The reason it's 2051 it's because it usually works that way, since the string of the texture is Tex + it's bump tex, which explains why is 1024 bytes at some points and more at others, since even if there is no bump there is still space for it.

I couldn't get to parse correctly the textures from the file attached before since there are a lot of weird things on that file

This file also has Dummies (helpers)


EDIT: The file is too big to upload it, sorry :(


Also i haven't found any Animation structure that follows the same pattern than Katana_a.scn, it's really strange, it just goes and gets all the animations strings and then starts describing them.

Attached if someone is interested.
You do not have the required permissions to view the files attached to this post.
fatduck
mega-veteran
mega-veteran
Posts: 315
Joined: Wed Aug 02, 2006 10:07 pm
Has thanked: 10 times
Been thanked: 94 times

Re: [Request]S4 League Model Exporting

Post by fatduck »

Format updated: viewtopic.php?p=94248#p94248

Key points here:
The Texture block is:

Code: Select all

  struct Texture {
    char[128]	Texture_Name
    dword	Face_Start
    dword	Face_Count
  }
And found a flag for Extra_UV!
the extra UV data is directly continue from the standard UV block.
eg: num_UV = 100
<100 UV Data>
<100 Extra UV Data>
..

Two new objects as well: Light? and Line?
No more Fatduck, no more FatImporter, Byebye everyone!
User avatar
Seyren
advanced
Posts: 63
Joined: Sat Oct 30, 2010 1:39 pm
Has thanked: 18 times
Been thanked: 9 times

Re: [Request]S4 League Model Exporting

Post by Seyren »

The texture structure works on all scn's :), thank you so much, didn't know about the 2 values after the empty bytes

Things i found today:

As far as i found only the models that have 0 number of tangents actually work, (at least for me, since my script is probably a mess.)

I got this error in the following file: ds4_station01 (http://puu.sh/8AYhD.rar)

Code: Select all

"Model Name:"
"Object23"
"Parent:"
"ds4_station01.scn"
"Object Version:"
0.1
"sub_wall.tga"
"ds5_sector02_sidewall01.tga"
"sub_wall3.tga"
"ds5_sector02_sidewall01.tga"
"sub_wall2.tga"
"ds5_sector02_sidewall01.tga"
"sub_wall8.tga"
"ds5_sector02_sidewall01.tga"
"ds5_bottom.tga"
"ds5_sector02_sidewall01.tga"
"sub_wall7.tga"
"ds5_sector02_sidewall01.tga"
"Number of Vertex:"
4851
"Faces:"
2125
"Normals:"
4851
"Number of UV's:"
4851
"Number of Tangents:"
972691840
and then it goes boom
so there must be something in the file that changes the pattern, i'll look it up tomorrow

New ID: Sky

not sure how it's the struct tho

the values were taken also from ds4_station01

Code: Select all


struct SCN_ROOT //Object_ID = 0xC3E8BE62
{            
  Common_Obj_Properties

dword  // 1
float    // 0.95
float // 0.95

float // 1, 00 00 80 3F, this value is very common on the files
float // 1, 00 00 80 3F

float    // 0.95
float // 0.95

float // 1, 00 00 80 3F, this value is very common on the files
float // 1, 00 00 80 3F

dword[5]

float // 0.99

dword[2]

float // 1, 00 00 80 3F
float // 1, 00 00 80 3F

dword[4]
}
So pretty much 92 bytes can be skipped since there doesn't seem to be anything useful anyway
Last edited by Seyren on Tue May 06, 2014 10:26 am, edited 1 time in total.
fatduck
mega-veteran
mega-veteran
Posts: 315
Joined: Wed Aug 02, 2006 10:07 pm
Has thanked: 10 times
Been thanked: 94 times

Re: [Request]S4 League Model Exporting

Post by fatduck »

I told you there is a flag of Extra_UV. it's located before the value of num_Texture!!!

You had reached one in ds4_station01.scn:
so after the standard UV block
you have to read/skip the extra UV block! (it's the same size of the standard one)
and then read the value of num_Tangent, and continue...

After that mesh, you will found a new object (Light) as well.
No more Fatduck, no more FatImporter, Byebye everyone!
User avatar
Seyren
advanced
Posts: 63
Joined: Sat Oct 30, 2010 1:39 pm
Has thanked: 18 times
Been thanked: 9 times

Re: [Request]S4 League Model Exporting

Post by Seyren »

Oh my bad, i'm sorry, thank you again

I'm learning a lot but again i'm very bad at this so yeah my bad >_<

Now i managed to get the ds4_station fully imported ^^ ty again

Image

The Position seems fine, however as you can see the whole map is rotated 90 degrees.

That's not really an issue since it seems it should be that way =o

However, although many textures seem fine the ones with multi texture seem screwed:

Image

This is pretty obvious from my side since i use the following to apply textures:

Code: Select all

bitmappath = (substring fSCN 1 (fSCN.count - 4)) -- being fSCN the path of the file
			
		while bitmappath[bitmappath.count] != "\\" do 
		(
			bitmappath = substring bitmappath 1 (bitmappath.count - 1)
		)
		bitmappath = bitmappath + Texture_Array[1]
		bitmappath = (substring bitmappath 1 (bitmappath.count - 3)) + "dds"
			
		map = StandardMaterial name: (ModelName +"_Material")
		map.diffuseMap = bitmaptexture name: (ModelName + "Diffuse")
		map.diffuseMap.filename = bitmappath
			
		if((findstring ModelName "nocull") != undefined) then map.twoSided = true
			
		if((findstring ModelName "alphablend") != undefined) then
				(
					map.opacityMap = bitmaptexture name:("Opacity_"+ModelName)
					map.opacityMap.filename = bitmappath
					if((findstring ModelName "alphablend1") != undefined) then
					map.opacityMap.monoOutput = 1
				)
It's pretty much a provisional one to get textures easy and only if they are dds.

Update: Matrix applied *-*, i don't know how i will fix the multi texture, i guess it's just a matter of time

Image
fatduck
mega-veteran
mega-veteran
Posts: 315
Joined: Wed Aug 02, 2006 10:07 pm
Has thanked: 10 times
Been thanked: 94 times

Re: [Request]S4 League Model Exporting

Post by fatduck »

What you need is multimaterial instead of standardmaterial. And place each texture in each material layer(sub-material)

And also you mesh need multi-Face-material IDs to the corresponding sub-materials
remember the structure:

Code: Select all

struct Texture {
    char[128]	Texture_Name
    dword	Face_Start
    dword	Face_Count
  }
That Face_Start and Face_Count values help you to create those IDs.
No more Fatduck, no more FatImporter, Byebye everyone!
User avatar
Seyren
advanced
Posts: 63
Joined: Sat Oct 30, 2010 1:39 pm
Has thanked: 18 times
Been thanked: 9 times

Re: [Request]S4 League Model Exporting

Post by Seyren »

Thank you it totally Worked *-*

Image

However there is an issue with the number of Extra UV's.

The one textured objects are supposed to have this value as 0, such as weapons, however, Clothes have them as 2.

Which means, the whole script gets wrecked unless the value of the clothes, this means this means something more...

I really thought it was the number of Extra Uv structs since it only seemed to work

Code: Select all

for i = 1 to ExtraUvs do
		(
			for i = 1 to Num_UV do
			(
				tu = readfloat f
				tv = readfloat f
				append UV_array[tu,1-tv,0]
				--print UV_array
			)
		)
Works really fine :C,but since this shouldn't be used on clothes (used female 00) it wrecks up

HOWEVER turns out thatt model female 00 has two model structures, but i think it's a coincidence since the second one has a 0.

Apparently all clothes are 2, so this may be something more like a Texture type, who knows...
fatduck
mega-veteran
mega-veteran
Posts: 315
Joined: Wed Aug 02, 2006 10:07 pm
Has thanked: 10 times
Been thanked: 94 times

Re: [Request]S4 League Model Exporting

Post by fatduck »

Sorry for my bad, That ExtraUVs is just a flag! (I think it's actually a 8 bits flag)
You only need to skip the UV layers when it's value is 1!(or bit 0 set)

Anyway, good to know you finally got your script working!
No more Fatduck, no more FatImporter, Byebye everyone!
Post Reply