Assimp - Brainstorming zum Release

Hier kann über allgemeine Themen diskutiert werden, die sonst in kein Forum passen.
Insbesondere über Szene, Games, Kultur, Weltgeschehen, Persönliches, Recht, Hard- und Software.
Benutzeravatar
Aramis
Moderator
Beiträge: 1458
Registriert: 25.02.2009, 19:50
Echter Name: Alexander Gessler
Wohnort: 2016
Kontaktdaten:

Re: Assimp - Brainstorming zum Release

Beitrag von Aramis »

Sehr schön! Wie weit bist du eigentlich mit der Blender/Assimp-Integration gekommen?
Im Prinzip ist der Code voll einsatzbereit, ich muss mich nur mal ums Zurueckmergen kuemmern :-)

Mr.S:

du hast natuerlich Recht, die Website ist nicht auf dem neuesten Stand. Wir muessen auch immer noch den git->svn mirror einrichten.
Benutzeravatar
Aramis
Moderator
Beiträge: 1458
Registriert: 25.02.2009, 19:50
Echter Name: Alexander Gessler
Wohnort: 2016
Kontaktdaten:

Re: Assimp - Brainstorming zum Release

Beitrag von Aramis »

CaptureAssimpStats.PNG
Es besteht kein Zweifel: wir werden immer populaerer. Mittlerweile bringt die durchschnittliche Woche 800 Downloads, Zugriffe ueber Package-Repositories sind ohnehin unzaehlbar.
Mr. S
Beiträge: 27
Registriert: 09.06.2011, 09:06

Re: Assimp - Brainstorming zum Release

Beitrag von Mr. S »

Aramis hat geschrieben:du hast natuerlich Recht, die Website ist nicht auf dem neuesten Stand. Wir muessen auch immer noch den git->svn mirror einrichten.
Stellt doch einfach komplett auf GIT um. SVN muss ja nicht (mehr) sein.

Ich nutze es auch um DAE Dateien in Ogre-Meshs zu konvertieren.
Benutzeravatar
Aramis
Moderator
Beiträge: 1458
Registriert: 25.02.2009, 19:50
Echter Name: Alexander Gessler
Wohnort: 2016
Kontaktdaten:

Re: Assimp - Brainstorming zum Release

Beitrag von Aramis »

Website ist aktualisiert (und die Website ist jetzt auch auf Github).
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 - Brainstorming zum Release

Beitrag von Schrompf »

Cool, Danke!
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Mr. S
Beiträge: 27
Registriert: 09.06.2011, 09:06

Re: Assimp - Brainstorming zum Release

Beitrag von Mr. S »

Im commit f7680f7f287bbdee63f113946d90db182afa1498 ist ein Fehler in der IFCOpenings.cpp:

Code: Alles auswählen

2>  IFCOpenings.cpp
2>..\..\code\IFCOpenings.cpp(1191): error C2440: 'Initialisierung': 'boost::shared_ptr<T>' kann nicht in 'Assimp::IFC::TempMesh *' konvertiert werden
2>          with
2>          [
2>              T=Assimp::IFC::TempMesh
2>          ]
2>          Kein benutzerdefinierter Konvertierungsoperator verfügbar, der diese Konvertierung durchführen kann, oder der Operator kann nicht aufgerufen werden
2>..\..\code\IFCOpenings.cpp(1198): error C2440: '=': 'boost::shared_ptr<T>' kann nicht in 'Assimp::IFC::TempMesh *' konvertiert werden
2>          with
2>          [
2>              T=Assimp::IFC::TempMesh
2>          ]
2>          Kein benutzerdefinierter Konvertierungsoperator verfügbar, der diese Konvertierung durchführen kann, oder der Operator kann nicht aufgerufen werden
Anbei ein Bugfix, der zugleich auch noch die möglichen boost-Versionen aktualisiert.
assimp.txt
Boost update & bugfix
(1.4 KiB) 547-mal heruntergeladen
Mr. S
Beiträge: 27
Registriert: 09.06.2011, 09:06

Re: Assimp - Brainstorming zum Release

Beitrag von Mr. S »

Ich habe ein interessantes Projekt gefunden mit welchem man IGES/STEP/STL einlesen kann: http://sourceforge.net/apps/mediawiki/n ... =Main_Page

Vielleicht kann man ja die Library (Nglib) in Assimp integrieren.

Edit: Es gibt auch bei http://www.gcad3d.org/ noch Implementierungen für IGES/STEP/STL.
Benutzeravatar
CodingCat
Establishment
Beiträge: 1857
Registriert: 02.03.2009, 21:25
Wohnort: Student @ KIT
Kontaktdaten:

Re: Assimp - Brainstorming zum Release

Beitrag von CodingCat »

Ich bin gerade über die Namen von Materialien und Meshes in Collada gestolpert. Bisher werden da wohl einfach die IDs als Namen eingesetzt, welche meist mit höchst unschönen Postfixes versehen sind. Fix anbei. Ich muss mich unbedingt mal um git kümmern. :/

Code: Alles auswählen

// ColladaParser.cpp: ReadMaterialLibrary(...)
Material &material = mMaterialLibrary[id];

if (const char* name = mReader->getAttributeValue(GetAttribute("name")))
	material.mName = name;
else
	material.mName = id;

// create an entry and store it in the library under its ID
ReadMaterial(material);

// -----------------------------------------------------------------------------------

// ColladaParser.cpp: ReadGeometryLibrary(...)

// create a mesh and store it in the library under its ID
Mesh* mesh = new Mesh;
mMeshLibrary[id] = mesh;

if (const char* name = mReader->getAttributeValue(GetAttribute("name")))
	mesh->mName = name;
else
	mesh->mName = id;

// read on from there
ReadGeometry( mesh);

// -----------------------------------------------------------------------------------

// ColladaLoader.cpp: CreateMesh(...)
aiMesh* dstMesh = new aiMesh;
dstMesh->mName = pSrcMesh->mName;

// -----------------------------------------------------------------------------------

// ColladaLoader.cpp: BuildMaterials(...)
aiMaterial* mat = new aiMaterial;
aiString name( matIt->second.mName);
mat->AddProperty(&name,AI_MATKEY_NAME);
alphanew.net (last updated 2011-07-02) | auf Twitter | Source Code: breeze 2 | lean C++ library | D3D Effects Lite
Benutzeravatar
CodingCat
Establishment
Beiträge: 1857
Registriert: 02.03.2009, 21:25
Wohnort: Student @ KIT
Kontaktdaten:

Re: Assimp - Brainstorming zum Release

Beitrag von CodingCat »

Hm, die Dokumentation der Implementierungen von ColladaParser::GetAttribute und ColladaParser::TestAttribute ist genau verkehrtrum: Ersteres wirft, zweiteres gibt -1 zurück. Entsprechend muss es TestAttribute("name") heißen.
alphanew.net (last updated 2011-07-02) | auf Twitter | Source Code: breeze 2 | lean C++ library | D3D Effects Lite
Benutzeravatar
Jonathan
Establishment
Beiträge: 2352
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: Assimp - Brainstorming zum Release

Beitrag von Jonathan »

Ich habe gerade eben mal das git-Repo ausgecheckt, und direkt ein Problem gefunden:
Wenn man ASSIMP_NO_EXPORT einschaltet, sind in dermaterial.inl durch ein #ifndef eine ganze Menge Funktionen nicht definiert, die aber benutzt werden, so dass man massig Linkerfehler bekommt. Schaltet man den Export nicht aus, kompiliert es sauber durch.
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
Benutzeravatar
Jonathan
Establishment
Beiträge: 2352
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: Assimp - Brainstorming zum Release

Beitrag von Jonathan »

Und noch ein Bug: Durch einen Fehler im Ogre-Importer, den ich noch nicht gefunden habe, wird ein nullptr als Material in die Szene gepackt. Beim Post-Processing knallt es dann, bei mir aktuell im "RemoveRedundantMaterials", wenn in ComputeMaterialHash aus der MaterialSystem.cpp darauf zugegriffen wird.
Dort aber eine Abfrage zu machen, wäre aber wohl der falsche Weg, davor gibt es doch einen Validation-Step der sowas melden könnte oder so. Der Hauptfehler liegt natürlich beim Importer, aber wenn man schon so ein Postprocessing hat, ist das IMO sehr schön, wenn das mit jeder Szene funktioniert, und nicht einfach abstürzt.
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
Benutzeravatar
Jonathan
Establishment
Beiträge: 2352
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: Assimp - Brainstorming zum Release

Beitrag von Jonathan »

Ich hab gerade den Ogre.Loader gepatched. Ich hatte bei sourceforge einen Account, aber für github noch nicht. Daher verlinke ich mal den Patch, wäre nett, wenn den einer einpflegen könnte. (Wieso sind keine .patch Dateien beim Hochladen erlaubt?)
Dateianhänge
0001-Ogre-Material-nullptr-fix-Loader-is-hopefully-no-lon.txt
Assimp-Ogre Patch
(1.99 KiB) 502-mal heruntergeladen
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 - Brainstorming zum Release

Beitrag von kimmi »

Hat die schon wer eingepflegt? Ich habe das gerade probiert und musste feststelllen: alles schon drinn :).

Kimmi
Benutzeravatar
Jonathan
Establishment
Beiträge: 2352
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: Assimp - Brainstorming zum Release

Beitrag von Jonathan »

Aus der Assimp FAQ:
Is ASSIMP able to export models?
No. ASSIMP is an import library. It is intended to import assets, which have been exported from programs like 3ds max, into game engines or other realtime visualization systems. Normally you won't need to export the assets again. If you really need this feature, your're free to open a branch and start coding.
Ich denke, das sollte geändert werden :D
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
Benutzeravatar
Aramis
Moderator
Beiträge: 1458
Registriert: 25.02.2009, 19:50
Echter Name: Alexander Gessler
Wohnort: 2016
Kontaktdaten:

Re: Assimp - Brainstorming zum Release

Beitrag von Aramis »

Danke, das wird auch geaendert! :-)

Eine Frage hierzu:

https://sourceforge.net/tracker/?func=d ... id=1067634

der Patch fuegt ein Key-Value Metadata-Feld zu aiNode hinzu. An sich ziemlich ordentlich und durchaus nuetzlich (nicht nur fuer IFC). Von mir aus koennten wir das aufnehmen.

Wie steht ihr dazu?
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 - Brainstorming zum Release

Beitrag von Schrompf »

Grundsätzlich bin ich dafür. Ich mache mir allerdings Sorgen, dass das dann eine Standardbehandlung für alle möglichen Extradaten wird, die einfach nur ignoriert werden, weil man so mühsam rankommt. Wenn, dann müsste man sehr genau dokumentieren, was es alles für Metadaten gibt. Und bei unserem aktuell niedrigen Pflege-Niveau wird das wohl kaum kommen.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Mr. S
Beiträge: 27
Registriert: 09.06.2011, 09:06

Re: Assimp - Brainstorming zum Release

Beitrag von Mr. S »

kimmi hat geschrieben:Hat die schon wer eingepflegt? Ich habe das gerade probiert und musste feststelllen: alles schon drinn :).
Nicht komplett, die aktuelle boost Version ist 1.54, während in CMakeList.txt immer noch 1.51 als aktuellste Version angegeben ist.

Zu dem Meta-Patch: Grundsätzlich ist der Zugriff auf Metadaten eine nützliche Sache, da z. B. Suchmaschinen diese gerne durchsuchen. Ich würde das als undokumentierte Funktion nach und nach überall einbauen. Da Metadaten teilweise frei geschrieben werden können ist eine Dokumentation der verfügbaren Daten auch nur teilweise möglich.
Benutzeravatar
kimmi
Moderator
Beiträge: 1405
Registriert: 26.02.2009, 09:42
Echter Name: Kim Kulling
Wohnort: Luebeck
Kontaktdaten:

Re: Assimp - Brainstorming zum Release

Beitrag von kimmi »

Grundlegend dafür. ich würde zunächst einen sehr primitiven Ansatz vorgeben, um sondieren zu können, für wen das wirklich interessant ist. Ich vermute, dass das einige Rückmeldungen erzeuigen wird.
Wegen Boost: Danke für den Hinweis, ich ändere das.

Gruß Kimmi
Benutzeravatar
Thoran
Establishment
Beiträge: 224
Registriert: 15.05.2009, 12:51
Wohnort: Stuttgart
Kontaktdaten:

Re: Assimp - Brainstorming zum Release

Beitrag von Thoran »

Sorry, wenn das hie die falsche Stelle für mein Post ist. Ich habe auf der assimp.sf.net Seite im "Documents"Bereich versucht das README zu Python zu lesen und leider einen HTTP404-Fehler bekommen.
Der für das README angegebene Link ist: http://assimp.svn.sourceforge.net/viewv ... ision=HEAD
Wer Rechtschreibfehler findet, darf diese gerne behalten.
Mein Entwicklertagebuch
Aktuelle Projekte: Universum: Domination (ehemalig AlphaOmega),Universum: Sternenjäger, PixelWars: Highscore-based Top-Down-Spaceshooter
Spieleengine Unreal 5
Benutzeravatar
Aramis
Moderator
Beiträge: 1458
Registriert: 25.02.2009, 19:50
Echter Name: Alexander Gessler
Wohnort: 2016
Kontaktdaten:

Re: Assimp - Brainstorming zum Release

Beitrag von Aramis »

Oje, das muss auch mal aktualisiert werden! Es sollte natuerlich auf Github zeigen.

Ansonsten: ich hab die Metadata-Sache mal in einem separaten Branch hinzugefuegt. So sieht es aus:
https://github.com/assimp/assimp/tree/assimp-metadata

Morgen fuege ich den IFC-Teil ein und aktualisiere CMake. Danach wuerde ich vorschlagen, dass wir den Branch einfach mal hineinmergen.
Benutzeravatar
Aramis
Moderator
Beiträge: 1458
Registriert: 25.02.2009, 19:50
Echter Name: Alexander Gessler
Wohnort: 2016
Kontaktdaten:

Re: Assimp - Brainstorming zum Release

Beitrag von Aramis »

So!

https://github.com/assimp/assimp/pull/21

wenn kein Widerspruch kommt, wuerde ich das heute Abend hineinmergen.
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 - Brainstorming zum Release

Beitrag von Schrompf »

Go for it.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Mr. S
Beiträge: 27
Registriert: 09.06.2011, 09:06

Re: Assimp - Brainstorming zum Release

Beitrag von Mr. S »

Also der STEP-Reader funktioniert nicht.

Auf der Webseite von Rexroth (http://www.boschrexroth.de) kann man bei den Zylinderprodukten sich Zylinder konfigurieren und bekommt diese dann unteranderem als STEP- oder IGES-Datei zum Download. Ich kann die STEP-Dateien mit OpenCascade einlesen und natürlich mit der Autodesk-Produktpalette aber nicht mit ASSIMP.
Benutzeravatar
Aramis
Moderator
Beiträge: 1458
Registriert: 25.02.2009, 19:50
Echter Name: Alexander Gessler
Wohnort: 2016
Kontaktdaten:

Re: Assimp - Brainstorming zum Release

Beitrag von Aramis »

Assimp unterstuetzt kein STEP - es unterstuetzt IFC, das wiederum die STEP-Syntax nutzt.

D.h.: wir haben einen Parser fuer STEP-Dateien und eine fertige Implementierung eines sehr aehnlichen Formats, aber das STEP-Geometrieformat selber wird aktuell nicht unterstuetzt.
Benutzeravatar
Krishty
Establishment
Beiträge: 8229
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Assimp - Brainstorming zum Release

Beitrag von Krishty »

Wenn ich mich recht irre, umfasst auch die pure Referenz von STEP mehrere hunderttausend Seiten; und allein die im Standard vorgeschriebenen Standarddatenbeschreibungen sind schon 60.000 Zeilen vorverfasster Code. Zu der puren Datenbeschreibung kommt ja noch die Metadatenbeschreibung hinzu, weil auch, wie die Daten vorliergen, durch die Datei programmiert ist. Aus den hunderten Protokollen, die STEP umfasst (vom Produktentwurf mit Einzelschwerpunkten Schiffbau / Automobilbau / Flugzeugbau über Fertigung mit Schwerpunkten Metallbau / Elektrik bis zum 3D-Rendering der Produktwerbung) müsste man, sofern man nicht die gesamte Informatikinfrastruktur von Dassault nachprogrammieren will, die wichtigsten raussuchen und implementieren. Und dann das Glück haben, dass es auch Bosch-Rexroth-Zylinder abdeckt.

Ich tippe mal ins Blaue, dass vorgefertigte Lösungen nur für viel Geld und nicht im Quelltext verfügbar sind. Und wenn ein Einzelner das als Hobby implementieren muss, sollte er mindestens ein Jahr Arbeit einkalkulieren.

(Ich musste mal das STEP-Protokoll des Deutschen Stahlbauverbands implementieren, was mit 100 Seiten Spezifikation wirklich nur ein Popel ist. Dafür nötig waren unter anderem eine Datenbank mit Profiltypen (glaubt mal ja nicht, dass da Polygone in der Datei liegen!); CSG; Abschneiden solider Volumenkörper an Ebenen; usw usf. Sogar den Parser hat es mir zerschossen weil sie Schlüsselwörter eingeführt haben, in denen Operatoren vorkommen (!!!). Also viel Spaß, an wem auch immer das mal kleben bleiben wird.)
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Aramis
Moderator
Beiträge: 1458
Registriert: 25.02.2009, 19:50
Echter Name: Alexander Gessler
Wohnort: 2016
Kontaktdaten:

Re: Assimp - Brainstorming zum Release

Beitrag von Aramis »

Dafür nötig waren unter anderem eine Datenbank mit Profiltypen (glaubt mal ja nicht, dass da Polygone in der Datei liegen!); CSG; Abschneiden solider Volumenkörper an Ebenen
Genau das habe ich fuer unseren IFC-Loader (der auf Basis von STEP arbeitet) implementiert. Beziehungsweise versucht - der CSG-Teil funktioniert eher schlecht als recht, man koennte ihn auch als einen riesigen Hack bezeichnen. Sind locker 10kloc. Eine gute CSG-Lib mit kompatibler Lizenz existiert meines Wissens nicht. OpenCASCADE ist a) riesig und b) LGPL.

Die Tatsache, dass dieser Code bereits existiert und klassisches 3D/CAD-Step in etwa dieselben Primitiven wie IFC kennt, ist auch der einzige Grund, weshalb eine STEP-Implementierung in Assimp grundsaetzlich auch ohne externe Lib denkbar waere bzw. viel vorhandener Code genutzt werden koennte.

Um den ganzen Spass zu parsen benutzen wir einen Code-Generator, der die EXPRESS-Spezifikation in sehr templatelastiges C++ umsetzt. Das DOM-Erzeugen damit dann das kleinste Problem …
Benutzeravatar
Chromanoid
Moderator
Beiträge: 4254
Registriert: 16.10.2002, 19:39
Echter Name: Christian Kulenkampff
Wohnort: Lüneburg

Re: Assimp - Brainstorming zum Release

Beitrag von Chromanoid »

Aramis hat geschrieben:Danke, das wird auch geaendert! :-)

Eine Frage hierzu:

https://sourceforge.net/tracker/?func=d ... id=1067634

der Patch fuegt ein Key-Value Metadata-Feld zu aiNode hinzu. An sich ziemlich ordentlich und durchaus nuetzlich (nicht nur fuer IFC). Von mir aus koennten wir das aufnehmen.

Wie steht ihr dazu?
Nur am Rande, vielleicht kann man beim Blender-Import damit Custom Properties abfertigen. Das ist sicher nützlich. Allerdings unterstützt Blender mehr Datentypen, vielleicht kann man die Properties ja irgendwie als String darstellen.
Benutzeravatar
kimmi
Moderator
Beiträge: 1405
Registriert: 26.02.2009, 09:42
Echter Name: Kim Kulling
Wohnort: Luebeck
Kontaktdaten:

Re: Assimp - Brainstorming zum Release

Beitrag von kimmi »

Damit könnte man auch im BSP einiges an Attributen mit abbilden.

Gruß Kimmi
Benutzeravatar
Aramis
Moderator
Beiträge: 1458
Registriert: 25.02.2009, 19:50
Echter Name: Alexander Gessler
Wohnort: 2016
Kontaktdaten:

Re: Assimp - Brainstorming zum Release

Beitrag von Aramis »

Hoert sich gut an - eventuell finde ich naechstens mal Zeit fuer Blender-Props (oder hast du Lust?).

Ansonsten habe ich eben spontan Travis-CI an unserem Repository ausprobiert. Dabei handelt es sich um einen hosted CI-Dienst fuer OpenSource-Projekte, der fuer eine gegebene Matrix aus Build-Konfigurationen Repositories jeweils in eine frische VM klont, durchkompiliert und ggf. Tests ausfuehrt - und das nach jedem Commit ins Repos aufs Neue und auch als Vorschau beim Mergen von Pull-Requests. Im Fehlerfall kriege zumindest ich aktuell eine Mail. Ausserdem zeigt ein farbenfrohes Icon auf unserer Github-Startseite den zuletzt getesteten Buildstatus an.

Eingestellt hab ich mal clang und gcc mit ASSIMP_ENABLE_BOOST_WORKAROUND=YES - beide laufen durch, aber clangs Warnungen deuten auf einige handfeste Bugs hin.

Meiner Meinung nach eine nette Sache um in Zukunft schneller mitzukriegen wenn wir was kaputtmachen. Wenn ich Zeit dafuer finde, werde ich die ganze Testsuite darauf laufenlassen.
Benutzeravatar
Aramis
Moderator
Beiträge: 1458
Registriert: 25.02.2009, 19:50
Echter Name: Alexander Gessler
Wohnort: 2016
Kontaktdaten:

Re: Assimp - Brainstorming zum Release

Beitrag von Aramis »

CMake-Build fuer MSVC nutzt jetzt PCH + Multicore und braucht damit bei mir noch 30s (voller Rebuild auf RELEASE).
Antworten