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

Aktuelle Zeit: Mo Jul 07, 2025 05:57

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 2 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: Do Mär 20, 2003 15:11 
Offline
DGL Member

Registriert: Mi Okt 16, 2002 15:06
Beiträge: 1012
Tach,

ich hab mal ne frage, wie berechnet man die Plane eines Polygons am besten ?
ich hab das Planarmapping von Sos in meinem Editor mal angewendet und habe aber nen paar fehler bei den texture coordinaten, nicht jede fläche wird korrekt texturiert.

Code:
  1.  
  2.  
  3. type
  4.   r3D_Float = TGLFloat;
  5.  
  6.   TR3D_Vector3f = record
  7.     x, y, z: r3D_Float;
  8.   end;
  9.  
  10.   TR3D_PlaneSide = (psYZ, psXZ, psXY);
  11.  
  12.   TR3D_Plane = record
  13.     x,
  14.     y,
  15.     z,
  16.     d : r3D_Float;
  17.   end;
  18.  
  19. function PlaneContruct(va : array of TR3D_Vector3f) : TR3D_Plane;
  20. var
  21.   N : TR3D_Vector3f;
  22. begin
  23.   N := Normal(va);
  24.   Result.x := N.x;
  25.   Result.y := N.y;
  26.   Result.z := N.z;
  27.   Result.d := PlaneDistance(N, va[0]);
  28. end;
  29.  
  30. function PlaneSide(p : TR3D_Plane) : TR3D_PlaneSide;
  31. begin
  32.   if (Abs(p.x) > Abs(p.y)) and (Abs(p.x) > Abs(p.z)) then
  33.     Result := psYZ;
  34.   if (Abs(p.y) > Abs(p.x)) and (Abs(p.y) > Abs(p.z)) then
  35.     Result := psXZ;
  36.   if (Abs(p.z) > Abs(p.x)) and (Abs(p.z) > Abs(p.y)) then
  37.     Result := psXY;
  38. end;
  39.  
  40. function PlaneDistance(Normal, Point: TR3D_Vector3f) : r3D_Float;
  41. var
  42.   distance : r3D_Float;
  43. begin
  44.   distance := 0;
  45.   distance := - ((Normal.x * Point.x) + (Normal.y * Point.y) + (Normal.z * Point.z));
  46.   result := distance;
  47. end;
  48.  
  49. function Vector3(X,Y,Z: r3D_Float) : TR3D_Vector3f;
  50. begin
  51.   Result.x := X;
  52.   Result.y := Y;
  53.   Result.z := Z;
  54. end;
  55.  
  56. // *****************************************+
  57.  
  58. procedure PlaneBerechnen;
  59. var
  60.   Triangle : array [0..2] of TR3D_Vector3f;
  61.   VPlane : TR3D_Plane;
  62.   VPlaneSide : TR3D_PlaneSide;
  63. begin
  64.  
  65.   Triangle[0] := Vector3(-1.0,-1.0,0.0);
  66.   Triangle[1] := Vector3(0.0,1.0,0.0);
  67.   Triangle[2] := Vector3(1.0,-1.0,0.0);
  68.  
  69.   VPlane := PlaneContruct(Triangle;
  70.   VPlaneSide := PlaneSide(VPlane);
  71. end;
  72.  
  73.  


ist das so richtig, oder hab ich da nur wurst gecodet ??

matane,
Finalspace


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Mär 21, 2003 10:22 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Ich hab zwar schon Länger nix mehr in der Richtung gemacht, aber nach dem Durchgehen deines Quellcodes sind mir (bis auf ein paar kleine Rechtschreibfehler :P) keine Fehler aufgefallen.In meiner ZornGL-Engine berechne ich die Flächen der Dreiecke auf die selbe Art und Weise.Daran kanns bei dir also nicht liegen.

Poste deshalb vielleicht mal den Code den du zur Berechnung der Texturenkoordinaten benutzt.Ich vermute das dort der Fehler liegt.

P.S. : Ein Screenshot auf dem ein solches falsch texturiertes Dreieck zu sehen ist könnte auch hilfreich sein.

P.P.S. : Die Jungs von Delgine machens auch nach meiner Methode, und dort scheints tadellos zu funktionieren.

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


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


Wer ist online?

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