Assimp-News

Spieleentwicklung mit Autorensystemen und Toolkits - Will man Spiele entwicklen, ist es oft sinnvoll nicht erst seine eigene Engine zu entwickeln, sondern gleich mit einem ausgefeilten Autorensystem zu beginnen.
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.
Benutzeravatar
Krishty
Establishment
Beiträge: 8229
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Assimp-News

Beitrag von Krishty »

Gut:
Der 3MF-Bug mit Post Processing Order ist behoben.

Schlecht:
3DS scheint falsche Transformation zu haben, wenn Objekte gespiegelt sind. Die entsprechenden Datei kommt direkt aus 3ds Max; ich schicke sie dir via PM.

Noch schlechter:
Bei FBX sind die Transformationsfehler noch extremer. Außerdem kommen die Farben zu dunkel raus – habt ihr in Assimps Materialeigenschaften ein Flag für sRGB/linear oder einen Gamma-Faktor, den ich übersehe?
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Chromanoid
Moderator
Beiträge: 4254
Registriert: 16.10.2002, 19:39
Echter Name: Christian Kulenkampff
Wohnort: Lüneburg

Re: Assimp-News

Beitrag von Chromanoid »

Habt ihr mal überlegt automatische Tests mit Bildvergleich einzubauen? Also Soll-Bild vs. tatsächliche Ausgabe (z.B. via https://github.com/donbright/diffpng)? Dann würde man solche Fehler ziemlich schnell sehen und man muss nicht komplizierte Vertex-Prüfungen machen. Oder macht ihr die Tests so schon?

BTW ich weiß das geht da vielleicht eher unter, aber irgendwie verstehe ich nicht warum Assimp-News in der Kategorie "Autorensysteme und Toolkits" gelandet ist. Wahrscheinlich wegen Toolkit oder? Ich glaube damit waren eher Toolkits für komplette Spiele gemeint...
Benutzeravatar
Krishty
Establishment
Beiträge: 8229
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Assimp-News

Beitrag von Krishty »

Das Problem ist eher, dass zu wenige Testdateien vorliegen. 80 % der Dateien im Netz nutzen nur 20 % der Features und sind leicht korrekt darzustellen.

Die restlichen 20 % der Dateien sind dafür höllische Verkettungen von Sonderfällen. Sowas zu finden ist schwer genug, aber dann noch mit passender Lizenz …

… die Testdateien, die ich kimmi schicke, stammen auch von unseren Kunden und dürfen auf keinen Fall im offiziellen Repository landen. Um die nachzubauen, muss er sich wahrscheinlich erstmal 3ds Max besorgen und nachmachen, was bei der Originaldatei gemacht wurde (spezieller Objekttyp, via spezieller Option spiegeln, etc).

Ich habe in meinem VRML-Import ungefähr 80 % Code-Abdeckung, bei 200 isolierten Testfällen und 10.000(!) heruntergeladenen Testdateien. Auf Github würden nur die 200 isolierten Testfälle landen, weil ich für den Rest niemals die Lizenzen klären könnte. So schlimm ist das.

————

Übrigens braucht man auch kein diffpng für sowas. Ich habe alle meine Testfälle so ausgelegt, dass der Pixel in der Mitte nur bei Erfolg grün ist. Rate mal, welcher Testfall hier nicht funktioniert:
VRML97tests.png
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
kimmi
Moderator
Beiträge: 1405
Registriert: 26.02.2009, 09:42
Echter Name: Kim Kulling
Wohnort: Luebeck
Kontaktdaten:

Re: Assimp-News

Beitrag von kimmi »

Das Ding mit dem SIB schaue ich mir an, riecht in der Tat komisch. Ist mir beim Review durch ie Lappen gegangen. Ebenfalls komisch: Clangs AddressSanitizer und MemorySanitizer schlagen nicht an. Das kann aber auch in der Tatsache begründet sein, dass wir keinen Testfall dafür haben :o).

Danke auf jeden Fall für den Hinweis.
Benutzeravatar
kimmi
Moderator
Beiträge: 1405
Registriert: 26.02.2009, 09:42
Echter Name: Kim Kulling
Wohnort: Luebeck
Kontaktdaten:

Re: Assimp-News

Beitrag von kimmi »

Bitmap-Vergleiche würden gehen, ich habe aber einen Scene-Differ gebaut. Bei Bildern hat man schnell sehr viele Daten, die man mittels git sehr schwer verwalten kann ( Diffs und so ). Da steckt richtig Arbeit drinn. Und da das Ganze in der Freizeit läuft, geht halt nicht alles.

Dewegen verweise ich noch mal auf unsere PAtreon-Seite *hüstel*: https://www.patreon.com/assimp
Benutzeravatar
kimmi
Moderator
Beiträge: 1405
Registriert: 26.02.2009, 09:42
Echter Name: Kim Kulling
Wohnort: Luebeck
Kontaktdaten:

Re: Assimp-News

Beitrag von kimmi »

Und ich habe in den letzten Tagen mehr als 10 Issues zumachen können. Der Assimp-Build für Android wird gerade schön gemacht und ich arbeite Altlasten ( FBX z.B. ) ab.

Der CI-Build testet nun auch auf Zugriffsverletzungen und Memory-Leaks ( Clang sei Dank ) und ist bedeutend schneller geworden. FBX und IFC entwickeln sich zu immer größeren Baustellen. Allein der Umfang / KOmplexitität der Importer haut mich jedes mal wieder um.
Zuletzt geändert von kimmi am 09.11.2017, 11:05, insgesamt 1-mal geändert.
Benutzeravatar
Krishty
Establishment
Beiträge: 8229
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Assimp-News

Beitrag von Krishty »

kimmi hat geschrieben:Bei Bildern hat man schnell sehr viele Daten, die man mittels git sehr schwer verwalten kann ( Diffs und so ).
… und ein weiterer Nachteil: Falls man mal die Beleuchtungsbedingungen ändert (weil man z.B. gemerkt hat, dass der Shader das Licht nicht sRGB-korrekt gerendert hat), muss man *alle* Testbilder von Hand neu verifizieren. Dein Szenen-Vergleich ist da sicher der viel bessere Weg.
kimmi hat geschrieben:Dewegen verweise ich noch mal auf unsere PAtreon-Seite *hüstel*: https://www.patreon.com/assimp
Ja; ich kann’s mir nur gerade nicht leisten. Vielleicht kriege ich das über die Firma hin, dass wir vorrangige Behandlung kaufen.
kimmi hat geschrieben:FBX und IFC entwickeln sich zu immer größeren Baustellen. Allein der Umfang / KOmplexitität der Importer haut mich jedes mal wieder um.
Ich wundere mich noch immer, wie ihr COLLADA geschafft habt. Das unterstützt doch auch 1000 Dinge, bis hin zu Physiksimulation … Schulterklopfen dafür.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
kimmi
Moderator
Beiträge: 1405
Registriert: 26.02.2009, 09:42
Echter Name: Kim Kulling
Wohnort: Luebeck
Kontaktdaten:

Re: Assimp-News

Beitrag von kimmi »

Das war Schrompf und Alexander! Da ziehe ich auch den Hut vor.
Benutzeravatar
Chromanoid
Moderator
Beiträge: 4254
Registriert: 16.10.2002, 19:39
Echter Name: Christian Kulenkampff
Wohnort: Lüneburg

Re: Assimp-News

Beitrag von Chromanoid »

kimmi hat geschrieben:Bitmap-Vergleiche würden gehen, ich habe aber einen Scene-Differ gebaut. Bei Bildern hat man schnell sehr viele Daten, die man mittels git sehr schwer verwalten kann ( Diffs und so ). Da steckt richtig Arbeit drinn. Und da das Ganze in der Freizeit läuft, geht halt nicht alles.
Ah verstehe. Ich dachte ehrlich gesagt daran, dass man die gleiche Szene in allen Formaten bereitstellt und dann nur eine Referenz-Bilderserie (für unterschiedliche Perspektiven und Features) benötigt. Das Bereitstellen der Referenzbilder müsste natürlich auch automatisch gehen, dann muss man nichts verwalten, nur ab und zu den Referenz-Bild-Generator anwerfen, wenn man so eine Situation hat, die Krishty beschreibt. Aber ein Szene-Differ ist doch auch gut.
Krishty hat geschrieben:Übrigens braucht man auch kein diffpng für sowas. Ich habe alle meine Testfälle so ausgelegt, dass der Pixel in der Mitte nur bei Erfolg grün ist.
Cool. Ich frage mich wie das möglich ist, wenn man wirklich Material-Render-Regressionstests machen möchte.
Benutzeravatar
kimmi
Moderator
Beiträge: 1405
Registriert: 26.02.2009, 09:42
Echter Name: Kim Kulling
Wohnort: Luebeck
Kontaktdaten:

Re: Assimp-News

Beitrag von kimmi »

Für alle 3D-Druck-Leute hier: der 3MF-Exporter ist auf master als Experimental.

Gruß Kimmi
Benutzeravatar
kimmi
Moderator
Beiträge: 1405
Registriert: 26.02.2009, 09:42
Echter Name: Kim Kulling
Wohnort: Luebeck
Kontaktdaten:

Re: Assimp-News

Beitrag von kimmi »

Habe gerade Version 4.1.0 der Asset-Importer-Lib released, um die Mengen an Fixes und neuen Features unters Volk zu bekommen.
Einige Highlights:
  • glFT2 import und Export
  • 3DF-Exporter
  • Statische Code-Analyse im CI Build
  • CI benutzt den Adress Sanitizer von Clang
  • Verbesserungen im Build-Support für Android
  • ...
Release-Notes können hier eingesehen werden: https://github.com/assimp/assimp/releases/tag/v4.1.0

Viel Spass damit!
Benutzeravatar
kimmi
Moderator
Beiträge: 1405
Registriert: 26.02.2009, 09:42
Echter Name: Kim Kulling
Wohnort: Luebeck
Kontaktdaten:

Re: Assimp-News

Beitrag von kimmi »

Wir haben unser erstes Asset-Importer-Lib auf Patreon ( siehe https://www.patreon.com/assimp ) geknackt. Somit werden in den nächsten Wochen automatisch Windows-Installer per CI-Build zur Verfügung gestellt werden. Ich war mir gar nicht so sicher, ob die Patreon-Plattform für einer Lib wie Assimp irgendwelche Unterstützung bieten wird. Um so positiver bin ich davon überrrascht, dass mich so viele bei der Arbeit unterstützen wollen :).

Die zwischenzeitliche Missetat der Patreon-CEO's, die Patronen für ihr Engangement stärker zur Kasse zu bitten, wurde übrigens rückgängig gemacht. Das hat für viel Ärger gesorgt.

Viele Grüße,
Kim
Benutzeravatar
Krishty
Establishment
Beiträge: 8229
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Assimp-News

Beitrag von Krishty »

kimmi, habt ihr diesen Commit getestet? https://github.com/assimp/assimp/commit ... 284ccccac5

Ich hab’s nicht und weiß jetzt nicht, ob das
  • bloß eine Warnung behebt (wie im Titel steht) und das ++ überflüssig war,
  • oder ob das ++ versehentlich gelöscht wurde und nun der Importer Schrott ist.
————

Außerdem muss in C4DImporter.cpp (80) das hier:

Code: Alles auswählen

namespace Assimp {
    template<> const std::string LogFunctions<C4DImporter>::log_prefix = "C4D: ";
}
durch das ersetzt werden:

Code: Alles auswählen

namespace Assimp {
    template<> const char* LogFunctions<C4DImporter>::Prefix()
    {
        static auto prefix = "C4D: ";
        return prefix;
    }
}
… wahrscheinlich kompiliert ihr ohne C4D-Unterstützung, dann fällt euch sowas nicht auf.


————

P.S.: Warum eigentlich static auto prefix = "C4D: "; return prefix; anstatt return "C4D: ";? Das sieht mir völlig verkompliziert aus. Ist das eine Optimierung aus der Zeit, als das noch ein std::string war?

Und … warum eigentlich eine Funktion statt einer Variable? Hat da jemand das überflüssige-Singletons-Fieber gekriegt? In der ursprünglichen Fassung den std::string durch char const * zu ersetzen wäre das allerkürzeste, deutlichste gewesen …
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Krishty
Establishment
Beiträge: 8229
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Assimp-News

Beitrag von Krishty »

Übrigens habe ich hier noch ein paar synthetische STL-Tests für meinen Viewer herumliegen, die du in Assimps Testmatrix integrieren kannst. Ich weiß gerade nicht, wie der Stand bei euch ist, darum melde dich einfach, falls Bedarf besteht :)
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Krishty
Establishment
Beiträge: 8229
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Assimp-News

Beitrag von Krishty »

Gehe ich recht in der Annahme, dass IFCReaderGen_4.cpp experimentell ist und man nicht erwarten kann, dass er kompiliert?


Ich find’s schön, dass ihr langsam alles zu std::unique_ptr und std::shared_ptr portiert, aber bitte initialisiert dann auch richtig! Hier sind 77 Stellen, die durch make_unique oder make_shared ersetzt werden sollten:

Code: Alles auswählen

code\3DSConverter.cpp(366):        std::unique_ptr< std::vector<unsigned int>[] > aiSplit(new std::vector<unsigned int>[mScene->mMaterials.size()]);
code\AMFImporter.cpp(413):	std::unique_ptr<CIrrXML_IOStreamReader> mIOWrapper(new CIrrXML_IOStreamReader(file.get()));
code\B3DImporter.cpp(313):        std::unique_ptr<aiMaterial> mat(new aiMaterial);
code\B3DImporter.cpp(404):    std::unique_ptr<aiMesh> mesh(new aiMesh);
code\B3DImporter.cpp(519):    std::unique_ptr<aiAnimation> anim(new aiAnimation);
code\B3DImporter.cpp(710):        _materials.emplace_back( std::unique_ptr<aiMaterial>(new aiMaterial) );
code\BlenderDNA.h(338):        out = std::shared_ptr<T>(new T());
code\BlenderDNA.inl(91):    return std::shared_ptr<T>(new T());
code\BlenderDNA.inl(387):    out =  std::shared_ptr< FileOffset > (new FileOffset());
code\BlenderLoader.cpp(194):        std::shared_ptr<StreamReaderLE> reader = std::shared_ptr<StreamReaderLE>(new StreamReaderLE(stream));
code\BlenderLoader.cpp(267):    out.reader = std::shared_ptr<StreamReaderAny>(new StreamReaderAny(stream,out.little));
code\BlenderLoader.cpp(569):                std::shared_ptr<Material> p(new Material());
code\BlenderLoader.cpp(1143):    std::unique_ptr<aiCamera> out(new aiCamera());
code\BlenderLoader.cpp(1160):    std::unique_ptr<aiLight> out(new aiLight());
code\BlenderLoader.cpp(1216):    std::unique_ptr<aiNode> node(new aiNode(obj->id.name+2)); // skip over the name prefix 'OB'
code\BlenderModifier.cpp(318):    std::unique_ptr<aiMesh*[]> tempmeshes(new aiMesh*[out.mNumMeshes]());
code\C4DImporter.cpp(192):            std::unique_ptr<aiMaterial> def_material(new aiMaterial());
code\C4DImporter.cpp(414):    std::unique_ptr<aiMesh> mesh(new aiMesh());
code\COBLoader.cpp(145):    std::unique_ptr<StreamReaderLE> stream(new StreamReaderLE( pIOHandler->Open(pFile,"rb")) );
code\COBLoader.cpp(212):    std::unique_ptr<Node> root(new Group());
code\COBLoader.cpp(677):    out.nodes.push_back(std::shared_ptr<Light>(new Light()));
code\COBLoader.cpp(733):    out.nodes.push_back(std::shared_ptr<Camera>(new Camera()));
code\COBLoader.cpp(751):    out.nodes.push_back(std::shared_ptr<Bone>(new Bone()));
code\COBLoader.cpp(767):    out.nodes.push_back(std::shared_ptr<Group>(new Group()));
code\COBLoader.cpp(781):    out.nodes.push_back(std::shared_ptr<Mesh>(new Mesh()));
code\COBLoader.cpp(1039):    out.nodes.push_back(std::shared_ptr<Mesh>(new Mesh()));
code\COBLoader.cpp(1229):    out.nodes.push_back(std::shared_ptr<Camera>(new Camera()));
code\COBLoader.cpp(1252):    out.nodes.push_back(std::shared_ptr<Light>(new Light()));
code\COBLoader.cpp(1268):    out.nodes.push_back(std::shared_ptr<Group>(new Group()));
code\ColladaParser.cpp(100):    std::unique_ptr<CIrrXML_IOStreamReader> mIOWrapper(new CIrrXML_IOStreamReader(file.get()));
code\CSMLoader.cpp(139):    std::unique_ptr<aiAnimation> anim(new aiAnimation());
code\D3MFImporter.cpp(130):        std::unique_ptr<aiNode> node(new aiNode());
code\D3MFImporter.cpp(438):    std::unique_ptr<CIrrXML_IOStreamReader> xmlStream(new CIrrXML_IOStreamReader(opcPackage.RootStream()));
code\D3MFOpcPackage.cpp(512):    std::unique_ptr<CIrrXML_IOStreamReader> xmlStream(new CIrrXML_IOStreamReader(stream));
code\DXFLoader.cpp(379):            std::shared_ptr<DXF::PolyLine> pl_out = std::shared_ptr<DXF::PolyLine>(new DXF::PolyLine(*pl_in));
code\FIReader.cpp(1808):    std::unique_ptr<uint8_t[]> data = std::unique_ptr<uint8_t[]>(new uint8_t[size]);
code\FIReader.cpp(1823):        return std::unique_ptr<FIReader>(new CFIReaderImpl(std::move(data), size));
code\FIReader.cpp(1826):        auto memios = std::unique_ptr<MemoryIOStream>(new MemoryIOStream(data.release(), size, true));
code\FIReader.cpp(1827):        auto callback = std::unique_ptr<CIrrXML_IOStreamReader>(new CIrrXML_IOStreamReader(memios.get()));
code\FIReader.cpp(1828):        return std::unique_ptr<FIReader>(new CXMLReaderImpl(std::unique_ptr<irr::io::IIrrXMLReader<char, irr::io::IXMLBase>>(createIrrXMLReader(callback.get()))));
code\Importer\IFC\IFCBoolean.cpp(413):    std::shared_ptr<TempMesh> profile = std::shared_ptr<TempMesh>(new TempMesh());
code\Importer\IFC\IFCBoolean.cpp(730):    std::shared_ptr<TempMesh> meshtmp = std::shared_ptr<TempMesh>(new TempMesh());
code\Importer\IFC\IFCGeometry.cpp(663):        std::shared_ptr<TempMesh> profile = std::shared_ptr<TempMesh>(new TempMesh());
code\Importer\IFC\IFCGeometry.cpp(666):        std::shared_ptr<TempMesh> profile2D = std::shared_ptr<TempMesh>(new TempMesh());
code\Importer\IFC\IFCLoader.cpp(426):    std::unique_ptr<aiNode> nd(new aiNode());
code\Importer\IFC\IFCLoader.cpp(684):    std::unique_ptr<aiNode> nd(new aiNode());
code\Importer\IFC\IFCLoader.cpp(767):                    std::unique_ptr<aiNode> nd_aggr(new aiNode());
code\Importer\IFC\IFCLoader.cpp(812):                std::unique_ptr<aiNode> nd_aggr(new aiNode());
code\Importer\IFC\IFCMaterial.cpp(151):                        std::unique_ptr<aiMaterial> mat(new aiMaterial());
code\Importer\IFC\IFCMaterial.cpp(189):    std::unique_ptr<aiMaterial> mat(new aiMaterial());
code\Importer\IFC\IFCUtil.cpp(80):    std::unique_ptr<aiMesh> mesh(new aiMesh());
code\LWOLoader.cpp(1128):        std::unique_ptr<float[]> temp(new float[type]);
code\MMDCpp14.h(68):            return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
code\MMDCpp14.h(75):            return std::unique_ptr<T>(new U[n]());
code\MMDImporter.cpp(171):  std::unique_ptr<aiNode *[]> ppNode(new aiNode *[pModel->bone_count]);
code\ObjFileImporter.cpp(325):    std::unique_ptr<aiMesh> pMesh(new aiMesh);
code\OgreImporter.cpp(130):        std::unique_ptr<CIrrXML_IOStreamReader> xmlStream(new CIrrXML_IOStreamReader(scopedFile.get()));
code\OgreXmlSerializer.cpp(750):    std::unique_ptr<CIrrXML_IOStreamReader> stream(new CIrrXML_IOStreamReader(file.get()));
code\STEPFile.h(510):            std::unique_ptr<TDerived> impl(new TDerived());
code\Importer\IFC\STEPFileEncoding.cpp(357):                            std::unique_ptr<uint16_t[]> src(new uint16_t[count]);
code\Importer\IFC\STEPFileEncoding.cpp(366):                            std::unique_ptr<unsigned char[]> dest(new unsigned char[dcount]);
code\Importer\IFC\STEPFileEncoding.cpp(388):                            std::unique_ptr<uint32_t[]> src(new uint32_t[count]);
code\Importer\IFC\STEPFileEncoding.cpp(399):                            std::unique_ptr<unsigned char[]> dest(new unsigned char[dcount]);
code\Importer\IFC\STEPFileReader.cpp(92):    std::shared_ptr<StreamReaderLE> reader = std::shared_ptr<StreamReaderLE>(new StreamReaderLE(stream));
code\Importer\IFC\STEPFileReader.cpp(93):    std::unique_ptr<STEP::DB> db = std::unique_ptr<STEP::DB>(new STEP::DB(reader));
code\XGLLoader.cpp(163):        std::unique_ptr<StreamReaderLE> raw_reader(new StreamReaderLE(stream));
code\XGLLoader.cpp(352):    std::unique_ptr<aiLight> l(new aiLight());
code\XGLLoader.cpp(373):    std::unique_ptr<aiNode> nd(new aiNode());
code\XGLLoader.cpp(532):    std::unique_ptr<aiMesh> mesh(new aiMesh());
code\XGLLoader.cpp(738):    std::unique_ptr<aiMaterial> mat(new aiMaterial());
code\BaseImporter.cpp(93):    std::unique_ptr<aiScene> sc(new aiScene());
code\BaseImporter.cpp(158):        std::unique_ptr<char[]> _buffer (new char[searchBytes+1 /* for the '\0' */]);
code\FindInstancesProcess.cpp(131):        std::unique_ptr<uint64_t[]> hashes (new uint64_t[pScene->mNumMeshes]);
code\FindInstancesProcess.cpp(132):        std::unique_ptr<unsigned int[]> remapping (new unsigned int[pScene->mNumMeshes]);
code\FindInstancesProcess.cpp(224):                        std::unique_ptr<unsigned int[]> ftbl_orig(new unsigned int[orig->mNumVertices]);
code\FindInstancesProcess.cpp(225):                        std::unique_ptr<unsigned int[]> ftbl_inst(new unsigned int[orig->mNumVertices]);
code\TriangulateProcess.cpp(197):    std::unique_ptr<bool[]> done(new bool[max_out]);
D3MFOpcPackage.cpp hat geschrieben: bool exist( false );
if(it != m_ArchiveMap.end()) {
exist = true;
}
return exist;
*zoom.jpg*
Wie wär’s mit
return it != m_ArchiveMap.end();

In Importer.cpp (192) habt ihr auch einen Rechtschreibfehler durch einen anderen ersetzt.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Krishty
Establishment
Beiträge: 8229
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Neuer Assimp-Release geplant

Beitrag von Krishty »

Krishty hat geschrieben:Ich hatte gehofft, dieser Commit würde die OBJ-Probleme lösen, aber … er ist eine Katastrophe.
Krishty hat geschrieben:@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.
Eine neue Episode aus OBJ, Backslashes, Katastrophen: Ihr habt nie getestet, was passiert, wenn ein Backslash genau am Ende eures I/O-Blocks liegt …
backslash bug.png
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Jonathan
Establishment
Beiträge: 2353
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: Assimp-News

Beitrag von Jonathan »

Vorschlag: CMAKE_DEBUG_POSTFIX standardmäßig auf 'd' setzen, damit Debug- und Release-Build unterschiedliche Namen haben. Der Wert 'd' wird scheinbar auch von FindAssimp.cmake erwartet.

(siehe unten, Problem fast gelöst).
Ich habe gerade den aktuellen Code (fce4d0cee75304ecfbdc025788d9ec17dae56d98) unter Windows 8 mit VS 2015 kompiliert. Das Ergebnis ist eine Datei 'assimp-vc140-mt.lib', und zwar unabhängig ob ich im Debug oder Release Modus kompiliere. Ich linke in meinem Projekt normalerweise auch die unterschiedlichen Bibliotheken in den unterschiedlichen Konfigurationen, aber mit dem aktuellen Namensschema scheint es mir nicht möglich zu sein, das Ergebnis des CMake-Install-Skriptes zu verwenden, ohne selbst noch einmal Hand anzulegen. Sprich, ich vermisse (schmerzlich) ein '-d' als Namensbestandteil im Debugbuild. Ich bin mir auch ziemlich sicher, dass das mal drin war (damals war die Kompilerversion aber noch kein Namensbestandteil).

Nachtrag:
Die beigelegte Findassimp.cmake sucht für den Debugbuild auch nach ${ASSIMP_MSVC_VERSION}-mtd.lib und CMAKE_DEBUG_POSTFIX ist vermutlich die Lösung meiner Probleme. Aber man könnte es vielleicht standardmäßig auf einen nicht-leeren Wert setzen (wovon die FindAssimp ja scheinbar schon ausgeht).
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
Benutzeravatar
kimmi
Moderator
Beiträge: 1405
Registriert: 26.02.2009, 09:42
Echter Name: Kim Kulling
Wohnort: Luebeck
Kontaktdaten:

Re: Assimp-News

Beitrag von kimmi »

Hallo zusammen,

in der letzten Zeit hat sich bei Asset-Importer-Lib mal wieder etwas getan. Wir haben einen FBX-Exporter, das Laden von FBX-Assets ist stabiler geworden. 3MF kann nun importiert und exportiert werden. Es hat sogar einige Verbesserungen im Bereich IFC gegeben. Dazu habe ich viele viele kleinere Verbesserungen und Bugfixes gepushed.
Ich bin grad privat etwas unter Feuer ( kleine Kinder im Winter sind die Pest und meine Freundin ist leider auch nicht gesund zur Zeit ), so dass ich mich am liebsten gevierteilt hätte. Wider Erwarten hat das nicht geklappt.
Ich habe deswegen einen Poll auf Patreon gestartet, um etwas Feedback einzusammeln, was denn zur Zeit für Anwender wichtig ist.

Finden kann man die Umfrage unter dem folgenden Link: https://www.patreon.com/posts/april-feature-18293510

Ich würde mich freuen, etwas Feedback zu bekommen, was wirklich als wichtig angesehen wird. Postet eure Gedanken auch gerne hier.

Gruß Kim
Benutzeravatar
Krishty
Establishment
Beiträge: 8229
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Assimp-News

Beitrag von Krishty »

simd.h: SSE2-Unterstützung durch CPUID abzufragen ist nicht unbedingt clever, weil das Betriebssystem das ebenso unterstützen muss. Statt nicht-portabler Assembler-Hölle könnt ihr unter Windows besser IsProcessorFeaturePresent(PF_XMMI64_INSTRUCTIONS_AVAILABLE) aufrufen. Zuverlässiger, kürzer, wartbar – und auf Linux nutzt eben weiter den Assembler-Code.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
kimmi
Moderator
Beiträge: 1405
Registriert: 26.02.2009, 09:42
Echter Name: Kim Kulling
Wohnort: Luebeck
Kontaktdaten:

Re: Assimp-News

Beitrag von kimmi »

Gute Idee, werde ich umsetzen. Danke für den Tipp.
Benutzeravatar
Krishty
Establishment
Beiträge: 8229
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Assimp-News

Beitrag von Krishty »

Ich wollte gerade ungenutzte Post Processing Steps aus meinem Kompilat schmeißen, und da asind folgende Abhängigkeiten aufgetaucht:
  • MakeLeftHandedProcess: UnrealLoader XFileImporter B3DImporter LWOLoader LWSLoader MMDImporter
  • FlipWindingOrderProcess: MMDImporter UnrealLoader XFileImporter B3DImporter COBLoader LWOLoader LWSLoader
  • FlipUVsProcess: MMDImporter
Vielleicht wäre ein #ifndef #error in den Header nützlich, um nicht Linker-Warnungen auseinanderpopeln zu müssen …
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
kimmi
Moderator
Beiträge: 1405
Registriert: 26.02.2009, 09:42
Echter Name: Kim Kulling
Wohnort: Luebeck
Kontaktdaten:

Re: Assimp-News

Beitrag von kimmi »

Oh Freude, oh Freude. Mein Arbeitgeber SLM-Solutions fördert nun ganz offiziell meine OS-Arbeit an Asset-Importer-Lib. Viele Kudos an https://slm-solutions.com/ .

Gruß Kim
Benutzeravatar
Chromanoid
Moderator
Beiträge: 4254
Registriert: 16.10.2002, 19:39
Echter Name: Christian Kulenkampff
Wohnort: Lüneburg

Re: Assimp-News

Beitrag von Chromanoid »

Wie cool! Als ich auf die Webseite gehen wollte, um zu sehen, ob ihr jetzt eine Art sponsoring-Abteilung auf der Webseite habt, ist mir übrigens aufgefallen, dass der Link zu Assimp in Deiner Signatur kaputt ist, da fehlt ein "w" beim "www".
Benutzeravatar
kimmi
Moderator
Beiträge: 1405
Registriert: 26.02.2009, 09:42
Echter Name: Kim Kulling
Wohnort: Luebeck
Kontaktdaten:

Re: Assimp-News

Beitrag von kimmi »

Ups, das stimmt. Ich habe den Fehler beheben können. Call me an engineer :).

Vielen Dank für die Info!
Benutzeravatar
Aramis
Moderator
Beiträge: 1458
Registriert: 25.02.2009, 19:50
Echter Name: Alexander Gessler
Wohnort: 2016
Kontaktdaten:

Re: Assimp-News

Beitrag von Aramis »

Verspaetete Glueckwunsche zum Assimp-Sponsoring - sehr cool!
Benutzeravatar
Krishty
Establishment
Beiträge: 8229
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Assimp-News

Beitrag von Krishty »

http://assimp.sourceforge.net/ sagt, es würde auf assimp.org weiterleiten – wenn man den Link klickt, landet man aber auf example.com ;)

Kim, der Link auf deine Webseite im Point-Cloud-Support-Artikel des Assimp-Blogs ist auch kaputt!
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Krishty
Establishment
Beiträge: 8229
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Assimp-News

Beitrag von Krishty »

aiGetLegalString() meldet noch 2017 :)
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Schrompf
Moderator
Beiträge: 4838
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: Assimp-News

Beitrag von Schrompf »

Ein weiteres schönes Beispiel, warum Copyright-Meldungen so richtig dämlich sind.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Benutzeravatar
Krishty
Establishment
Beiträge: 8229
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Assimp-News

Beitrag von Krishty »

Bekomme ich aus dem COLLADA-Loader die neue ZAE-Unterstützung raus? Ich habe hier eine auf DAE abgespeckte Version, und durch die neue Abhängigkeit vom ZipArchiveIOSystem muss ich nun bedeutend mehr Code warten …
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
kimmi
Moderator
Beiträge: 1405
Registriert: 26.02.2009, 09:42
Echter Name: Kim Kulling
Wohnort: Luebeck
Kontaktdaten:

Re: Assimp-News

Beitrag von kimmi »

Wenn dass wohl zunächst nur durch eigenes Handanlegen. ich bin gewissermassen zu mit Arbeit :).

Gruß Kim
Antworten