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

Aktuelle Zeit: Di Jul 15, 2025 07:22

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



Ein neues Thema erstellen Auf das Thema antworten  [ 8 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Wasseroberfläche
BeitragVerfasst: So Jul 03, 2011 17:24 
Offline
DGL Member

Registriert: Do Apr 22, 2010 17:17
Beiträge: 543
Hallöchen,

ich bin gerade dabei Wasseroberflächen zu implementieren. In meiner Simulation können Pools aber auch große Seen angelegt werden. Ich wusel mich auch grad durch das Wassertutorial, allerdings werden da die Wellen ja nur durch die Bumpmap simuliert. Das hab ich aktuell auch mit 2 maps die jeweils in gegengesetzter Richtung laufen realisiert. Sieht von weiten ok aus. Wie aber bekomm ich ein wirkliches Wellen Mesh? Ich hab auch schon gehört das man wenn man so ein Mesh hat, dieses noch mit aktueller Hardware mittels Tesselation verfeinern kann.

Hat sowas schon jemand realisiert?
Bei dem Tutorial hab ich z.b. auch ein Problem mit der Refraktions & Reflektions Textur. Wenn ich das richtig verstanden hab muss ich bei Reflektion aus "Sicht" der Wasseroberfläche mit 180° Rendern oder? Ich muss allerdings aufpassen, da bei mir auch mal 20 Pools irgendwo stehen können..

Grüße
Thomas


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Wasseroberfläche
BeitragVerfasst: So Jul 03, 2011 19:35 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 27, 2005 12:44
Beiträge: 393
Wohnort: Berlin
Programmiersprache: Java, C++, Groovy
Hallo Thmfrnk,

vielleicht könnte dir dazu dieses Tutorial weiterhelfen. Da ist noch keine Tesselation drin, aber vielleicht hilft es trotzdem weiter.

Viele Grüße
dj3hut1

_________________
Wenn Gauß heute lebte, wäre er ein Hacker.
Peter Sarnak, Professor an der Princeton University


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Wasseroberfläche
BeitragVerfasst: So Jul 03, 2011 20:20 
Offline
DGL Member

Registriert: Do Apr 22, 2010 17:17
Beiträge: 543
steig da nich wirklich durch, gibts da nichts fertiges? Man findet ja nun nicht sehr selten irgendwo wellen oder?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Wasseroberfläche
BeitragVerfasst: Mo Jul 04, 2011 00:50 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Dez 03, 2008 12:01
Beiträge: 167
Wohnort: /country/germany
Programmiersprache: C++ / FreeBASIC
Das "Vertex Shader Water" Sample aus dem nvidia-SDK 9.5 könnte da etwas für dich sein: http://developer.download.nvidia.com/SD ... rtex_water
Kann aber nix versprechen, hab nur kurz durch das SDK geblättert und was mit "Water" gefunden ;)

_________________
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst -- Steve Wozniak


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Wasseroberfläche
BeitragVerfasst: Mo Jul 04, 2011 13:44 
Offline
DGL Member

Registriert: Do Apr 22, 2010 17:17
Beiträge: 543
ich habe immernoch probleme mit meiner Reflektionstextur.. bekomme die einfach nicht korrekt auf die Wasserfläche projeziert.

Ich rendere die gesamte szene mit Scalef(1, -1, 1) (Y ist bei mir die höre) in ein FBO. Ich erzeuge mir dann folgende Matrix für die Textur, diese übergebe ich dann als "TexMat":
Code:
  1.  
  2.    glMatrixMode(GL_TEXTURE);
  3.     glPushMatrix;
  4.     glLoadIdentity;
  5.      glTranslatef(0.5, 0.5, 0);
  6.      glScalef(0.5, 0.5, 0);
  7.      gluPerspective(60, Width/ Height, 0.2, 200);
  8.      glMultMatrixf(@CamMatrix);  //Camera Operationen
  9.     glGetFloatv(GL_MODELVIEW_MATRIX, @m);
  10.     glPopMatrix;
  11.     glMatrixMode(GL_MODELVIEW);
  12.  


Im Shader mach ich dann einfach:
Code:
  1.  
  2.  reflectCoord = TexMat * gl_TexCoord[0];
  3.  


doch die Textur ist immer verzerrt und entspricht nicht der wirklichen Reflektion..
Was mach ich falsch?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Wasseroberfläche
BeitragVerfasst: Mi Jul 06, 2011 07:40 
Offline
DGL Member

Registriert: Do Apr 22, 2010 17:17
Beiträge: 543
problem ist leider noch nicht gelöst..

Ich rendere die Szene mit Scalef(1, -1, 1) in mein FBO. Wie bekomme ich dann die Textur im Fragmentshader so transformiert das diese passend auf meine Wasseroberfläche passt? Gleiches brauch ich nämlich auch für die Refraction..


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Wasseroberfläche
BeitragVerfasst: Di Jul 12, 2011 09:36 
Offline
DGL Member

Registriert: Do Apr 22, 2010 17:17
Beiträge: 543
hat keiner ne Idee?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Wasseroberfläche
BeitragVerfasst: Fr Jul 15, 2011 14:48 
Offline
DGL Member

Registriert: Sa Nov 24, 2007 11:59
Beiträge: 116
Programmiersprache: FreePascal
Also in meinem Wasser berechne ich erstmal anhand der Bumpmap, die bei mir der Einfachheit halber noch nen Alphakanal für die Höhe hat, die "echte" Position des Wasser-Fragments. Das ist dann der vec3 Position.

Code:
  1. vec4 ReflectedPosition = gl_ModelViewProjectionMatrix * vec4(Position + normal * vec3(1.0, 0.0, 1.0), 1.0);
  2. vec4 Reflection = texture2D(ReflectTex, 0.5 + 0.5 * ReflectedPosition.xy / ReflectedPosition.w).rgb;


Es lässt sich sicherlich drüber streiten, ob die Art und Weise, das so zu berechnen, gut ist, aber hey, es funktioniert und die Texturmatrix
bleibt auch aus dem Spiel.

_________________
Bild


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


Wer ist online?

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