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

Fireball

Alter Hase

  • »Fireball« ist der Autor dieses Themas

Beiträge: 415

Wohnort: Werne

Beruf: Dipl. Inf.

  • Private Nachricht senden

1

03.01.2011, 17:14

Assimp::Importer.ReadFile bricht bei *.blend Files mit einer Exception ab [done]

Hallo zusammen,

ich bin gerade dabei mir meine eigene Mesh Klasse für Direct3D11 zu schreiben. Zum parsen diverser File-Formate benutze ich Assimp.

Doch leider wirft mir die Lib eine Exception in:

C-/C++-Quelltext

1
2
3
AI_FORCE_INLINE const aiScene* Importer::ReadFile( const std::string& pFile,unsigned int pFlags){
    return ReadFile(pFile.c_str(),pFlags);
}


Zitat


Eine Ausnahme (erste Chance) bei 0x01381f36 in Assimp.exe: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0x0000001f. Unbehandelte Ausnahme bei 0x01381f36 in Assimp.exe: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0x0000001f.

Die Library assimp.lib habe ich wie in der Docu von Assimp beschrieben gebaut.

Kennt jemand das Problem?

Ich benutze derzeit Windows 7, Visual Studio 2008 und C++.

Mfg

Fb

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Fireball« (04.01.2011, 07:22)


Schrompf

Alter Hase

Beiträge: 1 470

Wohnort: Dresden

Beruf: Softwareentwickler

  • Private Nachricht senden

2

03.01.2011, 17:30

Wie sieht denn Dein Ladecode aus? Und welche Version benutzt Du? Die letzte aus dem Binär-Release von der Webseite oder eine selbstgebaute? Dynamisch oder statisch gelinkt? Debug oder Release? X86 oder X64?
Häuptling von Dreamworlds. Baut aktuell an nichts konkretem, weil das Vollzeitangestelltenverhältnis ihn fest im Griff hat. Baut daneben nur noch sehr selten an der Open Asset Import Library mit.

Fireball

Alter Hase

  • »Fireball« ist der Autor dieses Themas

Beiträge: 415

Wohnort: Werne

Beruf: Dipl. Inf.

  • Private Nachricht senden

3

04.01.2011, 06:06

Hallo,

also ich benutze Assimp in der Version 2.0, die ich selber kompiliert habe. Ich benutze derzeit noch die statische Lib, die ich dann über den Linker im Projekt anziehe.

Kompiliert habe ich Assimp im Release Mode, allerdings scheint sich diese Version nicht mit dem Debug Mode meines Projektes zu vertragen. Wenn ich Assimp dagegen im Debug kompiliere und dann
die assimp.lib als Debug Version einbinde, funktioniert das ganze - zumindest ist das scene Object nicht null.

C-/C++-Quelltext

1
2
3
4
5
const aiScene* scene = importer.ReadFile( pFile, 
    aiProcess_CalcTangentSpace   | 
    aiProcess_Triangulate        |
    aiProcess_JoinIdenticalVertices  |
    aiProcess_SortByPType);


Allerdings kann ich das nicht ganz glauben, denn es wird folgendes auf der Konsole ausgegeben, dass Programm stürzt jedoch nicht ab.

Zitat

Eine Ausnahme (erste Chance) bei 0x767fb727 in Assimp.exe: Microsoft C++-Ausnahme: Assimp::Blender::Error an Speicherposition 0x00c4c56c..
NACHTRAG:
So ich bin ein wenig weiter gekommen. Ich habe einfach mal meine Scene in Blender nach *.x konvertiert. Tja und siehe da - es funktioniert.
Anscheinend kann die aktuelle Version von Assimp (2.0 - trunk) mit den *.blend Files von Blender (Blender 2.49b (stable)) nicht richtig umgehen.



Gruß
Fireball

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Fireball« (04.01.2011, 07:21) aus folgendem Grund: Nachtrag


Schrompf

Alter Hase

Beiträge: 1 470

Wohnort: Dresden

Beruf: Softwareentwickler

  • Private Nachricht senden

4

04.01.2011, 08:33

Dein selbstgebauter Release-Build von Assimp crasht, wenn Du das Blenderfile liest, aber der Debug-Build liest es? Hm... das könnte evtl. ein Bug im Blenderloader sein. Kannst Du bitte das Modell rüberschicken, damit ich das selbst erproben kann? thomas (bei) dreamworlds (pkt) de. Ist zwar eigentlich nicht mein Loader, aber das müsste rauszukriegen sein.

Der Blenderloader kann übrigens prinzipiell nicht alles lesen, was in einem Blenderfile so drinsteht. Dazu müsste er ja alles nachimplementieren, was Blender sich an Modifiern und Tools so ausgedacht hat. Was der Blenderloader stattdessen macht, ist die mitgespeicherte Render-Repräsentation zu extrahieren. Das sind Meshes, die für die Darstellung in den Scene Views bereits fertig ausgerechnet und trianguliert sind. Die sind zwar halbwegs einfach lesbar, könnten aber Teile der Daten vermissen lassen.
Häuptling von Dreamworlds. Baut aktuell an nichts konkretem, weil das Vollzeitangestelltenverhältnis ihn fest im Griff hat. Baut daneben nur noch sehr selten an der Open Asset Import Library mit.

SkryptForFun

Frischling

Beiträge: 27

Wohnort: Schweiz

Beruf: Schüler

  • Private Nachricht senden

5

04.01.2011, 10:22

Du kannst auch mal versuchen ein Modell von Blender 2.55 Beta zu laden. Ich weiss nicht ob das mit dem zusammenhängt, aber ein Versuch wäre es wert. Zudem ist die neue Blender Version wesentlich besser als die alten Versionen.

SkryptForFun

Fireball

Alter Hase

  • »Fireball« ist der Autor dieses Themas

Beiträge: 415

Wohnort: Werne

Beruf: Dipl. Inf.

  • Private Nachricht senden

6

04.01.2011, 16:02

Dein selbstgebauter Release-Build von Assimp crasht, wenn Du das Blenderfile liest, aber der Debug-Build liest es? Hm... das könnte evtl. ein Bug im Blenderloader sein. Kannst Du bitte das Modell rüberschicken, damit ich das selbst erproben kann? thomas (bei) dreamworlds (pkt) de. Ist zwar eigentlich nicht mein Loader, aber das müsste rauszukriegen sein.
Nein - mein Fehler war, dass ich versucht habe die Release Version der Assimp Lib mit der Debug Version meines Projektes zu kompilieren. Wenn ich beide Projekte im Debug oder Release builde, dann funktioniert das ganze auch. Eine Mischung von Debug und Release crasht.

Wenn man nun alles richtig kompiliert hat ...

tauchen bei *.blend Files jedoch einige Exceptions auf, was aber nicht mehr zum Abbruch des Programm führt. Die Position, Normalen und Indeces werden z.b. erkannt. Meine Überschrift ist an dieser Stelle mitlerweile falsch gewählt, dass Programm stürzt nicht mehr ab, sondern gibt lediglich die Meldungen in der Konsole von Visual Studio aus. Das ist etwas unschön, da ich meinen Code gerne Warnungs und Error frei halte.

Das File schicke ich dir.

Gruß

Fb

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »Fireball« (04.01.2011, 16:26)


Werbeanzeige