Registriert: Mo Aug 26, 2002 10:26 Beiträge: 3 Wohnort: Hanau (bei Frankfurt/Main)
Hi,
ich würde gerne meine Szene mit einem Befehl (oder einem Trick) ein und ausblenden. Sprich: Die Szene verdunkelt sich auf schwarz, dann springt die Kamera unbemerkt an eine andere Stelle und die Szene wird wieder hell.
Wie kann ich das am besten realisieren? Mit dem Licht herumzuexperimentieren hat mich irgendwie nicht weiter gebracht.
Registriert: Sa Mai 04, 2002 19:48 Beiträge: 3830 Wohnort: Tespe (nahe Hamburg)
Je nachdem was bereits verwendet wird. Setzt Du bisher nicht auf GlColor liesse sich das damit recht leicht realisieren. Ansonsten kann man wudnerschöne und schnelle Fading Effekte (z.B: auch bei treffern wie Freespace etc.) durch ein Quad, dass direkt vor der Camera ist erzielen. Das blendet man dann über in die Szene, gibt ihm ne schwarze Farbe. Setzte Alpha auf 1 im Normfall, will man verdunkeln, geht man auf 0.
Soweit die Theorie, habe IMAO auch schonmal irgendwo source gemacht, muss aber zur arbeit
_________________ "Light travels faster than sound. This is why some people appear bright, before you can hear them speak..."
Stimmt, müsste theoretisch Funktionieren. Jedoch (nur so 'n Gedanke) solltest Du dir mal die 2D-Routinen anschauen. Denn bei den 3D-Routinen kann es zu entsprechenden Schwierigkeiten kommen, das Quad weit genug von der Kamera zu Positionieren damit es noch dargestellt wird und nicht zu weit weg, um noch an den Seiten irgendwelche Reste zu sehen (Stichwort: Nerclipping Plane).
Aber prinzipiell müsste das Funktionieren. Hast Du schon mal bei manchen Games beobachtet, wie die für InGame-Sequenzen in ein Quasi 16:9 Format wechseln und dabei den oberen und unteren Rand "reinschieben" und gleichzeitig einblenden?!? Wird IMO auch mit solchen "Tricks" gemacht...
Alternativ könntest Du auch die Helligkeit deiner Kompletten Szene auf 0 Runterschrauben. Dabei ist dann aber nichts mehr sichtbar. Auch kein Text oder Maus-Cursor !!! Außerdem hab' ich keine Ahnung, ob das im Fenster-Modus funktioniert, da das meines wissens die Helligkeit der prinzipiellen Grafik-Ausgabe Deiner Karte beeinflusst und somit theoretisch auch Dein kompletter Windows-Desktop mit ausgefadet wird (andererseits... hätte was für sich )
P.S.: Es ist nicht wichtig, was der User denk, wie ein Effekt erreicht wurde. Es kommt nur darauf an, dass der Effekt den gewünschten Erfolg bringt
_________________ Und was würdest Du tun, wenn Du wüsstest, dass morgen Dein letzter Tag auf dieser Erde ist?
@P.S.: Ich glaube, der User sollte normalerweise gar keine Chance haben, erkennen zu können wie ein Effekt entstanden ist. Für einen geübten Entwickler der die Techniken kennt trifft das natürlich nicht zu.
Ich halte übrigens die Methode mit dem 2D Blend am besten, da man häufig sowieso irgendwie ein HUD verwendet, fügt man einfach diesen Funktionen die entsprechnden Blends hinzu.
Zuletzt geändert von Delphic am Di Jul 21, 2009 09:37, insgesamt 1-mal geändert.
Registriert: Mo Aug 26, 2002 10:26 Beiträge: 3 Wohnort: Hanau (bei Frankfurt/Main)
Also das mit Color geht nicht, zumindest weiß ich nicht wie!
Da ich Texturen aktiviert habe, ist das Viereck immer komplett weiß, weil ich keine Textur zugewiesen habe. glColor4f() bringt deshalb goar nix. Habe auch schon glDisable(GL_TEXTURE_2D) probiert - geht auch net.
Wenn mir also jemand sagen kann, wie ich das mit glColor4f mache, wäre ich sehr dankbar.
Ansonsten schaue ich mich mal nach 2D-Funktionen um...
Hast du Blending überhaupt aktiviert? Klingt für mich nicht so.... Les dir mal das Blending Tutorial durch. Vielleicht kann dir auch die OpenGl Spezifikation helfen. Lighting und Depth Testing sollten auch ausgeschaltet sein
Hast du Blending überhaupt aktiviert? Klingt für mich nicht so....
Tja, das wäre ärgerlich. Ging mir auch schon so. Das sind die Fehler, die man dan stundenlang sucht und fast verzweifelt, nur weil man etwas vergessen hat zu initialisieren. Ist mir mit Direct3D am Anfang des öfteren passiert! Und bei meinem ersten OpenGL Programm hab ich immer eine Verzögerung beim Verschieben und Schließen des Fensters gehabt UND nichts von meinen OpenGL-Ausgaben gesehen, weil ich vergessen hab, SwapBuffers aufzurufen . Von dem her muss ich DelphiC echt recht geben: check das mal durch, villeicht hat sich dann Dein Problem ganz von selbst gelöst.
@Phobeus: Was meintest Du eigentlich mit "Color" Werd' irgendwie nicht schlau darraus. Weil von jedem verwendeten Vertex dir Farbe runterzurechnen, nur um die Szene auszublenden ist IMHO ein klein wenig aufwendig und zeitraubend...
_________________ Und was würdest Du tun, wenn Du wüsstest, dass morgen Dein letzter Tag auf dieser Erde ist?
Registriert: Sa Mai 04, 2002 19:48 Beiträge: 3830 Wohnort: Tespe (nahe Hamburg)
Yep, nur solange man z.B. nur ein Objekt hat, View, Test-Szene etc. wo man keine Farbwerte hat, kann man dies damit realtiv schnell und ohne großen Aufwand realisieren. Bei komplexen Szenen und Spielen wird man nicht ums Blending herum kommen!
_________________ "Light travels faster than sound. This is why some people appear bright, before you can hear them speak..."
Registriert: Mo Aug 26, 2002 10:26 Beiträge: 3 Wohnort: Hanau (bei Frankfurt/Main)
Ich hab's jetzt geschafft.
Ich habe eine 1x1-Pixel-Textur genommen und nachträglich den Alpha-Wert manipuliert...
Diese Textur hab ich dann einfach in den Vordergrund gesetzt, aber vorher glDisable(GL_DEPTH_TEST) aufgerufen, damit's auch ja vorne ist.
Mitglieder in diesem Forum: 0 Mitglieder und 11 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.