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

Aktuelle Zeit: Fr Jul 18, 2025 11:47

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



Ein neues Thema erstellen Auf das Thema antworten  [ 10 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Texturen-Übergang
BeitragVerfasst: So Jul 03, 2005 23:42 
Offline
DGL Member

Registriert: Fr Jun 18, 2004 08:19
Beiträge: 14
Hallo,

kurze Frage, ich hab grad irgendwie ein Blackout :D
Ich will per Multi-Texturing zwischen 2 Texturen überblenden. D.h. ich habe ein Quad auf dem eine Textur liegen... nun soll ne Minute später ne andere Textur auf dem Quad liegen und, nicht einfach von der einen Sekunde auf die andere, sondern mit einem weichen Übergang, am besten mit einem Interpolations-Wert. Kann mir jemand helfen?

MfG
chicho83


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jul 04, 2005 00:06 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Da normalerweise die Alphakanäle fest sind, fällt mir spontan (ich bin aber auch bisl müde ;) ) nur Register Combiner ein. Keine Ahnung, ob das mit Atomraketen auf Spatzen schießen ist, aber alles andere kostet glaub ich viel mehr zeit. (dynamisch einen Alphakanal an die Textur hängen)

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jul 04, 2005 07:49 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Also via Multitexturing hat Flash recht. Die Alphakanäle stehen fest und die Farbe ist auch fest. Somit könntest du das nur mit Shadern oder einem dynamischen Alphakanal erledigen. Zu mindest kenne ich jetzt so spontan nichts anderes.

Ich würde da aber evtl. auch noch was anderes vorschlagen. Du könntest ja auch ein Multipassverfahren benutzen. Dabei wird die Fläche doppelt gezeichnet und mittels Blending wird entsprechend die Zweite ausgeblendet. Du kannst dann entsprechend direkt angeben wie sichtbar die andere Fläche sein soll. Also recht simpel alles.

Code:
  1. // Initialisierung von OpenGL
  2. glDepthFunc(GL_LEQUAL);
  3. glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
  4.  
  5.  
  6. // beim Rendern
  7. glEnable(GL_BLEND);
  8.  
  9. // Farbe 1. Alpha automatisch auf 1
  10. glColor3f(1, 1, 1);
  11.  
  12. fTexture1.Bind;
  13. glBegin (GL_QUADS);
  14.   glTexCoord2f(0, 1); glVertex3f(- 3, - 3, 0);
  15.   glTexCoord2f(1, 1); glVertex3f(  3, - 3, 0);
  16.   glTexCoord2f(1, 0); glVertex3f(  3,   3, 0);
  17.   glTexCoord2f(0, 0); glVertex3f(- 3,   3, 0);
  18. glEnd;
  19.  
  20. // Farbe 2. Alpha auf 0.5
  21. glColor4f(1, 1, 1, 0.5);
  22.  
  23. fTexture1.Bind;
  24. glBegin (GL_QUADS);
  25.   glTexCoord2f(0, 1); glVertex3f(- 3, - 3, 0);
  26.   glTexCoord2f(1, 1); glVertex3f(  3, - 3, 0);
  27.   glTexCoord2f(1, 0); glVertex3f(  3,   3, 0);
  28.   glTexCoord2f(0, 0); glVertex3f(- 3,   3, 0);
  29. glEnd;


Ach ja. Wenn du übergeblendet hast, dann brauchst du natürlich nur noch eine Fläche zeichen und eine Textur binden. Alles Andere wäre unnütz, da es ja eh nicht sichtbar wäre.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jul 04, 2005 10:32 
Offline
DGL Member

Registriert: Fr Jun 18, 2004 08:19
Beiträge: 14
Das war genau das wonach ich gesucht habe, Danke! :D


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jul 04, 2005 10:40 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Dez 28, 2002 11:13
Beiträge: 2244
Das geht auch noch mit den glTextureEnv Funktionen. Da kann man fast so flexibele Modi wie bei den Register Combinern einstellen. Unter anderem auch eine konstante Farbe mit Alpha pro Texture.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jul 04, 2005 10:46 
Offline
DGL Member
Benutzeravatar

Registriert: Do Jun 19, 2003 10:44
Beiträge: 991
Wohnort: Karlsfeld (nahe München)
Hätte man nicht beim Mutlitexturiering nicht auch mit glColor den Alpha Wert ändern können?

Dann hätte man keine Problemme mit der Zeichenreinfolge.

MfG
Flo

_________________
Danke an alle, die mir (und anderen) geholfen haben.
So weit... ...so gut


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jul 04, 2005 13:00 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Das glColor bezieht ja auf die Vertexe und scheint sich somit auf alle Texturen auszuwirken oder ich hatte da was falsch gemacht.

Aber wenn man mit glTexEnv die Farbe angibt wäre das natürlich optimal.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jul 04, 2005 19:49 
Offline
DGL Member

Registriert: Fr Jun 18, 2004 08:19
Beiträge: 14
Also ich denke mal, ihr denkt da an die GL_COMBINE_ARB Extension... Denke auch zur Zeit darüber nach, weil es sinnvoller ist, wenn man mehrere Texturen übereinander legen will, dass man jedesmal das Polygon darunter neu zeichnet.

Man kann wohl einem Vertex einen Alpha-Wert geben und dann über diverse Combine-Funktionen bestimmen, welche der TMUs auf den Alpha-Wert reagieren soll etc.

Mein Problem ist nämlich, dass mein Terrain-Renderer mehrere Detail-Texturen verwenden soll. Die meisten Verfahren weisen jedem Vertex, dann einen Alpha-Wert zu, jenachdem wie stark die entsprechende Detail-Textur genutzt werden soll. Dann wird das Feld für jede Detail-Textur mit Blending und/oder Multi-Texturing gezeichnet, mit den entsprechenden Alpha-Werten.
Ich denke aber, dass es problematisch wird, wenn man mehr als 3 - Detail-Texturen hat und dann nicht unter 4 TMUs bleiben kann oder jedes Feld erneut zeichnen muss.

Würde gerne eine Lösung finden, in der man alle Detail-Texturen mit den entsprechenden Alpha-Werten vielleicht in eine rendert und diese dann als "Gesamt"-Detail-Textur benutzt. Hoffe ihr versteht was ich meine :D

Jemand ne Idee oder ist das schlichtweg unmöglich/zu langsam etc.??


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jul 04, 2005 20:19 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Dez 28, 2002 11:13
Beiträge: 2244
Du kannst pro Vertex bis zu 16 Attribute angeben. Position ist natürlich das erste und dann noch verschiedene weitere unter anderem 8 Texturekoordinaten mit jeweils 4 Komponenten. Das sollte auf jeden Fall ausreichen. Das geht dann aber nicht mehr über diese Combine Extension. Drei Texturen funktionieren damit aber noch: http://www.delphi3d.net/articles/viewar ... aintex.htm Für eine beliebige Anzahl kann man dann eine der Shader Extensions nutzen, weil man da auch die Texturekoordinaten ganz allgemein für Berechnungen verwenden kann.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jul 05, 2005 16:27 
Offline
DGL Member

Registriert: Fr Jun 18, 2004 08:19
Beiträge: 14
Aber auch bei Shadern muss man mit TMUs arbeiten oder nicht?
Ich habe hier z.B. dieses Beispiel für Multitexturing mit Shadern: http://www.clockworkcoders.com/oglsl/tutorial8.htm

Da werden auch die TMUs benutzt. Oder geht das noch anders?


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


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.008s | 15 Queries | GZIP : On ]