The Forum is up for sale: XeNTaX Forum looking for new owner
Diablo III .app
Re: Diablo III .app
Thanks for the info.
Could you please attach BoyC's .exe? So converting the .app files with his program will generate proper .obj files, which we can import to Maya / Blender etc ...
About the textures: so how can I attach them to the meshes? (I'm completely noob related to Maya, Blender, etc...)
In what extension should they exist (.dds, .tga, .tex, etc...)? As far as I know, we also have to convert the tex files to dds or what...
Could you please attach BoyC's .exe? So converting the .app files with his program will generate proper .obj files, which we can import to Maya / Blender etc ...
About the textures: so how can I attach them to the meshes? (I'm completely noob related to Maya, Blender, etc...)
In what extension should they exist (.dds, .tga, .tex, etc...)? As far as I know, we also have to convert the tex files to dds or what...
Diablo3 dataminers!
Keep up the good work guys!
Keep up the good work guys!
Re: Diablo III .app
It's not a .exe file. It's a 010 editor template. If you know how to compile it to the .exe file, please do it.ould you please attach BoyC's .exe? So converting the .app files with his program will generate proper .obj files, which we can import to Maya / Blender etc ...
//--------------------------------------
//--- 010 Editor v3.2.1 Binary Template
//
// File: Diablo 3 appearance file template
// Author: BoyC
// Revision: v0.37
// Purpose: Analyzing 3D data in Diablo 3
//--------------------------------------
local unsigned int vxcnt=0;
local unsigned int LookCount=0;
struct ChunkData
{
unsigned int Count<bgcolor=0xff00ff>;
unsigned int Offset<format=hex,bgcolor=0xff00ff>;
unsigned int Size<bgcolor=0xff00ff>;
};
struct ChunkHeader
{
unsigned int h[4];
};
struct BONEDATA //size = 68
{
unsigned int unk1[4];
float unk2[3];
unsigned int unk[3];
float unk4[7];
};
struct BONE //size = 236
{
char Name[64];
int ParentID;
float unk2[34]; //two matrices plus extra
ChunkData UnkChunk;
unsigned int unk[4];
int unk3;
Printf("# Bone: %s\n",Name);
local int pos=FTell();
FSeek(UnkChunk.Offset+16);
if (UnkChunk.Offset)
{
struct
{
BONEDATA bonedata[UnkChunk.Count]<optimize=false>;
} bonedata<bgcolor=0x00f0a0,comment="Unknown purpose bone data">;
}
FSeek(pos);
};
struct VERTEX //size = 44
{
float x,y,z;
unsigned char nx,ny,nz,nw;
int unk3,unk4;
unsigned short u,v;
unsigned int unk1;
char tx,ty,tz,tw;
char bx,by,bz,bw;
unsigned int unk2;
//obj export part
/**/
local float ru=u,rv=v,rnx=nx,rny=ny,rnz=nz;
ru=(ru-32767)/512.0f;
rv=1-(rv-32767)/512.0f;
rnx=(rnx-127)/127.0f;
rny=(rny-127)/127.0f;
rnz=(rnz-127)/127.0f;
Printf("v %f %f %f\n",x,y,z);
Printf("vt %f %f\n",ru,rv);
Printf("vn %f %f %f\n",rnx,rny,rnz);/**/
};
struct TRIINDICES
{
unsigned short a,b,c;
//obj export part
Printf("f %d/%d/%d %d/%d/%d %d/%d/%d\n",vxcnt+a+1,vxcnt+a+1,vxcnt+a+1,vxcnt+b+1,vxcnt+b+1,vxcnt+b+1,vxcnt+c+1,vxcnt+c+1,vxcnt+c+1);
}; //complete
struct BLENDWEIGHT
{
int BoneID;
float BoneWeight;
}; //complete
struct BLENDDATA //size = 24
{
BLENDWEIGHT Weights[3]<optimize=false>;
}; //complete
struct LOOKDATA //size = 248
{
unsigned int Five;
int MinusOne;
unsigned int DataOffset1<format=hex>;
unsigned int DataSize1;
unsigned int unk[3];
float Matrix[16];
unsigned int unk2[2];
unsigned int DataOffset2<format=hex>;
unsigned int DataSize2;
unsigned int unk3[35];
};
struct SUBOBJECT //size = 140
{
char Name[128];
unsigned int Offset,Size,Zero;
local int pos=FTell();
FSeek(Offset+16);
struct
{
LOOKDATA lookdata[LookCount]<optimize=false>;
} LookDataList<bgcolor=0x00a0f0,comment="Look Descriptors">;
FSeek(pos);
};
struct MESH //size = 372
{
int unk1;
ChunkData VertexChunk; //vertex size = 44
ChunkData WeightChunk; //weight size = 24
int Zero1;
ChunkData IndexChunk; // 16bit index buffer for a triangle list
ChunkData UnknownChunk; // points to an array of chunkdatas, could be anim
int unk5[4];
char SubObjectName[128];
char MeshName[128];
float funk1[6]; //bounding box?
unsigned int Zero2;
unsigned int unk[4];
Printf("# unk1: %4d vxcount: %4d\n",unk1,VertexChunk.Count);
Printf("# mesh %s is part of subobject %s\n",MeshName,SubObjectName);
local unsigned int Pos=FTell();
if (VertexChunk.Offset)
{
FSeek(VertexChunk.Offset);
struct
{
ChunkHeader ch;
VERTEX vx[VertexChunk.Count]<optimize=false>;
} Vertices;
}
if (WeightChunk.Offset)
{
FSeek(WeightChunk.Offset);
struct
{
ChunkHeader ch;
BLENDDATA w[VertexChunk.Count]<optimize=false>;
} BlendWeights;
}
if (IndexChunk.Offset)
{
FSeek(IndexChunk.Offset);
struct
{
ChunkHeader ch;
TRIINDICES w[IndexChunk.Count/3]<optimize=false>;
} Triangles;
}
FSeek(Pos);
vxcnt+=VertexChunk.Count;
};
struct HARDPOINT //size = 96
{
char Name[64];
int ParentBone;
float qx,qy,qz,qw; //rotation as a quaternion
float x,y,z; //position
};
struct COLLISIONOBJ //size = 104
{
unsigned int x[26];
};
struct NAME
{
char Name[64];
};
struct
{
unsigned int DEADBEEF[8];
unsigned int Counter1;
ChunkData BoneChunk; // size = 236
FSeek(FTell()+30*4);
ChunkData MeshChunk; // size = 372
FSeek(FTell()+9*4);
float FloatAray1[4]; //bounding sphere?
ChunkData CollisionChunk; // size = 104
FSeek(FTell()+3*4);
ChunkData HPChunk; // size = 96
FSeek(FTell()+5*4);
float One;
FSeek(FTell()+6*4);
ChunkData UnkChunk1;
FSeek(FTell()+4);
ChunkData UnkChunk2;
FSeek(FTell()+4);
ChunkData UnkChunk3;
FSeek(FTell()+8);
float FloatArray2[6]; //bounding box?
FSeek(FTell()+10*4);
char xobject[256];
char xobjectpath[256];
char xmesh[256];
char xmeshpath[256];
FSeek(FTell()+4*4);
unsigned int LookCnt;
LookCount=LookCnt;
ChunkData SubObjectChunk; // size = 140
FSeek(FTell()+4);
ChunkData LookNameChunk; // size = 64 count = Counter1
FSeek(FTell()+18*4);
//previously referenced data starts here, header size is 0x628h
Printf("# Bone Count: %d\n",BoneChunk.Count);
Printf("# Mesh Count: %d\n",MeshChunk.Count);
if (BoneChunk.Offset)
{
FSeek(BoneChunk.Offset+16);
struct
{
//ChunkHeader ch;
BONE bone[BoneChunk.Count]<optimize=false>;
} Bones<bgcolor=0xa0a0a0,comment="Bone data">;
}
if (MeshChunk.Offset)
{
FSeek(MeshChunk.Offset+16);
struct
{
//ChunkHeader ch;
MESH mesh[MeshChunk.Count]<optimize=false>;
} Models<bgcolor=0xb0f0b0,comment="Model data">;
}
if (SubObjectChunk.Offset)
{
FSeek(SubObjectChunk.Offset+16);
struct
{
//ChunkHeader ch;
SUBOBJECT group[SubObjectChunk.Count]<optimize=false>;
} SubObjects<bgcolor=0xc0c0f0,comment="SubObjects">;
}
if (HPChunk.Offset)
{
FSeek(HPChunk.Offset+16);
struct
{
//ChunkHeader ch;
HARDPOINT hardpoint[HPChunk.Count]<optimize=false>;
} HardPoints<bgcolor=0xd0f0f0,comment="These are hardpoints where other models can be attached to this one">;
}
if (CollisionChunk.Offset)
{
FSeek(CollisionChunk.Offset+16);
struct
{
//ChunkHeader ch;
COLLISIONOBJ Collisions[CollisionChunk.Count]<optimize=false>;
} CollisionObjects<bgcolor=0xf0e0f0,comment="Seems to be collision mesh data">;
}
if (LookNameChunk.Offset)
{
FSeek(LookNameChunk.Offset+16);
struct
{
NAME Name[LookCount]<optimize=false>;
} LookNames<bgcolor=0xf0a0a0,comment="Look Names">;
}
} HEADER<bgcolor=0xf0f000>;
About how to attach texture to meshes, I think it's better if you search youtube : Maya Hypershade, Maya Basic,...some kind like that. Very easy to do but difficult to explain.About the textures: so how can I attach them to the meshes? (I'm completely noob related to Maya, Blender, etc...)
Engine games use .dds,In what extension should they exist (.dds, .tga, .tex, etc...)? As far as I know, we also have to convert the tex files to dds or what...
3D software use .tga , .psd....
Diablo 3 use .tex
When exported they are naturally .dds . Why don't use .dds?
If you still don't want to use .dds, use photoshop with dds plugin to convert.
Re: Diablo III .app
OK, I don't know how to compile it. Any idea, or should I check on google?It's not a .exe file. It's a 010 editor template. If you know how to compile it to the .exe file, please do it.
When I export the adria.obj from Blender, it makes an adria.obj and an adria.mtl file. Do we really need this .mtl file, or the .obj + .dds are enough to display a model properly?
The other question is: is there a possibility to export an .obj file from Blender or Maya, which contains the texture as well, and then I don't have to work with two files per model, only with one.
(for ex.: the .awd format can contain a model + the texture)
Diablo3 dataminers!
Keep up the good work guys!
Keep up the good work guys!
Re: Diablo III .app
Open .app in 010 template. Create new template, paste Boy's template in there. Press F5 to compile .app with template. Copy the output (accept for the first line) to a text file then save as .obj. That's the way I create obj.OK, I don't know how to compile it. Any idea, or should I check on google?
But how to make a .exe converter, ask TaylorMouse. I have no Idea about that.
.mtl file is initialShadingGroup, just .obj+.dds are enough.When I export the adria.obj from Blender, it makes an adria.obj and an adria.mtl file. Do we really need this .mtl file, or the .obj + .dds are enough to display a model properly?
There is no way to contain texture in .obj.The other question is: is there a possibility to export an .obj file from Blender or Maya, which contains the texture as well, and then I don't have to work with two files per model, only with one.
Re: Diablo III .app
Hmm
actual topics:
Good news: I could load your AdriaBoyC file into the flash (without textures yet).
Problems:
1) The Adria BoyC.obj is more than 200 KBytes
after I import it to Blender, and export it again it becomes 150 KBytes. What's happening? Why does it loose info.
The exported file cannot be loaded by my flash application, so it seems it looses the vnormals numbers again.
2) I was checking Maya and Blender tutorials on the net, but there was none, which showed how to import and attach the 2 .dds files to the meshes. Also it's still not sure I can load .dds files in Away3D (the flash library). So I will need to convert them to .png or .jpg.
3) When I open the obj in Maya, and then I try to export it there is no .obj option, just some other formats. Do I have to install a plugin for that?
actual topics:
Good news: I could load your AdriaBoyC file into the flash (without textures yet).
Problems:
1) The Adria BoyC.obj is more than 200 KBytes
after I import it to Blender, and export it again it becomes 150 KBytes. What's happening? Why does it loose info.
The exported file cannot be loaded by my flash application, so it seems it looses the vnormals numbers again.
2) I was checking Maya and Blender tutorials on the net, but there was none, which showed how to import and attach the 2 .dds files to the meshes. Also it's still not sure I can load .dds files in Away3D (the flash library). So I will need to convert them to .png or .jpg.
3) When I open the obj in Maya, and then I try to export it there is no .obj option, just some other formats. Do I have to install a plugin for that?
Diablo3 dataminers!
Keep up the good work guys!
Keep up the good work guys!
Re: Diablo III .app
it's true.so it seems it looses the vnormals numbers again.
If we can contact directly, I can use team viewer to do it for you.I was checking Maya and Blender tutorials on the net, but there was none, which showed how to import and attach the 2 .dds files to the meshes. Also it's still not sure I can load .dds files in Away3D (the flash library). So I will need to convert them to .png or .jpg.
Maya is not naturally support import, export .obj. You need to go to Windows -> Plugin Manager -> Check the .obj export3) When I open the obj in Maya, and then I try to export it there is no .obj option, just some other formats. Do I have to install a plugin for that?
- TaylorMouse
- ultra-veteran

- Posts: 348
- Joined: Mon Sep 26, 2011 12:51 pm
- Has thanked: 11 times
- Been thanked: 89 times
Re: Diablo III .app
read this : http://en.wikipedia.org/wiki/Wavefront_.obj_file maybe this explains why the size can vary,Monguron wrote: 1) The Adria BoyC.obj is more than 200 KBytes
after I import it to Blender, and export it again it becomes 150 KBytes. What's happening? Why does it loose info.
The exported file cannot be loaded by my flash application, so it seems it looses the vnormals numbers again.
it is because 3D software such as Blender/ Max / Maya /... probably do not use the same export, since there are more then 1 way to save to an obj file.
If your read the wiki, you'll see what I mean under the section Vertex/texture-coordinate/normal
Also the textures are not loaded at import time because there is no mtl file written in the process.
The .obj file references a .mtl file which contains the paths and names of the actual used textures.
Hope this helps
T
Re: Diablo III .app
Hey Taylor,
So the .mtl is always needed, as it tells the eingine how to apply the textures to the meshes.
If I'm right, this means we need the .obj + .dds textures + .mtl to properly load/show a model in an application.
So the .mtl is always needed, as it tells the eingine how to apply the textures to the meshes.
If I'm right, this means we need the .obj + .dds textures + .mtl to properly load/show a model in an application.
Diablo3 dataminers!
Keep up the good work guys!
Keep up the good work guys!
Re: Diablo III .app
2 Monguron:
Yeah you do, but problem is, theres no .mtl for now, i mean theres one but noone hckd it yet.
So the only way to do that, is redo all 4400 .app files
Well, are you after showing theese models via some 3rd party 3D engine am i right ?
Yeah you do, but problem is, theres no .mtl for now, i mean theres one but noone hckd it yet.
So the only way to do that, is redo all 4400 .app files
Well, are you after showing theese models via some 3rd party 3D engine am i right ?
Re: Diablo III .app
Hey Insane,
The guys (NPD2006 and Taylor) could open the .obj files, and could attach the textures (.dds) somehow in Maya / Blender.
I could only open the .obj files, so I have basic problems with using Maya and Blender
I need to understand the basic concept of the texturing methods to be able to make a 3rd party engine.
About the engine:
Check out AWAY3D (http://www.away3d.com)
This is an action script library, based on Adobe Flex SDK, and with it we can open Diablo3 3D models, rotate them, zoom, etc... in Flash, so it can be used on the internet without any plugin needed (only the latest Flash Player 11 is needed to run the Away3D 4.0 files).
Can you support somehow? Are you prof. in 3D graphics and programming, cause I'm just a "hobby driver".
The guys (NPD2006 and Taylor) could open the .obj files, and could attach the textures (.dds) somehow in Maya / Blender.
I could only open the .obj files, so I have basic problems with using Maya and Blender
I need to understand the basic concept of the texturing methods to be able to make a 3rd party engine.
About the engine:
Check out AWAY3D (http://www.away3d.com)
This is an action script library, based on Adobe Flex SDK, and with it we can open Diablo3 3D models, rotate them, zoom, etc... in Flash, so it can be used on the internet without any plugin needed (only the latest Flash Player 11 is needed to run the Away3D 4.0 files).
Can you support somehow? Are you prof. in 3D graphics and programming, cause I'm just a "hobby driver".
Diablo3 dataminers!
Keep up the good work guys!
Keep up the good work guys!
Re: Diablo III .app
I have already told ya that!I need to understand the basic concept of the texturing methods to be able to make a 3rd party engine.
This is the method to assign dds to obj in maya.
2. For the material: Windows -> Rendering Editor -> Hypershade -> Drag and Drop whatever shader you want to the working area (I usually use Phong shader)-> Double click on the shader to open its attribute -> Open the Color Map (small checker beside Color)-> Choose your .dds file -> Assign shader to object.
(example: Adria_A_diff.dds)
I am not a beginner in 3D graphics, but not a prof., too. I know a little programming, enough to display a "Hello World" on the console. I really have no idea about AWAY3D or FLEX.Can you support somehow? Are you prof. in 3D graphics and programming, cause I'm just a "hobby driver".
Re: Diablo III .app
hey there, i am programmer. According to my knowledge of 3d flash frameworks its not that easy for a beginner in game.dev to make it work like an good application. its not hard to do so if you have some experiace, easier to do it in OGL o D3D for me, but i need a web and cba to do an j.appletMonguron wrote:Hey Insane,
The guys (NPD2006 and Taylor) could open the .obj files, and could attach the textures (.dds) somehow in Maya / Blender.
I could only open the .obj files, so I have basic problems with using Maya and Blender
I need to understand the basic concept of the texturing methods to be able to make a 3rd party engine.
About the engine:
Check out AWAY3D (http://www.away3d.com)
This is an action script library, based on Adobe Flex SDK, and with it we can open Diablo3 3D models, rotate them, zoom, etc... in Flash, so it can be used on the internet without any plugin needed (only the latest Flash Player 11 is needed to run the Away3D 4.0 files)..
Can you support somehow? Are you prof. in 3D graphics and programming, cause I'm just a "hobby driver".
you can just texture a model passing it a correct files, all the UV mapping already done by Blizz guys
Re: Diablo III .app
Hey,
I fonud some examples scripts (for ex. loading an .obj file + mapping, textures, etc...), and I could reach to load a .obj from Diablo3, but without any textures.
The application would be very basic, so it's enough if I can load the .obj + the textures in it, and then rotate and zoom the model.
As you are a porgrammer, what do you think, can we put the code together here, and when it's ready, then we have a Diablo3 model viewer.
The away3d framework makes a lot of thing easily (antialiasing, lighting, etc...), this whole thing I wrote only takes around 40-50 lines of code in actionscript with the away3d library.
I fonud some examples scripts (for ex. loading an .obj file + mapping, textures, etc...), and I could reach to load a .obj from Diablo3, but without any textures.
The application would be very basic, so it's enough if I can load the .obj + the textures in it, and then rotate and zoom the model.
As you are a porgrammer, what do you think, can we put the code together here, and when it's ready, then we have a Diablo3 model viewer.
The away3d framework makes a lot of thing easily (antialiasing, lighting, etc...), this whole thing I wrote only takes around 40-50 lines of code in actionscript with the away3d library.
Diablo3 dataminers!
Keep up the good work guys!
Keep up the good work guys!
Re: Diablo III .app
Whats the point ?Monguron wrote:Hey,
I fonud some examples scripts (for ex. loading an .obj file + mapping, textures, etc...), and I could reach to load a .obj from Diablo3, but without any textures.
The application would be very basic, so it's enough if I can load the .obj + the textures in it, and then rotate and zoom the model.
As you are a porgrammer, what do you think, can we put the code together here, and when it's ready, then we have a Diablo3 model viewer.
The away3d framework makes a lot of thing easily (antialiasing, lighting, etc...), this whole thing I wrote only takes around 40-50 lines of code in actionscript with the away3d library.
