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

Aktuelle Zeit: Fr Jul 18, 2025 14:14

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



Ein neues Thema erstellen Auf das Thema antworten  [ 12 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: 360-Blickfeld
BeitragVerfasst: Do Mai 29, 2008 18:59 
Offline
DGL Member

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

Ich wollte euch mal fragen, ob bzw. wie es möglich ist, ein 360-Blickfeld zu rendern. Ziel ist für mich hierbei das Rendern der kompletten 3D-Umgebung in einem Renderpass in eine Textur, um an die Tiefenpufferwerte zu kommen.
Hab schon folgendes probiert:

Code:
  1.   gluPerspective(360, 1, 1, 1024);


Das funktioniert aber nicht, ich sehe in der gerenderten Textur immer nur eine Farbe.


Jemand ne Idee?
Sollten Infos fehlen, kann ich die gerne nachtragen :)

Viele Grüße!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mai 29, 2008 19:13 
Offline
DGL Member

Registriert: Do Mai 30, 2002 18:48
Beiträge: 1617
Bei einem Blickfeld ab 180° kann die Perspektive nicht mehr linear sein, also nich mit Matrizen zu beschreiben - mit gluPerspective keine Chance. Mehrere Passes sind absolut tabu?

Als kleine Erklärung schau mal hier vorbei:
http://en.wikipedia.org/wiki/Fisheye_lens
Dort sind Geraden keine Geraden mehr, sondern werden durchgebogen - Anderes will mathematisch nicht ;-) Und der Rasterizer der GPU will Polygonen gerade kanten geben ;-)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Mai 30, 2008 09:50 
Offline
DGL Member

Registriert: Mi Mär 31, 2004 15:24
Beiträge: 114
Okay, verstehe. Geniale Sache. Dann bleibt mir wohl nichts weiter übrig, als mehrere Renderpasses einzuführen. Ich wollte die gerenderte Textur evtl. zur Kollisionskontrolle benutzen, dementsprechend wäre das 360°-Blickfeld ideal gewesen. Wenn ich jetzt 2 mal jeweils ein Blickfeld von 180° rendere, wäre das auch okay.

Blöderweise funktioniert das nicht ;) - zumindest bei mir.

Wenn ich mit gluPerspective den Winkel auf 180 Grad einstelle, sehe ich gar nichts mehr. 179° zeigt nicht das an, was erwünscht ist - da kann ich leider trotzdem nicht erkennen, was passiert.

Edit: Heißt das jetzt, dass ich 3 Renderpasses machen müsste?

Viele Grüße!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Mai 30, 2008 13:25 
Offline
DGL Member

Registriert: Di Jun 06, 2006 09:59
Beiträge: 474
Wenn du es exakt willst ja. Wenn allerdings deine Polygone klein sind auf dem Bildschirm, kannst du auch die 360° auf den niedrigeren Öffnungswinkel runtertransformieren mittels Vertexshader. Allerdings sind dann die Kanten gerade, was sie nicht sein dürften. Je kleiner die Polys desto geringer der Effekt.
Allerdings graut es mir bei dem Gedankten die grafische Darstellung zur Kollision zu verwenden.

_________________
Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Mai 30, 2008 14:36 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2623
Wohnort: Berlin
Programmiersprache: Go, C/C++
2 Tolle FBO's nehmen und 0-180° für das erste und 180-360 für das 2. FBO.
Dann sollte das kein problem mehr geben.
Es empfiehlt sich MipMaps abzuschalten.

_________________
"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: Fr Mai 30, 2008 15:35 
Offline
DGL Member

Registriert: Mi Mär 31, 2004 15:24
Beiträge: 114
Zitat:
2 Tolle FBO's nehmen und 0-180° für das erste und 180-360 für das 2. FBO.
Dann sollte das kein problem mehr geben.


Das funktioniert komischerweise nicht. Geht der Öffnungswinkel gegen 180°, so sehe ich nichts mehr.
Ich probier mal ein bisschen mit den 3 Renderpasses rum!

Danke für die Antworten!

Viele Grüße


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Mai 30, 2008 16:23 
Offline
DGL Member
Benutzeravatar

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

Werte >= 180° für den field-of-view machen keinen Sinn, da gluPerspective im Grunde genommen auf glFrustum aufbaut.
Bei 180° liegen die zNear und die zFar-Ebene übereinander ( und gehen durch den Blickpunkt ), man bekommt also nix zu sehen.

Ich würde dir lieber empfehlen dreimal mit 120° field-of-view zu arbeiten.

Viele Grüße
dj3hut1


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Mai 30, 2008 16:53 
Offline
DGL Member

Registriert: Do Mai 30, 2002 18:48
Beiträge: 1617
dj3hut1 hat geschrieben:
Ich würde dir lieber empfehlen dreimal mit 120° field-of-view zu arbeiten.

Sind es nicht mindestens 4? Ich will mir das gar nicht vorstellen, aber 6 mal 90° ist in jedem Fall richtig ;-)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Mai 30, 2008 18:23 
Offline
DGL Member

Registriert: Di Jun 06, 2006 09:59
Beiträge: 474
120° sollte noch problemlos gehen. Erst bei Annäherung an 180° wird es kritisch. Vorher nimmt die Verzerrung natürlich immer weiter zu, da der Monitor wohl bei kaum einem Benutzer 120° einnimmt.

Wofür brauchst du denn deine 360° Ansicht denn alles?

_________________
Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Mai 30, 2008 19:12 
Offline
DGL Member

Registriert: Mi Mär 31, 2004 15:24
Beiträge: 114
Es geht praktisch nur um eine Kollisionskontrolle.
Ich hab keine Lust die Routinen zu schreiben, um die "Rückrechnung" vorzunehmen. Also den Vektor zu berechnen, um den meine Spielerbox wieder zurückbewegt werden muss, um gerade wieder außerhalb des Gegenstandes zu sein. Außerdem benutze ich auch glScale, um meine Models zu vergrößern. Das müsste ich auch noch berücksichtigen.

Deshalb wollte ich mal gucken, ob nicht vielleicht die Kollisionskontrolle mithilfe des Tiefen-Puffers realisiert werden kann. Dafür wollte ich die gesamte Umgebung in eine Textur (oder in ein Array) mappen und dann je nach Z-Wert den Rückrechnungsvektor berechnen.


Achja:
Zitat:
Sind es nicht mindestens 4? Ich will mir das gar nicht vorstellen, aber 6 mal 90° ist in jedem Fall richtig Wink


Ist der Öffnungswinkel der vertikale und der horizonale Öffnungswinkel? Dann bräuchte man ja 4 Renderpasses, sofern ich mich jetzt nicht vertue.

Viele Grüße!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Mai 31, 2008 07:45 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 27, 2005 12:44
Beiträge: 393
Wohnort: Berlin
Programmiersprache: Java, C++, Groovy
Zitat:
dj3hut1 hat geschrieben:
Ich würde dir lieber empfehlen dreimal mit 120° field-of-view zu arbeiten.

Sind es nicht mindestens 4? Ich will mir das gar nicht vorstellen, aber 6 mal 90° ist in jedem Fall richtig ;-)


stimmt, hab vergessen die Vertikale mit einzubeziehen...dann lieber 6 mal 90°, so wie bei einer cubemap.

Hmm...wenn ich mich nicht irre, reicht es bei Kollisionskontrolle doch eigentlich aus, die Tiefenwerte nur in Bewegungsrichtung zu bestimmen, oder?

Viele Grüße
dj3hut1


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Mai 31, 2008 17:40 
Offline
DGL Member

Registriert: Mi Mär 31, 2004 15:24
Beiträge: 114
Zitat:
Hmm...wenn ich mich nicht irre, reicht es bei Kollisionskontrolle doch eigentlich aus, die Tiefenwerte nur in Bewegungsrichtung zu bestimmen, oder?



Also ich habs jetzt so realisiert, dass ich zwei Renderpasses mache. Einmal den Boden, damit man Fallen einfach simulieren kann und einmal genau die Laufrichtung - gute Idee :) Funktioniert einigermaßen ;)

Viele Grüße!


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


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 ]