Understanding OOF-Format
- MetalBeast
- DBB Ace
- Posts: 151
- Joined: Wed Sep 05, 2007 6:03 am
- Location: http://3d-get.de/metalbeast
- Contact:
Understanding OOF-Format
Hi,
I hope somebody can help me
I try to code an ASE/3DS to OOF converter, but have some problems understanding the OOF-Format.
The documentation in internet ist very rare and not really extensive.
Is here enybody, who can help me to understand how to make an working OOF-Export?
I do not need the code, only the logic behind this.
I asked SuperSheep (autor of OOF-Edit), about the Source-Code or at least parts of it, but he don't even answer my PM's
thx in advance.
I hope somebody can help me
I try to code an ASE/3DS to OOF converter, but have some problems understanding the OOF-Format.
The documentation in internet ist very rare and not really extensive.
Is here enybody, who can help me to understand how to make an working OOF-Export?
I do not need the code, only the logic behind this.
I asked SuperSheep (autor of OOF-Edit), about the Source-Code or at least parts of it, but he don't even answer my PM's
thx in advance.
I found this DBB post using a google query...
viewtopic.php?p=199635#199635
...in which supersheep explains the .oof format.
viewtopic.php?p=199635#199635
...in which supersheep explains the .oof format.
- Aus-RED-5
- DBB Friend
- Posts: 1604
- Joined: Fri Apr 23, 2004 7:27 am
- Location: Adelaide, South Australia
- Contact:
awww.....
You beat me to it The Lion.
So now I have to quote SS to do better!
Besides, the DBB search feature is your friend.
You beat me to it The Lion.
So now I have to quote SS to do better!
Besides, the DBB search feature is your friend.
SuperSheep wrote:I realize that the 3ds plugin will not work with blender. My point was that 3dsmax already has a large amount of tools designed to work with it. If you are a CG guy, you should be able to get yourself a copy of 3dsmax to use at the very least.
I guess I wonder at why you would make your model to the extent you did in a program that you know doesn't export to a usable format for D3, and then ask for someone else to write a converter so you can finish your work.
Writing a exporter for Blender or any 3d program for that matter is not going to be a simple 1.2.3. task for even a skilled programmer unless they had already wrote scripts for Blender and had an intimate knowledge of D3's OOF/ORF format.
Instead of complaining that you don't have the neccessary skillset to accomplish writing a script to export a model you made in a program that is unsupported to this date for D3 development, get your hands dirty, and write the code.
I will gladly provide you with all of the specs I've gathered on the OOF format and even give you a good place to begin...
http://en.wikibooks.org/wiki/Blender_3D ... rt_scriptsCode: Select all
***** OOF File Format ***** The beginning of every OOF file has a File Header which contains the file ID and version number of the OOF. After that is a series if chunks that each begin with a Chunk Header describing the type of chunk. // General Data Types struct vector { float x; float y; float z; } struct RGB { byte red; byte green; byte blue; } struct FACE_VERT { int Index; // Index of face vert float tu; // Texture U mapping coordinate float tv; // Texture V mapping coordinate } struct FACE { vector normal; // Faces normal int numVerts; // Number of verts on face int textured; // Is this face textured? 0-No, // Anything else, yes UNION { int textureID; // Texture index(if textured<>0) RGB color; // Color of face(if textured=0) } FACE_VERT faceVerts[numVerts]; // Face vert data float x_diff; // Used for lightmaps I believe float y_diff; // ditto } struct SPCL_PT { int nameLen; // Length of SPCL point Name char name[nameLen]; // SPCL point name int propLen; // Length of SPCL point Property name char prop[propLen]; // Property Name vector pos; // SPCL point position float radius; // Radius of SPCL point } struct OOF_PT { int parent; // Parent of Point vector pos; // Position of Point vector dir; // Direction of Point } struct WBAT_DATA { int numWBATGPNT; // Number of Gunpoints int GPNTindex[numWBATGPNT]; // Gunpoint indexes int numWBATTuuret; // Number of Turrets int turretIndex[numWBATTurret]; // Sub-Object index } struct TXTRdata { int nameLen; // Length of Texture Name string name[nameLen]; // Texture name(Imagename) } struct PANI_FRAMES { int startTime; // Start Time of frame vector pos; // Position } struct RANI_FRAMES { int startTime; // Start Time of frame vector axis; // Axis of rotation int angle; // Angle to rotate(0-65535=0-360 degrees) } struct RANI_ANIM { int numKey; // Number of Key frames int min; // Minimum Key Frame number int max; // Maximum Key Frame number RANI_FRAMES RANIFrames[numKey]; // RANI Frames data } struct PANI_ANIM { int numKey; // Number of Key frames int min; // Minimum Key Frame number int max; // Maximum Key Frame number PANI_FRAMES PANIFrames[numKey]; // PANI Frames data } // File Header struct OOFHeader { char fileID(4); // File ID int version; // Version number } struct OOFChunk { char chunkID(4); // Chunk ID int chunkLength; // Length of Chunk } // OHDR = Object Data Chunk struct ObjectData { int numSOBJ; // Number of Sub-Objects in OOF float maxRadius; // Max Radius of Model vector minBounding; // Minimum bounding point for model vector maxBounding; // Maximum bounding point for model int numDetailLevels; // Number of detail levels in model } struct ObjectDetail { int detailLevel; // Level of detail float depth; // Depth in models } // SOBJ = Sub-Object Chunk struct SOBJData { int Index; // Sub-Objects index int parent; // Sub-Objects parent index vector norm; // norm for seperation plane(debugging) float d; // norm d for seperation plane(debugging) vector pnt; // pnt for seperation plane(debugging) vector offset; // 3D offset from parent(pivot point) float radius; // Radius of Sub-Object int treeOffset; // Offset of tree data(not used) int dataOffset; // Offset of the data(not used) vector geo_center; // geometric center of this subobject. // In the same Frame Of Reference as // all other vertices in this submodel. // (Relative to pivot point) string Name; // Name of Sub-Object(null terminated) string Property; // Property Name of Sub-Object // (null terminated) int move_type; // -1 if no movement, otherwise // rotational or positional movement // Not used int move_axis; // Movement Axis(Axis to Rotate // or move around). Not used int numFSChunks; // Number of freespace chunks int FSData[numFSChunks]; // Freespace data int numVerts; // Number of vertices on Sub-Object vector vertex[numVerts]; // Vertex positions vector normal[numVerts]; // Vertex normals float alpha[numVerts]; // Vertex Alpha value. Only present // if version => 2300 int numFaces; // Number of faces on Sub-Object FACE faceData[numFaces]; // Face information } // SPCL - Special Point Chunk struct SPCLData { int numSPCL; // Number of Special Points SPCL_PT SPCLpoint[numSPCL]; // Special Point data } // ATCH - Attach Point Chunk struct ATCHData { int numATCH; // Number of Attach points OOF_PT pntData[numATCH]; // Attach Point data } // NATH - Attach Normal Point Chunk struct NATHData { int numNATH; // Number of Attach Normals OOF_PT pntData[numNATH]; // Attach Normal Point data } // GRND - Ground Point Chunk struct GRNDData { int numGRND; // Number of Ground points OOF_PT pntData[numGRND]; // Ground Point data } // GPNT - Gunpoint Chunk struct GPNTData { int numGPNT; // Number of Gunpoints OOF_PT pntData[numGPNT]; // Gunpoint data } // WBAT - Weapons Battery chunk struct WBSData { int numWBAT; // Number of Weapons Batteries WBAT_DATA wbatData[numWBAT]; // Weapon Battery data } // TXTR - Texture Chunk struct textureData { int numTextures; // Number of textures TXTRdata textureData[numTextures]; // Texture data } // RANI, ANIM - Rotational Animation Chunk struct RANIData { RANI_ANIM FrameData[numSOBJ]; // RANI Frames data } // PANI - Positional Animation Chunk struct PANIData { PANI_ANIM FrameData[numSOBJ]; // PANI Frames data } // PINF - Information chunk struct PINFData { char info[chunkLength]; // Information chunk data } // IDTA - Interpreter Data ?? // GRID - Grid Data ??
- MetalBeast
- DBB Ace
- Posts: 151
- Joined: Wed Sep 05, 2007 6:03 am
- Location: http://3d-get.de/metalbeast
- Contact:
Re:
I know this post, but there are not enough info for making an working Exporter. It's only rough type definition.The Lion wrote:I found this DBB post using a google query...
viewtopic.php?p=199635#199635
...in which supersheep explains the .oof format.
- MetalBeast
- DBB Ace
- Posts: 151
- Joined: Wed Sep 05, 2007 6:03 am
- Location: http://3d-get.de/metalbeast
- Contact:
Re:
Sorry for double-post, DB-SQL-Error
- SuperSheep
- DBB Benefactor
- Posts: 935
- Joined: Sun Jun 03, 2001 2:01 am
- Location: Illinois
Re:
I have read your PM's, and no, I am not ignoring you, I was hoping you'd do a search and find this post.zombie999 wrote:I know this post, but there are not enough info for making an working Exporter. It's only rough type definition.The Lion wrote:I found this DBB post using a google query...
viewtopic.php?p=199635#199635
...in which supersheep explains the .oof format.
The OOF file format is explained in this post. It is all you should need to make a working exporter.
If you really are having problems wrapping your head around this, download the D3 Edit Source code. It has a source file named LoadLevel.cpp that contains routines for reading an object from a hog file.
This is what I used to write OOF Editor.
I like to help people but only if they are first willing to do some work themselves. There are plenty of resources out there if you look.
D3 Edit 1.1 including source code...
http://www.planetdescent.com/site/files ... opment.asp
- MetalBeast
- DBB Ace
- Posts: 151
- Joined: Wed Sep 05, 2007 6:03 am
- Location: http://3d-get.de/metalbeast
- Contact:
Many Thx for Answer SuperSheep,
I'm trying to understand the OOF-Filespec, but in this File-Format-Spec, there is no statement, how to export this format (in which order).
My other problem is, I'm not very good in c-programming, so it is difficult for me to understand c-source-codes.
This is, the reason, why I aseked you for Help, cause I know, OOF-Editor was written in VB5.
I'm using VB6.
But, I understand what you mean.
Ich will try to do my best and will post my progress here.
Maybe you can than post some corrections, where are my failures, if you have time
Anyway, Thx for your statement again
(sorry for my bad english)
I'm trying to understand the OOF-Filespec, but in this File-Format-Spec, there is no statement, how to export this format (in which order).
My other problem is, I'm not very good in c-programming, so it is difficult for me to understand c-source-codes.
This is, the reason, why I aseked you for Help, cause I know, OOF-Editor was written in VB5.
I'm using VB6.
But, I understand what you mean.
Ich will try to do my best and will post my progress here.
Maybe you can than post some corrections, where are my failures, if you have time
Anyway, Thx for your statement again
(sorry for my bad english)
- SuperSheep
- DBB Benefactor
- Posts: 935
- Joined: Sun Jun 03, 2001 2:01 am
- Location: Illinois
This is why I referred you to the D3 Edit Source code as it contains the exact order of loading.
It is not necessary to understand C code enough to write a program, just to use as a guide.
I would start by writing some code to read an OOF, beginning with the first chunk, and displaying the data in a text field. This way you can monitor your progress and make small steps. I would not start by trying to write a fully functional exporter first.
It will take time, but it is well worth it because without an understanding of how to do it, you really won't understand how things work and then when you have problems you wouldn't know where to begin.
It is not necessary to understand C code enough to write a program, just to use as a guide.
I would start by writing some code to read an OOF, beginning with the first chunk, and displaying the data in a text field. This way you can monitor your progress and make small steps. I would not start by trying to write a fully functional exporter first.
It will take time, but it is well worth it because without an understanding of how to do it, you really won't understand how things work and then when you have problems you wouldn't know where to begin.
- MetalBeast
- DBB Ace
- Posts: 151
- Joined: Wed Sep 05, 2007 6:03 am
- Location: http://3d-get.de/metalbeast
- Contact:
OK, i did study this Stuff
Let me see, if I undesrtand the basics;)
It's correct?
I will now write simple procedure to read the data in VB.
Update:
tried to write a Type-Definition for VB:
Let me see, if I undesrtand the basics;)
Code: Select all
The File starts with a File-Header, contains \"PSPO\"-Keyword in fist 4 Bytes and 4 Bytes for version number.
Then we have other Parts of File (Chunks).
Texture-Chunk:
start with Keyword \"TXTR\"
followed by 4 bytes = chunk length
4 bytes = Number of Textures
Then for all Texture:
4 Bytes = length of texturename
(lenoftex)x bytes texturename as Text
OBJ-Header Chunk
start with keyword \"OHDR\"
4 bytes = chunk length
4 Bytes = numb. of subobjects
4 bytes = max_radius
Vektor(12 Bytes) = min-bounding
Vektor(12 bytes) = max_bounding
4 bytes = Number of detail levels in model
Subobject-chunk:
Keyname=\"SOBJ\"
4 bytes = chunk length in bytes
4 bytes = subobjekt id
4 bytes = subobjekt_parent's ID
12 Bytes = vector normal?
4 bytes = norm d for seperation plane(debugging)
12 bytes vector pnt; // pnt for seperation plane(debugging)
12 bytes vector offset; // 3D offset from parent(pivot point)
4 bytes float radius; // Radius of Sub-Object
4 bytes treeOffset; // Offset of tree data(not used)
4 bytes dataOffset; // Offset of the data(not used)
12 bytes vector geo_center; // geometric center of this subobject.
// In the same Frame Of Reference as
// all other vertices in this submodel.
// (Relative to pivot point)
x bytes = string Name; // Name of Sub-Object(null terminated)
x bytes = string Property; // Property Name of Sub-Object
// (null terminated)
4 bytes = move_type; // -1 if no movement, otherwise
// rotational or positional movement
// Not used
4 bytes move_axis; // Movement Axis(Axis to Rotate
// or move around). Not used
4 bytes numFSChunks; // Number of freespace chunks
4 bytes FSData[numFSChunks]; // Freespace data
4 bytes numVerts; // Number of vertices on Sub-Object
12 bytes vector x vertex[numVerts]; // Vertex positions
12 bytes vector normal[numVerts]; // Vertex normals
4 bytes float alpha[numVerts]; // Vertex Alpha value. Only present
// if version => 2300
4 bytes int numFaces; // Number of faces on Sub-Object
FACE faceData[numFaces]; // Face information =
structur of FACE {
12 bytes vector normal; // Faces normal
4 bytes int numVerts; // Number of verts on face
4 bytes int textured; // Is this face textured? 0-No,
// Anything else, yes
UNION {
4 bytes int textureID; // Texture index(if textured<>0)
3 bytes RGB color; // Color of face(if textured=0)
}
FACE_VERT x faceVerts[numVerts]; // Face vert data=
}
struct FACE_VERT {
4 bytes int Index; // Index of face vert
4 bytes float tu; // Texture U mapping coordinate
4 bytes float tv; // Texture V mapping coordinate
}
4 bytes float x_diff; // Used for lightmaps?
4 bytes float y_diff; // ditto
}
I will now write simple procedure to read the data in VB.
Update:
tried to write a Type-Definition for VB:
Code: Select all
Global NmbOOFObjects As Long
Global NumTextures As Long
Private Type OOF_Vector
x As Single
y As Single
Z As Single
End Type
Private Type OOF_RGB
red As Byte
green As Byte
blue As Byte
End Type
Private Type OOF_file_HDR
OOFid As String * 4
OOFversion As Long
End Type
Private Type OOF_CHUNK_HDR
ChunkID As String * 4
length As Long
End Type
Private Type OOF_TXTR
NameLenght As Long
NameTxt As String
End Type
Private Type OOF_OHDR
NumSObJ As Long
Max_Radius As Single
minBounding As OOF_Vector
maxBounding As OOF_Vector
numLOD As Long
End Type
Private Type OOF_SOBJ
Index As Long
parent As Long
vector_norm As OOF_Vector
norm_d As Single
pointSP As OOF_Vector
pivot As OOF_Vector
radius As Single
treeOffset As Long
dataOffset As Long
GeoCenter As OOF_Vector
SOBJname As String
SOBJproperty As String
MoveType As Long
MoveAxis As Long
numFSChunks As Long
FSData() As Long
numVerts As Long
Vertex() As OOF_Vector
VNormal() As OOF_Vector
VAlpha() As Single
numFaces As Long
FaceData() As OOF_FACE
End Type
Private Type OOF_FaceVert
Index As Long
tu As Single
tv As Single
End Type
Private Type OOF_FACE
FaceNormal As OOF_Vector
numVerts As Long
textured As Long
textureID As Long
RGBcolor As OOF_RGB
FaceVerts() As OOF_FaceVert
x_diff As Single
y_diff As Single
End Type
- MetalBeast
- DBB Ace
- Posts: 151
- Joined: Wed Sep 05, 2007 6:03 am
- Location: http://3d-get.de/metalbeast
- Contact:
@Sirius VB supports since Ver. 4 the most needed functions. The only big difference between C an VB is, that VB is not made for performance hungry programms, like 3D games and so on.
But any way there exists 3D Engines written completly in VB They are not very good, but they works
But VB is the first choice for making small Tools, cause you spend not so many time programming your interface, like with C
@SuperSheep:
I think I found a bug in the OOF-File-Format description:
in the SOBJ-Chunk:
bevor this:
missing 4 bytes (c=int,VB=long) Name-Length?
bevor this:
missing 4 bytes (c=int,VB=long) Property-Length?
But any way there exists 3D Engines written completly in VB They are not very good, but they works
But VB is the first choice for making small Tools, cause you spend not so many time programming your interface, like with C
@SuperSheep:
I think I found a bug in the OOF-File-Format description:
in the SOBJ-Chunk:
bevor this:
Code: Select all
string Name; // Name of Sub-Object(null terminated)
bevor this:
Code: Select all
string Property; // Property Name of Sub-Object
- MetalBeast
- DBB Ace
- Posts: 151
- Joined: Wed Sep 05, 2007 6:03 am
- Location: http://3d-get.de/metalbeast
- Contact:
- BUBBALOU
- DBB Benefactor
- Posts: 4198
- Joined: Tue Aug 24, 1999 2:01 am
- Location: Dallas Texas USA
- Contact:
Logical modeling
child/link to base object or parent
and the reason it shows up that way in the first place the model builder ignored basic modeling 101
Reset X-Ref and X-Form before link was established of hierarchy parent child
child/link to base object or parent
and the reason it shows up that way in the first place the model builder ignored basic modeling 101
Reset X-Ref and X-Form before link was established of hierarchy parent child
I seem to have a better workout dodging your stupidity than attempting to grasp the weight of your intelligence.
- MetalBeast
- DBB Ace
- Posts: 151
- Joined: Wed Sep 05, 2007 6:03 am
- Location: http://3d-get.de/metalbeast
- Contact:
Re:
It may be, but I'm a man from the old daysSirius wrote:These days people usually use WinForms and C#/VB.NET, for the record.
I started using VB about 20 years ago.
So, I hope you will understand, that it's not really simple for me, now to lern a new coding-language
Maybe I will lern C# in the future, but not now.
No time for this
About Topic, i fixed the Problem. The models are loading proper now
It's too sad about, that SuperSheep wouldn't like to provide at least parts of OOF-Tool code.
It would make the things easier.
But any way, I'm still working on my tool.
- SuperSheep
- DBB Benefactor
- Posts: 935
- Joined: Sun Jun 03, 2001 2:01 am
- Location: Illinois
Re:
It's too sad that people want all the work done by someone else. I have provided the complete OOF spec and have given plenty of guidance but it is one thing to provide guidance and another to do a project for someone.zombie999 wrote:It may be, but I'm a man from the old daysSirius wrote:These days people usually use WinForms and C#/VB.NET, for the record.
I started using VB about 20 years ago.
So, I hope you will understand, that it's not really simple for me, now to lern a new coding-language
Maybe I will lern C# in the future, but not now.
No time for this
About Topic, i fixed the Problem. The models are loading proper now
It's too sad about, that SuperSheep wouldn't like to provide at least parts of OOF-Tool code.
It would make the things easier.
But any way, I'm still working on my tool.
This is your project, there are plenty of resources on the net, there is the D3-SDK, there is the OOF format posted above. That is more information than most of us "tool" writers had starting off and should be more than enough for any future tool writers to use.
You've solved the problem as I knew you would. That is what tool writing is all about. Using whatever information you have, and learning the rest.
- MetalBeast
- DBB Ace
- Posts: 151
- Joined: Wed Sep 05, 2007 6:03 am
- Location: http://3d-get.de/metalbeast
- Contact:
In some points I understand your position, but in other I do not.
As I know, you are no more working on OOF-tools, so I assume, there will be no more new releases of it, from your side. Or is it wrong?
So please explain to me, why do you still need to keep the source-code this kind of top secret?
I never said, that I need \"all your work\" or need you for making a tool for me.
I just asked you friendly, if it is possible to provide the source code or at least parts of it.
Let say me one thing: I will NEVER use your soruce code for making an new OOF-Tool!
I just do not want to reinvent the wheel.
My intension was just to use some parts/procedures to understand, \"how it works\", for which there not many explanation on the net.
I was searching many days for usefull informations on the net, but there are not many. The most of Descent-sites are dead or are staying short bevor to be dead. Many Links are not working. And so on.
Many of the informations and people, which helped you, are not more or are very hard to find.
OK, there is D3-Edit source and maybe of one or two other tools.
But they are in C, and not all people are coding in C. I do not understand C.
And at the moment, I have no time to lern it.
I just imaginary, that we, as part of dying VB-community can halp us one the another.
Ok, I now understand, I was wrong.
If all the people of the past, would think like you, we would be still using stone-tools for preparing our food
So, ok, keep your source for whatever you want.
I will make my Tool on my way.
And I will make it Open-Source.
Ok there will be many bugs in the first releases and maybe I will never be able to make some features.
But it's not your problem. Essential thing is, that only you know how it works )
In this meaning, never wanted to disturb you.
Have a nice day
@Moderators, you can close this topic.
As I know, you are no more working on OOF-tools, so I assume, there will be no more new releases of it, from your side. Or is it wrong?
So please explain to me, why do you still need to keep the source-code this kind of top secret?
I never said, that I need \"all your work\" or need you for making a tool for me.
I just asked you friendly, if it is possible to provide the source code or at least parts of it.
Let say me one thing: I will NEVER use your soruce code for making an new OOF-Tool!
I just do not want to reinvent the wheel.
My intension was just to use some parts/procedures to understand, \"how it works\", for which there not many explanation on the net.
I was searching many days for usefull informations on the net, but there are not many. The most of Descent-sites are dead or are staying short bevor to be dead. Many Links are not working. And so on.
Many of the informations and people, which helped you, are not more or are very hard to find.
OK, there is D3-Edit source and maybe of one or two other tools.
But they are in C, and not all people are coding in C. I do not understand C.
And at the moment, I have no time to lern it.
I just imaginary, that we, as part of dying VB-community can halp us one the another.
Ok, I now understand, I was wrong.
If all the people of the past, would think like you, we would be still using stone-tools for preparing our food
So, ok, keep your source for whatever you want.
I will make my Tool on my way.
And I will make it Open-Source.
Ok there will be many bugs in the first releases and maybe I will never be able to make some features.
But it's not your problem. Essential thing is, that only you know how it works )
In this meaning, never wanted to disturb you.
Have a nice day
@Moderators, you can close this topic.
Ah right ... I have heard even VB.NET is radically different from VB6, though, hence why you wouldn't be using it.
Some people like to keep their source code to themselves even with no commercial incentive... a kind of ownership thing I think.
Most common programming languages are fairly equivalent in ideas though... even if you can't write any code in for instance C++ yourself, you might be able to understand enough to figure out how it works from an algorithm perspective. That's a maybe though, if the syntax confuses you too much it might not be worth the hassle. (There's also the issue of finding the parts you need...)
Some people like to keep their source code to themselves even with no commercial incentive... a kind of ownership thing I think.
Most common programming languages are fairly equivalent in ideas though... even if you can't write any code in for instance C++ yourself, you might be able to understand enough to figure out how it works from an algorithm perspective. That's a maybe though, if the syntax confuses you too much it might not be worth the hassle. (There's also the issue of finding the parts you need...)
- SuperSheep
- DBB Benefactor
- Posts: 935
- Joined: Sun Jun 03, 2001 2:01 am
- Location: Illinois
Re:
No, I am not currently working on OOF tools. I do not have any time as I am currently starting a business.zombie999 wrote:As I know, you are no more working on OOF-tools, so I assume, there will be no more new releases of it, from your side. Or is it wrong?
I am not keeping it "top secret" lol. I spent approximately 8 months writing OOF Editor and most of that time was spent on the UI and 3-D OpenGL engine. It was not written to be "easy to read" or to be used for "teaching", it was written to take VB to a level on par with C in terms of speed. If I were writing code to be "open source" it would be much different in terms of legibility.zombie999 wrote:So please explain to me, why do you still need to keep the source-code this kind of top secret?
That's the impression I got from numerous PM's and questions about little details that are quite simple to determine on your own.zombie999 wrote:I never said, that I need "all your work" or need you for making a tool for me.
Let's use your question about the 4 bytes missing from the spec. They are not missing, this is a standard way to store strings in C whereby the first 4 bytes are the length of the string, then the string itself, and sometimes with a NULL character.
The modelling question is as Bubbalou pointed out, a modelling question.
My feeling is that you seem to ask a question everytime you get stuck instead of using the resources I mentioned, as well as taking at least a glance at C data types.
I have no idea how you can approach a project related to D3 and not have at least a cursory understanding of C as that is what D3 was written in.
Just because OOF Editor is written in VB doesn't mean I didn't have to learn C. I chose VB because I could much more easily make a nice UI.
And you feel I am not being friendly. I am simply stating that you need to take some time and look at the D3-SDK and learn some C code before asking many basic questions. A day or two is not IMHO spending time.zombie999 wrote:I just asked you friendly, if it is possible to provide the source code or at least parts of it.
I repeat...It took 8 months to write OOF Editor. Much of that time was spent reading the D3-SDK, D3 Edit source code, and trial and error. I am not saying you need to spend 8 months, but at least review the section of code I referred you to, learn the C needed to understand it and come back after you are stumped. 1 day is not enough even for an experienced programmer in C to understand.
That doesn't bother me.zombie999 wrote:Let say me one thing: I will NEVER use your soruce code for making an new OOF-Tool!
What makes you think OOF Editor source code will be easy to understand?zombie999 wrote:I just do not want to reinvent the wheel.
My intension was just to use some parts/procedures to understand, "how it works", for which there not many explanation on the net.
Just because it is written in VB, does not mean it is easy to read, and duplicate. Actually, the D3-Edit load function for reading objects is easier to understand, this is why I pointed you to it.
OOF Editor is a highly optimized program, not written for easy legibility. You would have 10 times the number of questions about how does this work, why is this here, what is this for, than you do now.
The D3-Edit source code and the D3-SDK are excellent resources and provide all you need to write an importer/exporter. There is not many resources out there because there wasn't to begin with.zombie999 wrote:I was searching many days for usefull informations on the net, but there are not many. The most of Descent-sites are dead or are staying short bevor to be dead. Many Links are not working. And so on.
Many of the informations and people, which helped you, are not more or are very hard to find.
If you are a programmer, then learning C is easy. C is much easier to understand than C++ and C#. It's fine to write programs in VB, but C is just about mandatory to at least understand as so many programs use C and C data types.zombie999 wrote:OK, there is D3-Edit source and maybe of one or two other tools.
But they are in C, and not all people are coding in C. I do not understand C.
And at the moment, I have no time to lern it.
Not enough time? lol. Go on the web and search for tutorials on C. It should take you no more than a week to get good enough at C to read and understand it.
I wasn't aware of the mass death of VB and VB programmers. VB has always been a starter language. It is great for non-critical applications and when used properly can be quite fast, however VB will never be the "de-facto" standard. C is the standard which is why I keep mentioning that you should learn it.zombie999 wrote:I just imaginary, that we, as part of dying VB-community can halp us one the another.
Ok, I now understand, I was wrong.
Your right. I'm a creton and am unwilling to help anyone accomplish anything. LOL!zombie999 wrote:If all the people of the past, would think like you, we would be still using stone-tools for preparing our food
I am willing to help those who are willing to help themselves. Not people who just inundate me with questions and then respond with "I've got no time to learn that". Guess what? You will have to learn things to accomplish this. You're already learning by solving the problems with your importing. Why are you so adverse to learning some C?
And for the love of god...Why do you think you could just sit down with OOF Editor source code and be all like "AHA! I understand everything now!" You would have more questions than answers.
So, first you want help, I point you in the directions you need to learn to do this and now, because you don't like my response, you want to close the thread?zombie999 wrote:So, ok, keep your source for whatever you want.
I will make my Tool on my way.
And I will make it Open-Source.
Ok there will be many bugs in the first releases and maybe I will never be able to make some features.
But it's not your problem. Essential thing is, that only you know how it works )
In this meaning, never wanted to disturb you.
Have a nice day
@Moderators, you can close this topic.
Look...I have provided you with the information you need to get started. You don't want to accept that because you don't have time, or because you don't want to learn the things needed?
How does this work then? You ask a question, I answer, and so on...
How does that differ from me writing it?
When I started, I had no information. There was very little understanding of the OOF format. But I didn't ask people for help understanding C code. I learned it because every tool, and the SDK, and the D3 edit source was all written in C. I chose to use VB because I knew I could pound out a UI that rocked. I did not understand enough about C to make as nice of a UI.
However, I read the source code, and slowly converted what I needed into making OOF-ORF Converter. This was my first attempt at writing an import/export utility.
Naturally, it was not easy but it only took a few months to do, and I learned alot.
You have the same opportunity here. You can either choose to learn what you need to learn, or you can plead to others to give it to you. I think you'd make a better program and be in a position to make even better programs in the future if you learn how to do it yourself.
I will help if you actually have questions that pertain to specific problems with the OOF format or quirks relating to it, but I am not going to teach you C or basic modelling as these are things you should and can readily learn.
- MetalBeast
- DBB Ace
- Posts: 151
- Joined: Wed Sep 05, 2007 6:03 am
- Location: http://3d-get.de/metalbeast
- Contact:
OK, the code of your OOF-Editor is peace of Spaghetti and nobody, excepting you, can reading it.
I understand, that you did not write it for open-source, but this was not the point for me.
I just wanted to have a look iside. So maybe it could help me to understand some things easier and save some time.
I have'nt 8 Months time to write a small tool.
My intention is simply to write a small tool, which allow importing standard format-models and export them to OOF.
And I need it as soon as possible, cause I'm modelling for D2X-XL now, and it is really tiresome to use 10 tools to convert things properly.
So, I need it now or I need it no more.
Your impression from my PM's was simply wrong. As I wrote my first PM to you, I just started to think about my tool.
And that you don't even answered to me was not really nicely.
Maybe simple question as answer to my PM, would help you to undersand my real intention.
I wrote to you, that my english is not good, it is very difficult for me wrting things in english, as i mean them really.
So mybe this was the reason, why you did become wrong impressions.
And don't even try to say to me now \"lern better english\".
I'm not a teenager!
So, you say, you have no idea, why i don't want to lern C, right cause D3 was written in?
What kind of logic is that?
So we can write tools only in coding-language, which was used for generall-application?
So I do not want to lern C, simply cause I don't need it for any reason.
I can't agrre, that i have to lern C, spend weeks for understanding it, only for studing hundreds of C-lines.
So keep it in your head, I don't want to write a monster application, just a small tool, that allow to convert model-formats.
There is no reason for learing C for it.And I have no time for it,
I will not kill my sleeping time for lerning C.
I'm spending a part of my free time for making models and high-res textures for D2X-XL.
This is my hobby, cause I loved this game and love the version, which Diedel are working on.
SO, you start making businnes I'm making my business since 18 years.
So you are not able to say me, what I have to lern or not.
I just asked you, case I thoght you can and mybe want to help me.
You don't. Point!
It's OK, I did understand this since your last post.
So you can stop your apology.
Your arrogant position is really sad, cause you don't even know anything about me.
So stop to say me what I have to or should to lern.
Dude, I wrote my first computer-programm about 1985.
If you don't understand my intention or just don't want to understand it, just we shell stop it.
Maybe it's my fault, maybe my english is to bad, to make the things understandable enough.
Anyway, let us stop this discussion, cause this is leading to nothing.
I said, please close this topic, cause I neither want your Help nor your source-code.
And I really do not need you to teach me anything.
It was my biggest mistake to ask you anything.
So keep your code under your cushion and let me alone.
You're wasting your time answering to this post, cause I will never answer to you.
Have a nice whatever...
I understand, that you did not write it for open-source, but this was not the point for me.
I just wanted to have a look iside. So maybe it could help me to understand some things easier and save some time.
I have'nt 8 Months time to write a small tool.
My intention is simply to write a small tool, which allow importing standard format-models and export them to OOF.
And I need it as soon as possible, cause I'm modelling for D2X-XL now, and it is really tiresome to use 10 tools to convert things properly.
So, I need it now or I need it no more.
Your impression from my PM's was simply wrong. As I wrote my first PM to you, I just started to think about my tool.
And that you don't even answered to me was not really nicely.
Maybe simple question as answer to my PM, would help you to undersand my real intention.
I wrote to you, that my english is not good, it is very difficult for me wrting things in english, as i mean them really.
So mybe this was the reason, why you did become wrong impressions.
And don't even try to say to me now \"lern better english\".
I'm not a teenager!
So, you say, you have no idea, why i don't want to lern C, right cause D3 was written in?
What kind of logic is that?
So we can write tools only in coding-language, which was used for generall-application?
So I do not want to lern C, simply cause I don't need it for any reason.
I can't agrre, that i have to lern C, spend weeks for understanding it, only for studing hundreds of C-lines.
So keep it in your head, I don't want to write a monster application, just a small tool, that allow to convert model-formats.
There is no reason for learing C for it.And I have no time for it,
I will not kill my sleeping time for lerning C.
I'm spending a part of my free time for making models and high-res textures for D2X-XL.
This is my hobby, cause I loved this game and love the version, which Diedel are working on.
SO, you start making businnes I'm making my business since 18 years.
So you are not able to say me, what I have to lern or not.
I just asked you, case I thoght you can and mybe want to help me.
You don't. Point!
It's OK, I did understand this since your last post.
So you can stop your apology.
Your arrogant position is really sad, cause you don't even know anything about me.
So stop to say me what I have to or should to lern.
Dude, I wrote my first computer-programm about 1985.
If you don't understand my intention or just don't want to understand it, just we shell stop it.
Maybe it's my fault, maybe my english is to bad, to make the things understandable enough.
Anyway, let us stop this discussion, cause this is leading to nothing.
I said, please close this topic, cause I neither want your Help nor your source-code.
And I really do not need you to teach me anything.
It was my biggest mistake to ask you anything.
So keep your code under your cushion and let me alone.
You're wasting your time answering to this post, cause I will never answer to you.
Have a nice whatever...
Coding a converter isn't a small effort - it may be a better use of your time to do what you're doing now actually. Either that or make a simple batch script to pass the files from one converter to another, which doesn't take so much learning.
The only reason SS is suggesting you learn a little bit of C (not enough to program, just to read it) is that most Descent tools are written in C and it'd make your life a lot easier if you're really serious about this... but if you don't have ~2 months to write this - and that is probably about how long it would take - then again, your current method would be a better choice.
The only reason SS is suggesting you learn a little bit of C (not enough to program, just to read it) is that most Descent tools are written in C and it'd make your life a lot easier if you're really serious about this... but if you don't have ~2 months to write this - and that is probably about how long it would take - then again, your current method would be a better choice.
Zombie,
I don't think Supersheep's reply is so bad. I'll translate it for you:
Well, now there's two people who'd need that, so I might finally start to do that.
On a side note: Standard C strings are not stored with preceding length information. Other than examining live data, I would not have guessed these 4 bytes are there for that purpose.
I don't think Supersheep's reply is so bad. I'll translate it for you:
Bottom line: It is better to rewrite this tool, or to create a 3ds to oof converter or exporter plugin.My OOF Tool is a crappily coded program I hardly understand myself anymore, written in an amateur programming language because that's all I could handle. I also simply don't have the time to help you a lot with it. Look at the OOF specs, learn to deal with C, and dig through my tool's source code. Good luck.
Well, now there's two people who'd need that, so I might finally start to do that.
On a side note: Standard C strings are not stored with preceding length information. Other than examining live data, I would not have guessed these 4 bytes are there for that purpose.
- BUBBALOU
- DBB Benefactor
- Posts: 4198
- Joined: Tue Aug 24, 1999 2:01 am
- Location: Dallas Texas USA
- Contact:
Re:
Diedel wrote:My OOF Tool is a crappily coded program I hardly understand myself anymore, written in an amateur programming language because that's all I could handle. I also simply don't have the time to help you a lot with it. Look at the OOF specs, learn to deal with C, and dig through my tool's source code. Good luck.