Aktuelle Zeit: 28.03.2024, 09:41

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 1 Beitrag ] 
Autor Nachricht
 Betreff des Beitrags: DBO-Plugin
BeitragVerfasst: 20.04.2014, 06:05 
Offline

Registriert: 20.04.2014, 05:16
Beiträge: 1
Hallo zusammen,
ich versuche grade ein Plugin zuschreiben worüber es möglich ist DBO-Dateien zuladen.
Wer nicht weiß wofür DBO steht:
- DBO steht für DarkBasicObject und kommt von TGC ( The Game Creators ).
- DBO-Dateien sind 2D/3D-Meshfiles ( Objektdateien )

Zurzeit kann ich DBO-Dateien laden aber ohne Animation und Effekte.
Die Klasse die das Format läd leitet von IMeshLoader ab und wird in SceneManager registriert.
Bis dahin geht auch alles wunderbar.

Nun stehe ich vor den Problem das ich die Animationen nicht in das Mesh bekomme,
dazu habe ich mir mal die Klasse CSkinnedMesh angeschaut und ist für die auswahl der benötigten Animationmöglichkeiten die beste wahl.

Info zu DBO-Animationstruktur:
Code:
struct sRotateKey
{
     uint64                 dwTime;     // time value
     D3DXQUATERNION Quaternion; // quaternion 4d vector
};

struct sPositionKey
{
     uint64 dwTime;                            // time value
     D3DXVECTOR3 vecPos;                  // position
     D3DXVECTOR3 vecPosInterpolation; // interpolation
};

struct sScaleKey
{
     uint64 dwTime;                               // time value
     D3DXVECTOR3 vecScale;                  // scale
     D3DXVECTOR3 vecScaleInterpolation; // interpolation
};

struct sMatrixKey
{
     uint64          dwTime;             // time
     D3DXMATRIX matMatrix;          // matrix
     D3DXMATRIX matInterpolation; // interpolation
};
// Animationstruktur
struct sAnimation
{
    sAnimation();
    ~sAnimation();
    char             szName[MAX_STRING]; // name

    uint64           dwNumPositionKeys;  // number of position keys
    uint64           dwNumRotateKeys;   // number of rotation keys
    uint64           dwNumScaleKeys;     // number of scale keys
    uint64           dwNumMatrixKeys;    // number of matrix keys
    uint64           bBoneType;          // type of bone

    int*              piBoneOffsetList;       // offset list
    int                iBoneOffsetListCount; // count of offset list   
    int                iBoneFrameA;           // index a
    int                iBoneFrameB;           // index b

    sPositionKey* pPositionKeys;         // position keys
    sRotateKey*   pRotateKeys;      // rotate keys
    sScaleKey*    pScaleKeys;         // scale keys
    sMatrixKey*   pMatrixKeys;      // and finally matrix keys
    sAnimation*   pNext;                   // next animation

    D3DXMATRIX**  ppBoneFrames;     // matrix frame
    sFrame*       pFrame;                 // internal
};


Diese Strukturen sind für das DBO Objekt.
Nach langen hin und her muste ich feststellen das fast alle Objekte egal ob X oder DBO Datei sMatrixKey Struktur verwenden und nicht die anderen drei.
Ich weiß nicht ob ich aus der Matrix die Pos, Rot und Scale Werte herausholen soll und ob es überhaupt was bringt diese in irrlicht auf die Pos-, Rot- und ScaleKey Strukturen zusetzen.
Leider finde ich auch nichts im Internet was mir weiterhelfen könnte auch nicht im Offi-forum.

Auch der Tipp mir die Meshloader-Klassen in Source von Irrlicht anzuschauen hat mich mehr verwirrt als alles andere.

Also wie oben bereite erwähnt kann man Statiche Objekte laden und mein nächster schritt soll es sein die Animation einzubetten und danach die Effekte.

Zum Punkt Animation:
Wie kann ich die Informationen aus der DBO Struktur anbesten in Irrlicht umsetzen und auf das Objekt setzen.
- Codeauszüge würden helfen.

Info noch am rande:
Die gesetzten Daten lese ich über den Debugger aus mit anderen Worten ich lasse mich schritt für schritt mit hilfe des Debuggers durch die Objektstrkturen leiten um zusehen was gesetzt wurde und was nicht.
Auf dieser Art und weise habe ich auch das DBO-Format "Studiert" und die Strukturen auf´s minimalste reduziert so das nur das wichtigste drin vorkommt.

Und bitte fragt mich jetzt nicht warum ich DX-Strukturen verwende!
Die Antwort lautet: Ich werde es später alles durch die Klassen und Strukturen von Irrlicht ersetzen wenn es funktioniert.


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 1 Beitrag ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de