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
kimmi
Moderator
Beiträge: 1405
Registriert: 26.02.2009, 09:42
Echter Name: Kim Kulling
Wohnort: Luebeck
Kontaktdaten:

Re: Assimp-News

Beitrag von kimmi »

Ply-Loader Exception ist im aktuellen Master behoben.
Benutzeravatar
Krishty
Establishment
Beiträge: 8229
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Assimp-News

Beitrag von Krishty »

Sauber; alle meine PLYs laden jetzt! Nochmal besten Dank!
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 »

Kein Problem, das war ein Fehler im block-weisen Laden der ASCII-Files. Es folgt 4.0.1 ...
Benutzeravatar
xq
Establishment
Beiträge: 1581
Registriert: 07.10.2012, 14:56
Alter Benutzername: MasterQ32
Echter Name: Felix Queißner
Wohnort: Stuttgart & Region
Kontaktdaten:

Re: Assimp-News

Beitrag von xq »

Gibt es eigentlich eine offizielle Doku, wie ich mit Assimp eine Szene baue, sodass ich sie ordnungsgemäß exportieren kann? Ich scheitere grade grausam an den Texturen
War mal MasterQ32, findet den Namen aber mittlerweile ziemlich albern…

Programmiert viel in ⚡️Zig⚡️ und nervt Leute 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 »

Du kannst dem folgenden Dokument die grundlegenden Ideen entnehmen ( http://assimp.org/lib_html/usage.html ). Ansonsten gibt es die Unittests, die zu Testzwecken eigene Szene bauen.

Da ist aber noch Luft nach oben. Ich erstell mal ein Ticket, um einige Tutorials zu schreiben.
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 »

Ein erster Schuß für die glFT2.0-Export-Funktionalität ist nun in Assimp verfügbar. Das Ganze kann auf dem aktuellen Masterbranch eingesehen werden. Feedback wäre toll!

Viel Spass und happy Loading ...
Benutzeravatar
Krishty
Establishment
Beiträge: 8229
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Assimp-News

Beitrag von Krishty »

PLY kracht wieder gewaltig, und zwar immer in PlyLoader.cpp (522):
plycrash.png
plycrash.png (8.12 KiB) 8724 mal betrachtet
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 »

Danke, ich hab da was verschlimmbessert.
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 »

Sollte wieder behoben sein.
Benutzeravatar
Krishty
Establishment
Beiträge: 8229
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Assimp-News

Beitrag von Krishty »

Läuft; danke!
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 »

Habe das Ganze auch gleich per Unittest abgesichert, damit ich in Zukunft merke, wenn ich einen Loader kaputt mache. Allerdings ist das schon eine ganze Menge Arbeit. Zur Zeit gibt es da eine abstrakte Basisklasse, bei der im Test die Methoden importerTest und exporterTest implementiert werden müssen. Dazu werden nun noch Anzahl importierter Meshes, Vertices und Faces überprüft:

Code: Alles auswählen

class utPLYImportExport : public AbstractImportExportBase {
public:
    virtual bool importerTest() {
        Assimp::Importer importer;
        const aiScene *scene = importer.ReadFile( ASSIMP_TEST_MODELS_DIR "/PLY/cube.ply", 0 );
        EXPECT_EQ( 1u, scene->mNumMeshes );
        EXPECT_NE( nullptr, scene->mMeshes[0] );
        EXPECT_EQ( 8u, scene->mMeshes[0]->mNumVertices );
        EXPECT_EQ( 6u, scene->mMeshes[0]->mNumFaces );
        
        return (nullptr != scene);
    }

    virtual bool exporterTest() {
        Importer importer;
        Exporter exporter;
        const aiScene *scene = importer.ReadFile(ASSIMP_TEST_MODELS_DIR "/PLY/cube.ply", 0);
        EXPECT_NE(nullptr, scene);
        EXPECT_EQ(aiReturn_SUCCESS, exporter.Export(scene, "ply", ASSIMP_TEST_MODELS_DIR "/PLY/cube_test.ply"));

        return true;
    }
};
Falls da was schief geht, fällt es zukünftig also auf. Dazu gibt es noch eine Regressions-Testsuite, die gerade aber nicht läuft. Aber ich arbeite daran.
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 gibt es doch schon, oder? Zumindest wurde mir bei GitHub mit deinen letzten Check-Ins als kleines rotes Kreuz angezeigt, dass es PLY-Probleme mit der Coverage geben würde (40 % fail oder so) … bloß habe ich das erst nach dem Merge entdeckt ;)
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 »

Den IMporttest gab es schon, allerdings habe ich vergessen, die Parameter abzutesten ( in dem Unittest ).
Benutzeravatar
Krishty
Establishment
Beiträge: 8229
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Assimp-News

Beitrag von Krishty »

Ah okay!
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 »

Ich habe bezüglich der verschiedenen Language-Bindings mall eine Umfrage ins Leben gerufen. Es würde mich freuen, wenn Ihr da mal abstimmt, um die Relevanz der verschiedenen Bindings besser abschätzen zu können: https://www.patreon.com/posts/asset-importer-13907338
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 erst bemerkt, dass man zur Teilnahme bei Patreon angemeldet sein muß. Ich werde das Ganze mal auf der Website starten.
Benutzeravatar
Krishty
Establishment
Beiträge: 8229
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Assimp-News

Beitrag von Krishty »

C4D importiert mit falscher Orientierung.

Soweit ich das sehen kann, ist bei C4D X rechts, Y hoch, und Z in den Bildschirm hinein (left-handed). Die Dateidaten werden aber ohne Konvertierung nach Assimp übertragen und dort als right-handed behandelt.

Nachtrag: mein “fix” in void C4DImporter::InternReadFile:

    pScene->mRootNode = new aiNode("<C4DRoot>");
⇨   pScene->mRootNode->mTransformation.c3 = -1.0f; // transform left-handed to right-handed


… ich weiß aber gar nicht, ob Y/Z nicht auch getauscht werden müssen und wie das mit Texturen läuft usw. usf. Habe auch kein Cinema4D zum Testen hier. Ihr könnt das also sicher besser …
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 »

Der Blender-Import interpretiert das Koordinatensystem falsch, oder? Von 20 Blender-Dateien, die ich stichprobenartig herausgesucht habe, war bei 15 offensichtlich Z oben statt Y. Beim Rest hätte man drüber streiten können, wie es der Künstler ausgelegt hat.
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 »

Hatte ich gar nicht mehr auf dem Zettel, aber da war was, ja. Danke für den Hinweis! Mal sehen, ob ich das bald beheben kann.

Momentan versuche ich noch aus dem FBX-Transformationen schlau zu werden.
Benutzeravatar
Krishty
Establishment
Beiträge: 8229
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Assimp-News

Beitrag von Krishty »

FBX ist selten, oder? Seit letzter Woche crawle ich thingiverse, und unter den rund 320.000 Modellen, die ich bisher habe, waren vier FBX (dreimal binär, einmal Text). Die laden so weit ganz ordentlich.

Falls es dir hilft: Visual Studio kann ebenfalls FBX importieren; ich würde Microsoft zutrauen, die Referenzimplementierung lizensiert zu haben.

Nachtrag: Ja, unter Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\Extensions\Microsoft\VsGraphics liegt eine libfbxsdk.dll von Autodesk. Kannst also im Zweifel mit Visual Studio vergleichen.

————

X3D geht nicht, sobald Texturen drin sind. Attribute "url" in node <ImageTexture> has incorrect value. sobald eine Datei das hier enthält:

Code: Alles auswählen

<?xml version='1.0' encoding='UTF-8'?>
	<X3D profile="Immersive" version="3.1">
	<Scene>
		<Shape>
			<Appearance>
				<ImageTexture url='texture.png'/>
			</Appearance>
		</Shape>
	</Scene>
</X3D>
Ich habe gerade nicht die Spezifikation parat um zu prüfen, ob das korrekt ist; aber es kommt häufig vor und FreeWRL (gammeligster X3D-Loader der Welt) lädt es.
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 »

FBX wird oft angefragt. Und wenn ich hauptberuflich Assimp machen würde, wären die ganzen Bugs auch kein Problem :). Danke für den Bug-Report, das schaue ich mir auch mal an.

ich habe angefangen, unter https://www.patreon.com/assimp einen monatlichen Rückblick auf die Höhepunkte des aktuellen Masters zu schreiben.

Für August sieht das so aus: https://www.patreon.com/posts/asset-importer-14214732

Wenn Ihr Feedback für mich habt, nur zu.
Zuletzt geändert von kimmi am 05.09.2017, 09:08, insgesamt 1-mal geändert.
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 »

den 3D-Printer von thingiverse kenne ich :) ...
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:den 3D-Printer von thingiverse kenne ich :) ...
Welchen?
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 »

Den, den wir hier haben. Kenne den genauen Typen gar nicht.
Benutzeravatar
Krishty
Establishment
Beiträge: 8229
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Assimp-News

Beitrag von Krishty »

Ach ja, sie gehören zu MakerBot. Hat mit den Modellen dort aber nicht viel zu tun.
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 »

Ich weiß, war mir beim Besuch der Website nur gerade aufgefallen. FBX wird in dem Umfeld auf wenig benutzt. Aber beim Import von Modellern wird es öfter verwendet.
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 »

glFT2.0-Import und Export ist auf dem aktuellem Master: https://www.patreon.com/posts/14395686

Freuen uns über jegliche Form von Feedback. Dazu schlage ich mich noch immer mit FBX rum.
Benutzeravatar
Thoran
Establishment
Beiträge: 224
Registriert: 15.05.2009, 12:51
Wohnort: Stuttgart
Kontaktdaten:

Re: Assimp-News

Beitrag von Thoran »

Mal abgesehen davon, dass FBX eine API-Hölle ist, was ist Dein konkretes Problem?
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
kimmi
Moderator
Beiträge: 1405
Registriert: 26.02.2009, 09:42
Echter Name: Kim Kulling
Wohnort: Luebeck
Kontaktdaten:

Re: Assimp-News

Beitrag von kimmi »

Dass das Kurbelwellenproblem noch besteht. Die Welle wird nicht richtig platziert, da ich die Connnections der jeweiligen FBXNodes korrekt auslesen muss. Und das habe ich zwar auf meinem Stapel zu erledigender probleme, aber noch nicht angegangen.
Benutzeravatar
Krishty
Establishment
Beiträge: 8229
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Assimp-News

Beitrag von Krishty »

Diese Änderung in SIBImporter.cpp ist mir aufgefallen, Zeilen 187–204:

  std::vector<unsigned char> str;
  str.reserve(numWChars * 4 + 1);



  utf8::utf16to8(start, end, back_inserter(str));



  str[str.size()] = '\0'; //
!!!
  aiString result = aiString((const char *)&str[0]);

Das stinkt zum Himmel. Es könnte durch ein Schlupfloch sein, dass man hinter die Größe eines std::vector schreiben/lesen darf, so lange er ausreichend groß reserviert ist … aber ich würde mich auf keinen Fall darauf verlassen und das sollte in jedem Review erneut die Sirenen aufheulen lassen.

Könnt ihr aiString keinen Konstruktor mit begin und end statt Nullterminierung verpassen, um die Situation zu entschärfen? Mit std::string würde ich an der Stelle auch einfach std::string result(str.begin(), str.end()); schreiben, anstatt Nullen in dunkle Bereiche von Arrays zu schieben …

… oder ändert es zumindest zu str.push_back('\0'); … und zu str.data() statt &str[0] …

… und das Speicherleck bei Exceptions durch die umliegenden new/delete sollte auch deutlich sein.

(Ich meckere normalerweise nicht über sowas, aber der Code wurde frisch geändert – und wenn man ihn schon ändert, dann bitte richtig™. Mit *jeder* STL löst der Code sofort eine Assertion aus; das bedeutet, dass der Autor vor dem Hochladen kein einziges Mal einen Debug Build kompiliert hat.)
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Antworten