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

Aktuelle Zeit: Mi Jul 09, 2025 13:29

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



Ein neues Thema erstellen Auf das Thema antworten  [ 20 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: Do Aug 24, 2006 15:15 
Offline
DGL Member

Registriert: Do Mai 30, 2002 18:48
Beiträge: 1617
ich erspare dir lieber, wo diese demo divisionen verwendet ;-) man sollte es lieber gleich anders lernen..

aber zu den Optimierungen: Heightmaps eignen sich sehr gut um Frustum Culling auf Große Teile der Landschaft loszulassen - das würde schoneinmal sehr viel bringen. andererseits kann man mit LOD Techniken arbeiten. Also lass dich mal wirklich nicht von der grausamen FPS abschrecken, die wenn ich mich recht erinner sowieso auf einem P3 500 mit Savage 3 Grafik entstand (wobei darauf so einige Tutorias von DGL gebastelt wurden...). Also lieber nicht abschrecken lassen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Aug 24, 2006 20:20 
Offline
DGL Member

Registriert: Mi Mär 08, 2006 17:38
Beiträge: 153
Wohnort: Rümmelsheim (bei Bingen)
So. Bin jetzt dabei die zwei Tutorials erstmal zu verbinden.

Ich habe die Texture mit den ganzen errechneten schatten usw. getzt als GluInt gespeichert.
dann habe ich die Dreiecke aus Tutorial 1 gezeichnet, anhand eine HeightMap.
jetzt will ich sie überziehen

also mal angenommen wir teilen die map in 10*10 VIERECKE
dann würde es folglich gehen.

Code:
  1.  
  2. const
  3.   xCount := 10 ;
  4.   yCount := 10 ;
  5.  
  6. begin
  7. U:=1 / XCount;
  8. V:=1 / YCount;
  9.  
  10. for y:=0 to YCount-1 do
  11. begin
  12.   glPushMatrix;
  13.   for x:=0 to XCount-1 do
  14.   begin
  15.     glBegin(GL_QUADS);
  16.       glTexCoord2f(U*x,     V*(y+1));
  17.       glVertex3f(<egal>);
  18.       glTexCoord2f(U*x,     V*y);    
  19.       glVertex3f(<egal>);
  20.       glTexCoord2f(U*(x+1), V*y);    
  21.       glVertex3f(<egal>);
  22.       glTexCoord2f(U*(x+1), V*(y+1));  
  23.       glVertex3f(<egal>);
  24.     glEnd;
  25.     glTranslatef(1,0,0);
  26.   end;
  27.   glPopMatrix;
  28.   glTranslatef(0,0,-1);
  29. end;  
  30. end;
  31.  

so ähnlich habe ich das dann auch bei den Dreiecken versucht und nichts gescheites rausbekommen.

gibts das auch für Dreiecke. ich habs probiert und irgendwie klappts ned ^^
es müsste irgendwie hier reinpassen

Code:
  1.  
  2. procedure PaintHeightMap;
  3.   const
  4.     VertPos : Array[0..3] of Array[0..1] of Byte =
  5.       ((0,0),(0,1),(1,1),(1,0));
  6.   var
  7.     X,Z,I : LongInt;
  8.     Vertieces : Array[0..3] of TVertex;
  9.    TextCoords : array[0..3] of array[0..1] of Single ;
  10.  
  11.     procedure PaintTriangle(V1, V2, V3 : Integer);
  12.     var
  13.       Normale : TVertex;
  14.     begin
  15.       Inc(Triangles);
  16.       glBegin(GL_TRIANGLES);
  17.         glTextCoords2fv(@TextCoords[V1][0]);
  18.         glVertex3fv(@Vertieces[V1][0]);
  19.        glTexCoord2fv(@TextCoords[V2][0]);
  20.         glVertex3fv(@Vertieces[V2][0]);
  21. glTexCoord2fv(@TextCoords[V3][0]);
  22.         glVertex3fv(@Vertieces[V3][0]);
  23.       glEnd()
  24.     end; (*PaintTriangle*)
  25.  
  26.   begin
  27.  u := 1/MapResolution ;
  28.  v := 1/MapResolution ;
  29.     for X := 0 to MapResolution - 1 do
  30.       for Z := 0 to MapResolution - 1 do
  31.       begin
  32.       //für jedes Vertex TextCoord berechnen
  33.         for I := 0 to 3 do
  34.         begin
  35.           TextCoords[I][0] := u*(X + VertPos[I][0]);
  36.           TextCoords[I][1] := v*(Z + VertPos[I][1]);
  37.         end;
  38.         //Alle Vertieces erzeugen
  39.         for I := 0 to 3 do
  40.         begin
  41.           Vertieces[I][0] := (X + VertPos[I][0])/MapResolution*MapSize;
  42.           Vertieces[I][2] := (Z + VertPos[I][1])/MapResolution*MapSize;
  43.           Vertieces[I][1] := MapDaten[X + VertPos[I][0],Z + VertPos[I][1]]
  44.         end;
  45.         PaintTriangle(0,1,3);
  46.         PaintTriangle(1,2,3)
  47.       end
  48.   end; (*PaintHeightMap*)
  49.  


Also der Compiler hat nicht gemeckert aber es kam nur schrott raus (wenn was falsch wäre hab ichs grad beim abschreiben falsch gemacht ^^ )^^ :D
was ist falsch ?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Aug 25, 2006 13:41 
Offline
DGL Member

Registriert: Mi Mär 08, 2006 17:38
Beiträge: 153
Wohnort: Rümmelsheim (bei Bingen)
ok. Also ich hab die Lösung. Der Quelltext war richtig. Nur irgendwie war die Textur vom Speicher (1mb) zu groß ud wurd nicht richtig angezeigt.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Aug 25, 2006 15:03 
Offline
DGL Member

Registriert: Mi Mär 08, 2006 17:38
Beiträge: 153
Wohnort: Rümmelsheim (bei Bingen)
Ich nochmal.

Klappt jetzt alles. :)
eine frage hab ich noch. Zum Licht.
Ich hab jetzt eine Map, die schön beleuchtet ist mit schatten. Später will ich in meinem MapEditor zusätzlich noch statische Objekte auf meinem Terrain haben, wie z.b. Häuser, Brücken, Bäume ect. Der Schatten dieser Statischen Objekte kann dann gleich auf die LightMap(umgebungsTextur) gezeichtet werden.
dann kann ich mein Terrain ja mit weiteren Licht wie z.b. Fackellicht oder sowas beeinflussen.

Wann aber benutze ich Lightmaps via Blendfunktion ? für Licht erscheinen die mir im 3d bereich eher sinnlos, da diese nur 2d Licht erzeugen würden ? oder?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Aug 25, 2006 15:21 
Offline
Ernährungsberater
Benutzeravatar

Registriert: Sa Jan 01, 2005 17:11
Beiträge: 2068
Programmiersprache: C++
~clear~


Die Lightmaps haben ihre Berechtigung ;)
Wenn du deine Fackel in die Nähe eines Hauses stellst, ist die Gegend dort hell obwohl da ein Hausschatten sein sollte.
Wenn der Hausschatten in der Map schon einberechnet ist hättest du ein Problem. Mit dem Blending lässt du einfach über Shader blenden:
Code:
  1. Color = ( Colortextur1 + ( ColorBlendtextur * Distanzfackel / MaxDistanzfackel ) / 2;

Sollte hoffentlich funktionieren und das richtige machen ;)


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


Wer ist online?

Mitglieder in diesem Forum: Majestic-12 [Bot] 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 | 16 Queries | GZIP : On ]