home *** CD-ROM | disk | FTP | other *** search
- if (heapSize < 200000) then
- heapSize = 2000000 -- allow ~ 40 MB instead of just 7.5 MB. Prevents "Runtime Error: Out of scripter memory"
- fname = getOpenFileName \
- caption:"WWE 2015 [PC] Model File" \
- types:"WWEModel File(*.yobj)|*.yobj" \
- historyCategory:"WWE Object Presets"
- f = fopen fname "rb"
-
- fn ReadBEShort fstream = (
- short = readshort fstream #unsigned
- short = bit.swapBytes short 2 1
- b = (bit.get short 16)
- for i = 17 to 32 do short = bit.set short i b
- return short
- )
-
- fn PrintOffset Var =
- (
- local Var = Var
- print ("This is the offset 0x" + (bit.intAsHex Var) as string)
- Var
- )
-
- fn floatSwap2 f =
- (
- i = bit.floatAsInt f
- h = bit.intashex i
- while h.count < 8 do h = "0" + h
-
- s = (substring h 7 2) + (substring h 5 2) + (substring h 3 2) + (substring h 1 2)
- bit.intAsFloat (bit.hexasint s)
- )
-
- fn ReadBEword fstream = (
- return (bit.swapBytes (readshort fstream #unsigned) 1 2)
- )
-
- fn convertTo32 input16 = (
- inputAsInt = input16
- sign = bit.get inputAsInt 16
- exponent = (bit.shift (bit.and inputAsInt (bit.hexasint "7C00")) -10) as integer - 16
- fraction = bit.and inputAsInt (bit.hexasint "03FF")
- if sign==true then sign = 1 else sign = 0
- exponentF = exponent + 127
- --Ouput 32 bit integer representing a 32 bit float
- outputAsFloat = bit.or (bit.or (bit.shift fraction 13) (bit.shift exponentF 23)) (bit.shift sign 31)
- --Output Check
- return bit.intasfloat outputasfloat
- )
-
- fn ReadBEHalfFloat fstream = (
- return convertTo32(ReadBEword fstream)
- )
-
- fn ReadHalfFloat fstream = (
- return convertTo32(readshort fstream#unsigned)
- )
-
- fn ReadBElong fstream = (
- long = readlong fstream
- long = bit.swapBytes long 1 4
- long = bit.swapBytes long 2 3
- return long
- )
-
- fn ReadBEfloat fstream = (
- return floatSwap2(readfloat fstream)
- )
-
- fn ReadFixedString bstream fixedLen =
- (
- local str = ""
- for i = 1 to fixedLen do
- (
- str += bit.intAsChar (ReadByte bstream #unsigned)
- )
- str
- )
-
- struct weight_data
- (
- boneids,weights
- )
-
- struct Mesh_Info_Struct
- (
- Unk109,Unk107,Objname,VertOff,WeightOff,UVOff,MatPCount,matPOff,FaceOff,FaceSec,VertCount,WeightCount,BtableStart
- )
- struct Mesh_Info_Struct2
- (
- Unk102, Unk103, Unk999, Unk108, Unk114
- )
-
- Idstring = ReadFixedString f 4
- Totalsize = ReadBElong f
- Unk001 = ReadBElong f
- Unk002 = ReadBElong f
- Unk003 = ReadBElong f
- Unk004 = ReadBElong f
- MeshCount = ReadBElong f
- MeshOff = ReadBElong f + 8
- BoneCount = ReadBElong f
- TexCount = ReadBElong f
- BoneOffset = ReadBElong f + 8
- TexOff = ReadBElong f + 8
- MnameOff = ReadBElong f + 8
- MnameCount = ReadBElong f
- Unk013 = ReadBElong f
- Unk014 = ReadBElong f
- Unk015 = ReadBElong f
- Unk016 = ReadBElong f
- fseek f 0x54 #seek_set
- BoneMapOff=ReadBElong f+8
-
- fseek f BoneOffset#seek_set
- tarr = #()
- rarr = #()
- qarr = #()
- Barr = #()
- Parr = #()
-
- clearlistener()
-
- for a = 1 to BoneCount Do (
- BoneName = ReadFixedString f 16
- tx = ReadBEfloat f
- ty = ReadBEfloat f
- tz = ReadBEfloat f
- tw = ReadBEfloat f
- rx = (ReadBEfloat f * 180) / pi
- ry = (ReadBEfloat f * 180) / pi
- rz = (ReadBEfloat f * 180) / pi
- rw = ReadBEfloat f
- parent = ReadBElong f
- fseek f 0xC#seek_cur
- qx = ReadBEfloat f
- qy = ReadBEfloat f
- qz = ReadBEfloat f
- qw = ReadBEfloat f
- tfm = (eulerangles rx ry rz) as matrix3
- append tarr [tx,ty,tz]
- append rarr tfm
- append qarr [qx,qy,qz,qw]
- append Barr BoneName
- append Parr parent
- )
- BNArr = #()
- for a = 1 to BoneCount Do (
- if isvalidnode (getNodeByName Barr[a]) != true then (
- tfm = rarr[a]
- tfm.row4 = tarr[a]
- if (Parr[a] != -1) do (
- tfm = tfm * BNArr[(Parr[a] + 1)].objecttransform
- )
- newBone = bonesys.createbone \
- tfm.row4 \
- (tfm.row4 + 0.01 * (normalize tfm.row1)) \
- (normalize tfm.row3)
- newBone.name = Barr[a]
- newBone.width = 0.01
- newBone.height = 0.01
- newBone.transform = tfm
- newBone.setBoneEnable false 0
- newBone.wirecolor = yellow
- newbone.showlinks = true
- newBone.pos.controller = TCB_position ()
- newBone.rotation.controller = TCB_rotation ()
- )
- if isvalidnode (getNodeByName Barr[a]) == true then (
- newBone = getNodeByName Barr[a]
- )
- if (Parr[a] != -1) then
- newBone.parent = BNArr[(Parr[a] + 1)]
- append BNArr newBone
-
- )
-
- rootRT = dummy name:"Main_Root" boxsize:[.1,.1,.1]
- for b in BNArr where b.parent==undefined do b.parent = rootRT
- rootRT.transform = (matrix3 [1,0,0] [0,0,-1] [0,1,0] [0,0,0])
-
- Print ("Bone End @ 0x"+((bit.intAsHex(ftell f))as string))
-
- fseek f MeshOff#seek_set
- Mesh_Info_Arr = #()
- Mesh_Info_Arr2 = #()
- for a = 1 to MeshCount Do (
- VCount1 = ReadBElong f
- FaceSec = ReadBElong f
- BtableStart = (ftell f)
- UsedBoneID = ReadBElong f
- fseek f 0x50#seek_cur
- WeightCount = ReadBElong f
- Unk102 = ReadBElong f
- Unk103 = ReadBElong f
- VertOff = ReadBElong f + 8
- WeightOff = ReadBElong f + 8
- UVOff = ReadBElong f + 8
- Unk999 = ReadBElong f
- Unk107 = ReadBElong f
- Objname = ReadFixedString f 16
- Unk108 = ReadBElong f
- Unk109 = ReadBElong f
- MatPCount = ReadBElong f
- matPOff = ReadBElong f + 8
- FaceOff = ReadBElong f + 8
- VertCount = ReadBElong f
- Unk114 = ReadBElong f
- fseek f 0x10#seek_cur
- append Mesh_Info_Arr (Mesh_Info_Struct Unk109:Unk109 Unk107:Unk107 Objname:Objname VertOff:VertOff WeightOff:WeightOff UVOff:UVOff MatPCount:MatPCount matPOff:matPOff FaceOff:FaceOff FaceSec:FaceSec VertCount:VertCount WeightCount:WeightCount BtableStart:BtableStart )
- append Mesh_Info_Arr2 (Mesh_Info_Struct2 Unk102:Unk102 Unk103:Unk103 Unk999:Unk999 Unk108:Unk108 Unk114:Unk114)
- )
-
- print Mesh_Info_Arr
- print Mesh_Info_Arr2
-
- fseek f BoneMapOff #seek_set
- Print ("Bone Map @ 0x"+((bit.intAsHex(ftell f))as string))
- usedID = ReadBElong f
- BoneMapOffset = ReadBElong f
- Used_Bone_array = #()
- for b = 1 to usedID do (
- bid = ReadBElong f+1
- append Used_Bone_array bid
- )
-
- print (usedID as string)
-
- for a = 1 to MeshCount Do (
- Vert_array = #()
- Normal_array = #()
- UV_array = #()
- Face_array = #()
- Weight_array = #()
-
- fseek f Mesh_Info_Arr[a].VertOff#seek_set
- scale1 = 10
- VertOff = ReadBElong f + 8
- print VertOff
- fseek f VertOff#seek_set
- for b = 1 to Mesh_Info_Arr[a].VertCount Do (
- vx = ReadBEfloat f
- vy = ReadBEfloat f
- vz = ReadBEfloat f
- fseek f 0x10#seek_cur
- append Vert_array [vx,vz,-vy]
- )
-
- fseek f Mesh_Info_Arr[a].UVOff#seek_set
- for b = 1 to Mesh_Info_Arr[a].VertCount Do (
- tu = ReadBEfloat f
- tv = ReadBEfloat f * -1
- append UV_array [tu,tv,0]
- )
-
- fseek f Mesh_Info_Arr[a].WeightOff#seek_set
- Print ("Weight Start @ 0x"+((bit.intAsHex(ftell f))as string))
- for b = 1 to Mesh_Info_Arr[a].VertCount Do (
- Bone1 = 65535
- Bone2 = 65535
- Bone3 = 65535
- Bone4 = 65535
- Bone5 = 65535
- Bone6 = 65535
- Bone7 = 65535
- if Mesh_Info_Arr2[a].Unk114==0 then
- if Mesh_Info_Arr[a].WeightCount == 1 do (
- Bone1=Readshort f#unsigned
- fseek f 0x2#seek_cur
- Weight1 = ReadBEfloat f
- if Bone1<0 or Bone1>usedID then Bone1=65535
- )
- if Mesh_Info_Arr2[a].Unk114!=0 then
- if Mesh_Info_Arr[a].WeightCount == 1 do (
- Bone1 = readBEshort f
- fseek f 0x2#seek_cur
- Weight1 = ReadBEfloat f
- if Bone1<0 or Bone1>usedID then Bone1=65535
- )
- if Mesh_Info_Arr2[a].Unk114==0 then
- if Mesh_Info_Arr[a].WeightCount == 2 do (
- Bone1=Readshort f#unsigned
- if Bone1<0 or Bone1>usedID then Bone1=65535
- fseek f 0x2#seek_cur
- Weight1 = ReadBEfloat f
- Bone2=Readshort f#unsigned
- if Bone2<0 or Bone2>usedID then Bone2=65535
- fseek f 0x2#seek_cur
- Weight2 = ReadBEfloat f
- )
- if Mesh_Info_Arr2[a].Unk114!=0 then
- if Mesh_Info_Arr[a].WeightCount == 2 do (
- Bone1=ReadBEshort f
- if Bone1<0 or Bone1>usedID then Bone1=65535
- fseek f 0x2#seek_cur
- Weight1 = ReadBEfloat f
- Bone2=ReadBEshort f
- if Bone2<0 or Bone2>usedID then Bone2=65535
- fseek f 0x2#seek_cur
- Weight2 = ReadBEfloat f
- )
- if Mesh_Info_Arr2[a].Unk114==0 then
- if Mesh_Info_Arr[a].WeightCount == 3 do (
- Bone1=Readshort f#unsigned
- if Bone1<0 or Bone1>usedID then Bone1=65535
- fseek f 0x2#seek_cur
- Weight1 = ReadBEfloat f
- Bone2=Readshort f#unsigned
- if Bone2<0 or Bone2>usedID then Bone2=65535
- fseek f 0x2#seek_cur
- Weight2 = ReadBEfloat f
- Bone3=Readshort f#unsigned
- if Bone3<0 or Bone3>usedID then Bone3=65535
- fseek f 0x2#seek_cur
- Weight3 = ReadBEfloat f
- )
- if Mesh_Info_Arr2[a].Unk114!=0 then
- if Mesh_Info_Arr[a].WeightCount == 3 do (
- Bone1=ReadBEshort f
- if Bone1<0 or Bone1>usedID then Bone1=65535
- fseek f 0x2#seek_cur
- Weight1 = ReadBEfloat f
- Bone2=ReadBEshort f
- if Bone2<0 or Bone2>usedID then Bone2=65535
- fseek f 0x2#seek_cur
- Weight2 = ReadBEfloat f
- Bone3=ReadBEshort f
- if Bone3<0 or Bone3>usedID then Bone3=65535
- fseek f 0x2#seek_cur
- Weight3 = ReadBEfloat f
- )
- if Mesh_Info_Arr2[a].Unk114==0 then
- if Mesh_Info_Arr[a].WeightCount == 4 do (
- Bone1=Readshort f#unsigned
- if Bone1<0 or Bone1>usedID then Bone1=65535
- fseek f 0x2#seek_cur
- Weight1 = ReadBEfloat f
- Bone2=Readshort f#unsigned
- if Bone2<0 or Bone2>usedID then Bone2=65535
- fseek f 0x2#seek_cur
- Weight2 = ReadBEfloat f
- Bone3=Readshort f#unsigned
- if Bone3<0 or Bone3>usedID then Bone3=65535
- fseek f 0x2#seek_cur
- Weight3 = ReadBEfloat f
- Bone4=Readshort f#unsigned
- if Bone4<0 or Bone4>usedID then Bone4=65535
- fseek f 0x2#seek_cur
- Weight4 = ReadBEfloat f
- )
- if Mesh_Info_Arr2[a].Unk114!=0 then
- if Mesh_Info_Arr[a].WeightCount == 4 do (
- Bone1=ReadBEshort f
- if Bone1<0 or Bone1>usedID then Bone1=65535
- fseek f 0x2#seek_cur
- Weight1 = ReadBEfloat f
- Bone2=ReadBEshort f
- if Bone2<0 or Bone2>usedID then Bone2=65535
- fseek f 0x2#seek_cur
- Weight2 = ReadBEfloat f
- Bone3=ReadBEshort f
- if Bone3<0 or Bone3>usedID then Bone3=65535
- fseek f 0x2#seek_cur
- Weight3 = ReadBEfloat f
- Bone4=ReadBEshort f
- if Bone4<0 or Bone4>usedID then Bone4=65535
- fseek f 0x2#seek_cur
- Weight4 = ReadBEfloat f
- )
- if Mesh_Info_Arr2[a].Unk114==0 then
- if Mesh_Info_Arr[a].WeightCount == 5 do (
- Bone1=Readshort f#unsigned
- if Bone1<0 or Bone1>usedID then Bone1=65535
- fseek f 0x2#seek_cur
- Weight1 = ReadBEfloat f
- Bone2=Readshort f#unsigned
- if Bone2<0 or Bone2>usedID then Bone2=65535
- fseek f 0x2#seek_cur
- Weight2 = ReadBEfloat f
- Bone3=Readshort f#unsigned
- if Bone3<0 or Bone3>usedID then Bone3=65535
- fseek f 0x2#seek_cur
- Weight3 = ReadBEfloat f
- Bone4=Readshort f#unsigned
- if Bone4<0 or Bone4>usedID then Bone4=65535
- fseek f 0x2#seek_cur
- Weight4 = ReadBEfloat f
- Bone5=Readshort f#unsigned
- if Bone5<0 or Bone5>usedID then Bone5=65535
- fseek f 0x2#seek_cur
- Weight5 = ReadBEfloat f
- )
- if Mesh_Info_Arr2[a].Unk114!=0 then
- if Mesh_Info_Arr[a].WeightCount == 5 do (
- Bone1=ReadBEshort f
- if Bone1<0 or Bone1>usedID then Bone1=65535
- fseek f 0x2#seek_cur
- Weight1 = ReadBEfloat f
- Bone2=ReadBEshort f
- if Bone2<0 or Bone2>usedID then Bone2=65535
- fseek f 0x2#seek_cur
- Weight2 = ReadBEfloat f
- Bone3=ReadBEshort f
- if Bone3<0 or Bone3>usedID then Bone3=65535
- fseek f 0x2#seek_cur
- Weight3 = ReadBEfloat f
- Bone4=ReadBEshort f
- if Bone4<0 or Bone4>usedID then Bone4=65535
- fseek f 0x2#seek_cur
- Weight4 = ReadBEfloat f
- Bone5=ReadBEshort f
- if Bone5<0 or Bone5>usedID then Bone5=65535
- fseek f 0x2#seek_cur
- Weight5 = ReadBEfloat f
- )
- if Mesh_Info_Arr2[a].Unk114==0 then
- if Mesh_Info_Arr[a].WeightCount == 6 do (
- Bone1=Readshort f#unsigned
- if Bone1<0 or Bone1>usedID then Bone1=65535
- fseek f 0x2#seek_cur
- Weight1 = ReadBEfloat f
- Bone2=Readshort f#unsigned
- if Bone2<0 or Bone2>usedID then Bone2=65535
- fseek f 0x2#seek_cur
- Weight2 = ReadBEfloat f
- Bone3=Readshort f#unsigned
- if Bone3<0 or Bone3>usedID then Bone3=65535
- fseek f 0x2#seek_cur
- Weight3 = ReadBEfloat f
- Bone4=Readshort f#unsigned
- if Bone4<0 or Bone4>usedID then Bone4=65535
- fseek f 0x2#seek_cur
- Weight4 = ReadBEfloat f
- Bone5=Readshort f#unsigned
- if Bone5<0 or Bone5>usedID then Bone5=65535
- fseek f 0x2#seek_cur
- Weight5 = ReadBEfloat f
- Bone6=Readshort f#unsigned
- if Bone6<0 or Bone6>usedID then Bone6=65535
- fseek f 0x2#seek_cur
- Weight6 = ReadBEfloat f
- )
- if Mesh_Info_Arr2[a].Unk114!=0 then
- if Mesh_Info_Arr[a].WeightCount == 6 do (
- Bone1=ReadBEshort f
- if Bone1<0 or Bone1>usedID then Bone1=65535
- fseek f 0x2#seek_cur
- Weight1 = ReadBEfloat f
- Bone2=ReadBEshort f
- if Bone2<0 or Bone2>usedID then Bone2=65535
- fseek f 0x2#seek_cur
- Weight2 = ReadBEfloat f
- Bone3=ReadBEshort f
- if Bone3<0 or Bone3>usedID then Bone3=65535
- fseek f 0x2#seek_cur
- Weight3 = ReadBEfloat f
- Bone4=ReadBEshort f
- if Bone4<0 or Bone4>usedID then Bone4=65535
- fseek f 0x2#seek_cur
- Weight4 = ReadBEfloat f
- Bone5=ReadBEshort f
- if Bone5<0 or Bone5>usedID then Bone5=65535
- fseek f 0x2#seek_cur
- Weight5 = ReadBEfloat f
- Bone6=ReadBEshort f
- if Bone6<0 or Bone6>usedID then Bone6=65535
- fseek f 0x2#seek_cur
- Weight6 = ReadBEfloat f
- )
- if Mesh_Info_Arr2[a].Unk114==0 then
- if Mesh_Info_Arr[a].WeightCount == 7 do (
- Bone1=Readshort f#unsigned
- if Bone1<0 or Bone1>usedID then Bone1=65535
- fseek f 0x2#seek_cur
- Weight1 = ReadBEfloat f
- Bone2=Readshort f#unsigned
- if Bone2<0 or Bone2>usedID then Bone2=65535
- fseek f 0x2#seek_cur
- Weight2 = ReadBEfloat f
- Bone3=Readshort f#unsigned
- if Bone3<0 or Bone3>usedID then Bone3=65535
- fseek f 0x2#seek_cur
- Weight3 = ReadBEfloat f
- Bone4=Readshort f#unsigned
- if Bone4<0 or Bone4>usedID then Bone4=65535
- fseek f 0x2#seek_cur
- Weight4 = ReadBEfloat f
- Bone5=Readshort f#unsigned
- if Bone5<0 or Bone5>usedID then Bone5=65535
- fseek f 0x2#seek_cur
- Weight5 = ReadBEfloat f
- Bone6=Readshort f#unsigned
- if Bone6<0 or Bone6>usedID then Bone6=65535
- fseek f 0x2#seek_cur
- Weight6 = ReadBEfloat f
- Bone7=Readshort f#unsigned
- if Bone7<0 or Bone7>usedID then Bone7=65535
- fseek f 0x2#seek_cur
- Weight7 = ReadBEfloat f
- )
- if Mesh_Info_Arr2[a].Unk114!=0 then
- if Mesh_Info_Arr[a].WeightCount == 7 do (
- Bone1=ReadBEshort f
- if Bone1<0 or Bone1>usedID then Bone1=65535
- fseek f 0x2#seek_cur
- Weight1 = ReadBEfloat f
- Bone2=ReadBEshort f
- if Bone2<0 or Bone2>usedID then Bone2=65535
- fseek f 0x2#seek_cur
- Weight2 = ReadBEfloat f
- Bone3=ReadBEshort f
- if Bone3<0 or Bone3>usedID then Bone3=65535
- fseek f 0x2#seek_cur
- Weight3 = ReadBEfloat f
- Bone4=ReadBEshort f
- if Bone4<0 or Bone4>usedID then Bone4=65535
- fseek f 0x2#seek_cur
- Weight4 = ReadBEfloat f
- Bone5=ReadBEshort f
- if Bone5<0 or Bone5>usedID then Bone5=65535
- fseek f 0x2#seek_cur
- Weight5 = ReadBEfloat f
- Bone6=ReadBEshort f
- if Bone6<0 or Bone6>usedID then Bone6=65535
- fseek f 0x2#seek_cur
- Weight6 = ReadBEfloat f
- Bone7=ReadBEshort f
- if Bone7<0 or Bone7>usedID then Bone7=65535
- fseek f 0x2#seek_cur
- Weight7 = ReadBEfloat f
- )
-
- w = (weight_data boneids:#() weights:#())
- maxweight = 0
- if(Bone1 != 65535) then (
- if(weight1 != 0) then
- maxweight = maxweight + weight1
- )
- if(Bone2 != 65535) then (
- if(weight2 != 0) then
- maxweight = maxweight + weight2
- )
- if(Bone3 != 65535) then (
- if(weight3 != 0) then
- maxweight = maxweight + weight3
- )
- if(Bone4 != 65535) then (
- if(weigh4 != 0) then
- maxweight = maxweight + weight4
- )
- if(Bone5 != 65535) then (
- if(weight5 != 0) then
- maxweight = maxweight + weight5
- )
- if(Bone6 != 65535) then (
- if(weight6 != 0) then
- maxweight = maxweight + weight6
- )
- if(Bone7 != 65535) then (
- if(weight7 != 0) then
- maxweight = maxweight + weight7
- )
- if(maxweight != 0) then (
- if(Bone1 != 65535) then (
- w1 = weight1 as float
- append w.boneids (bone1 + 1)
- append w.weights w1
- )
- if(Bone2 != 65535) then (
- w2 = weight2 as float
- append w.boneids (bone2 + 1)
- append w.weights w2
- )
- if(Bone3 != 65535) then (
- w3 = weight3 as float
- append w.boneids (bone3 + 1)
- append w.weights w3
- )
- if(Bone4 != 65535) then (
- w4 = weight4 as float
- append w.boneids (bone4 + 1)
- append w.weights w4
- )
- if(Bone5 != 65535) then (
- w5 = weight5 as float
- append w.boneids (bone5 + 1)
- append w.weights w5
- )
- if(Bone6 != 65535) then (
- w6 = weight6 as float
- append w.boneids (bone6 + 1)
- append w.weights w6
- )
- if(Bone7 != 65535) then (
- w7 = weight7 as float
- append w.boneids (bone7 + 1)
- append w.weights w7
- )
- )
- append Weight_array w
- )
-
- fseek f Mesh_Info_Arr[a].FaceOff#seek_set
- Ftmp = #()
- for b = 1 to Mesh_Info_Arr[a].FaceSec Do (
- FSize = ReadBElong f as float
- FCount = ReadBElong f as float
- FStart = (ReadBElong f + 8) as float
- append Ftmp [FSize,FCount,FStart]
- )
- for b = 1 to Mesh_Info_Arr[a].FaceSec Do (
- fseek f Ftmp[b].z#seek_set
- FaceEnd = ((ftell f) + (2 * Ftmp[b].y))
- StartDirection = 1
- Face_array2 = #()
- f1 = ReadBEword f + 1
- f2 = ReadBEword f + 1
- FaceDirection = StartDirection
- do (
- f3 = ReadBEword f
- if (f3==0xFFFF) then (
- f1 = ReadBEword f + 1
- f2 = ReadBEword f + 1
- FaceDirection = StartDirection
- ) else (
- f3 += 1
- FaceDirection *= -1
- if (f1!=f2)AND(f2!=f3)AND(f3!=f1) then (
- append Face_array2 [(f1),(f2),(f3)]
- if FaceDirection > 0 then append Face_array [(f1),(f2),(f3)]
- else append Face_array [(f1),(f3),(f2)]
- )
- f1 = f2
- f2 = f3
- )
- )while (ftell f) < (FaceEnd)
- )
-
- try(
- msh = mesh vertices:Vert_array faces:Face_array
- msh.numTVerts = UV_array.count
- buildTVFaces msh
- msh.name = Mesh_Info_Arr[a].Objname
- for j = 1 to UV_array.count do setTVert msh j UV_array[j]
- for j = 1 to Face_array.count do setTVFace msh j Face_array[j]
- for j = 1 to Normal_array.count do setNormal msh j Normal_array[j]
-
- max modify mode
- select msh
- skinMod = skin ()
- addModifier msh skinMod
- for i = 1 to Used_Bone_array.count do
- (
- maxbone = BNArr[(Used_Bone_array[i])]
- if i != Used_Bone_array.count then
- skinOps.addBone skinMod maxbone 0
- else
- skinOps.addBone skinMod maxbone 1
- )
- modPanel.setCurrentObject skinMod
- for i = 1 to Vert_array.count do (
- w = Weight_array[i]
- bi = #() --bone index array
- wv = #() --weight value array
-
- for j = 1 to w.boneids.count do
- (
- boneid = w.boneids[j]
- weight = w.weights[j]
- append bi boneid
- append wv weight
- )
-
- skinOps.ReplaceVertexWeights skinMod i bi wv
- )
- )catch(format "Wrong Skel or Messed Bones!!\n")
- )
-
- fclose f