Forum

ASSIST, AMERICA'S ARMY COMMUNITY - RELIVE THE GLORY DAYS OF AMERICA'S ARMY 2.5

Author Topic: America's Army Resource Extractor v3.1(Updated)  (Read 46871 times)

0 Members and 1 Guest are viewing this topic.

Offline ELiZ

Re: America's Army Resource Extractor v3.1(Updated)
« Reply #15 on: Tuesday, February 11, 2014, 19:02:25 PM »
Happy rendering

Offline ELiZ

Re: America's Army Resource Extractor v3.1(Updated)
« Reply #16 on: Friday, March 21, 2014, 09:24:54 AM »
Post a picture on how the OBJ dialog looks.
Also post what object you try to import

Offline ELiZ

Re: America's Army Resource Extractor v3.1(Updated)
« Reply #17 on: Friday, March 21, 2014, 10:05:13 AM »
Its the same settings from the picture you posted on page 1
Ive allready sucessfully extracted, im just trying to import Bridge.obj from the Maps folder
That was why I asked what object.
The setting posted are for single object import.

Map imports are different settings
These are the settings I just used to import the map:


If you are having issues it might be the 3DS MAX version, I use 2010 and don't guarantee the import to work in more recent versions

Offline ELiZ

Re: America's Army Resource Extractor v3.1(Updated)
« Reply #18 on: Friday, March 21, 2014, 11:03:26 AM »
If you get the import to work, don't forget to run the MaxScript to Add lights, fix Terrain and some other stuff

Offline ELiZ

Re: America's Army Resource Extractor v3.1(Updated)
« Reply #19 on: Saturday, March 22, 2014, 23:32:45 PM »
When you import your maps, does it say during it "deleteing isolated vertices"?

Yes


Offline ELiZ

Re: America's Army Resource Extractor v3.1(Updated)
« Reply #20 on: Saturday, March 22, 2014, 23:33:55 PM »
Can you post the obj file you got for BC?

Offline ELiZ

Re: America's Army Resource Extractor v3.1(Updated)
« Reply #21 on: Sunday, March 23, 2014, 03:52:37 AM »
I get the same as you describe(Vertexes all over the place)
So the issue must be in the exporter..


Can you post a picture of the program when you do the export, so that I can see the settings.

Here is my copy of the same file.
https://dl.dropboxusercontent.com/u/62876385/Bridge.zip

Offline ELiZ

Re: America's Army Resource Extractor v3.1(Updated)
« Reply #22 on: Sunday, March 23, 2014, 04:27:20 AM »
Try deselecting AGP_Viewports

Offline ELiZ

Re: America's Army Resource Extractor v3.1(Updated)
« Reply #23 on: Sunday, March 23, 2014, 04:53:34 AM »
Ive deselected also previous times, still was the same thing.

I assaume the Bridge Copy I posted above worked?

Offline kNy

  • Jr. Member
  • **
  • Posts: 2
    • View Profile
  • AA: kNy.!
Re: America's Army Resource Extractor v3.1(Updated)
« Reply #24 on: Friday, March 28, 2014, 05:29:47 AM »
Links are dead, can you please reupload AARE 3.1 ?

Offline ELiZ

Re: America's Army Resource Extractor v3.1(Updated)
« Reply #25 on: Friday, March 28, 2014, 06:53:42 AM »

Offline ELiZ

Re: America's Army Resource Extractor v3.1(Updated)
« Reply #26 on: Thursday, April 03, 2014, 09:46:49 AM »
ELiZ would you be able to convert anims to .bip, current .meshanimation format is unusable.
Nope.
That area was not fully developed when I stopped working on it.

Offline ELiZ

Re: America's Army Resource Extractor v3.1(Updated)
« Reply #27 on: Thursday, April 03, 2014, 09:57:15 AM »
As I mentioned, I was not finished when I stopped developing.
The MAX importer is not perfect, there is something wrong with the Pelvis Anim.

But here is the MaxScript I was developing:
You'll have to edit and change Filename(Mesh) and FilenameAnim (Anim) paths to match your setup
https://dl.dropboxusercontent.com/u/62876385/MeshAnimImported.ms

Code: [Select]
SequenceLength=0
trackTime=0
StartBone=0
RootSpeed3D=[0,0,0]
numBones=0
q=[0,0,0,0]
p=[0,0,0]
rot=[0,0,0]
PawnName=""
vert_array = #()
face_array = #()
id_array = #()
NumMaterials=0
Skin_Bones_Name=#()
vpos=[0,0,0]
uvw=[0,0,0]
pos2=[0,0,0]
pos3=[0,0,0]
rot=[0,0,0]
rot2=[0,0,0]
rot3=[0,0,0]
trans =[0,0,0]
destpos=[0,0,0]
NumPawns=0

Filename ="D:\\AA\\AARE3.vb6\\rsk\\SoldierM_SF_Arctic_Rifleman.rsk"
FilenameAnim ="D:\\AA\\AARE3.vb6\\MeshAnimations\\Civilian_3P.Agitated_Idle.MeshAnimation"

Prefix=getFilenameFile Filename
Prefix=Prefix+"_"
sliderTime = 0f
Fi_name = Filename
if Fi_name != undefined then
(
fa=fopen Fi_name "rb"
if  fa != undefined then
(
vert_array = #() -- clear Vertices Array
face_array = #() -- clear Faces Array
id_array = #() -- clear Material_ID array
Skin_Bones_Name=#() -- clear Bone Array
NumVertex=ReadLong fa -- Read number of Vertices from file
NumFaces=ReadLong fa -- Read number of Faces from file
trans.x=readfloat fa -- Read x for transposing SkeletalMesh
trans.y=readfloat fa -- Read y for transposing SkeletalMesh
trans.z=readfloat fa -- Read z for transposing SkeletalMesh
rot.x=readfloat fa -- Read Rotation_x for SkeletalMesh
rot.y=readfloat fa -- Read Rotation_y for SkeletalMesh
rot.z=readfloat fa -- Read Rotation_z for SkeletalMesh
for a = 1 to NumVertex do
(
vpos.x= readfloat fa -- Read x position for Vertice
vpos.y= readfloat fa -- Read y position for Vertice
vpos.z= readfloat fa -- Read z position for Vertice
vpos=vpos+trans -- Add transpose to Vertice Position
append vert_array [vpos.x,vpos.y,vpos.z] -- Add vertice to Vertice Array
)
for a = 1 to NumFaces do
(
p1=readlong fa -- Read Point1 in triangle from file
p2=readlong fa -- Read Point2 in triangle from file
p3=readlong fa -- Read Point3 in triangle from file
append face_array [p1,p2,p3] -- Add Face to Face Array
MaterialID=readlong fa -- Read Material_ID for Current face
append id_array MaterialID -- Add Material_ID to Material_ID Array
)
newmesh=Mesh vertices:vert_array faces:face_array -- Create new mesh from Vertice Array and Face Array
setUserProp newmesh "Trans.x" trans.x
setUserProp newmesh "Trans.y" trans.y
setUserProp newmesh "Trans.z" trans.z
setUserProp newmesh "Rotation_X" rot.x -- Write Origional Rotation of Skeletal Mesh to Mesh as a property
setUserProp newmesh "Rotation_Y" rot.y -- Write Origional Rotation of Skeletal Mesh to Mesh as a property
setUserProp newmesh "Rotation_Z" rot.z -- Write Origional Rotation of Skeletal Mesh to Mesh as a property
meshop.setMapSupport newmesh 0 true -- Make sure Texture channel is ready to recive U and V
meshop.setMapSupport newmesh 1 true -- Make sure Texture channel is ready to recive U and V
meshop.setNumMaps newmesh  1 keep:false -- Make sure Texture channel is ready to recive U and V
meshop.setNumMapVerts newmesh 1 numVertex  keep:false -- Set Number of UV's in mesh
for a = 1 to NumFaces do
(
setFaceMatID newmesh a id_array[a] -- Set Material_id on a Face
)
for a = 1 to numVertex do
(
uvw.x= readfloat fa -- Read U from file
uvw.y= readfloat fa -- Read V from file
uvw.z=0 -- Set W to 0
meshop.setmapvert newmesh 1 a uvw -- Set UVW to Vertice
)
newmesh.name=Prefix -- Name Mesh
newmesh.rotation.controller.value=eulerangles rot.z rot.x (rot.y-90) -- Rotate Mesh to Zero-Position
NumMaterials =readlong fa -- Read Number if materials needed
mm = multimaterial numsubs:NumMaterials -- Create a Multi-Material
for a = 1 to NumMaterials do
(
MaterialName=ReadString fa -- Read Material-name from file
fiName= MaterialName + ".dds" -- Set bitmap Filename
bt=bitmaptexture filename:fiName
mm.materiallist[a].name=MaterialName
mm.materiallist[a].diffusemap=bt -- Set Diffuse to Bitmap
mm.materiallist[a].showInViewport=true
mm.materiallist[a].specularLevel = 20
mm.materiallist[a].glossiness = 5
mm.materiallist[a].shaderType = 4
mm.materiallist[a].adTextureLock = on
)
newmesh.material=mm -- Assign Multimaterial to Mesh
NumBones=ReadLong  fa -- Read Number of bones in SkeletalMesh
for b = 0 to (NumBones-1) do
(
pos2=[0,0,0] -- Reset position Vector
ee=Point pos:pos2 cross:off box:on -- Create Helper Object
MeshName=readstring fa -- Read Bone-name from file
pos2.x=readfloat fa -- Read Bone position.x from file
pos2.y=readfloat fa -- Read Bone position.y from file
pos2.z=readfloat fa -- Read Bone position.z from file
pos2=pos2+trans -- Add Mesh-transpose to Bone-position
rot2x=readfloat fa -- Read Bone rotation.x from file
rot2y=readfloat fa -- Read Bone rotation.y from file
rot2z=readfloat fa -- Read Bone rotation.z from file
rot2w=readfloat fa -- Read Bone rotation.w from file
radius=readfloat fa -- Read Bone Radius from file
bone_Cap=readfloat fa -- Read BONE_CAP from file
if radius<3 then radius=3
ee.pos=pos2 -- Set Bone-position
rot3= quattoeuler(normalize (quat rot2x rot2y rot2z rot2w))
about [0,0,0] rotate ee (eulerangles (rot.z) (rot.x) (rot.y-90))
dd=Point pos:ee.pos  cross:off box:on
dd.pivot=ee.pos
dd.name=MeshName
delete ee
dd.size=radius
setUserProp dd  "Rotation_X" (rot3.x)
setUserProp dd  "Rotation_Y" (rot3.y)
setUserProp dd  "Rotation_Z" (rot3.z)
append Skin_Bones_Name dd.name
Parent= readstring fa
setUserProp dd  "Parent" Parent
setUserProp dd  "Radius" radius
setUserProp dd  "Bone_Cap" bone_Cap
bb= getNodeByName Parent
if (dd != bb) then
(
dd.parent= bb
)
)
max modify mode
modPanel.setCurrentObject newmesh
mod_temp=Skin()
addModifier newmesh mod_temp
mod_temp.bone_Limit=4
for j=1 to Skin_Bones_Name.count do
(
bone_temp=getNodeByName Skin_Bones_Name[j]
radius=getUserProp bone_temp "Radius"
skinOps.addbone mod_temp bone_temp 1
no = skinOps.getNumberCrossSections mod_temp j
for L=1 to no do
(
skinOps.SetInnerRadius mod_temp j L radius
skinOps.SetOuterRadius mod_temp j L radius
)
)
NumWeights=readlong fa
apa=ClassOf newmesh -- Max bug workaround
Weight_Array_1= #()
Weight_Array_2= #()
Weight_Array_3= #()
for a= 1 to NumWeights do
(
Vnum=readlong fa
Weight=readfloat fa
Bnum=readlong fa
Weight_Array_1[a] = Vnum
Weight_Array_2[a] = Bnum+1
Weight_Array_3[a] = Weight
)
for b = 1 to skinops.GetNumberVertices mod_temp do
(
Bone_Array=#()
Bone_Weight_Array=#()
for a = 1 to Weight_Array_1.count  do
(
if (Weight_Array_1[a])==b then
(
append Bone_Array Weight_Array_2[a]
append Bone_Weight_Array Weight_Array_3[a]
)
)
skinOps.ReplaceVertexWeights mod_temp b Bone_Array Bone_Weight_Array
)
fclose fa
)
)

fa=fopen FilenameAnim "rb"
SequenceLength=ReadLong fa
RootSpeed3D.x=readfloat fa
RootSpeed3D.y=readfloat fa
RootSpeed3D.z=readfloat fa
trackTime=readfloat fa
StartBone=ReadLong fa
numBones=ReadLong fa

animate on
(
for a = 1 to (numBones) do
(
BoneName=readstring fa
Parent=readstring fa
ee=getNodeByName(BoneName)
flags=ReadLong fa
numPos=ReadLong fa
for b = 1 to (numPos) do
(
myTime=readfloat fa
at time(MyTime)
(
p.x=readfloat fa
p.y=readfloat fa
p.z=readfloat fa
if Parent !="" then
(
ff=getNodeByName(Parent)
ee.pos=ff.pos
move ee [-p.x,p.z,-p.y]
)
else
(
ee.pos=[-p.x,p.z,-p.y]
)

)
)
)
for a = 1 to (numBones) do
(
BoneName=readstring fa

Parent=readstring fa
NumQuats=ReadLong fa
ee=getNodeByName(BoneName)
ee.wirecolor = color 246 243 233
for b = 1 to (numQuats) do
(
myTime=readfloat fa
at time(MyTime)
(
q.x=readfloat fa
q.y=readfloat fa
q.z=readfloat fa
q.w=readfloat fa
rot = quattoeuler(quat q.x q.y q.z q.w) order:2
ee.Rotation.controller.value =  eulerangles (rot.x) (-rot.y) rot.z
)
)
)
)
fclose fa
« Last Edit: Thursday, April 03, 2014, 10:03:41 AM by ELiZ »

Offline ELiZ

Re: America's Army Resource Extractor v3.1(Updated)
« Reply #28 on: Monday, May 05, 2014, 02:04:02 AM »
I've fixed the Meshanimation importer MaxScript

Here is an updated version
https://dl.dropboxusercontent.com/u/62876385/MeshAnimImported.ms

Code: [Select]
SequenceLength=0
trackTime=0
StartBone=0
RootSpeed3D=[0,0,0]
numBones=0
q=[0,0,0,0]
p=[0,0,0]
rot=[0,0,0]
PawnName=""
vert_array = #()
face_array = #()
id_array = #()
NumMaterials=0
Skin_Bones_Name=#()
vpos=[0,0,0]
uvw=[0,0,0]
pos2=[0,0,0]
pos3=[0,0,0]
rot=[0,0,0]
rot2=[0,0,0]
rot3=[0,0,0]
trans =[0,0,0]
destpos=[0,0,0]
NumPawns=0

Filename ="D:\\AA\\AARE3.vb6\\rsk\\SoldierM_SF_Arctic_Rifleman.rsk"
FilenameAnim ="D:\\AA\\AARE3.vb6\\MeshAnimations\\Soldier_3P.RunFwNo.MeshAnimation"

Prefix=getFilenameFile Filename
Prefix=Prefix+"_"
sliderTime = 0f
Fi_name = Filename
if Fi_name != undefined then
(
fa=fopen Fi_name "rb"
if  fa != undefined then
(
vert_array = #() -- clear Vertices Array
face_array = #() -- clear Faces Array
id_array = #() -- clear Material_ID array
Skin_Bones_Name=#() -- clear Bone Array
NumVertex=ReadLong fa -- Read number of Vertices from file
NumFaces=ReadLong fa -- Read number of Faces from file
trans.x=readfloat fa -- Read x for transposing SkeletalMesh
trans.y=readfloat fa -- Read y for transposing SkeletalMesh
trans.z=readfloat fa -- Read z for transposing SkeletalMesh
rot.x=readfloat fa -- Read Rotation_x for SkeletalMesh
rot.y=readfloat fa -- Read Rotation_y for SkeletalMesh
rot.z=readfloat fa -- Read Rotation_z for SkeletalMesh
for a = 1 to NumVertex do
(
vpos.x= readfloat fa -- Read x position for Vertice
vpos.y= readfloat fa -- Read y position for Vertice
vpos.z= readfloat fa -- Read z position for Vertice
vpos=vpos+trans -- Add transpose to Vertice Position
append vert_array [vpos.x,vpos.y,vpos.z] -- Add vertice to Vertice Array
)
for a = 1 to NumFaces do
(
p1=readlong fa -- Read Point1 in triangle from file
p2=readlong fa -- Read Point2 in triangle from file
p3=readlong fa -- Read Point3 in triangle from file
append face_array [p1,p2,p3] -- Add Face to Face Array
MaterialID=readlong fa -- Read Material_ID for Current face
append id_array MaterialID -- Add Material_ID to Material_ID Array
)
newmesh=Mesh vertices:vert_array faces:face_array -- Create new mesh from Vertice Array and Face Array
setUserProp newmesh "Trans.x" trans.x
setUserProp newmesh "Trans.y" trans.y
setUserProp newmesh "Trans.z" trans.z
setUserProp newmesh "Rotation_X" rot.x -- Write Origional Rotation of Skeletal Mesh to Mesh as a property
setUserProp newmesh "Rotation_Y" rot.y -- Write Origional Rotation of Skeletal Mesh to Mesh as a property
setUserProp newmesh "Rotation_Z" rot.z -- Write Origional Rotation of Skeletal Mesh to Mesh as a property
meshop.setMapSupport newmesh 0 true -- Make sure Texture channel is ready to recive U and V
meshop.setMapSupport newmesh 1 true -- Make sure Texture channel is ready to recive U and V
meshop.setNumMaps newmesh  1 keep:false -- Make sure Texture channel is ready to recive U and V
meshop.setNumMapVerts newmesh 1 numVertex  keep:false -- Set Number of UV's in mesh
for a = 1 to NumFaces do
(
setFaceMatID newmesh a id_array[a] -- Set Material_id on a Face
)
for a = 1 to numVertex do
(
uvw.x= readfloat fa -- Read U from file
uvw.y= readfloat fa -- Read V from file
uvw.z=0 -- Set W to 0
meshop.setmapvert newmesh 1 a uvw -- Set UVW to Vertice
)
newmesh.name=Prefix -- Name Mesh
newmesh.rotation.controller.value=eulerangles rot.z rot.x (rot.y-90) -- Rotate Mesh to Zero-Position
NumMaterials =readlong fa -- Read Number if materials needed
mm = multimaterial numsubs:NumMaterials -- Create a Multi-Material
for a = 1 to NumMaterials do
(
MaterialName=ReadString fa -- Read Material-name from file
fiName= MaterialName + ".dds" -- Set bitmap Filename
bt=bitmaptexture filename:fiName
mm.materiallist[a].name=MaterialName
mm.materiallist[a].diffusemap=bt -- Set Diffuse to Bitmap
mm.materiallist[a].showInViewport=true
mm.materiallist[a].specularLevel = 20
mm.materiallist[a].glossiness = 5
mm.materiallist[a].shaderType = 4
mm.materiallist[a].adTextureLock = on
)
newmesh.material=mm -- Assign Multimaterial to Mesh
NumBones=ReadLong  fa -- Read Number of bones in SkeletalMesh
for b = 0 to (NumBones-1) do
(
pos2=[0,0,0] -- Reset position Vector
ee=Point pos:pos2 cross:off box:on -- Create Helper Object
MeshName=readstring fa -- Read Bone-name from file
pos2.x=readfloat fa -- Read Bone position.x from file
pos2.y=readfloat fa -- Read Bone position.y from file
pos2.z=readfloat fa -- Read Bone position.z from file
pos2=pos2+trans -- Add Mesh-transpose to Bone-position
rot2x=readfloat fa -- Read Bone rotation.x from file
rot2y=readfloat fa -- Read Bone rotation.y from file
rot2z=readfloat fa -- Read Bone rotation.z from file
rot2w=readfloat fa -- Read Bone rotation.w from file
radius=readfloat fa -- Read Bone Radius from file
bone_Cap=readfloat fa -- Read BONE_CAP from file
if radius<3 then radius=3
ee.pos=pos2 -- Set Bone-position
rot3= quattoeuler(normalize (quat rot2x rot2y rot2z rot2w))
about [0,0,0] rotate ee (eulerangles (rot.z) (rot.x) (rot.y-90))
dd=Point pos:ee.pos  cross:off box:on
dd.pivot=ee.pos
dd.name=MeshName
delete ee
dd.size=radius
setUserProp dd  "Rotation_X" (rot3.x)
setUserProp dd  "Rotation_Y" (rot3.y)
setUserProp dd  "Rotation_Z" (rot3.z)
append Skin_Bones_Name dd.name
Parent= readstring fa
setUserProp dd  "Parent" Parent
setUserProp dd  "Radius" radius
setUserProp dd  "Bone_Cap" bone_Cap
bb= getNodeByName Parent
if (dd != bb) then
(
dd.parent= bb
)
)
max modify mode
modPanel.setCurrentObject newmesh
mod_temp=Skin()
addModifier newmesh mod_temp
mod_temp.bone_Limit=4
for j=1 to Skin_Bones_Name.count do
(
bone_temp=getNodeByName Skin_Bones_Name[j]
radius=getUserProp bone_temp "Radius"
skinOps.addbone mod_temp bone_temp 1
no = skinOps.getNumberCrossSections mod_temp j
for L=1 to no do
(
skinOps.SetInnerRadius mod_temp j L radius
skinOps.SetOuterRadius mod_temp j L radius
)
)
NumWeights=readlong fa
apa=ClassOf newmesh -- Max bug workaround
Weight_Array_1= #()
Weight_Array_2= #()
Weight_Array_3= #()
for a= 1 to NumWeights do
(
Vnum=readlong fa
Weight=readfloat fa
Bnum=readlong fa
Weight_Array_1[a] = Vnum
Weight_Array_2[a] = Bnum+1
Weight_Array_3[a] = Weight
)
for b = 1 to skinops.GetNumberVertices mod_temp do
(
Bone_Array=#()
Bone_Weight_Array=#()
for a = 1 to Weight_Array_1.count  do
(
if (Weight_Array_1[a])==b then
(
append Bone_Array Weight_Array_2[a]
append Bone_Weight_Array Weight_Array_3[a]
)
)
skinOps.ReplaceVertexWeights mod_temp b Bone_Array Bone_Weight_Array
)
fclose fa
)
)

fa=fopen FilenameAnim "rb"
SequenceLength=ReadLong fa
RootSpeed3D.x=readfloat fa
RootSpeed3D.y=readfloat fa
RootSpeed3D.z=readfloat fa
trackTime=readfloat fa
StartBone=ReadLong fa
numBones=ReadLong fa

animate on
(
for a = 1 to (numBones) do
(
BoneName=readstring fa
Parent=readstring fa
ee=getNodeByName(BoneName)
flags=ReadLong fa
numPos=ReadLong fa
for b = 1 to (numPos) do
(
myTime=readfloat fa
at time(MyTime)
(
p.x=readfloat fa
p.y=readfloat fa
p.z=readfloat fa
if Parent !="" then
(
ff=getNodeByName(Parent)
ee.pos=ff.pos
move ee [-p.x,p.z,-p.y]
)
else
(
ee.pos=[-p.x,p.z,-p.y]
)

)
)
)

for a = 1 to (numBones) do
(
BoneName=readstring fa

Parent=readstring fa
NumQuats=ReadLong fa
ee=getNodeByName(BoneName)
ee.wirecolor = color 246 243 233
for b = 1 to (numQuats) do
(
myTime=readfloat fa
at time(MyTime)
(
q.x=readfloat fa
q.y=readfloat fa
q.z=readfloat fa
q.w=readfloat fa
rot = quattoeuler(quat q.x q.y q.z q.w) order:2

if BoneName=="Pelvis" then
(
-- rot.x=0
-- rot.y=0
-- rot.z=0
rot.x=-rot.x
rot.y=-rot.y
rot.z=-rot.z
)

ee.Rotation.controller.value =  eulerangles (rot.x) (-rot.y) rot.z
)
)
)
)
fclose fa

Offline natoorrussia

Re: America's Army Resource Extractor v3.1(Updated)
« Reply #29 on: Monday, May 05, 2014, 17:10:16 PM »
Does the Maxscipt language have functions?

 

Download Assist

×

Download Game Client

Important: Battletracker no longer exists. However, old Battletracker accounts may still work. You can create a new 25Assist account here

Download Server Manager