Descentforum.DE Forum Index Descentforum.DE
Search | FAQ | Memberlist | Usergroups | Newsfeed Newsfeed  Register
Profile | Log in to check your private messages | Log in 
Chat | D3-Tactics | Downloads | Map | Links | Serverlist | Teamspeak 

D3Tool, andere OOF-Tools
Goto page Previous  1, 2
 
Post new topic   Reply to topic    Descentforum.DE Forum Index -> Level-, Design und Entwicklungs - Forum
View previous topic :: View next topic  
Author Message
MetalBeast
Forum-Nutzer


Joined: 16 Sep 2007
Posts: 109

PostPosted: 19.09.2007, 16:39    Post subject: Reply with quote

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ß. Smilie


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 Winken
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 Winken

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 Winken
Back to top
View user's profile Send private message
VEX-Eagle
Falschparker


Joined: 04 Feb 2003
Posts: 807
Location: Stelle (Hamburg)

PostPosted: 19.09.2007, 20:00    Post subject: Reply with quote

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
View user's profile Send private message
MetalBeast
Forum-Nutzer


Joined: 16 Sep 2007
Posts: 109

PostPosted: 19.09.2007, 21:04    Post subject: Reply with quote

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 Winken

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 Winken


Last edited by MetalBeast on 19.09.2007, 21:06; edited 1 time in total
Back to top
View user's profile Send private message
Floyd
Forum-Orakel


Joined: 20 Mar 2001
Posts: 2912
Location: Dresden, Germany

PostPosted: 19.09.2007, 21:30    Post subject: Reply with quote

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
View user's profile Send private message
Atan
Moderator


Joined: 27 Jul 2001
Posts: 876

PostPosted: 19.09.2007, 22:57    Post subject: Reply with quote

@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
View user's profile Send private message
Floyd
Forum-Orakel


Joined: 20 Mar 2001
Posts: 2912
Location: Dresden, Germany

PostPosted: 19.09.2007, 23:07    Post subject: Reply with quote

ahh. danke Atan lächeln
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
View user's profile Send private message
MetalBeast
Forum-Nutzer


Joined: 16 Sep 2007
Posts: 109

PostPosted: 20.09.2007, 00:20    Post subject: Reply with quote

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 Winken

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 Winken

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
View user's profile Send private message
MetalBeast
Forum-Nutzer


Joined: 16 Sep 2007
Posts: 109

PostPosted: 20.09.2007, 13:57    Post subject: Reply with quote

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! Winken
Back to top
View user's profile Send private message
VEX-Eagle
Falschparker


Joined: 04 Feb 2003
Posts: 807
Location: Stelle (Hamburg)

PostPosted: 20.09.2007, 17:16    Post subject: Reply with quote

ja lächeln
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
View user's profile Send private message
MetalBeast
Forum-Nutzer


Joined: 16 Sep 2007
Posts: 109

PostPosted: 20.09.2007, 17:58    Post subject: Reply with quote

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 Winken
Wer denkt sich sowas aus? Sehr glücklich

Ohne richtige Daten-Struktur kann ich aber keinen Exporter schreiben.
Back to top
View user's profile Send private message
MetalBeast
Forum-Nutzer


Joined: 16 Sep 2007
Posts: 109

PostPosted: 21.09.2007, 13:16    Post subject: Reply with quote

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
View user's profile Send private message
Atan
Moderator


Joined: 27 Jul 2001
Posts: 876

PostPosted: 24.09.2007, 20:54    Post subject: Reply with quote

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
View user's profile Send private message
MetalBeast
Forum-Nutzer


Joined: 16 Sep 2007
Posts: 109

PostPosted: 25.09.2007, 15:27    Post subject: Reply with quote

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
View user's profile Send private message
King Lo
Forum-Nutzer


Joined: 14 Mar 2006
Posts: 320
Location: Stuttgart, BW

PostPosted: 25.09.2007, 15:39    Post subject: Reply with quote

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. Mr. Green

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
View user's profile Send private message
MetalBeast
Forum-Nutzer


Joined: 16 Sep 2007
Posts: 109

PostPosted: 25.09.2007, 15:51    Post subject: Reply with quote

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 Winken

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
View user's profile Send private message
King Lo
Forum-Nutzer


Joined: 14 Mar 2006
Posts: 320
Location: Stuttgart, BW

PostPosted: 25.09.2007, 16:09    Post subject: Reply with quote

Leider sind die Basic-Compiler unter GNU nicht allzu verbreitet zwinkern. 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
View user's profile Send private message
Atan
Moderator


Joined: 27 Jul 2001
Posts: 876

PostPosted: 25.09.2007, 16:12    Post subject: Reply with quote

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
View user's profile Send private message
MetalBeast
Forum-Nutzer


Joined: 16 Sep 2007
Posts: 109

PostPosted: 25.09.2007, 16:33    Post subject: Reply with quote

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 Winken Da ist es schon besser, wenn so viele wie möglich draus profitieren Winken

Von daher sehe ich keinen Grund, das Source nur für mich zu behalten Winken

Gegen die Software-Grosskonzerne, haben wir kleine Programmierer eher keiner Chance, also warum nicht gleich der Allgemeinheit dienen Winken

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
View user's profile Send private message
MetalBeast
Forum-Nutzer


Joined: 16 Sep 2007
Posts: 109

PostPosted: 21.02.2008, 14:53    Post subject: Reply with quote

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
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Descentforum.DE Forum Index -> Level-, Design und Entwicklungs - Forum All times are GMT + 2 Hours
Goto page Previous  1, 2
Page 2 of 2

 
Jump to:  
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
PayPal


Descent is a trademark of Interplay Productions.
Descent, Descent II are © Parallax Software Corporation.
Descent III is © Outrage Entertainment.
Descentforum.DE and Descentforum.NET is © by Martin "Do_Checkor" Timmermann.
Powered by phpBB © 2001-2008 phpBB Group