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

Aktuelle Zeit: Do Jul 17, 2025 11:58

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



Ein neues Thema erstellen Auf das Thema antworten  [ 11 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Portale / Fenster RenderToTexture
BeitragVerfasst: Sa Mai 10, 2008 13:46 
Offline
DGL Member

Registriert: Di Mai 24, 2005 16:43
Beiträge: 710
hi,
Ich möchte gerne Portale implementieren, damit meine ich, Quads auf denen eine Textur liegt, die den dahinterliegenden Raum repräsentiert.
Sprich man sollte so ein Quad in den Raum klatschen können, ohne dass man es merkt, weil es wie eine Scheibe funktioniert.
Das Ganze brauche ich für einen Shader, da ich wissen muss, was sich "hinter" diesem Quad verbirgtm also muss ich das was sich hinter dem Quad befindet aufs Quad rendern und das sicherlich abhängig von der Betrachterposition, wie stelle ich das an ? Einfach aus der Betrachteransicht rendern und auf das Quad projizieren sollte funktionieren, allerdings weiß ich nicht, ob der Shader dann damit klar kommt, am besten wäre wirklich eine Textur, die dann nur auf das Quad gemappt wird.

mfg


Zuletzt geändert von Seth am Mo Mai 26, 2008 08:02, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Mai 12, 2008 21:12 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Aug 18, 2007 18:47
Beiträge: 694
Wohnort: Köln
Programmiersprache: Java
So wie bei Portal von Valve?

Hier gibts nen Video von einem ähnlichen Konzept.

_________________
Es werde Licht.
glEnable(GL_LIGHTING);
Und es ward Licht.


Zitat aus einem Java Buch: "C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off"

on error goto next


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Mai 12, 2008 21:16 
Offline
DGL Member

Registriert: Di Mai 24, 2005 16:43
Beiträge: 710
Prinzipiell so in etwa, nur etwas spezieller.
Angenommen ich habe ein Haus mit einer Fensterscheibe. Dieser Fensterscheibe möchte ich ein bissl Refraktion geben, deshalb muss ich das Dahinterliegende als Textur auf die Scheibe mappen und dem Shader übergeben.

Wie stelle ich das an ?

(die dynamical scalable Portals sind großartig ;) )

mfg


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Mai 21, 2008 13:01 
Offline
DGL Member

Registriert: Mi Mär 31, 2004 15:24
Beiträge: 114
Hi,

dürfte das nicht auch mit der Methode aus dem Wasser-Tutorial von Lord Horazont gehen? Da rendert man ja eine Refraktionsmap und das ist doch das, was du suchst, oder hab ich das falsch verstanden?

Etwa so sieht das bei mir aus, mit Refraktionseffekten:


Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mai 22, 2008 15:34 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2623
Wohnort: Berlin
Programmiersprache: Go, C/C++
Eigentlich wird für sowas ein weiterer Renderpass verwendet, der aus der Sicht des Portals/Wassers/Glas/... die Szene in ein FBO zeichnet und dieses dann als Textur für das Mesh des Portals/Glas/Wasser/... verwendet.
Schwer ist hierbei nur die korrekte Darstellung der gerenderten Textur auf das Mesh.

_________________
"Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren"
Benjamin Franklin

Projekte: https://github.com/tak2004


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Mai 25, 2008 15:06 
Offline
DGL Member

Registriert: Di Mai 24, 2005 16:43
Beiträge: 710
hi, nun ist allerdings die frage: wie aus der sicht rendern ? (also wie das rein opengl technisch zu machen ist, weiß ich, nur soll ja auch am ende das richtige zu sehen sein)
Deshalb dachte ich zuerst aus der Sicht des Betrachters alles Rendern was hinter diesem Objekt ist und das dann geschickt mappen Oo

mfg


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Mai 25, 2008 23:33 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2623
Wohnort: Berlin
Programmiersprache: Go, C/C++
Bei Portals, kannst du die position zwischen Spieler und Portal erfassen.
Nun nimmst du die Szene, wo das andere Ende des Portals ist und positionierst die Kamera mit der gleichen Disstanz relativ(wenn das anders ausgerichtet ist, dann muss der Distanzvektor natürlich entsprechend angepasst werden) zum Portal.
Nun kannst ein Bild von machen und das auf das Portal projezieren.
Wie das mit dem zeichnen von Objekten zwischen Portalen gemacht wird ist mir nicht bekannt.
Mir bekannte Möglichkeiten wären hier Clipplanes und Masken.

_________________
"Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren"
Benjamin Franklin

Projekte: https://github.com/tak2004


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Mai 26, 2008 08:01 
Offline
DGL Member

Registriert: Di Mai 24, 2005 16:43
Beiträge: 710
Der Sonderfall bei mir ist ja, dass ich keine wirklichen Portale hab, sondern das was auf dem Portal zu sehen ist, auch ohne Portal sichtbar wäre. Es ist mir so etwas wie ein Fenster.

mfg


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Mai 26, 2008 09:39 
Offline
DGL Member

Registriert: Mi Mär 31, 2004 15:24
Beiträge: 114
Hi,

Zitat:
Deshalb dachte ich zuerst aus der Sicht des Betrachters alles Rendern was hinter diesem Objekt ist und das dann geschickt mappen


Das richtige mappen findet man im Wassertutorial von Lord Horazont:
Durch Manipulation der Texturmatrix erreicht man, dass man als Texturkoordinaten die Vertexkoordinaten angeben kann.

Oder meinst du was anderes, und ich hab dich jetzt falsch verstanden?

Code:
  1.  
  2.               glActiveTexture(GL_TEXTURE0);
  3.               glMatrixMode(GL_TEXTURE);
  4.               glPushMatrix;
  5.                 glLoadIdentity;
  6.                 glTranslatef(0.5, 0.5, 0);
  7.                 glScalef(0.5, 0.5, 0);
  8.                 gluPerspective(45, RenderContext.Width/RenderContext.Height, 0.01, 100000);
  9.                 Camera.WeltRotation;
  10.                 Camera.WeltTranslation;
  11.  
  12.               glEnable(GL_TEXTURE_2D);
  13.               glBindTexture(GL_TEXTURE_2D, Refraction); // Hier die Textur mit den Objekten hinter dem Fenster
  14.  
  15.               glActiveTexture(GL_TEXTURE1);
  16.               glEnable(GL_TEXTURE_2D);
  17.               glBindTexture(GL_TEXTURE_2D, Bumpmap); // Hier die Textur, die die Refraktionen erzeugt
  18.  
  19.               glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
  20.               glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
  21.  
  22.               glMatrixMode(GL_MODELVIEW);
  23.  
  24.                 glBegin(GL_QUADS);
  25.                   glMultiTexCoord3f(GL_TEXTURE0,0,0,0);
  26.                   glMultiTexCoord2f(GL_TEXTURE1,0,0);
  27.                   glVertex3f(0,0,0);
  28.                   glMultiTexCoord3f(GL_TEXTURE0,32,0,0);
  29.                   glMultiTexCoord2f(GL_TEXTURE1,1/20,0);
  30.                   glVertex3f(32,0,0);
  31.                   glMultiTexCoord3f(GL_TEXTURE0,32,0,32);
  32.                   glMultiTexCoord2f(GL_TEXTURE1,1/20,1/20);
  33.                   glVertex3f(32,0,32);
  34.                   glMultiTexCoord3f(GL_TEXTURE0,0,0,32);
  35.                   glMultiTexCoord2f(GL_TEXTURE1,0,1/20);
  36.                   glVertex3f(0,0,32);
  37.                 glEnd();
  38.  
  39.               glActiveTexture(GL_TEXTURE0);
  40.               glDisable(GL_TEXTURE_2D);
  41.               glMatrixMode(GL_TEXTURE);
  42.               glPopMatrix;
  43.  
  44.               glMatrixMode(GL_MODELVIEW);
  45.  


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jul 06, 2008 11:09 
Offline
DGL Member

Registriert: Di Mai 24, 2005 16:43
Beiträge: 710
Nehmen wir mal an, ich möchte ein Fenster mit Refraktion realisieren. Wie stelle ich das dann an ? Render ich die Szene aus Sicht der Kamera in eine Textur und mappe es wie von dir genannt und lasse dann meinen Shader darauf los ?

mfg


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jul 06, 2008 11:23 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Ja, du setzt den Shader dann auf die Fensterscheibe an.

Gruß Lord Horazont

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 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.015s | 16 Queries | GZIP : On ]