Eigenes Modelformat erstellen
-
WIe meint ihr das mit dem Interpolieren beim Laden? Könnt ihr darauf mal näher eingehen?
Nochmal zum Texturieren: Ich werde dann erstmal versuchen einen .X -> MeinFormat Converter zu coden. Wenn jetzt ein Teil eine bestimmte Textur hat, dieser Teil jedoch aus verschieden großen Polygonen besteht, wie definiere ich da am besten die Texturkoordinaten? Wie könnte man sowas in einem Converter realisieren? Kann ich beim Konvertieren von .X -> Meins - aus der .X Datei herauslesen welche Vertizen welche Texturkoordinaten welcher Textur besitzen? Wenn das ginge wäre das klasse
Meint ihr ich schaffe das? In DirectX habe ich jetzt nich sooo viel Erfahrung, lebe mich aber sehr gut ein. In C++ bzw. WINAPI dagegen habe ich jahrelange Erfahrung
Kevin
-
Warum schreibst Du nicht einen eigenen .X-Loader?
Oder hast Du viele Sachen vor, in Dein Format zu packen, die in .X nicht reinkönnen?Zum Thema Interpolation:
Also Animationen speichert man normalerweise so:Zum Zeitpunkt 100 hat das Objekt eine Position von (100, 50, 0)
Zum Zeitpunkt 150 hat das Objekt eine Position von (410, 30, -10)
...Dasselbe auch für Rotation und Skalierung.
Wenn Du dann jetzt die Animation zum Zeitpunkt 120 auswerten willst, musst Du zwischen den beiden am nächsten liegenden Key-Frames (hier 100 und 150) interpolieren.
-
D.h. wenn ich Frame 125 will muss ich das Mittel ausrechnen aller Werte wie sie sich verändert haben? Was ist da Standart? Alle 50 Keyframes neues Objekt animieren? Und ich soll dann direkt beim Laden alle möglichen Keyframes in den Speicher laden?
-
Nochma meine Fragen zusammengefasst
1:
Ist es möglich aus einer .X Datei herauszufinden welche Polygone / Vertizen welche Texturkoordinaten haben und von welcher Textur. Sind auch die Normalvektoren noch auszulesen?
2:
Beim Interpolieren, soll ich da für alle möglichen Frames die Interpolierung beim Laden durchführen? Dass ich beim Laden bei einer Animation mit 100 Frames 100 mal veränderte Figuren im Speicher habe?
3: (doch eine mehr :))
Ist davon auszugehen dass jedes Frame gleich viele Vertizen besitzt? Somit wäre ein weiterer Indexbuffer nämlich überflüssig!Kevin
-
So, die Antworten zusammengefasst.
Surkevin schrieb:
Ist es möglich aus einer .X Datei herauszufinden welche Polygone / Vertizen welche Texturkoordinaten haben und von welcher Textur. Sind auch die Normalvektoren noch auszulesen?
Ja.
Surkevin schrieb:
Beim Interpolieren, soll ich da für alle möglichen Frames die Interpolierung beim Laden durchführen? Dass ich beim Laden bei einer Animation mit 100 Frames 100 mal veränderte Figuren im Speicher habe?
Nein.
Surkevin schrieb:
Ist davon auszugehen dass jedes Frame gleich viele Vertizen besitzt? Somit wäre ein weiterer Indexbuffer nämlich überflüssig!
Ja. Aber ein Indexbuffer reicht ohnehin.
Bye, TGGC
-
HI!
Danke für deine Antwort.Wie könnte ein Indexbuffer reichen, wenn er nicht mal wüsste welche Vertizen zu benutzen sind?
Also ist es sicher, dass die Polygone in den Animationsframs gleich bleiben?
Wie soll das mit dem Interpolieren denn realisiert werden? Das weiß ich leider nicht
Wäre nett wenn ihr mit da Tipps geben könntet.
Kevin
-
Es gibt verscheidene Strategien, wie man einen Indexbuffer für verschiedene "Tri-Setups" (z.b. LOD Stufen) nutzen kann. Am einfachsten wäre z.b. alles hintereinander, es sind aber auch komplizierte Sache mit überlappenden Teilen möglich.
Bye, TGGC
-
Aber wie funktioniert nun das mit der Interpolierung?
-
Vector_1 soll in 5 Schritten nach Vector_2 nterpoliert werden
Pseudocode:
for(i= 1;i <= 5;++i)
{
Vector_Interpoliert(i).x = Vector_1.x + (Vector_2.x - Vector_1.x)* i / 5 ;
Vector_Interpoliert(i).y = ...
}jetzt klar?
-
Jo, so dacht ichs mir. Einfach mit den Daten der Keyframes die richtige Posi errechnen. Aber wann soll ich nun die Posis interpolieren? Beim Laden oder wenn sie gebraucht werden?
Danke
Kevin
-
Kommt drauf an was du machst.
Hast du viele Models mit vielen Polygonen , dann kannst du angenehme Frameraten vergessen, wenn du es während des Rendern machst.
Wenn du es beim Laden machst, hast du zwar einen hohen Speicherbereich, aber angenehme Frameraten.Andersherum schadet es gar nix die Berchnung in Echtzeit zu machen, wenn du eh bloß zwei Low-Poly Models hast.
Deswegen macht man das ja auch besser mit Bone-Animation und Matrizen. Aber das führt zu weit.
Eventuell auch noch interessant ist das Vertex-Tweening, das Direct3D einem anbietet. Schau dir mal im SDK den Renderstate D3DRS_TWEENFACTOR und das drumherum an.
Damit lässt sich noch angenehm schnell mit Keyframes in Echtzeit interpolieren.
-
Erstmal Danke für die Auskunft!!!
Wie hast du das in deinem Modelformat realisiert? Hast du vielleicht ICQ FALLS
ich mal Fragen haben SOLLTE
Wäre klasseKevin
P.S.: Müsst ihr euch auch immer neu einloggen beim Forum obwohl ihr sagt immer eingeloggt bleiben?
-
Was ist ICQ FALLS?!?
EDIT: Axo... *batz*
P.S.: Nein, müssen wir nicht. Ggf. Cookies löschen.