|
Descentforum.DE
|
View previous topic :: View next topic |
Author |
Message |
MetalBeast Forum-Nutzer
Joined: 16 Sep 2007 Posts: 109
|
Posted: 19.09.2007, 16:39 Post subject: |
|
|
King Lo wrote: | Wir von der ODF wären ohnehin an dem OOF-format interessiert. Vllt könnten wir zusammenarbeiten?
Für ORF haben wir schon C-Code geschrieben. Wenn du willst schicke ich es dir zu und erkläre dir auch, was ich weiß. |
Ja, gerne.
Wie gesagt, ich bin für jede Hilfe dankbar.
Ich verstehe zwar nicht sehr viel Von "C", aber dafür sehr viel von VB.
irgendwie kriegen wir es schon zusammen
Die programmiersprache an sich ist eher nebensächlich, man muss erstmal die logik verstehen.
Wenn diese klar ist, kann man es eigentlich in jeder guten Sprache umsetzen.
Ich werde versuchen, das OOF-Format ausseinander zu pflücken und werde meine Erkenntnisse hier im Forum posten.
Dann können interesseirte Leute ihre Meinungen und Ideen dazu posten.
So haben wir ev. eine Chance weiter zu kommen und das geheimniss von OOF zu lüften
Wenn du dann Zeit und Lust hast, kannst du mal gerne eine Erklärung zu dem ORF-Format schreiben, da könnte ich dann ev. auch ORF als Import/Export Möglichkeit in mein Tool reinnehmen.
Je mehr desto besser
|
|
Back to top |
|
|
VEX-Eagle Falschparker
Joined: 04 Feb 2003 Posts: 807
Location: Stelle (Hamburg)
|
Posted: 19.09.2007, 20:00 Post subject: |
|
|
so, das hier ist meine OOF-Ladefunktion
Code: |
int LoadFace(tbVFile* infile,FACE* Face)
{
Face->normal = LoadVector3(infile);
Face->num_pts = LoadInt(infile);
Face->num_tex_ids = LoadInt(infile);
Face->face_pt = new FACE_PT[Face->num_pts];
Face->tex_ids = new int[Face->num_tex_ids];
for (int i=0;i<Face->num_tex_ids;i++)
Face->tex_ids[i] = LoadInt(infile);
for (i=0;i<Face->num_pts;i++)
{
Face->face_pt[i].index = LoadInt(infile);
Face->face_pt[i].tu = LoadFloat(infile);
Face->face_pt[i].tv = LoadFloat(infile);
}
Face->bounding_length = LoadFloat(infile);
Face->bounding_width = LoadFloat(infile);
return 1;
}
int LoadObject (char *filename,D3_Object* Obj)
{
printf(" Lade Objekt...\n");
tbVFile* infile;
int done=0;
int command;
int error=0;
infile = new tbVFile;
if (infile->Init(filename)) return 1;
char file_id[5];
int version;
LoadStr(infile,file_id,4);
version = LoadInt(infile);
if (strcmp(file_id,"PSPO")!=0)
{
printf("FEHLER: Fehlerhafte Datei!");
TB_SAFE_DELETE(infile);
return 1;
}
if (version==2200)
{
printf("FEHLER: D3-Demo-Objekt!");
TB_SAFE_DELETE(infile);
return 1;
}
char chunk_id[5];
int length;
int act_sub=0;
while (!infile->IsEOF())
{
strcpy(chunk_id,"");
LoadStr(infile,chunk_id,4);
length = LoadInt(infile);
chunk_id[4] = '\0';
command = 0;
if (strcmp(chunk_id,"TXTR")==0) command = OBJECT_TEXTURE_CHUNK;
if (strcmp(chunk_id,"OHDR")==0) command = OBJECT_HEADER_CHUNK;
if (strcmp(chunk_id,"SOBJ")==0) command = OBJECT_SUBOBJECT_CHUNK;
if (strcmp(chunk_id,"SPCL")==0) command = OBJECT_SPECIAL_CHUNK;
if (strcmp(chunk_id,"GPNT")==0) command = OBJECT_GUNPOINT_CHUNK;
if (strcmp(chunk_id,"PANI")==0) command = OBJECT_POSANIM_CHUNK;
if (strcmp(chunk_id,"RANI")==0) command = OBJECT_ROTANIM_CHUNK;
/* WBAT
GRND
ATCH
NATCH*/
switch (command)
{
case OBJECT_TEXTURE_CHUNK:
{
Obj->num_tex = LoadInt(infile);
printf(" Lese Texturen... (%d)\n",Obj->num_tex);
for (int i=0;i<Obj->num_tex;i++)
{
int length = LoadInt(infile);
LoadStr(infile,Obj->textures[i],length);
}
break;
}
case OBJECT_HEADER_CHUNK:
{
printf(" Lese Header... (%d bytes)\n",length);
Obj->num_sobjs = LoadInt(infile); Obj->SubObjects = new SUB_OBJ[Obj->num_sobjs];
Obj->max_radius = LoadFloat(infile);
Obj->min_bounding = LoadVector3(infile);
Obj->max_bounding = LoadVector3(infile);
Obj->unknown_flt = LoadFloat(infile);
break;
}
case OBJECT_SUBOBJECT_CHUNK:
{
printf(" Lese Subobject %d/%d...\n",act_sub+1,Obj->num_sobjs);
Obj->SubObjects[act_sub].sub_number = LoadInt(infile);
Obj->SubObjects[act_sub].sub_parent = LoadInt(infile);
for (int j=0;j<7;j++)
Obj->SubObjects[act_sub].unknown_flt1[j] = LoadFloat(infile);
Obj->SubObjects[act_sub].atchpos = LoadVector3(infile);
for (j=0;j<6;j++)
Obj->SubObjects[act_sub].unknown_flt2[j] = LoadFloat(infile);
int length = LoadInt(infile);
LoadStr(infile,Obj->SubObjects[act_sub].name,length);
length = LoadInt(infile);
LoadStr(infile,Obj->SubObjects[act_sub].properties,length);
for (j=0;j<3;j++)
Obj->SubObjects[act_sub].unknown_int[j] = LoadInt(infile);
Obj->SubObjects[act_sub].num_verts = LoadInt(infile);
Obj->SubObjects[act_sub].vertex = new tbVector3[Obj->SubObjects[act_sub].num_verts];
Obj->SubObjects[act_sub].normal = new tbVector3[Obj->SubObjects[act_sub].num_verts];
Obj->SubObjects[act_sub].unknown_flt3 = new float[Obj->SubObjects[act_sub].num_verts];
for (j=0;j<Obj->SubObjects[act_sub].num_verts;j++)
Obj->SubObjects[act_sub].vertex[j] = LoadVector3(infile);
for (j=0;j<Obj->SubObjects[act_sub].num_verts;j++)
Obj->SubObjects[act_sub].normal[j] = LoadVector3(infile);
for (j=0;j<Obj->SubObjects[act_sub].num_verts;j++)
Obj->SubObjects[act_sub].unknown_flt3[j] = LoadFloat(infile);
Obj->SubObjects[act_sub].num_faces = LoadInt(infile);
Obj->SubObjects[act_sub].face = new FACE[Obj->SubObjects[act_sub].num_faces];
for (j=0;j<Obj->SubObjects[act_sub].num_faces;j++)
LoadFace(infile,&Obj->SubObjects[act_sub].face[j]);
act_sub++;
break;
}
case OBJECT_SPECIAL_CHUNK:
{
Obj->num_spcl_pts = LoadInt(infile);
printf(" Lese Special-Points... (%d)\n",Obj->num_spcl_pts);
Obj->spcl_pt = new SPCL_PT[Obj->num_spcl_pts];
for (int i=0;i<Obj->num_spcl_pts;i++)
{
int length = LoadInt(infile);
LoadStr(infile,Obj->spcl_pt[i].name,length);
length = LoadInt(infile);
LoadStr(infile,Obj->spcl_pt[i].properties,length);
Obj->spcl_pt[i].pt = LoadVector3(infile);
Obj->spcl_pt[i].radius = LoadFloat(infile);
}
break;
}
case OBJECT_GUNPOINT_CHUNK:
{
Obj->num_gun_pts = LoadInt(infile);
printf(" Lese Gunpoints... (%d)\n",Obj->num_gun_pts);
Obj->gun_pt = new GUN_PT[Obj->num_gun_pts];
for (int i=0;i<Obj->num_gun_pts;i++)
{
Obj->gun_pt[i].sobj_num = LoadInt(infile);
Obj->gun_pt[i].pos = LoadVector3(infile);
Obj->gun_pt[i].normal = LoadVector3(infile);
}
break;
}
/* case OBJECT_POSANIM_CHUNK:
{
break;
}
case OBJECT_ROTANIM_CHUNK:
{
break;
}*/
default:
infile->Seek(TB_VFSO_CURSOR,length);
break;
}
}
TB_SAFE_DELETE(infile);
return error;
}
|
Code: |
#define MAX_TEXTURES 2600
struct FACE_PT
{
int index;
float tu;
float tv;
};
struct FACE
{
tbVector3 normal;
int num_pts;
int num_tex_ids;
int* tex_ids;
FACE_PT* face_pt;
float bounding_length;
float bounding_width;
};
struct SUB_OBJ
{
int sub_number;
int sub_parent;
float unknown_flt1[7];
tbVector3 atchpos;
float unknown_flt2[6];
char name[256];
char properties[256];
int unknown_int[3];
int num_verts;
tbVector3* vertex;
tbVector3* normal;
float* unknown_flt3; // Nur in Version 2200 (Demo)
int num_faces;
FACE* face;
};
struct SPCL_PT
{
char name[256];
char properties[256];
tbVector3 pt;
float radius;
};
struct GUN_PT
{
int sobj_num;
tbVector3 pos;
tbVector3 normal;
};
struct PFRAME
{
int key_frame_num;
tbVector3 pos;
};
struct P_ANI
{
int num_key_frames;
int unknown;
int last_frame_num;
PFRAME* frames;
};
struct RFRAME
{
int key_frame_num;
tbVector3 pos;
char unknown[4];
};
struct R_ANI
{
int num_key_frames;
int unknown;
int last_frame_num;
RFRAME* frames;
};
class D3_Object
{
public:
// Texturen
int num_tex;
char textures[MAX_TEXTURES][35];
// Header
int num_sobjs;
float max_radius;
tbVector3 min_bounding;
tbVector3 max_bounding;
float unknown_flt;
// Sub-Objects
SUB_OBJ* SubObjects;
// Special-Point
int num_spcl_pts;
SPCL_PT* spcl_pt;
int num_gun_pts;
GUN_PT* gun_pt;
P_ANI* p_ani;
R_ANI* ani;
};
|
für ORF und D3L hab ich auch noch was...
|
|
Back to top |
|
|
MetalBeast Forum-Nutzer
Joined: 16 Sep 2007 Posts: 109
|
Posted: 19.09.2007, 21:04 Post subject: |
|
|
Danke, aber ich befürchte meine bescheidenen C Kenntnisse reichen nicht aus um da ganz durch zu steigen.
Das Prinzip an sich kann man durchaus nachvollziehen, aber einige Sachen verstehe ich trotzdem nicht.
"LoadVector3" ist das eine standard Funktion in C oder eine selbsterstellte Funktion?
Naja, ich sollte wohl meine C Kentnisse ein wenig verbessern
Ich versuche erstmal die Struktur von OOF zu verstehen.
Also, wenn ich das bis jetzt richtig verstanden habe, ist die Datei in verschiedene Abschnitte unterteilt, die jeweils mit einem KEY-wort beginnen.
Zuerst gibt es den Datei-Header, der aus dem Wort "PSPO" besteht und einer Versions-Nummer die in 4 bytes gespeichert ist.
Danach folgen die weiteren Teile(Chunks).
Da haben wir den Texturen-Chunk:
beginnt mit dem Keywort "TXTR"
gefolgt von 4 bytes = Bytelänge des Chunks
danach 4 bytes = Anzahlt Texturen
dann jeweils pro textur
4 Bytes = Länge des Texturennamen
anschliessend der texturenname als Text in der jeweiligen länge.
Dann gibt es den OBJ-Header Chunk
beginnt mit dem keywort "OHDR"
dann:
"$" -Zeichen und 2 Null-Bytes, ka ob das immer so ist. und welche bedeutung die haben
dann kommen 4 Bytes = Anzahl der Subobjekte?
dann 4 bytes max_radius
Vektor(12 Bytes?) = min-bounding
Vektor(12 bytes?) = max_bounding
Unbekannte variable = 4 Bytes
Dann kommt der Subobjekt:
Keyname="SOBJ"
4 bytes = subobjekt id
4 bytes = subobjekt_parent
danach verstehe ich nur bahnhof, aber die Hoffnung ist noch nicht verloren
Last edited by MetalBeast on 19.09.2007, 21:06; edited 1 time in total |
|
Back to top |
|
|
Floyd Forum-Orakel
Joined: 20 Mar 2001 Posts: 2912
Location: Dresden, Germany
|
Posted: 19.09.2007, 21:30 Post subject: |
|
|
zombie999 wrote: | Ich bin ein wenig eingerostet, was VB betrifft, ist schon eine zeit her.
|
zombie999 wrote: | Danke, aber ich befürchte meine bescheidenen C Kenntnisse reichen nicht aus um da ganz durch zu steigen.
|
dann wäre es am sinnvollsten, du erweiterst deine C-kenntnisse, dann lassen sich evtl. vorhandene funktionen einbinden und wenn du es vorher richtig planst, lässt es sich sogar plattformunabhängig programmieren. vom schwierigkeitsgrad nehmen sich VB und C nicht viel und C ist mittlerweile industriestandard -> mehr potentielle supporter.
|
|
Back to top |
|
|
Atan Moderator
Joined: 27 Jul 2001 Posts: 876
|
Posted: 19.09.2007, 22:57 Post subject: |
|
|
@Floyd
Quote: | Die Funktionen "ReadObject" und "WriteObject" in "LoadLevel.cpp" im D3Edit Sourcecode. |
Diese Funktionen sind dafür nicht geeignet. Sie lesen nicht das Objekt und schreiben es auch nicht .
Die Funktionen binden 'nur' ein Objekt in den Level ein, den Pointer und Zusatzinfos wie Ausrichtung etc.
D3 holt sich dann das Modell über einen Index aus dem Level, läd es und stellt es dar.
Was es aber gibt, ist die Funktion LoadPolyModel
Quote: | // given a filename, reads in a POF and returns an index into the Poly_models array
// returns -1 if something is wrong
int LoadPolyModel (char *filename,int pageable) |
Innerhalb dieser Funktion findet sich ein Aufruf auf diese hier:
Quote: | int ReadNewModelFile (int polynum,CFILE *infile) |
Das ist die eigentliche Funktion die das Objekt in die Struct einliest, dass ist es was ihr benötigt.
Darauf aufbauend solltet Ihr in der Lage sein, die Save-Funktion selber zu schreiben.
Soweit ich es sehe ist eine entsprechende PolyModel Speicherfunktion nicht im Code enthalten.
|
|
Back to top |
|
|
Floyd Forum-Orakel
Joined: 20 Mar 2001 Posts: 2912
Location: Dresden, Germany
|
Posted: 19.09.2007, 23:07 Post subject: |
|
|
ahh. danke Atan
mal sehen ob ich nach der diplomarbeit zeit und lust habe, dann schau ich mal, ob ich eine simple OOF-exportfunktion in D3Edit einbinden kann. dann kann man sich den umweg über OOFEdit sparen, nachschreiben werde ich dieses allerdings nicht.
ist aber dann praktisch, wenn man mal ne lampe oder sowas baut bzw. modifiziert.
|
|
Back to top |
|
|
MetalBeast Forum-Nutzer
Joined: 16 Sep 2007 Posts: 109
|
Posted: 20.09.2007, 00:20 Post subject: |
|
|
Naja, bei C musste ich noch viel lernen, dafür brauche ich Wochen, VB kenne ich schon ewig, habe jahrelang damit Software programiert. Das muss ich nur auffrischen.
C werde ich dann nebenbei lernen. Wollte sowieso irgendwann damit anfangen, jetzt habe ich auch einen guten Grund dafür
So, habe das OOF-Format ein wenig weiter studiert, vielleicht könnt ihr mal drüber gucken, ich ich irgendwo einen Denkfehler habe.
Ich werde mir jetzt eine einfache ladeprozedur schreiben um zu gucken, was dabei rauskommt
Code: |
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
}
|
Habe das auch in descentBB Forum gepostet, je mehr Leute wir ins Bot holen, desto besser die Chance, dass wir jetzt ein paar gute Tools raushauen können.
|
|
Back to top |
|
|
MetalBeast Forum-Nutzer
Joined: 16 Sep 2007 Posts: 109
|
Posted: 20.09.2007, 13:57 Post subject: |
|
|
So, habe eben eine Lade-Funktion für OOF geschafft, zumindest für die basis Chunks.
Kann mir jemand einen Tip geben, wie ich aus den im OOF gespeicherten Daten, die absolute Vertex-Positionen berechnen kann?
In dem OOF Format, werden sie irgendwie relativ gespeichert?
Relativ zu was, zu Pivot-Point?
Hilfe!
|
|
Back to top |
|
|
VEX-Eagle Falschparker
Joined: 04 Feb 2003 Posts: 807
Location: Stelle (Hamburg)
|
Posted: 20.09.2007, 17:16 Post subject: |
|
|
ja
und ich glaube auch noch, dass die subobjects alle relativ zu ihrem parent-subobject gespeichert werden
zu meinem Quelltext:
TB_SAFE_DELETE, tbVFile und LoadVector3/LoadFloat/... sind keine Standard-Funktionen/Klassen, die kann ich ja auch noch mal posten, wenn's wichtig ist
Last edited by VEX-Eagle on 20.09.2007, 17:18; edited 1 time in total |
|
Back to top |
|
|
MetalBeast Forum-Nutzer
Joined: 16 Sep 2007 Posts: 109
|
Posted: 20.09.2007, 17:58 Post subject: |
|
|
Nee, danke, war nur eine Frage, weil ich mir nicht sicher war, aber dachte mir schon, das es selbst definierte Typen sind.
Wie gesgt, habe ich jetzt eine funktionierende Lade-prozedur, zumindest für die basis-Daten.
Jetzt muss ich herausfinden, wie die wichtigen daten in dem Format verborgen sind.
Sonst kann ich später keine Umrechnung von ASE zu OOF machen.
Das ist jetz der schwieriger part. Das OOF Format ist irgendwei krank
Wer denkt sich sowas aus?
Ohne richtige Daten-Struktur kann ich aber keinen Exporter schreiben.
|
|
Back to top |
|
|
MetalBeast Forum-Nutzer
Joined: 16 Sep 2007 Posts: 109
|
Posted: 21.09.2007, 13:16 Post subject: |
|
|
So, bin jetzt ein wenig weiter.
Mein Importer kann jetzt sogar komplexe Models laden.
Nur werden die Subobjekte irgendwie falsch plaziert.
Sieht dann so aus:
Kann mir einer ein Tipp geben, wo ich einen Denkfehlerhabe?
Danke im Voraus.
|
|
Back to top |
|
|
Atan Moderator
Joined: 27 Jul 2001 Posts: 876
|
Posted: 24.09.2007, 20:54 Post subject: |
|
|
Quote: | Kann mir einer ein Tipp geben, wo ich einen Denkfehlerhabe? |
Ist das Problem in der Zwischenzeit schon gelöst? Wenn nicht, wie sieht es hiermit aus, ist es das was Du suchst?
Code: | 12 bytes vector offset; // 3D offset from parent(pivot point) |
Jedes Subobject hat ein Parent-Object (das kann auch wieder ein Subobject sein).
Und so wie ich das lese, muss das Subobject mittles des o.a. Offsets zum Pivot-Pkt des Elternobjektes plaziert werden.
Also der Modell-Hierarchie nach Parent und die Subs einlesen. Dann mit dem angegebenen Offset zum jeweiligen Elternteil platzieren. (Eltern pivot point + 3D offset from parent) Da liegt dann der Sub-pivo-tpoint.
Ich hoffe mal, dass das so im Groben so stimmt, und vielleicht hilft es ja weiter.
|
|
Back to top |
|
|
MetalBeast Forum-Nutzer
Joined: 16 Sep 2007 Posts: 109
|
Posted: 25.09.2007, 15:27 Post subject: |
|
|
Ja, vielen Dank für Eure Hilfe!,
der Importer funktioniert schon so weit ganz gut, bis auf die extra-chunks,
aber die brauche ich für D2X-XL erstmal nicht.
Ich werde mich dann an den Exporter ran setzten.
Mit SuperSchaf habe ich mich leider engültig verkracht, weil mir sein arrogantes Benehmen irgandwann gereicht hat. Also mit dem Source von OOF-Editor brauchen wir leider nicht mehr zu rechnen.
Aber naja, ich bleibe dran.
Einige andere Importer habe ich schon in Arbeit, OBJ ist zum Beispiel schon nahezu fertig.
ASE muss noch gebugfixt werden.
Das Tool wird dann zum Schluss folgende Formate unterstützen:
Import:
- ASE
- OOF
- ASC
- OBJ
- RAW
- OFF
- ORF(?)
- 3DS(?)
Export:
- OOF
- ORF(?)
- ASE(?)
ev. weitere je nach dem, ob ich zeit dafür habe
Gruß, Zombie
_________________ Meine neue 3D Modelling Seite
Last edited by MetalBeast on 25.09.2007, 15:35; edited 3 times in total |
|
Back to top |
|
|
King Lo Forum-Nutzer
Joined: 14 Mar 2006 Posts: 320
Location: Stuttgart, BW
|
Posted: 25.09.2007, 15:39 Post subject: |
|
|
zombie999 wrote: |
Mit SuperSchaf habe ich mich leider engültig verkracht, weil mir sein arrogantes Benehmen irgandwann gereicht hat. Also mit dem Source von OOF-Editor brauchen wir leider nicht mehr zu rechnen.
|
Hehe, das wundert mich wenig. Diese Leute, die ihre Sourcen nicht frei geben, sind meist arrogant/unfreundlich oder antworten erst gar nicht, wenn man sie um ihre Sourcen bittet, das ist ja bekannt.
Was Dein Tool angeht, ein paar wesentliche Fragen:
- Wirst Du auch eine C/C++-Version herausbringen? (wenn nein, wie schwer schätzt Du das Umschreiben ein?)
- Wird es auf GNU/Linux übersetzbar sein?
- Wird das Tool rein textbasiert nutzbar sein? (wenn nicht, kanst du ein OS-unabhängiges GUI verwenden?)
- Unter welcher Lizenz wirst Du es veröffentlichen?
- Wird man es auch als Library benutzen können oder wirst Du nur ein Programm entwickeln?
BTW: Hast Du meine E-Mail (ORF lesen) bekommen?
Last edited by King Lo on 25.09.2007, 15:40; edited 1 time in total |
|
Back to top |
|
|
MetalBeast Forum-Nutzer
Joined: 16 Sep 2007 Posts: 109
|
Posted: 25.09.2007, 15:51 Post subject: |
|
|
King Lo wrote: |
Was Dein Tool angeht, ein paar wesentliche Fragen:
- Wirst Du auch eine C/C++-Version herausbringen? (wenn nein, wie schwer schätzt Du das Umschreiben ein?) |
Dazu muss ich erst C/C++ lernen, dafür habe ich im Moment leider keine Zeit, aber geplant ist es schon.
Wollte schon seit einiger Zeit C lernen, aber kam noch nicht dazu. Wenn ihr mich untersützt, können wir gerne das hier zusammen schreiben. Quasi als öffentliches Open-Source projekt.
King Lo wrote: | - Wird es auf GNU/Linux übersetzbar sein? |
Ich denke schon, ich beutze standard OpenGL lib und einfaches strukturiertes programm-code, keine tricks.
King Lo wrote: | - Wird das Tool rein textbasiert nutzbar sein? (wenn nicht, kanst du ein OS-unabhängiges GUI verwenden?) |
Command-Line Version ist denkbar und durfte nicht all zu schwer zu machen sein.
King Lo wrote: | - Unter welcher Lizenz wirst Du es veröffentlichen? |
Sobald das Source bereinigt und entsprechend kommentiert ist, wird es als Open-Source veröffentlicht.
King Lo wrote: | - Wird man es auch als Library benutzen können oder wirst Du nur ein Programm entwickeln? | dazu kann ich noch nichts sagen
King Lo wrote: | BTW: Hast Du meine E-Mail (ORF lesen) bekommen? |
Habe ich vielen Dank, nur bin leider noch nicht dazu gekommen, mir das anzuschauen, aber ich komme noch auf dich zurück. War im moment auch mit unserem neuen Forum beschäftigt (siehe meine Sig).
Will aber im ersten Step einen funktionierenden Exporter schreiben mit einer standard-schnittstelle für die importieren daten. Auf dieser Weise kann man das Tool immer um weitere Formate ergänzen/erweitern.
Wenn das erledigt ist, werde ich mich den anderen Formaten widmen.
Gruß, Z.
_________________ Meine neue 3D Modelling Seite |
|
Back to top |
|
|
King Lo Forum-Nutzer
Joined: 14 Mar 2006 Posts: 320
Location: Stuttgart, BW
|
Posted: 25.09.2007, 16:09 Post subject: |
|
|
Leider sind die Basic-Compiler unter GNU nicht allzu verbreitet . Was C++ angeht, helfe ich Dir gerne. Komm doch einfach mal in den IRC-Chat (#descent) oder schicke mir Deine ICQ-Nummer.
zombie999 wrote: |
King Lo wrote: | - Unter welcher Lizenz wirst Du es veröffentlichen? |
Sobald das Source bereinigt und entsprechend kommentiert ist, wird es als Open-Source veröffentlicht.
|
Schön, dass Du so offen bist was deine Sourcen und die Wahl Deiner Librarys angeht. Ich frage v.a. nach der Lizenz, weil man eine Library in andere Programme einbinden könnte. (Es gibt viele Lizenzen für OpenSource, LGPL, GPL, BSD, Public Domain ...)
|
|
Back to top |
|
|
Atan Moderator
Joined: 27 Jul 2001 Posts: 876
|
Posted: 25.09.2007, 16:12 Post subject: |
|
|
Quote: | Hehe, das wundert mich wenig. Diese Leute, die ihre Sourcen nicht frei geben, sind meist arrogant/unfreundlich oder antworten erst gar nicht, wenn man sie um ihre Sourcen bittet, das ist ja bekannt. |
Woher willst das denn wissen KL???
Wie zuvor schon mal gesagt, so etwas kannste wirklich stecken lassen, damit stellst Du Dich in eine Ecke in die Du bestimmt nicht willst.
|
|
Back to top |
|
|
MetalBeast Forum-Nutzer
Joined: 16 Sep 2007 Posts: 109
|
Posted: 25.09.2007, 16:33 Post subject: |
|
|
King Lo wrote: |
Schön, dass Du so offen bist was deine Sourcen und die Wahl Deiner Librarys angeht. Ich frage v.a. nach der Lizenz, weil man eine Library in andere Programme einbinden könnte. (Es gibt viele Lizenzen für OpenSource, LGPL, GPL, BSD, Public Domain ...) |
Naja, ich schreibe ja keine Software mit der ich Geld verdienen will, sondern mit der ich eins meiner lieblingsspeile am leben erhalten will Da ist es schon besser, wenn so viele wie möglich draus profitieren
Von daher sehe ich keinen Grund, das Source nur für mich zu behalten
Gegen die Software-Grosskonzerne, haben wir kleine Programmierer eher keiner Chance, also warum nicht gleich der Allgemeinheit dienen
Wegen der OS-Lizenzen da muss du mich aufklären, ich kenne mich da leider nur sehr wenig aus.
GPL und PD kenne ich ein wenig, aber auch nur oberfächlich.
_________________ Meine neue 3D Modelling Seite |
|
Back to top |
|
|
MetalBeast Forum-Nutzer
Joined: 16 Sep 2007 Posts: 109
|
Posted: 21.02.2008, 14:53 Post subject: |
|
|
Hallo Leute,
wollte Euch nur informieren, dass ich die Programmierung an dem Tool eingestellt habe.
Wir hatten enorme Probleme mit dem OOF-Format in d2x-xl und spätestens bei dem neuen komplexen Pyro standen wir vor der Entscheidung,
entweder haufen arbeit in gescheite Konvertierung-Tools zu investieren oder ein anderes Model-Format zu nehmen.
Wir haben uns für das zweite entscheiden und ASE-Model Format genommen.
So dass wir auf das OOF jetzt verzichten können.
Sorry für alle, die drauf gewartet haben.
Noch eine Bitte, kann mich ein Admin in MetalBeast umbenennen?,
Im Voraus Danke.
Gruß, MetalBeast.
_________________ Meine neue 3D Modelling Seite |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You can attach files in this forum You can download files in this forum
|
|