Seite 3 von 19

Re: Assimp - Brainstorming zum Release

Verfasst: 08.08.2009, 01:34
von klickverbot
Assimp wird auf Linux (CMake) derzeit nicht fehlerfrei gebaut.

Einerseits funktionieren die Unit-Tests nicht, weil erstens die cppunit-Kopie im contrib-Verzeichnis nicht in den Include Path aufgenommen wird und sich zweitens die Boost-Workarounds auf GCC 4.3.4 anscheinend nicht kompilieren lassen (eine lange Liste wüster Fehlermeldungen wie »assimp/test/unit/BoostWorkaround/../../../include/BoostWorkaround/boost/tuple/tuple.hpp:155: error: class ‘boost::tuple<T0, T1, T2, T3, T4>’ is implicitly friends with itself«).

Andererseits wird in den CMakeLists zu assimp_cmd fix zu »comctl32.lib« und »Winmm.lib« gelinkt, die auf Linux natürlich nicht existieren. Der folgende Patch behebt das Probelm, assimp_cmd scheint weiter zu funktionieren. Mangels README oder zumindest einem funktionierenden »./assimp_cmd help« kann ich das aber nicht wirklich überprüfen.

Code: Alles auswählen

diff --git a/tools/assimp_cmd/CMakeLists.txt b/tools/assimp_cmd/CMakeLists.txt
index 79175a9..c680df6 100644
--- a/tools/assimp_cmd/CMakeLists.txt
+++ b/tools/assimp_cmd/CMakeLists.txt
@@ -69,8 +69,9 @@ IF( WIN32 )
                        "C:/Programme/Microsoft Platform SDK for Windows Server 2003 R2/Lib"
                DOC "Path to psdk"
        )
-ENDIF( WIN32 )

-# Link the executable to the Hello library.
-target_link_libraries ( assimp_cmd assimp ${DX9_LIBRARIES} comctl32.lib Winmm.lib  )
+       target_link_libraries ( assimp_cmd assimp ${DX9_LIBRARIES} comctl32.lib Winmm.lib )
+ELSE( WIN32 )
+       target_link_libraries ( assimp_cmd assimp )
+ENDIF( WIN32 )

Re: Assimp - Brainstorming zum Release

Verfasst: 08.08.2009, 16:57
von klickverbot
Aramis hat geschrieben:Ich setze morgen noch Infos über die Existenz eines offiziellen D-ports auf die Assimp-Seite, somit wäre ich da durchaus zuversichtlich.
Da ich einen Link zu http://assimp.sf.net auf ein paar D-Seiten gepostet habe, wäre es wohl geschickt, das so bald wie möglich zu tun…

Re: Assimp - Brainstorming zum Release

Verfasst: 08.08.2009, 18:06
von Aramis
Ich hab mal Links und Hinweis auf die HP gesetzt, ich hoffe du bist in der Form damit einverstanden. Morgen kann ich dann gerne noch Änderungen vornehmen ;)

Re: Assimp - Brainstorming zum Release

Verfasst: 08.08.2009, 18:23
von klickverbot
Aramis hat geschrieben:Ich hab mal Links und Hinweis auf die HP gesetzt, ich hoffe du bist in der Form damit einverstanden. Morgen kann ich dann gerne noch Änderungen vornehmen ;)
Ich habe gerade gemerkt, dass mir der Broweser-Cache einen Streich gespielt haben dürfte – sorry, falls die D-Bindings eh schon seit längerem erwähnt worden sind. :)

Edit: Ich würde den Hinweis zu D auf der »Documentation«-Seite fast auf »There's a README in the port/dAssimp directory« abändern, damit gleich ersichtlich ist, dass dAssimp ganz normal im SVN liegt. Geschmackssache…

Re: Assimp - Brainstorming zum Release

Verfasst: 08.08.2009, 19:11
von kimmi
Danke für den Linux-Patch. Ich habe das zugegebenermaßen aufgrund der Tatsache, daß ich auf meinem Developer-PC noch keine Linux-Installation habe, noch nicht unter Linux getestet. Ich bau erst mla deinen Patch ein und werde das dann noch mal etwas genauer testen.

Gruß Kimmi

Re: Assimp - Brainstorming zum Release

Verfasst: 22.08.2009, 01:03
von Aramis
Hoi,

Ein vielleicht etwas überaschender, weil völlig ungeplanter, zugleich etwas umfangreicherer Patch:
  • (Fast) alle textbasierten Loader kommen nun mit Unicode-Eingabedateien klar (UTF8, UTF16 LE/BE, UTF32 LE/BE). Alles wird nach UTF-8 konvertiert, zum Einsatz kommt die Referenzimplementierung des Unicode-Konsortiums (die ist nicht kompakt, funktioniert dafür aber äußerst zuverlässig).
  • Auch IrrXML verwendet nun den Unicode-Konverter anstelle eines simplen Typcasts.
  • aiString ist in der Dokumentation nun explizit als UTF-8 String markiert. aiString::length ist also nur noch die binäre Länge des Strings, wenn Multibyte-Sequenzen eingebettet sind ist die tatsächliche Länge des Strings entsprechend kürzer.
Alle diese Änderungen sind vollständig rückwärtskompatibel, wer bislang einen aiString als ASCII-Zeichenkette sah, kann dies auch in Zukunft machen, erhält für japanische Sonderzeichen dann aber naturgemäß nur Schrott :-)
Oben: korrektes Unicode-Handling, Unten: Alter Stand.
Oben: korrektes Unicode-Handling, Unten: Alter Stand.
Ich hab soweit es ging mit einer großen Anzahl an Modellen getestet, und konnte keine Probleme feststellen. Dennoch ist die Änderung weitgreifend und betrifft nahezu die Hälfte aller Loader ... ich bitte euch also, ebenfalls vorsorglich nochmals zu testen und auftretende Probleme zu melden bzw. einen revert durchzuführen (ich bin die nächsten Tage eventuell nur eingeschränkt am Internet)

- Alex

Re: Assimp - Brainstorming zum Release

Verfasst: 23.08.2009, 16:25
von Gelöschter Benutzer
Ich will jetzt hoffentlich nicht für Stress sorgen, aber mir ist da etwas aufgefallen :P.

Nach Doku erhält man die Materialeigenschaft mit:

Code: Alles auswählen

aiColor3D color (0.f,0.f,0.f);
mat->Get(AI_MATKEY_COLOR_DIFFUSE,color);
Ich hab das nun einfach mal 1 zu 1 angewendet:

Code: Alles auswählen

MeshMaterial(BSX::Main::DX10Device &Device, BSX::Main::DX10TextureList &TexList, const aiMaterial &Material)
{
	aiColor3D tmpColor(0.0f, 0.0f, 0.0f);

	// Get the material colors:
	Material.Get(AI_MATKEY_COLOR_AMBIENT, tmpColor);
	aiColorToFloat4(ColorAmbient, tmpColor);

// Und so weiter...
Warum kommt das?:

Code: Alles auswählen

error C2664: 'aiGetMaterialProperty' : cannot convert parameter 3 from 'unsigned int' to 'aiTextureType'
1>          Conversion to enumeration type requires an explicit cast (static_cast, C-style cast or function-style cast)
1>          g:\pumi\programmierung\bsgameengine\demo brute-force-terrain-indexed\bsmesh_material.h(110) : see reference to function template instantiation 'aiReturn aiMaterial::Get<aiColor3D>(const char *,unsigned int,unsigned int,Type &) const' being compiled
1>          with
1>          [
1>              Type=aiColor3D
1>          ]
IDE ist VC++ 2010. Es handelt sich um den aktuellsten trunk.

Re: Assimp - Brainstorming zum Release

Verfasst: 23.08.2009, 17:47
von Aramis
Sollte nun gefixt sein. Eigentliche Ursache war eine fehlende Templatespezialisierung für aiColor3D.
Danke für den Bugreport :-)

Re: Assimp - Brainstorming zum Release

Verfasst: 23.08.2009, 17:54
von Gelöschter Benutzer
Gern geschehen. Da ich mich gerade in die Bibliothek einarbeite werden mir bestimmt noch weitere Fehler auffallen, die ich dann einfach mal melden werde. Btw konnte ich mir mal das Materialsystem ansehen. Alles erstmal afaik ganz nett, außer diese Texturliste für verschiedene Dinge ;).

Re: Assimp - Brainstorming zum Release

Verfasst: 23.08.2009, 18:02
von Aramis
Da ich mich gerade in die Bibliothek einarbeite werden mir bestimmt noch weitere Fehler auffallen
Unmöglich! Unsere Schilde sind undurchdringlich!
Btw konnte ich mir mal das Materialsystem ansehen. Alles erstmal afaik ganz nett, außer diese Texturliste für verschiedene Dinge
Ja, vielleicht wäre eine wweitere Hierarchieebene in der Datenstruktur für Material-Texturen sinnvoll gewesen. Lässt sich nun aber nicht mehr ändern - aiMaterial::GetTexture() macht das ganze zudem völlig unsichtbar für den Anwender. Die langen Konstantenlisten existieren teils nur aus Kompatibilitätsgründen zur ersten Assimp-Beta - mit der ersten Major-Version nach diesem Release fliegen sie vermutlich raus :-)

Achja, mehrere Funktionsparameter von einem Mako übergeben zu lassen ist zugegebenermaßen auch nicht die feine Englische. Auch das war nötig um Rückwärtskompatibilität zu wahren, leider.

Re: Assimp - Brainstorming zum Release

Verfasst: 23.08.2009, 23:01
von Gelöschter Benutzer
Ist auch akzeptiert, dann eben nicht. Aber zu den Fehlern... also Gesetzeslücken findet man ja wohl immer :lol: !

Neuer PostPro Step

Verfasst: 28.08.2009, 09:08
von Jonathan
Mal ein Vorschlag, was man noch einbauen könnte:
Ein PostPro Flag, welches nicht genutze Bones bei Animationen entfernt.
Hauptsächlich fände ich das gut, um in de Lage zu sein, mehrere Animationen auf einem Objekt zu haben. Z.B. eine beliebige Lauf Animation für die Beine + eine Armanimation (damit man zum angreifen weder stehen bleiben muss, noch eine extra Laufangriff-Animation benötigt).
Ich meine, einige Exporter mögen das wohl direkt ordentlich liefern, aber eine ganze Menge bestimmt nicht. Daher fänd ich das als PostPro Schritt überaus sinnvoll.

Re: Assimp - Brainstorming zum Release

Verfasst: 28.08.2009, 10:46
von Aramis
Du meinst ein Step, der Bones, die von keiner Animation referenziert werden, entfernt?
Hauptsächlich fände ich das gut, um in de Lage zu sein, mehrere Animationen auf einem Objekt zu haben
Aber das ist doch möglich!? Die aiScene nimmt beliebig viele Animationen auf. Wenn eine Animation bestimmte Bones nicht braucht, so ist für diese meist auch kein (Dummy-)Eintrag in der aiAnimation enthalten. Oder stört dich genau dieses 'meist'?

Re: Assimp - Brainstorming zum Release

Verfasst: 28.08.2009, 12:41
von Jonathan
Ja, das "meist" ströt mich. Also wie schon erwähnt, ich habe meinetwegen eine Lauf- und eine Hauanimation. Jetzt will ich ein System programmieren, welches mehrere Animationen gleichzeitig abspielen kann und zwischen diesen interpoliert. Nur, wenn bei der Schlaganimation nur Arme bewegt werden, aber trotzdem die ganzen Keys für die Beine mit drin sind, würde ja Laufanimation ja nur mit halber Gewichtung abgespielt werden, die Beine würden sich also z.B. nur halb so weit wie eigentlich bewegen.
Oft hat man diese Anforderung ja nicht unbedingt, weil ein Modell z.B. nur eine Animation zur gleichen Zeit hat. Ich habe jetzt noch nicht so enorm viele Exporter getestet, aber bei Cal3D war es z.B. so, dass wenn man zum animieren IKs benutzt hat, der Exporter die Animation "baken" (mir fällt gerade echt kein passendes, deutsches Wort ein) musste, und man somit zu jedem Zeitpunkt für jeden Knochen einen Key hatte, wodurch das über- und zusammenmischen von Animationen sehr komische Ergebnisse lieferte.

Ich weiß nicht, wie viele Exporter das betrifft, aber ich meine, dass auch in Ogre Dateien für Knochen die eigentlich überhaupt nicht bewegt wurden zumindest eine handvoll Keys vorhanden waren.

Re: Assimp - Brainstorming zum Release

Verfasst: 26.09.2009, 11:09
von Aramis
Grade entdeckt:
assimp-doku hat geschrieben: By default, all 3D data is provided in a right-handed coordinate system such as OpenGL uses. In this coordinate system, +X points to the right, +Y points away from the viewer into the screen and +Z points upwards. Several modeling packages such as 3D Studio Max use this coordinate system as well. By contrast, some other environments use left-handed coordinate systems, a prominent example being DirectX. If you need the imported data to be in a left-handed coordinate system, supply the aiProcess_MakeLeftHanded flag to the ReadFile() function call.
Ich dachte, es sei das 'andere RH' (X-Up, Y-Right, Z-Back)? Stimmt da die Doku nicht, oder hat sich das geändert?

Re: Assimp - Brainstorming zum Release

Verfasst: 26.09.2009, 16:59
von Schrompf
Da ist die Doku veraltet. Wir haben das ja mal umgebaut, so dass das Standard-Koordinatensystem mehr dem entspricht, das die meisten zu erwarten scheinen. Das heißt: +X nach rechts, +Y nach oben, +Z zeigt aus dem Schirm heraus.

Re: Assimp - Brainstorming zum Release

Verfasst: 27.09.2009, 00:05
von Aramis
Gut, ich hab das dann mal in der Dokumentation korrigiert und werd' bei nächster Gelegenheit auch mal die Doku auf dem Server aktualisieren. Außerdem hab ich einen Herrn an der Angel der unseren Collada-Loader ausgiebig mit C4D plagt - ein Problem hat er schon gefunden, das dürfte jetzt aber gefixt sein.

Re: Assimp - Brainstorming zum Release

Verfasst: 04.10.2009, 18:48
von klickverbot
Ich habe die D-Bindings wieder einmal auf den aktuellen Stand gebracht. Gibt es eigentlich schon Neuigkeiten von der »aiGetMaterialProperty«-Front?

Re: Assimp - Brainstorming zum Release

Verfasst: 04.10.2009, 20:24
von kimmi
Ich bin gerade am Linuxbuild per CMake drann. Hoffe, bald etwas liefern zu können.

Gruß Kimmi

Re: Assimp - Brainstorming zum Release

Verfasst: 24.10.2009, 21:05
von Aramis
Hoi,

hauptsächlich interessant für die C# und Java-Bindings (beide, soweit mir bekannt, unfertig).

SWIG- Simplified Wrapper und Interface Generator.

Zuerst hatte ich enorme Zweifel, ob es hält, was es verspricht. Nachdem ich heute damit erfolgreich funktionstüchtige Python-Wrapper für mein komplettes Engine-API generieren konnte, zweifle ich nicht mehr sondern glaube nur noch. Beeindruckendes Tool ... erstellt selbst für verhältnismäßig komplexe C++-Konstruktionen (Smart-Pointer, Templates) passende Bindings. Mit den Assimp-Headern wären vermutlich nicht die geringsten Probleme zu erwarten. Getestet habe ich bislang aber, wie bereits erwähnt, nur das Python-Backend.

@klickverbot
Sorry, das ist irgendwie untergegangen .. :-)
Danke für deinen stetigen Einsatz die Bindings aktuell zu halten!
Gibt es eigentlich schon Neuigkeiten von der »aiGetMaterialProperty«-Front?
Leider nein .. es ist und bleibt ein Rätsel.

Re: Assimp - Brainstorming zum Release

Verfasst: 25.10.2009, 00:01
von klickverbot
Aramis hat geschrieben: Danke für deinen stetigen Einsatz die Bindings aktuell zu halten!

Leider nein .. es ist und bleibt ein Rätsel.
Naja, den »stetigen Einsatz« muss ich eigentlich nur leisten, weil ich bis jetzt zu faul war, einen Generator zu schreiben, der mir diese Aufgabe abnimmt. Ich werde mir einmal SWIG anschauen, vielleicht bekomme ich diesbezüglich etwas auf die Reihe. Dann würde es ja möglicherweise auch OOP-Bindings für D geben. ;)

Dass sich das aiGetMaterialProperty-Problem noch nicht aufgeklärt hat, verwundert mich mittlerweile ziemlich. Sollte es bis zum Release ungelöst bleiben, müsste ich noch entsprechende Hinweise in der Dokumentation hinzufügen. Aber noch besteht ja Hoffnung … :)

Re: Assimp - Brainstorming zum Release

Verfasst: 26.10.2009, 09:41
von kimmi
Der Linuxbuild mit CMake geht übrigens. Ich habe noch einige kleinere Probleme mit dem Unittests und dem gcc, die kriege ich aber auch in den Griff.

Gruß Kimmi

Re: Assimp - Brainstorming zum Release

Verfasst: 15.12.2009, 08:47
von Aramis
-SConstruct aktualisiert, ConvertUTF.c fehlte.
Außerdem hab ich zwei weitere SCons-Parameter eingebaut: 'shared' und 'noboost'. Kimmi, ich glaube du nutzt doch auch SCons ... könntest du das bitte auch mal bei dir testen?

Re: Assimp - Brainstorming zum Release

Verfasst: 15.12.2009, 09:05
von kimmi
Ich benutze mittlerweile zwar mehr CMake, aber klar, ich teste das gern.

Gruß Kimmi

Re: Assimp - Brainstorming zum Release

Verfasst: 13.01.2010, 22:25
von Aramis
Vielleicht sollten wir die Installerfrage lieber hier auf Deutsch ausdiskutieren. Nochmal meine Meinung dazu: ein MSI-Installer für's SDK und AssimpView-Binärpackage wäre meiner Meinung nach eine nützliche Sache ...

Was der Threadposter aber, wenn ich es richtig im Kopf hab, meinte war das 'install'-Target für Unixoide ... sollten wir auch für den MAKE-Build wohl mal einführen.
PS: http://wasaproject.net16.net/?p=175#more-175 - zufällig gefunden, nette Sache.

Re: Assimp - Brainstorming zum Release

Verfasst: 14.01.2010, 10:14
von kimmi
Unter dem normalen Make bäuchten wir dann ein Install-Target, daß nach /usr/lib ( oder etwas ähnliches ) die Lib und unter usr/include/ die Include hinterlegt. Für Windows würde ich unter Programme etwas ähnliches als Default hinterlegen. Ich muss mal schauen, was cmake da alles kann. Wenn die auch Workspaces für MSI'a ausspucken: toll. Ansonsten fällt mir für Windows noch WXI ein.

Gruß Kimmi

Re: Assimp - Brainstorming zum Release

Verfasst: 19.01.2010, 18:15
von Aramis
Kann es sein, dass die OBJ-Spinne seit den letzten Patches anders aussieht? Die Textur an den Beinen wirkt merkwürdig verzerrt und ist außerdem gelb.

Re: Assimp - Brainstorming zum Release

Verfasst: 19.01.2010, 19:10
von kimmi
Hm, das kann muß ich mal checken.

Gruß Kimmi

Re: Assimp - Brainstorming zum Release

Verfasst: 20.01.2010, 09:46
von kimmi
In der Tat ist da ein Problem eingeführt worden. ICh habe dementsprechend folgende Punkte gerade offen:
  • 1. Installationstarget: Im GNU-Makefile und im CMake
    2. Obj-Loader: Ergebnisse zwischen Validate und real existierendem Modell unterschiedlich.
    3. Obj-Loader: Parsing-Problem auf Mac
    4. Obj-Loader: Scheinbar falsches Material
Ich denke, daß Punkt 2 und 3 am selben problem hängen.
Wenn der Schnee mich mal früher nach Hause kommen lässt, lege ich da los.

Gruß Kimmi

Re: Assimp - Brainstorming zum Release

Verfasst: 20.01.2010, 10:06
von Schrompf
Von meiner Seite offen ist:

- Collada - MotionCaptureROM.dae sieht animiert seltsam aus. Das ging früher mal... was ist da passiert?

und eigentlich auch noch:

- Milkshape3D-Support
- FBX-Support

Die letzteren beiden wird's aber wohl nicht geben. Dazu hab ich einfach so schon zu viel um die Ohren. Nur leider wären das zwei recht wichtige Formate... FBX sogar sehr wichtig, wenn man die sonstige Tool-Unterstützung dafür betrachtet. Grmpf.

Bye, Thomas