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

Aktuelle Zeit: Mo Jul 14, 2025 05:12

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



Ein neues Thema erstellen Auf das Thema antworten  [ 28 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: Mo Dez 02, 2002 16:01 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Sep 04, 2002 21:26
Beiträge: 63
Und was sind temp_vert und temp_face?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Dez 02, 2002 16:29 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 02, 2002 15:41
Beiträge: 867
Wohnort: nahe Stuttgart
Zitat:
wobei temp_face vom Typ PFaceList ist und temp_vert PPointList. Außerdem noch File3DS und Types3ds einbinden und dann solltests funzen. :wink:

Da hat er was dazu geschrieben.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Dez 02, 2002 17:17 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Sep 04, 2002 21:26
Beiträge: 63
Sorry, hab' ich übersehen :roll:

Ich weiß zwar nicht, wie es mit Materialien und Texture geht, ich habe aber eine Vermutung, wie es gehen müsste, es geht allerdings nicht: :wink:
Ich habe in die for-Schleife folgende Zeile eingebaut:

Code:
  1.  
  2.  
  3. GLColor3f(obj.Materials.Material[i].ambient.R,
  4.  
  5.                obj.Materials.Material[i].ambient.g,
  6.  
  7.                obj.Materials.Material[i].ambient.b);
  8.  
  9.  

Vielleicht kann damit ja jemand etwas anfangen, es geht bestimmt irgendwie so.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Dez 02, 2002 19:37 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Nov 02, 2002 18:06
Beiträge: 299
Wohnort: Dresden
Bei wir hat's auch ca. 2 Stunden gedauert, bis ich das raushatte. Für dein Problem hab ich glaube ich die Antwort. Die for Schleife geht ja obj.Objects durch. Aber Materials werden ja extra definiert, d.h du musst erst irgendwie alle Materials einlesen und dann muss es irgendwo unter obj.Objects.Mesh[i]... ein Verweiß auf das Material des Objektes geben (So stell ich mir das vor). Ich guck mir's nochmal an und sag sobald ich was rausgefunden habe.
P.S. Hoffe ich konnte es halbwegs ordentlich erklären.
P.S.S Ich stell mir das ganze so vor, kann aber auch falsch sein. Vielleicht kann man ja was aus dem Beispielprogramm ablesen.

_________________
"Ich würde ja gern die Welt verändern, aber Gott gibt mir den Quelltext nicht"


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Dez 03, 2002 16:31 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Sep 04, 2002 21:26
Beiträge: 63
Es gibt den Dateityp Pobjmatlist und die Eigenschaft
obj.Objects.mesh[i].MatArray, die von diesem Typ ist.
In dieser Eigenschaft stecken vermutlich die ganzen Daten, welches Material zu welchem Polygon gehört, ich weiß allerdings nicht, wie man die Daten herausholt. Aber vielleicht hilft es ja jemand anderem weiter.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Dez 03, 2002 17:50 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Nov 02, 2002 18:06
Beiträge: 299
Wohnort: Dresden
Ja, also ich hab mir das ganze noch mal genau angesehen und rausgekommen ist das:
Code:
  1. procedure TMainform.InitObj;
  2.  
  3. var i, j : WOrd;
  4.  
  5. var temp_vert : PPOintList;
  6.  
  7. var temp_face : PFaceList;
  8.  
  9. var materials : array of PMaterial3DS;
  10.  
  11. begin
  12.  
  13. ActivateRenderingContext(FDC, FRC);
  14.  
  15. glNewList(ObjList, GL_COMPILE);
  16.  
  17. obj := TFile3DS.Create;
  18.  
  19. obj.LoadFromFile('sword.3ds');
  20.  
  21. setLength(materials, obj.Materials.Count);
  22.  
  23. //setLength(textures , obj.Materials.Count);
  24.  
  25. for i := 0 to obj.Materials.Count - 1 do                            //Materials einlesen
  26.  
  27.   begin
  28.  
  29.   materials[i] := obj.Materials.Material[i];
  30.  
  31.   //textures[i] := TGLBMP.Create;
  32.  
  33.   //textures[i].LoadImage('textures' + materials[i].Texture.Map.Name);
  34.  
  35.   //textures[i].GenTexture(false, false);}
  36.  
  37.   end;
  38.  
  39. glBegin(GL_TRIANGLES);
  40.  
  41. for i := 0 to obj.Objects.MeshCount - 1 do
  42.  
  43.   begin
  44.  
  45.   for j := 0 to obj.Materials.Count - 1 do                        //Prüfen, ob das Material verwendet wird
  46.  
  47.     begin
  48.  
  49.     if obj.Objects.Mesh[i].MatArray[0].Name = materials[j].Name then        //Wenn ja, dann Farben benutzen
  50.  
  51.       begin
  52.  
  53.       {    Verarbeitung des Materials    }
  54.  
  55.       glColor3f(materials[j].Ambient.r, materials[j].Ambient.g, materials[j].Ambient.b);
  56.  
  57.       //Textures[j].Bind;
  58.  
  59.       end;
  60.  
  61.     end;
  62.  
  63.   temp_vert := obj.Objects.Mesh[i].VertexArray;
  64.  
  65.   temp_face := obj.Objects.Mesh[i].FaceArray;
  66.  
  67.   for j := 0 to obj.Objects.Mesh[i].NFaces - 1 do
  68.  
  69.     begin
  70.  
  71.     //glTexCoord2f(0, 0);
  72.  
  73.     glVertex3f(temp_vert[temp_face[j].V1].X, temp_vert[temp_face[j].V1].Y, temp_vert[temp_face[j].V1].Z);
  74.  
  75.     //glTexCoord2f(0, 1);
  76.  
  77.     glVertex3f(temp_vert[temp_face[j].V2].X, temp_vert[temp_face[j].V2].Y, temp_vert[temp_face[j].V2].Z);
  78.  
  79.     //glTexCoord2f(1, 0);
  80.  
  81.     glVertex3f(temp_vert[temp_face[j].V3].X, temp_vert[temp_face[j].V3].Y, temp_vert[temp_face[j].V3].Z);
  82.  
  83.     end;
  84.  
  85.   end;
  86.  
  87. glEnd;
  88.  
  89. glEnd;
  90.  
  91. glEndList;
  92.  
  93.  
  94.  
  95.  
  96.  
  97. DeActivateRenderingContext;
  98.  
  99. end;
  100.  
  101.  

Also : Es sind dort ein Paar Komantare drin, für's Einbinden von Texturen. Ich weiß nur nicht mehr, wo die U/V Koordianten gespeichert waren (hab's mal gefunden, find's jetzt aber nicht mehr). Das Ding kann bisher nur ein Material pro Objekt (weiß nicht ob überhaupt mehr geht). Das ganze ist vielleicht nicht die optimale Lösung, aber es ist eine.

_________________
"Ich würde ja gern die Welt verändern, aber Gott gibt mir den Quelltext nicht"


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Dez 04, 2002 17:03 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Sep 04, 2002 21:26
Beiträge: 63
Es muss aber mit mehreren gehen, im Beispielprogramm geht es ja auch :cry:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Dez 04, 2002 19:11 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Nov 02, 2002 18:06
Beiträge: 299
Wohnort: Dresden
Welchen Beipielprogramm, also soweit ich weiß kann jedes Polygon nur aus einem Material bestehen (kann ja eigentlich z.B. nur eine Farbe haben :?: ). Na ja, dass mit den Texturen hab ich auch schon hinbekommen, musste aber viel am Quelltext ändern. Wenn du willst kann ich dir das Prog mal per E-Mail zusenden.

_________________
"Ich würde ja gern die Welt verändern, aber Gott gibt mir den Quelltext nicht"


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Dez 05, 2002 14:33 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Sep 04, 2002 21:26
Beiträge: 63
-Beitrag gelöscht-


Zuletzt geändert von Mari am Do Mär 25, 2010 16:32, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Dez 06, 2002 18:22 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Nov 02, 2002 18:06
Beiträge: 299
Wohnort: Dresden
Also so schwer war's gar nicht, hat nur paar Stunden meine wertvollen Zeit gekostet :cry:
Es mal im Ernst: E-Mail auf dem Weg. Ich hab leider ein bisschen mit den Kommentaren gespart :oops: aber hoffe alles erklärt sich von selbst.
Außerdem kann es Fehler geben (bei einem Modell von mir gab's ohne Grund ein Error) und der Quelltext is sicher nicht perfekt.

_________________
"Ich würde ja gern die Welt verändern, aber Gott gibt mir den Quelltext nicht"


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Dez 10, 2002 13:23 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Sep 04, 2002 21:26
Beiträge: 63
-Beitrag gelöscht-


Zuletzt geändert von Mari am Do Mär 25, 2010 16:34, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Dez 10, 2002 14:49 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Nov 02, 2002 18:06
Beiträge: 299
Wohnort: Dresden
Welches Beispielprogramm? Und wie geht das im 3D Studio?

_________________
"Ich würde ja gern die Welt verändern, aber Gott gibt mir den Quelltext nicht"


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Dez 10, 2002 17:59 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Sep 04, 2002 21:26
Beiträge: 63
Zitat:
Welches Beispielprogramm?

Das Beispielprogramm, das beim 3ds-Loader dabei ist. Falls du es nicht hast:<a href='http://www.delphi-gems.com/3DS.php' target='_blank'>http://www.delphi-gems.com/3DS.php</a>
Zitat:
Und wie geht das im 3D Studio?
Wie man es in 3ds Max macht weiß ich nicht, da ich die Dateien mit Anim8or (Homepage:<a href='http://www.anim8or.com' target='_blank'>www.anim8or.com</a>) erstelle. Aber z.B. mit gmax, was ja eine Art 3ds Max ist geht es auch


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 28 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Foren-Übersicht » Programmierung » OpenGL


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 9 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 ]