Jump to content

X-Packer 2017 / X-Rey 2.7 released


tekken57

Recommended Posts

4 hours ago, Dennis-Bieser said:

@tekken57

I would suggest for the next X-Rey update an Batch import collada function. It's a big effort to import over 300 single files. I would donate for the update!

 

 

I second this tekken.  Batch import collada and batch export/import bones please!  :)  Will donate to the cause as well!

Link to comment
Share on other sites

On 1/11/2018 at 10:32 PM, hovathagod32 said:

yeah, i have. is there any data stored anywhere else? i ran the previous version of xrey and it doesn't have this problem

No all the data is stored within the X-Rey folder. I'll be releasing an update soon, maybe it will fix your issue.

On 1/11/2018 at 10:45 PM, LordJustice17 said:

@tekken57 Do you have any idea if it would be possible to update your maxscripts to mass import all YOBJs in a directory? I'd love to start using a newer 3DSMax, but I'm still stuck on 2011 because the mass import functionality of BrienJ's plugin is a must have for arena modders.

It should be possible. Work is incredibly busy for me at the moment, but I'll look into it when I get some time.

10 hours ago, Dennis-Bieser said:

@tekken57

I would suggest for the next X-Rey update an Batch import collada function. It's a big effort to import over 300 single files. I would donate for the update!

 

 

 

6 hours ago, AznBlusuazn said:

I second this tekken.  Batch import collada and batch export/import bones please!  :)  Will donate to the cause as well!

I'll look into it. The batch export and import of bones won't be very difficult to code, but the collada import might be. There's lots of checks and conversions which take place on the collada import.

 

I'm busy finalizing the UV import function in X-Rey at the moment. Been working on this to test:

20180123075145_1.jpg

 

 

 

  • Like 2
  • Too Sweet 4
Link to comment
Share on other sites

Alright I'm done with the Uv mapping functions in X-Rey. Will look into the batch functions when my work situation is less hectic. Finished my Goldberg mod using the new UV remapping functions and it seems to work without issue:

 

20180129115509_1.jpg


20180129115604_1.jpg


20180129142351_1.jpg

 

  • Like 3
  • Too Sweet 2
  • Glorious 1
Link to comment
Share on other sites

Dope!

 

Also, we had a few people with the latest X-Rey screen shot their app.. That rotational problem that I was having seems to be an issue with the update.. Not just for people messing around with Caw objects

Link to comment
Share on other sites

2 hours ago, hovathagod32 said:

Dope!

 

Also, we had a few people with the latest X-Rey screen shot their app.. That rotational problem that I was having seems to be an issue with the update.. Not just for people messing around with Caw objects

Email me one of the punk files and the preview object which is generated when you view the object eg object 1. The preview object will be called preview full.obj

 

i want to confirm if the values are correct 

Link to comment
Share on other sites

On 1/11/2018 at 10:45 PM, LordJustice17 said:

@tekken57 Do you have any idea if it would be possible to update your maxscripts to mass import all YOBJs in a directory? I'd love to start using a newer 3DSMax, but I'm still stuck on 2011 because the mass import functionality of BrienJ's plugin is a must have for arena modders.

Had some time to code a script to import multiple yobj files. Try it out and let me know if it works for you. Be careful though, as it imports all the yobj files in a directory and multiple wrestler yobj files take a very long time to load due to the large amount of bones. 

 

Download here: http://velocicosm.com/5BKz

Or plain text version in case the link expires:

-- Script created by Chrrox from Xentax.com
-- Edited by tekken57 for importing of newer models
if (heapSize < 200000) then
        heapSize = 2000000 -- allow ~ 40 MB instead of just 7.5 MB. Prevents "Runtime Error: Out of scripter memory"
clearlistener()




--fname = getOpenFileName \
--caption:"WWE2012 upwards Model File" \
--types:"WWEModel File(*.yobj)|*.yobj" \
--historyCategory:"WWE Object Presets"


fn vToC valueVal = --accepts a point3 value, returns an equivalent color value
(
return [(valueVal.x*255 as integer), (valueVal.y*255 as integer), (valueVal.z*255 as integer)] as color
)
fn cToV colorVal = --accepts a color value, returns an equivalent point3 value
(
tempVal = colorVal as point3
return [(tempVal.x/255), (tempVal.y/255), (tempVal.z/255)]

)

fn RGBtoFPC clrRGB = (color (clrRGB.r/255) (clrRGB.g/255) (clrRGB.b/255))
fn FPCtoRGB clrFPC = (color (clrFPC.r*255) (clrFPC.g*255) (clrFPC.b*255))

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
)
fn ReadMesh filePath =
(
f = fopen filePath "rb"
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 BoneOffset#seek_set
tarr = #()
rarr = #()
qarr = #()
Barr = #()
Parr = #()

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

)
format "BoneCount % \n" BoneCount
struct Mesh_Info_Struct
(
   Objname,VertOff,WeightOff,UVOff,MatPCount,matPOff,FaceOff,FaceSec,VertCount,WeightCount,BtableStart,  VertColorOff
)
fseek f MeshOff#seek_set
Mesh_Info_Arr = #()
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
VertColorOff = ReadBElong f + 8
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 Objname:Objname VertOff:VertOff WeightOff:WeightOff UVOff:UVOff MatPCount:MatPCount matPOff:matPOff FaceOff:FaceOff FaceSec:FaceSec VertCount:VertCount WeightCount:WeightCount BtableStart:BtableStart  VertColorOff:VertColorOff)
)
--print Mesh_Info_Arr
for a = 1 to MeshCount Do (
--for a = 1 to 1 Do (
Vert_array = #()
Normal_array = #()
UV_array = #()
Face_array = #()
Weight_array = #()
UsedBonesPCArray = #()
VertexColor_array = #()

fseek f Mesh_Info_Arr[a].VertOff#seek_set
--scale1 = ReadBEfloat f
scale1 = 10
VertOff = ReadBElong f + 8
--print VertOff
fseek f VertOff#seek_set	
--print scale1
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,vy,vz]
nx = ReadBEfloat f  --read xyz coordinates
ny = ReadBEfloat f
nz = ReadBEfloat f
unk4444 = ReadBEfloat f
append Normal_array [nx,ny,nz]	
)

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]
)


--format  "vertcolor offset %\n" Mesh_Info_Arr[a].VertColorOff
fseek f Mesh_Info_Arr[a].VertColorOff#seek_set
for b = 1 to Mesh_Info_Arr[a].VertCount Do (
vcx = ReadBEfloat f
vcy = ReadBEfloat f 
vcz = ReadBEfloat f 	
append VertexColor_array  [vcx,vcy,vcz]
--format "vc % % %\n" vcx vcy vcz
)

fseek f Mesh_Info_Arr[a].WeightOff#seek_set
for b = 1 to Mesh_Info_Arr[a].VertCount Do (
Bone1 = -1
Bone2 = -1
Bone3 = -1
Bone4 = -1
Bone5 = -1
Bone6 = -1
Bone7 = -1
if Mesh_Info_Arr[a].WeightCount == 1 do (
Bone1 = readbyte f
fseek f 0x3#seek_cur
Weight1 = ReadBEfloat f
)
if Mesh_Info_Arr[a].WeightCount == 2 do (
Bone1 = readbyte f
fseek f 0x3#seek_cur
Weight1 = ReadBEfloat f
Bone2 = readbyte f
fseek f 0x3#seek_cur
Weight2 = ReadBEfloat f
)
if Mesh_Info_Arr[a].WeightCount == 3 do (
Bone1 = readbyte f
fseek f 0x3#seek_cur
Weight1 = ReadBEfloat f
Bone2 = readbyte f
fseek f 0x3#seek_cur
Weight2 = ReadBEfloat f
Bone3 = readbyte f
fseek f 0x3#seek_cur
Weight3 = ReadBEfloat f
)
if Mesh_Info_Arr[a].WeightCount == 4 do (
Bone1 = readbyte f
fseek f 0x3#seek_cur
Weight1 = ReadBEfloat f
Bone2 = readbyte f
fseek f 0x3#seek_cur
Weight2 = ReadBEfloat f
Bone3 = readbyte f
fseek f 0x3#seek_cur
Weight3 = ReadBEfloat f
Bone4 = readbyte f
fseek f 0x3#seek_cur
Weight4 = readfloat f   
)


if Mesh_Info_Arr[a].WeightCount == 5 do (
Bone1 = readbyte f
fseek f 0x3#seek_cur
Weight1 = ReadBEfloat f
Bone2 = readbyte f
fseek f 0x3#seek_cur
Weight2 = ReadBEfloat f
Bone3 = readbyte f
fseek f 0x3#seek_cur
Weight3 = ReadBEfloat f
Bone4 = readbyte f
fseek f 0x3#seek_cur
Weight4 = readfloat f 
Bone5 = readbyte f
fseek f 0x3#seek_cur
Weight5 = readfloat f 
   
)

if Mesh_Info_Arr[a].WeightCount == 6 do (
Bone1 = readbyte f
fseek f 0x3#seek_cur
Weight1 = ReadBEfloat f
Bone2 = readbyte f
fseek f 0x3#seek_cur
Weight2 = ReadBEfloat f
Bone3 = readbyte f
fseek f 0x3#seek_cur
Weight3 = ReadBEfloat f
Bone4 = readbyte f
fseek f 0x3#seek_cur
Weight4 = readfloat f 
Bone5 = readbyte f
fseek f 0x3#seek_cur
Weight5 = readfloat f  
Bone6 = readbyte f
fseek f 0x3#seek_cur
Weight6 = readfloat f     
)


if Mesh_Info_Arr[a].WeightCount == 7 do (
Bone1 = readbyte f
fseek f 0x3#seek_cur
Weight1 = ReadBEfloat f
Bone2 = readbyte f
fseek f 0x3#seek_cur
Weight2 = ReadBEfloat f
Bone3 = readbyte f
fseek f 0x3#seek_cur
Weight3 = ReadBEfloat f
Bone4 = readbyte f
fseek f 0x3#seek_cur
Weight4 = readfloat f 
Bone5 = readbyte f
fseek f 0x3#seek_cur
Weight5 = readfloat f  
Bone6 = readbyte f
fseek f 0x3#seek_cur
Weight6 = readfloat f   
Bone7 = readbyte f
fseek f 0x3#seek_cur
Weight7 = readfloat f   
)
w = (weight_data boneids:#() weights:#())
maxweight = 0
if(Bone1 != -1) then
   maxweight = maxweight + weight1
if(Bone2 != -1) then
   maxweight = maxweight + weight2
if(Bone3 != -1) then
   maxweight = maxweight + weight3
if(Bone4 != -1) then
   maxweight = maxweight + weight4
if(Bone5 != -1) then
   maxweight = maxweight + weight5
if(Bone6 != -1) then
   maxweight = maxweight + weight6
if(Bone7 != -1) then
   maxweight = maxweight + weight7
if(maxweight != 0) then (
      if(Bone1 > -1  ) then (
         w1 = weight1 as float
         append w.boneids (bone1 + 1)
         append w.weights w1
		 if (bone1 + 1 > -1) then
		(
		appendIfUnique UsedBonesPCArray (bone1 + 1)
		)
      )
      if(Bone2 > -1 ) then (
         w2 = weight2 as float
         append w.boneids (bone2 + 1)
         append w.weights w2
		if (bone2 + 1 > -1) then
		(  
	  appendIfUnique UsedBonesPCArray (bone2 + 1)
		) 
      )
      if(Bone3 > -1) then (
         w3 = weight3 as float
         append w.boneids (bone3 + 1)
         append w.weights w3
		   if (bone3 + 1 > -1) then
		(
	  appendIfUnique UsedBonesPCArray (bone3 + 1)
		) 
      )
      if(Bone4 > -1 ) then (
         w4 = weight4 as float
         append w.boneids (bone4 + 1)
         append w.weights w4
		if (bone4 + 1 > -1) then
		(   
	  appendIfUnique UsedBonesPCArray (bone4 + 1)
		) 
      )  
	if(Bone5 > -1)  then (
         w5 = weight5 as float
         append w.boneids (bone5 + 1)
         append w.weights w5
		 if (bone5 + 1 > -1) then
		(
		appendIfUnique UsedBonesPCArray (bone5 + 1)
		)
      )    
	if(Bone6 > -1 ) then (
         w6 = weight6 as float
         append w.boneids (bone6 + 1)
         append w.weights w6
		 if (bone6 + 1 > -1) then
		(
		appendIfUnique UsedBonesPCArray (bone6 + 1)
		)
      )    
	if(Bone7 > -1  ) then (
         w7 = weight7 as float
         append w.boneids (bone7 + 1)
         append w.weights w7
		if (bone7 + 1 > -1) then
		(
		appendIfUnique UsedBonesPCArray (bone7 + 1)
		)
		  
      )      
   )
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)
)
fseek f Mesh_Info_Arr[a].BtableStart#seek_set
usedID = ReadBElong f
Used_Bone_array = #()
for b = 1 to usedID do (
bid = ReadBElong f
append Used_Bone_array bid
)

msh = mesh vertices:Vert_array faces:Face_array  normals:Normal_array
msh.numTVerts = UV_array.count
buildTVFaces msh
--msh.name = Mesh_Name_array[a]
--msh.material = meditMaterials[1].materialList[(MatSlotTexID[a])]
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]

setNumCPVVerts msh UV_array.count 
defaultVCFaces msh

for j = 1 to VertexColor_array.count do
(	
	vertColor = VertexColor_array[j] as point3
	convertedColor = vToC (vertColor) as color
	--convertedColor = vertColor as color
	--format "convertedColor %\n" convertedColor
	setvertcolor msh j convertedColor
)

max modify mode
select msh
skinMod = skin ()
addModifier msh skinMod
print     "skinOps.getNumberVertices"
format "vCnt skinMod %\n" (skinOps.getNumberVertices skinMod)
if Used_Bone_array.count != 0 then
	(
		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
		)
	)
else
	(
		for i = 1 to UsedBonesPCArray.count do
		(
			--format "bone array % \n" UsedBonesPCArray[i]
			--format "boneid % \n" UsedBonesPCArray[i]
		   --maxbone = BNArr[(UsedBonesPCArray[i])]
			maxbone = BNArr[(UsedBonesPCArray[i])]
		   if i != UsedBonesPCArray.count then
			  skinOps.addBone skinMod maxbone 0
		   else
			  skinOps.addBone skinMod maxbone 1
		)
	)
modPanel.setCurrentObject skinMod
print "weight array count"
print Weight_array.count
for i = 1 to Weight_array.count do
(
   w = Weight_array[i]
   bi = #()
   wv = #()	
   for j = 1 to w.boneids.count do
   (
	   --format "boneId % index % \n " w.boneids[j] (findItem UsedBonesPCArray w.boneids[j])
	   if Used_Bone_array.count != 0 then
	   (
		    boneid = w.boneids[j]
	   )
	   else
	   (
		    boneid = findItem UsedBonesPCArray w.boneids[j]
	   )
     
      weight = w.weights[j]
	 	   
      append bi boneid
      append wv weight
	--format "boneId % weight % \n "	boneid weight
   ) 

  --skinOps.ReplaceVertexWeights skinMod i bi wv
)
max create mode
)

fclose f
)

fdirname = getSavePath caption:"WWE2012 upwards Model File"  initialDir:"$scripts"
print (fdirname + "\\*.yobj")
files = getFiles   (fdirname + "\\*.yobj")

for f in files do (ReadMesh f; print f)

 

  • Like 1
  • Thanks 1
Link to comment
Share on other sites

That's exactly what we need. I just tested it, and it imports everything, but all of the objects are all darkened out

Screen_Shot_2018-01-31_at_6.11.50_AM.png

When I flip everything upside down it shows up a bit, but this is from a reversed view.

Screen_Shot_2018-01-31_at_6.16.02_AM.png

 

I do have a request, if possible.. Is it possible for objs to keep their YOBJ name? With a lot of YOBJs there's more than one object within the file. It's helpful when you have 25_0.obj, 25_1.obj, 25_2.obj, so on and so forth.

Link to comment
Share on other sites

X-Rey 2.7 has been released and emailed to all who have donated: 


New features in 2.7:


- UV support (importing and exporting) for models from WWE 2k16 upwards.
 

- Bulk export and import of bones
 

- Bulk import of Collada bone objects

 

This is probably the last update I will be coding to X-Rey. Thank you to all of you for your support over the years.

 

@hovathagod32 , have you tried adding a light to your scene? I'm not sure if maxscript allows for naming of objects. Will look into it.

  • Like 2
  • Thanks 3
Link to comment
Share on other sites

25 minutes ago, hovathagod32 said:

Thank you.. I'll try messing around with lights. I briefly tried adding sunlight and nothing changed

Add a free light and position it on your object. I've tried removing the skin modifier, but the lighting remains the same, so adding lights yourself should sort your issue out. Looking into the naming at the moment.

Link to comment
Share on other sites

6 hours ago, hovathagod32 said:

Hey, I forgot to ask. I noticed that you had CAW Yobj in the last update.. Did anything come of that since the last time we spoke about it?

I looked into it but never made any headway. Forgot to delete the menu option before sending out the new X-rey.

Link to comment
Share on other sites

  • 4 months later...
On 11/16/2016 at 7:30 AM, tekken57 said:

 

Users please note:

This is the final update to X-Rey and X-Packer. I will not be doing further development for X-Packer and X-Rey for 2k18. I will be ending user support for both these applications on 11 October 2017. If you have any issues with either application, you are still welcome to email me.

I would like to take the time to thank each and everyone of you for your support over the years. I have really enjoyed seeing and using the mods which were created with my tools. Coding X-Packer has been a really fulfilling and joyful experience for me over the past 9 years.
 

Take care and best wishes to all of you.

 

bg_xpacker_trans.png

 

What is X-Packer?

X-PacKer es una aplicación que te permite extraer e inyectar archivos y texturas de archivos de luchadores pac y archivos de texturas de la serie de juegos WWE. También permite editar los archivos guardados para xbox 360, ps3 y pc. Esto permite el modding del juego.

 

Plataformas compatibles: Ps3, xbox 360, ps2, wii, PC.

 

Lista de características:

 

Hidden Content

Tenga en cuenta que no hay una funcionalidad de actualización de arco para 2k17 en xbox 360 y ps3 debido al nuevo formato de arco. Esto significa que, por el momento, los nuevos luchadores y atuendos no se pueden agregar al juego en xbox 360 y ps3.

 

 

 

 

bg_trans.png

Versión 2.0. ha sido liberado. No he solicitado otra donación para ninguna actualización en los cuatro años que he lanzado X-Rey, sin embargo, esta versión ha requerido una gran cantidad de trabajo para completar la codificación. Para ser justos, aquellos que han donado después de la fecha de lanzamiento del 11 de octubre de 2016 recibirán la actualización sin costo adicional.

Para ser claros, todas las versiones anteriores de X-Rey funcionan con los modelos 2k17. Solo necesitará X-Rey v2.0 si planea crear animaciones faciales como se describe en este tutorial: https://www.youtube.com/watch? v = kMym6NUiBqA

 

 

¿Qué hace el programa?:

Hidden Content

 

Lo que el programa no hace:

Hidden Content

 

Software Prerrequisito:

Tendrá que instalar el kit de herramientas SlimDX como requisito previo para que este programa funcione. El kit de herramientas se puede descargar aquí: http://code.google.com/p/slimdx/downloads/detail?name=SlimDX%20SDK%20%28January%202012%29.msi

 

Tenga en cuenta que la clave de serie es específica de una sola computadora. Por favor envíeme la clave de serie desde la computadora en la que hará sus modificaciones. Si planea formatear su computadora o actualizar su sistema operativo, hágalo primero antes de instalar X-Rey y solicitando una clave de activación. Si ha actualizado su PC y tiene una nueva clave de serie, tendrá que comprar una nueva licencia.

 

Controles básicos para el programa:

Hidden Content

 

Link to comment
Share on other sites

  • 1 month later...
  • 3 months later...

Hello tekken57,

Thanks for X-Rey, also the 3DS Max import scripts are very helpful.

I have two issues with X-Rey.

(i know, that there is no longer support, but maybe you have time and interest to look into it or somebody else can help).

 

Used tools:

game version 2K17

rePac 1.8a https://smacktalks.org/forums/topic/68549-repac-pac-editor-v08/

X-Rey 2.7 (bought in october 2018)

 

1) First question is about an error i get, when i use the „inject smaller“ function.

Here is what i have done so far:

Copy the two pac files ch10002.pac (The Rock) and ch14702.pac (Stephanie McMahon) from folder „C:\Program Files (x86)\Steam\steamapps\common\WWE2K17\pac\ch“ to two modding folders „rock“ and „steph“.

Open the two pac files with rePac 1.8 and extract both 0000.yobj archives (right click and „extract decompressed archive“).

In X-Rey open Rocks and Stephanies 0000.yobj files (File, open yobj new format) and extract headerInfo and objectInfo files for object4 and object5 – both hands, vertex count is 2014 for all four objects (left and right hand of The Rock and Stephanie McMahon).

While Rocks 0000.yobj file is open replace Rocks (right) hand with Stephanie McMahons (right) hand: „inject smaller“ Object4, after dialoge opens, goto „steph“-folder and choose Object4.headerInfo from Stephanies hand. It works and the result is shown in the following picture: Rocks hand is replaced by Stephanies hand.

2qmgq45.png

This also works for most other body parts – but not for all. For example the other hand (Object5). „Inject smaller“ Object5 and trying to replace with Stephanies Object5 leads to an error:

„Error, object must contain the same number or less vertices and faces. Original vertices; 2014 Original faces: 5990 New vertices: 2014 New faces: 6031“

2dhh7om.png

The error warning indicates, that there are more faces in Stephanies hand (Object5) than in Rocks hand (Object5). But that is not true. All hand objects of The Rock and Stephanie McMahon have the same number of vertices and faces.

An export with X-Rey as obj files and controlling the obj files with an text editor demonstrate, that all hands have got 2014 vertices (lines, which start with „v“) and 3648 faces (lines, which start with „f“). 3DS Max also shows these vertex and face numbers for all four hands.

So for some reason the face count routine seems to give wrong results in some cases and prevents a replacement.

 

2) Second question is about obj export with commas instead of decimal points and the known issue of broken models display in the preview window

Depending on the users region format settings in windows the model is displayed correctly or incorrectly in the preview window,

34yu3wx.png

forum post to this issue is

https://smacktalks.org/forums/topic/69511-x-rey-oppening-messy-yobj-2k172k16-question/?tab=comments#comment-938351

Also, when the users region format settings are „wrong“ (German instead of English US for instance), vertex (v) and vertex texture (vt) data in obj files are exported by X-Rey (and reShape) with commas as separator instead of decimal points.

While 3DS Max and blender import those obj files and replace the commas with decimal points, other tools like Milkshape 3D (and X-Rey / reShape) don't do this and can't import and display those files. Of course one can replace commas with decimal points after export in a text editor or change region settings, but a better way would be, to use decimal points inside the tools regardless of the users region format settings.

For example here is a discussion about „force point (.) as decimal separator in java“ on :

https://stackoverflow.com/questions/5236056/force-point-as-decimal-separator-in-java

 

 

 

Edited by testuser
Link to comment
Share on other sites

  • 2 weeks later...
18 hours ago, Meluniverse said:

can someone please tell me how to edit characters hair.and where can i get the x-rey tool from cause i dont see it on here.

hello Meluniverse, i am new to this forum and modding, too. I bought X-Rey from Tekken57 (developers name here in this forum) last month. 

He stopped development and support last year, but you can still buy it. You can use this link for more info:  http://sf4mods.blogspot.com/p/x-rey.html

Another tool similar to X-Rey (but with less functions), which can be used to extract the meshes is reshape. It is a free tool,  info in the wiki: https://smacktalks.org/wiki/index.php?title=ReShape

Although reshape is described as an open source tool, i did not find the source code here or on git hub. If you would like to download reshape, be sure to set "game 2k17 details in your Steam-Profile to public", then download from 2kmodz.com works.

0000 contains the body mesh, the hair mesh is inside 2715 (info is here https://smacktalks.org/wiki/index.php?title=Character_Modding), so

1) copy wrestler pac file from C:\Program Files (x86)\Steam\steamapps\common\WWE2K17\pac\ch folder to a modding folder 

2) open the pac file with rePac 1.8a and decompress the 2715.yobj file.

3) open 2715.yobj with X-Rey or reshape, then you can export the hair as a wavefront obj file and modify it with a 3D tool like blender or 3DS Max.

4) import back with X-Rey and rePac.

 

Edited by testuser
Link to comment
Share on other sites

  • 1 year later...
  • 1 year later...
On 16/11/2016 at 6:30, tekken57 said:

 

Los usuarios deben tener en cuenta:

Esta es la actualización final de X-Rey y X-Packer. No haré más desarrollo para X-Packer y X-Rey para 2k18. Terminaré el soporte al usuario para estas dos aplicaciones el 11 de octubre de 2017. Si tiene algún problema con cualquiera de las aplicaciones, aún puede enviarme un correo electrónico.

Me gustaría tomarme el tiempo para agradecer a todos y cada uno de ustedes por su apoyo a lo largo de los años. Realmente disfruté viendo y usando los mods que fueron creados con mis herramientas. Codificar X-Packer ha sido una experiencia realmente satisfactoria y alegre para mí durante los últimos 9 años.
 

Cuídense y los mejores deseos para todos ustedes.

 

bg_xpacker_trans.png

 

¿Qué es X-Packer?

X-PacKer es una aplicación que te permite extraer e inyectar archivos y texturas de archivos pac de luchador y archivos de texturas de la serie de juegos WWE. También permite editar los archivos guardados para xbox 360, ps3 y pc. Esto permite modificar el juego.

 

Plataformas compatibles: Ps3, xbox 360, ps2, wii, PC.

 

Lista de características:

 

Hidden Content

Tenga en cuenta que no hay funcionalidad de actualización de arco para 2k17 en xbox 360 y ps3 debido al nuevo formato de arco. Esto significa que, por el momento, no se pueden agregar nuevos luchadores y atuendos al juego en xbox 360 y ps3.

 

 

 

 

bg_trans.png

Versión 2.0. ha sido liberado. No he solicitado otra donación para ninguna actualización en los cuatro años que he lanzado X-Rey, sin embargo, esta versión ha requerido una cantidad significativa de trabajo para completar la codificación. Para ser justos, aquellos que hayan donado después de la fecha de lanzamiento del 11 de octubre de 2016 recibirán la actualización sin costo adicional.

Para ser claros, todas las versiones anteriores de X-Rey funcionan con modelos 2k17. Solo necesitará X-Rey v2.0 si planea crear animaciones faciales como se describe en este tutorial: https://www.youtube.com/watch? v = kMym6NUiBqA

 

 

¿Qué hace el programa?:

Hidden Content

 

Lo que no hace el programa :

Hidden Content

 

Software prerrequisito:

Deberá instalar el kit de herramientas SlimDX como requisito previo para que este programa funcione. El kit de herramientas se puede descargar aquí: http://code.google.com/p/slimdx/downloads/detail?name=SlimDX%20SDK%20%28January%202012%29.msi

 

Tenga en cuenta que la clave de serie es específica para una sola computadora. Por favor, envíeme la clave de serie de la computadora en la que realizará sus modificaciones. Si planea formatear su computadora o actualizar su sistema operativo, hágalo primero antes de instalar X-Rey y solicitar una clave de activación. Si ha actualizado su PC y tiene una nueva clave de serie, deberá adquirir una nueva licencia.

 

Controles básicos del programa:

Hidden Content

where can I download X-Packer and X-Rey please

Link to comment
Share on other sites

  • 4 months later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...