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

Aktuelle Zeit: Fr Jul 18, 2025 04:15

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



Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Do Okt 13, 2011 15:12 
Offline
DGL Member
Benutzeravatar

Registriert: Di Apr 29, 2008 18:56
Beiträge: 1213
Programmiersprache: Delphi/FPC
Hey,

ich hab ein seltsames Problem bei dem ich nicht recht weiter weiß. Ich denke ich hab irgenwo einen Denkfehler, aber ich find einfach keinen Ansatzpunkt. Ich habe mehrere Objekte, zu den Objekten Speicher ich ein Matrix in folgender Form:
Code:
  1. TgluVector4f = array[0..3] of glFloat;
  2. TgluMatrix4f = array[0..3] of TgluVector4f;

Wenn ich der Matrix jetzt folgende Werte gebe:
Code:
  1. 1.0  0.0  0.0  0.0
  2. 0.0  1.0  0.0  0.0
  3. 0.0  0.0  1.0  0.5
  4. 0.0  0.0  0.0  1.0
dann erwartet man doch, das sich das Objekt um 0.5 Einheiten in Richtung der pos. Z-Achse im aktuellen Koordinatensystem verschiebt, oder? Mein Objekt wird aber immer doppelt so weit verschoben. So ruf ich das ganze zum Zeichnen auf:
Code:
  1. procedure TRenderForm.RenderNode(Node: PVirtualNode);
  2. var
  3.   Data: PglObject;
  4.   Child: PVirtualNode;
  5. begin
  6.   if Assigned(Node) then begin
  7.     Data := ObjectsVST.GetNodeData(Node);
  8.     glPushMatrix;
  9.     if Assigned(Data) and Assigned(Data^) then begin
  10.       glMultMatrixf(Data^.MatrixPtr);
  11.       if Data^.IsDrawObj then
  12.         (Data^ as TglDrawObject).Render;
  13.       Data^.RenderHelpLines;
  14.     end;
  15.  
  16.     Child := Node^.FirstChild;
  17.     while Assigned(Child) do begin
  18.       RenderNode(Child);
  19.       Child := Child^.NextSibling;
  20.     end;
  21.     glPopMatrix;
  22.   end;
  23. end;
Hat jmd ne Idee was ich da falsch mach, oder wo genau ich nach dem Fehler suchen könnte?

MfG & Thx Bergmann.

_________________
Aktuelle Projekte: BumpMapGenerator, Massive Universe Online
Auf meiner Homepage gibt auch noch paar Projekte und Infos von mir.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do Okt 13, 2011 18:35 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Das glMultMatrixf soll sich auch auf RenderNode(Child) auswirken, ja? Würde die doppelte Verschiebung erklären, einmal vom Eltern-Objekt und einmal vom Objekt selbst.

Es ist häufig einen Versuch Wert einfach mal die Matrix zu transponieren, also:
Code:
  1. 1.0  0.0  0.0  0.0
  2. 0.0  1.0  0.0  0.0
  3. 0.0  0.0  1.0  0.0
  4. 0.0  0.0  0.5  1.0

Ggf. werden nämlich bei der Übergabe an OpenGL Zeilen und Spalten vertauscht.

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do Okt 13, 2011 20:54 
Offline
DGL Member

Registriert: Do Mär 05, 2009 20:17
Beiträge: 284
Wohnort: Kaiserslautern
ich hatte mal was ähnliches, da war mir bei jedem zweiten rendern ein loadidentity abhanden gekommen - aber sowas dämliches passiert bestimmt nur mir mit meinem stümper-coding :shock:


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do Okt 13, 2011 23:18 
Offline
DGL Member
Benutzeravatar

Registriert: Di Apr 29, 2008 18:56
Beiträge: 1213
Programmiersprache: Delphi/FPC
Hey,

hab den Fehler. Ich Idiot hab einma in der RenderNode-Methode (siehe oben) multipliziert und dann gleich nochma in der Render-Methode des Objekts -.-
Manchmal sieht man echt den Walt vor lauter Bäumen nicht^^

MfG Bergmann.

_________________
Aktuelle Projekte: BumpMapGenerator, Massive Universe Online
Auf meiner Homepage gibt auch noch paar Projekte und Infos von mir.


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 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.007s | 14 Queries | GZIP : On ]