Assimp-News
Forumsregeln
Bitte nur zu Engines und Toolkits posten, die auch eine eigene Entwicklungsumgebung anbieten. Zu Engines, die nur programmatisch angesprochen werden können, bitte hier posten.
Bitte nur zu Engines und Toolkits posten, die auch eine eigene Entwicklungsumgebung anbieten. Zu Engines, die nur programmatisch angesprochen werden können, bitte hier posten.
- Krishty
- Establishment
- Beiträge: 8290
- Registriert: 26.02.2009, 11:18
- Benutzertext: state is the enemy
- Kontaktdaten:
Re: Neuer Assimp-Release geplant
Die Version von vor drei Stunden stürzt bei mir ab – in std::copy(tempBuf.cbegin(), tempBuf.cend(), ++curPosition); mit vector + offset out of range
Warum benutzt ihr überhaupt IOStreamBuffer<T>::getNextLine(), wenn das Newline-Zeichen in OBJ keinen logischen Zeilenumbruch bedeutet? Wäre das nicht die Stelle, an der man backslash + line break filtert, statt hinterher auf Backslash zu prüfen und die Zeilen dann wieder zusammenzukleistern? Wäre doch sicher auch mindestens eine Größenordnung schneller …
Warum benutzt ihr überhaupt IOStreamBuffer<T>::getNextLine(), wenn das Newline-Zeichen in OBJ keinen logischen Zeilenumbruch bedeutet? Wäre das nicht die Stelle, an der man backslash + line break filtert, statt hinterher auf Backslash zu prüfen und die Zeilen dann wieder zusammenzukleistern? Wäre doch sicher auch mindestens eine Größenordnung schneller …
- kimmi
- Moderator
- Beiträge: 1405
- Registriert: 26.02.2009, 09:42
- Echter Name: Kim Kulling
- Wohnort: Luebeck
- Kontaktdaten:
Re: Neuer Assimp-Release geplant
Beim Schreiben von getNextLine war mir dieser Zusammenhang nicht bekannt, da die bisherigen Files anders strukturiert waren. Da ist definitiv Luft nach oben. Wenn mir der Alltag mal wieder etwas Luft lässt, werde ich hier nachbessern. Wenn jemand anders gerade nicht jede Nacht zu früh einschläft; ich würde mich über etwas Hilfe freuen :)...
Gruß Kimmi
Gruß Kimmi
- Krishty
- Establishment
- Beiträge: 8290
- Registriert: 26.02.2009, 11:18
- Benutzertext: state is the enemy
- Kontaktdaten:
Re: Neuer Assimp-Release geplant
SpatialSort: use std::vector::resize( 0 ) to improve readability. commit 186629b37282d880ad059516c7a3673844b74ac9 Kim Kulling committed 2 days ago
resize(0) ist identisch mit clear() und der Kommentar ist zweifelhalft. Siehe hier, hier, und hier.
Code: Alles auswählen
// clear the array in this strange fashion because a simple clear() would also deallocate
// the array which we want to avoid
- poResults.erase( poResults.begin(), poResults.end());
+ poResults.resize( 0 );
- Krishty
- Establishment
- Beiträge: 8290
- Registriert: 26.02.2009, 11:18
- Benutzertext: state is the enemy
- Kontaktdaten:
Re: Neuer Assimp-Release geplant
Ich sehe auch, dass ihr mit Master gemerged habt – enthält Master jetzt den defekten OBJ-Importer?
- kimmi
- Moderator
- Beiträge: 1405
- Registriert: 26.02.2009, 09:42
- Echter Name: Kim Kulling
- Wohnort: Luebeck
- Kontaktdaten:
Re: Neuer Assimp-Release geplant
Clear und resize sind nicht gleich, clear released die Capacity, resize nicht, siehe : http://en.cppreference.com/w/cpp/contai ... tor/resize:
Aber Obacht: das gilt nur für std::vector.
Gruß Kim
Den Effect kann man auch im Profiler beobachten: resize( 0 ) setzt die Size zwar auf 0, die Capacity allerdings nicht. Wenn nun jemand erneut Items pusht, wird kein erneuten Allocate durchgeführt, clear ist da langsamer.Vector capacity is never reduced when resizing to smaller size because that would invalidate all iterators, rather than only the ones that would be invalidated by the equivalent sequence of pop_back() calls.
Aber Obacht: das gilt nur für std::vector.
Gruß Kim
- kimmi
- Moderator
- Beiträge: 1405
- Registriert: 26.02.2009, 09:42
- Echter Name: Kim Kulling
- Wohnort: Luebeck
- Kontaktdaten:
Re: Neuer Assimp-Release geplant
Der Obj-Importer-Bug ist bereits behoben.
Kim
Kim
- Krishty
- Establishment
- Beiträge: 8290
- Registriert: 26.02.2009, 11:18
- Benutzertext: state is the enemy
- Kontaktdaten:
Re: Neuer Assimp-Release geplant
Doch, http://en.cppreference.com/w/cpp/contai ... ote]Leaves the capacity() of the vector unchanged[/quote]Mit welcher STL hast du es gemessen?kimmi hat geschrieben:Clear und resize sind nicht gleich, clear released die Capacity, resize nicht, siehe : http://en.cppreference.com/w/cpp/contai ... tor/resize:Vector capacity is never reduced when resizing to smaller size because that would invalidate all iterators, rather than only the ones that would be invalidated by the equivalent sequence of pop_back() calls.
[IMHO, wenn man es lesbar haben will:
clearAndKeepCapacity(poResults);
und
clearAndDeallocate(poResults);
mit
template <typename T> void clearAndKeepCapacity(std::vector<T> & v) {
v.clear(); // oder erase(begin(), end()) oder wasauchimmer
}
template <typename T> void clearAndDeallocate(std::vector<T> & v) {
std::vector<T>().swap(v);
}
Wenn schon leserlich machen, dann richtig ;) ]
@OBJ: Stimmt; der Crash ist raus :) Die Geschwindigkeit ist aber nichtsdestotrotz eine Katastrophe – wenn ich in Notepad++ alle Backslash+Newline aus meiner Testdatei lösche (15 Sekunden Arbeit), lädt die OBJ in drei Sekunden. Wenn ich sie drinlasse … muss ich den Test nach zwei Stunden mit 100 % Kern-Auslastung abbrechen weil ich nicht weiß, ob es je fertig geworden wäre oder in einer Endlosschleife hängt. Da war der Crash fast besser.
- kimmi
- Moderator
- Beiträge: 1405
- Registriert: 26.02.2009, 09:42
- Echter Name: Kim Kulling
- Wohnort: Luebeck
- Kontaktdaten:
Re: Neuer Assimp-Release geplant
Ops, das war mal anders. Gut zu wissen, das mit dem clear(), danke :). Ich hatte mich schon ewig gewundert, warum clear das früher ( so vor 10 Jahren ) im VS anders gemacht hat. Die Messungen habe ich damals durchgeführt und bis heute nicht wiederholt.
Welches Obj-Modell benutzt du? Ich habe da gerade kein ungünstiges Modell bei der Hand, um das nachzuvollziehen. In der Tat habe ich den Fix in Eile mit dem Dragon gegen gecheckt und da sind die Linebreaks nicht drinne, Schande über mich.
Welches Obj-Modell benutzt du? Ich habe da gerade kein ungünstiges Modell bei der Hand, um das nachzuvollziehen. In der Tat habe ich den Fix in Eile mit dem Dragon gegen gecheckt und da sind die Linebreaks nicht drinne, Schande über mich.
- Krishty
- Establishment
- Beiträge: 8290
- Registriert: 26.02.2009, 11:18
- Benutzertext: state is the enemy
- Kontaktdaten:
Re: Neuer Assimp-Release geplant
X3D behandelt Kommas endlich als Whitespace, schön :)
Für die verbleibenden Probleme habe ich dir nochmal Testfälle geschickt.
Für die verbleibenden Probleme habe ich dir nochmal Testfälle geschickt.
- kimmi
- Moderator
- Beiträge: 1405
- Registriert: 26.02.2009, 09:42
- Echter Name: Kim Kulling
- Wohnort: Luebeck
- Kontaktdaten:
Re: Neuer Assimp-Release geplant
Danke für das Feedback, ganze Menge ...
Gruß Kim
Gruß Kim
- Krishty
- Establishment
- Beiträge: 8290
- Registriert: 26.02.2009, 11:18
- Benutzertext: state is the enemy
- Kontaktdaten:
Re: Neuer Assimp-Release geplant
Mir ist gerade beim Testen noch eine desaströse Nebenwirkung des OBJ-Problems aufgefallen.
Nämlich scheint OBJ der Standard-Importer zu sein, falls ihr ein Format nicht erkennt und es Text-only ist. Von da an passiert der GAU:
Nämlich scheint OBJ der Standard-Importer zu sein, falls ihr ein Format nicht erkennt und es Text-only ist. Von da an passiert der GAU:
- textbasiertes Format; kein Importer passt … Found a matching importer: Wavefront OBJ
- natürlich springt er mit den unbekannten Daten in ignoreNewLines()
- natürlich bleibt er dann in der Schleife hängen, die stundenlang Assimp damit deadlocked, in einen std::vector zu kopieren
- kimmi
- Moderator
- Beiträge: 1405
- Registriert: 26.02.2009, 09:42
- Echter Name: Kim Kulling
- Wohnort: Luebeck
- Kontaktdaten:
Re: Neuer Assimp-Release geplant
WTF! Ich mach mich heute abend drann, ich hab ja sturmfrei!
Kimmi
Kimmi
- kimmi
- Moderator
- Beiträge: 1405
- Registriert: 26.02.2009, 09:42
- Echter Name: Kim Kulling
- Wohnort: Luebeck
- Kontaktdaten:
Re: Neuer Assimp-Release geplant
So, und STL's > 500 MB wollen auch nicht: https://github.com/assimp/assimp/issues/1277
- kimmi
- Moderator
- Beiträge: 1405
- Registriert: 26.02.2009, 09:42
- Echter Name: Kim Kulling
- Wohnort: Luebeck
- Kontaktdaten:
Re: Neuer Assimp-Release geplant
Aber immerhin: overflow und obj mit Linebreaks sind nun schon mal gefixed.
- Krishty
- Establishment
- Beiträge: 8290
- Registriert: 26.02.2009, 11:18
- Benutzertext: state is the enemy
- Kontaktdaten:
Re: Neuer Assimp-Release geplant
Absolut; meine Backslash-Datei lädt jetzt wieder in einer Sekunde statt in 8+ Stunden :)
- kimmi
- Moderator
- Beiträge: 1405
- Registriert: 26.02.2009, 09:42
- Echter Name: Kim Kulling
- Wohnort: Luebeck
- Kontaktdaten:
Re: Neuer Assimp-Release geplant
Der war etwas knifflig, da ich dank des fantastischen Default-Windows-Allocators für große Files keinen einheitlichen Memoryblock mehr beziehen kann. Somit habe ich das Ganze zunächst für Obj auf blocked-IO umgestellt. Dass wiederum ist doof für Daten-Definitionen, die per Line wie im Obj-Format vorliegen. Dementsprechend gibt es einen kleine Buffer, in denen die Lines zusammengebaut werden, auch wenn beim Auslesen einer Line ein neuer Block des Files importiert werden muss. Und dann kam Krishty mit seinen tollen Linebreaks und ich war interlektuell etwas angepisst von diesem SchXXX ...
Gruß KIm
Gruß KIm
- kimmi
- Moderator
- Beiträge: 1405
- Registriert: 26.02.2009, 09:42
- Echter Name: Kim Kulling
- Wohnort: Luebeck
- Kontaktdaten:
Re: Neuer Assimp-Release geplant
Habe ich erwähnt, dass das Allokieren großer Blocks unter Linux kein Problem ist?
- Krishty
- Establishment
- Beiträge: 8290
- Registriert: 26.02.2009, 11:18
- Benutzertext: state is the enemy
- Kontaktdaten:
Re: Neuer Assimp-Release geplant
Also ich kann auf meinem Windows problemlos um die 30 GiB allokieren …
- kimmi
- Moderator
- Beiträge: 1405
- Registriert: 26.02.2009, 09:42
- Echter Name: Kim Kulling
- Wohnort: Luebeck
- Kontaktdaten:
Re: Neuer Assimp-Release geplant
Du solltest sie laden können, allerdings sind momentan die Daten der aiScene noch komplett Incore. Das werde ich nach dem nächsten Release wohl mal umstellen, wenn nun mehr und mehr Leute Riesen-Baujobs per Assimp nach STL konvertieren wollen, um damit 3D-Druck zu betreiben.
- Krishty
- Establishment
- Beiträge: 8290
- Registriert: 26.02.2009, 11:18
- Benutzertext: state is the enemy
- Kontaktdaten:
Re: Neuer Assimp-Release geplant
Leute mit Riesenbaujobs haben auch immer Maschinen mit Riesenspeicher. Sowas löst Moore’s Law für dich; Kompatibilität müsst ihr aber selber verbessern …
- kimmi
- Moderator
- Beiträge: 1405
- Registriert: 26.02.2009, 09:42
- Echter Name: Kim Kulling
- Wohnort: Luebeck
- Kontaktdaten:
Re: Neuer Assimp-Release geplant
Irgendwann freust du dich, wenn man Krams zwischenspeichern kannst. Aber ist auch erst mal nur eine Idee...
- Krishty
- Establishment
- Beiträge: 8290
- Registriert: 26.02.2009, 11:18
- Benutzertext: state is the enemy
- Kontaktdaten:
Re: Neuer Assimp-Release geplant
Ich würde mich erstmal freuen, wenn ich überhaupt alle Dateien laden könnte ;)
- kimmi
- Moderator
- Beiträge: 1405
- Registriert: 26.02.2009, 09:42
- Echter Name: Kim Kulling
- Wohnort: Luebeck
- Kontaktdaten:
Re: Neuer Assimp-Release geplant
Wer nicht, ich arbeite drann ...
- kimmi
- Moderator
- Beiträge: 1405
- Registriert: 26.02.2009, 09:42
- Echter Name: Kim Kulling
- Wohnort: Luebeck
- Kontaktdaten:
Re: Neuer Assimp-Release geplant
So, für Debian musste ich die UTF8-Lib tauschen. Und das konnte ich dieses Wochenende abschließen. Nun nur noch die Json-Lib tauschen und dann 4.0, wir kommen!
- Krishty
- Establishment
- Beiträge: 8290
- Registriert: 26.02.2009, 11:18
- Benutzertext: state is the enemy
- Kontaktdaten:
Re: Neuer Assimp-Release geplant
Ich muss mich auch entschuldigen: Die Leistungsprobleme, die ihr mit OBJ habt, scheinen nicht nur bei Amateuren aufzutreten :D Ich freue mich schon auf’s Wochenende; dann probiere ich die neue Version aus!
- kimmi
- Moderator
- Beiträge: 1405
- Registriert: 26.02.2009, 09:42
- Echter Name: Kim Kulling
- Wohnort: Luebeck
- Kontaktdaten:
Re: Assimp-News
Um nicht ständig einen neuen Post aufzumachen, benutze ich den hier mal, um auf Neuigkeiten hinzuweisen.
Zum Beispiel:
Wir sind auf der SIGGRAPH zur glTF-User-Gruppe eingeladen worden Dumm nur, dass ich da nicht hin komme. Irgendwer von euch vielleicht?
Zum Beispiel:
Wir sind auf der SIGGRAPH zur glTF-User-Gruppe eingeladen worden Dumm nur, dass ich da nicht hin komme. Irgendwer von euch vielleicht?
- Krishty
- Establishment
- Beiträge: 8290
- Registriert: 26.02.2009, 11:18
- Benutzertext: state is the enemy
- Kontaktdaten:
Re: Assimp-News
Hat hier jemand was vergessen?
Das sieht aus, als wäre ein Unicode-Korrektur-Tool amok gelaufen:
Das sieht aus, als wäre ein Unicode-Korrektur-Tool amok gelaufen:
- Krishty
- Establishment
- Beiträge: 8290
- Registriert: 26.02.2009, 11:18
- Benutzertext: state is the enemy
- Kontaktdaten:
Re: Assimp-News
Sehr gut! Ihr habt für 4.0 endlich die PH-Fehler im .DAE-Export und die Kommas in X3D behoben. Danke dafür!
IFC wurde verbessert, und ich kann nun tatsächlich eine Datei mehr laden als vorher (zwei von sieben). Die bunten Fehlermeldungen, die ich bei den anderen Testfällen sehe (nicht mehr immer die gleiche!), schicke ich dir nachher.
… und …
… ihr habt den PLY-Importer total geschrottet. Ich schicke dir gleich zwei Dateien, von denen eine mit Access Violation abstürzt und die andere eine Kette von Fehlern schmeißt, die nach internen Problemen klingen. Beide luden vor zwei Monaten noch. Ich werde in meinem Build die alte Version vom PLY-Loader wiederherstellen müssen; solche Regressions sind nicht akzeptabel.
3MF und AMF sind, naja … ich habe noch nie eine 3MF-Datei gefunden, die ich mit Assimp öffnen kann, und von AMF nur eine. Ich schicke dir die auch.
IFC wurde verbessert, und ich kann nun tatsächlich eine Datei mehr laden als vorher (zwei von sieben). Die bunten Fehlermeldungen, die ich bei den anderen Testfällen sehe (nicht mehr immer die gleiche!), schicke ich dir nachher.
… und …
… ihr habt den PLY-Importer total geschrottet. Ich schicke dir gleich zwei Dateien, von denen eine mit Access Violation abstürzt und die andere eine Kette von Fehlern schmeißt, die nach internen Problemen klingen. Beide luden vor zwei Monaten noch. Ich werde in meinem Build die alte Version vom PLY-Loader wiederherstellen müssen; solche Regressions sind nicht akzeptabel.
3MF und AMF sind, naja … ich habe noch nie eine 3MF-Datei gefunden, die ich mit Assimp öffnen kann, und von AMF nur eine. Ich schicke dir die auch.
- kimmi
- Moderator
- Beiträge: 1405
- Registriert: 26.02.2009, 09:42
- Echter Name: Kim Kulling
- Wohnort: Luebeck
- Kontaktdaten:
Re: Assimp-News
PLY-Loader kaputt? Ups, da werde ich wohl ran müssen. Danke für die Files! Das hilft massiv! Mittlerweile könnte ich das direkt Vollzeit machen :( ...
Gruß Kim
Gruß Kim