Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Mo Jul 14, 2025 23:32

Foren-Übersicht » Programmierung » OpenGL
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 11 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Milkshape Formate einlesen
BeitragVerfasst: Do Okt 16, 2003 10:06 
Offline
DGL Member

Registriert: So Okt 12, 2003 14:53
Beiträge: 74
Hi

Ich wollte mal fragen ob jemand hier weiß wie irgend ein Format, dass man mit Milkshape abspeichern kann, aufgebaut ist. Also ohne Animationen oder so ich will es nur schaffen mit Milkshape eine sache zu erstellen und die mit OpenGL einzuladen, OHNE dafür vorgefertigte Units zu benutzen.

Also keinen Code sondern nur den Aufbau des Formates :roll:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Okt 16, 2003 10:22 
Offline
Fels i.d. Brandung
Benutzeravatar

Registriert: Sa Mai 04, 2002 19:48
Beiträge: 3830
Wohnort: Tespe (nahe Hamburg)
Das verstehe ich nicht so ganz, wenn Du keine vorgefertige Unit haben willst, mußt Du halt selbst schreiben. die SDK für MS3D zeigt alles über den Aufbau der Datei aus, den man wissen muss. Ansonsten haben Lith und ich mal einen Loader dafür geschrieben, den man ohne Probleme auch aufs Speichern beziehen kann. MS3D ist ein relativ simples format.

_________________
"Light travels faster than sound. This is why some people appear bright, before you can hear them speak..."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Okt 16, 2003 15:36 
Offline
DGL Member

Registriert: So Okt 12, 2003 14:53
Beiträge: 74
Thx. Aber gibt es auch irgendwo ne seite wo einfach genau steht wie das aufgebaut ist, denn bei dem c++ code blick ich nicht so gut durch. :cry:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Okt 16, 2003 15:48 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Ich hab meinen MS3D-Loader auf Basis dieses Tutorials geschrieben.Ist zwar C++,aber da das MS3D-Dateiformat wirklich sehr einfach ist,sollte sich das leicht umsetzen lassen.Die Einfachheit des Formates ist wohl auch daran "Schuld",das es kaum Dokumente zum Format an sich gibt.Sobald man die Struktur des Formates kennt,kann man die Daten quasi sequentiell aus der Datei laden.Im Gegensatz zu 3DS oder dem OBJ-Format ist MS3D wirklich sehr primitiv.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Okt 16, 2003 16:21 
Offline
DGL Member

Registriert: So Okt 12, 2003 14:53
Beiträge: 74
Hmkay. Das sieht schon besser aus. Vielen Dank.

Edit: Nur damit ich das richtig verstehe:
Also es sind hintereinander alle vertices gespeichert. Dannach alle Dreiecke, die auf die einzelnen Vertices verweisen, und dann gibt es nochmal diese Gruppen, die auf die Dreiecke verweisen, oder habe ich da was falsch verstanden :?:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Okt 16, 2003 17:16 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Der sequentielle Dateiaufbau sieht so aus :
# Header
# Vertices
# Dreiecke
# Gruppen
# Materialien
# Diverse Animationsinfos
# Joints

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Okt 16, 2003 17:30 
Offline
DGL Member

Registriert: So Okt 12, 2003 14:53
Beiträge: 74
k thx


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Okt 19, 2003 15:01 
Offline
DGL Member

Registriert: So Okt 12, 2003 14:53
Beiträge: 74
Verdammt. Ich hab jetzt mal versucht das umzusetzen, aber dabei gibt es schon ziemlich am anfang nen Fehler:

Code:
  1. type
  2.   MS3DHeader = record
  3.     ID: Array[1..10] of Char;
  4.     version: Integer;
  5.   end;
  6. //So steht das ja auch schon in der C++ Datei
  7.  
  8.  
  9. Datei := TFileStream.Create(FileName, fmOpenRead);
  10. Datei.ReadBuffer(Header, SizeOf(MS3DHeader));
  11. If (Header.ID <> 'MS3D000000') or (Header.version < 3) then
  12. begin
  13.         Showmessage('Keine gültige Milkshape 3D Datei.');
  14.         exit;
  15. end;
  16.  
  17. Showmessage(Header.ID);
  18. Showmessage(IntToStr(Header.version));
  19.  


Die ID ist richtig, aber als version zeigt der mir 26214400 an, und das kann ja nicht richtig sein.

Dann hab ich mal überlegt und anstatt Integer als Version hab ich Byte genommen, und dann hat der mir ne 4 angezeigt, was dann ja schon eher logisch ist. Aber dafür zeigt der mir dann beim nächsten schritt, auszulesen wie viele Vertices dass ding hat, ne 0 an, was auch nicht richtig ist.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Okt 19, 2003 15:04 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Probier mal statt
Code:
  1.   MS3DHeader = record
  2.     ID: Array[1..10] of Char;
  3.     version: Integer;
  4.   end;


Das hier :
Code:
  1.   MS3DHeader = packed record
  2.     ID: Array[1..10] of Char;
  3.     version: Integer;
  4.   end;


Das packed ist wichtig,da Delphi deinen Record sonst optimiert an der Word-Grenze ausrichtet und so ohne dein Zutun evtl. einige Sachen umstellt.Dadurch wird dieser Record auch nicht so wie es sein soll aus dem Puffer gelesen.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Okt 19, 2003 15:32 
Offline
DGL Member

Registriert: So Okt 12, 2003 14:53
Beiträge: 74
Thanks für diese übelst schnelle Antwort.
Ich dachte immer das packed bewirkt das das ganze optimiert wird :lol: .

Naja egal. Jetzt klappt das laden jedenfalls schonmal. Jetzt muss ich das nurnoch gerendert kriegen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Okt 25, 2003 13:57 
Offline
DGL Member

Registriert: So Okt 12, 2003 14:53
Beiträge: 74
Edit: Hat sich erledigt


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 11 Beiträge ] 
Foren-Übersicht » Programmierung » OpenGL


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 7 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:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.008s | 14 Queries | GZIP : On ]