Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Dave

Alter Hase

  • »Dave« ist der Autor dieses Themas

Beiträge: 757

Wohnort: Berlin

  • Private Nachricht senden

11

25.10.2004, 19:38

ich versteh nicht ganz, warum der model-converter meine mit cinema 4d exportierte 3ds datei nicht annimmt...
ich habe (mit den gleichen chunk-ids wie david beim modelkonverter) meine datei ausgelesen, und finde alle objekte und vertizes, sowie indizes. alles wunderbar. amterialien findet er auch, ist alles super.
wenn ich die datei aber im model-converter öffne, mekert er zwar nicht (auch keine fehler in der log), aber er findet auch nichts (keine effekte, vertizes, primitiven, indizes oder lichter)....

versteh ich irgendwie nicht so ganz. besonders weil ich sogar zum großteil den code aus der tribase in meinem kleinen "test-programm" verwendet habe....

Osram

Alter Hase

Beiträge: 889

Wohnort: Weissenthurm

Beruf: SW Entwickler

  • Private Nachricht senden

12

25.10.2004, 20:35

Kannst Du denn nicht durchdebuggen? Dann müsstest Du doch sehen ob er den Chunk richtig erkennt und die Anzahl liest und an der Stelle schon 0 rauskommt.
"Games are algorithmic entertainment."

13

25.10.2004, 20:59

Lad dir doch 3D-Exploration runter. Damit kannst ein 3ds-File öffnen und im TriBase-kompatiblen Format wieder neu abspeichern.

Dave

Alter Hase

  • »Dave« ist der Autor dieses Themas

Beiträge: 757

Wohnort: Berlin

  • Private Nachricht senden

14

25.10.2004, 21:06

werde nicht wirklich draus schlau. er liest die datei ein, findet aber immer nur maximal ein opjekt oder material. wenn nur onjekte existieren findet er ein objekt, wenns materialien gibt findet er nur ein material.

ich kann aber nicht in die init-methode von tb3DSFile reinsehen. und das eigentlich interessante passiert ja dar. wenn ich mit "einzelschritt" weiter gehe springt er nicht in die methode rein, sonder führt sie auf einen schlag aus. liegt das daran, dass sie "extern" definiert ist, also in der dll??

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

15

25.10.2004, 23:57

Es gibt einmal F10 das ist von funktion zu funktion F11 ist reinspringen (vorsicht bei new delete und der gleichen ;) )

Dave

Alter Hase

  • »Dave« ist der Autor dieses Themas

Beiträge: 757

Wohnort: Berlin

  • Private Nachricht senden

16

26.10.2004, 07:03

ja, das weiß ich. aber er springt auch mit f11 nicht in die init funktion....

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

17

26.10.2004, 11:34

Dann wird er vorher ihrgendwo abgefangen; Gibt es da in der nähe eine If anweisung oder sowas?

Dave

Alter Hase

  • »Dave« ist der Autor dieses Themas

Beiträge: 757

Wohnort: Berlin

  • Private Nachricht senden

18

26.10.2004, 11:46

nein, er führt die init-methode mit sicherheit aus:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
    // Die 3DS-Datei laden

    p3DSFile = new tb3DSFile;
    if(p3DSFile == NULL) return 1;
    if(p3DSFile->Init(pcFilename))
    {
        delete p3DSFile;
        return 1;
    }


beim konstruktor aufruf springt er auch braf in alle funktionen rein und führt es schritt für schritt aus. die erste if abfrage (p3DSFile == NULL) ist false, die zweite ebenfalls. um die zweite aber auszuwerten muss er init ja ausführen. aber er springt nicht rein.
außerdem ist p3DSFile mehr oder weniger korrekt initialisiert...

Anonymous

unregistriert

19

26.10.2004, 11:55

Sind die Sourcen for die DLL im Suchpfad von MSVC?

Osram

Dave

Alter Hase

  • »Dave« ist der Autor dieses Themas

Beiträge: 757

Wohnort: Berlin

  • Private Nachricht senden

20

26.10.2004, 12:26

ja, habe unter optionen->projekte->vc++ verzeichnisse->quellcodedateien meinen pfad für den src-ordner der tribase angegeben.

ich habe jetzt allerdings herausgefunden woran es liegt. wenn kein material existiert macht er sowieso nix. wenn allerdings ein material vorhanden ist tritt ein fehler beim laden auf, und er "springt" bis ans ende der datei und findet somit nichts anderes mehr.

auszug aus der Read3DSMaterial-Funktion:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
            case 0xA030: // Glanzfarbe

            // Farbe lesen

            tbProceedTo3DSChunk(pVFile, 0x0011);  // <--------- findet den Chunk nicht

            pVFile->Read(sizeof(BYTE), &r);
            pVFile->Read(sizeof(BYTE), &g);
            pVFile->Read(sizeof(BYTE), &b);

            // Farbe ins Fließkomma-RGB-Format umwandeln und speichern

            switch(ChunkHeader.wChunkID)
            {
            case 0xA010: pOut->AmbientColor = tbColor((BYTE)(r), g, b, 0); break;
            case 0xA020: pOut->DiffuseColor = tbColor((BYTE)(r), g, b, 255); break;
            case 0xA030: pOut->SpecularColor = tbColor((BYTE)(r), g, b, 0); break;
            }
            break;


er scheint den chunk mit der id 0x0011 nicht zu finden und sucht bis zum ende der datei. ich finde leider nichts über den aufbau des material-chunks. kennt sich jemand damit aus? ich hab ne art doku über das 3ds format, allerdings wird darin beim material chunk nur auf ne dokumentation über das material library format verwiesen (http://www.dcs.ed.ac.uk/home/mxr/gfx/3d/MLI.spec) woraus ich nicht wirklich schlau werde.....
ist etwa der material chunk so wie das mli format aufgebaut??

Werbeanzeige