tekken57

X-Packer 2017 / X-Rey 2.7 released

Recommended Posts

hovathagod32
2 hours ago, tekken57 said:

Have you tried reinstalling x-Rey, maybe the configuration got corrupted when you were trying to create your own yobj files

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

Share this post


Link to post
Share on other sites
LordJustice17

@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.

Share this post


Link to post
Share on other sites
Dennis-Bieser

@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!

 

 

Share this post


Link to post
Share on other sites
AznBlusuazn
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!

Share this post


Link to post
Share on other sites
tekken57
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

Share this post


Link to post
Share on other sites
tekken57

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

Share this post


Link to post
Share on other sites
hovathagod32

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

Share this post


Link to post
Share on other sites
tekken57
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 

Share this post


Link to post
Share on other sites
tekken57
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

Share this post


Link to post
Share on other sites
hovathagod32

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.

Share this post


Link to post
Share on other sites
tekken57

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

Share this post


Link to post
Share on other sites
hovathagod32

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

Share this post


Link to post
Share on other sites
tekken57
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.

Share this post


Link to post
Share on other sites
tekken57

Edit: Added code to name the objects as requested and also fixed the lighting. Script is a bit slower as a result, but let it run even it appears like 3dsmax is frozen.

 

Download here: http://velocicosm.com/7URI

  • Like 2
  • Thanks 1

Share this post


Link to post
Share on other sites
LordJustice17

Awesome stuff Tek. Thanks.

 

Share this post


Link to post
Share on other sites
hovathagod32

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?

Share this post


Link to post
Share on other sites
tekken57
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.

Share this post


Link to post
Share on other sites
hamidroman

/:

Share this post


Link to post
Share on other sites
luis2k17
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

 

Share this post


Link to post
Share on other sites
Zaiboerelis

how much i should donate to get x-rey ?

Share this post


Link to post
Share on other sites
Zaiboerelis

hi tekken57 i paid 3 euros when will i get the files or that much isn't enough.

E-mail: modes2000@gmail.com

thanks in advance

Share this post


Link to post
Share on other sites
Dennis-Bieser
Posted (edited)

I know it's a bit late, but does anyone have problems with multiple collada import ? I always get this error message when i try to import all files with the multiple collada function. @AznBlusuazn@hovathagod32@tekken57

 

 

error.png

 

 

 

 

 

 

Edited by Dennis-Bieser

Share this post


Link to post
Share on other sites
testuser

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

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now