Seite 18 von 19

Re: Assimp - Brainstorming zum Release

Verfasst: 26.01.2013, 18:23
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.

Re: Assimp - Brainstorming zum Release

Verfasst: 02.02.2013, 14:55
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.

Re: Assimp - Brainstorming zum Release

Verfasst: 02.02.2013, 16:03
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.

Re: Assimp - Brainstorming zum Release

Verfasst: 06.02.2013, 14:59
von Aramis
Website ist aktualisiert (und die Website ist jetzt auch auf Github).

Re: Assimp - Brainstorming zum Release

Verfasst: 06.02.2013, 15:15
von Schrompf
Cool, Danke!

Re: Assimp - Brainstorming zum Release

Verfasst: 09.02.2013, 16:37
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

Re: Assimp - Brainstorming zum Release

Verfasst: 15.02.2013, 14:45
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.

Re: Assimp - Brainstorming zum Release

Verfasst: 22.02.2013, 18:30
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);

Re: Assimp - Brainstorming zum Release

Verfasst: 24.02.2013, 15:02
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.

Re: Assimp - Brainstorming zum Release

Verfasst: 16.03.2013, 16:19
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.

Re: Assimp - Brainstorming zum Release

Verfasst: 16.03.2013, 16:51
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.

Re: Assimp - Brainstorming zum Release

Verfasst: 16.03.2013, 21:04
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?)

Re: Assimp - Brainstorming zum Release

Verfasst: 17.03.2013, 17:22
von kimmi
Hat die schon wer eingepflegt? Ich habe das gerade probiert und musste feststelllen: alles schon drinn :).

Kimmi

Re: Assimp - Brainstorming zum Release

Verfasst: 18.03.2013, 10:32
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

Re: Assimp - Brainstorming zum Release

Verfasst: 27.03.2013, 13:55
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?

Re: Assimp - Brainstorming zum Release

Verfasst: 27.03.2013, 14:26
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.

Re: Assimp - Brainstorming zum Release

Verfasst: 27.03.2013, 16:18
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.

Re: Assimp - Brainstorming zum Release

Verfasst: 28.03.2013, 13:59
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

Re: Assimp - Brainstorming zum Release

Verfasst: 28.03.2013, 15:35
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

Re: Assimp - Brainstorming zum Release

Verfasst: 28.03.2013, 23:22
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.

Re: Assimp - Brainstorming zum Release

Verfasst: 29.03.2013, 14:24
von Aramis
So!

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

wenn kein Widerspruch kommt, wuerde ich das heute Abend hineinmergen.

Re: Assimp - Brainstorming zum Release

Verfasst: 29.03.2013, 14:44
von Schrompf
Go for it.

Re: Assimp - Brainstorming zum Release

Verfasst: 29.03.2013, 17:41
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.

Re: Assimp - Brainstorming zum Release

Verfasst: 29.03.2013, 18:05
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.

Re: Assimp - Brainstorming zum Release

Verfasst: 31.03.2013, 14:21
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.)

Re: Assimp - Brainstorming zum Release

Verfasst: 31.03.2013, 16:05
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 …

Re: Assimp - Brainstorming zum Release

Verfasst: 08.04.2013, 00:51
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.

Re: Assimp - Brainstorming zum Release

Verfasst: 08.04.2013, 17:29
von kimmi
Damit könnte man auch im BSP einiges an Attributen mit abbilden.

Gruß Kimmi

Re: Assimp - Brainstorming zum Release

Verfasst: 08.04.2013, 18:08
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.

Re: Assimp - Brainstorming zum Release

Verfasst: 21.04.2013, 15:11
von Aramis
CMake-Build fuer MSVC nutzt jetzt PCH + Multicore und braucht damit bei mir noch 30s (voller Rebuild auf RELEASE).