Hallo!
Mache gerade die ersten Versuche mit OpenGL und habe folgende Frage:
Wie kann ich Figuren mit "Löchern" oder Öffnungen versehen, z.B. eine Wand mit Fensteröffnungen?
Muß ich die Wandfläche von vorneherein so anlegen, daß sich die Fensteröffnungen ergeben oder gibt es eine Möglichkeit, zunächst die Wand als Rechteck zu zeichnen und dann die Fenster einfach wiederum als "transparente" Rechtecke darüberzuzeichnen, sie also nachträglich aus der Wand auszuschneiden?
Registriert: Do Sep 25, 2003 15:56 Beiträge: 7810 Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Hehe...typischer Denkfehler von Anfängern.
1. Es gibt die Möglichkeit ein Loch in eine Wand zu bekommen...allerdings niemals nachträglich.
2. Transparente Objekte können nicht durch bestehende Objekte durchgucken lassen.
Lösung: Wenn du ne Wand bauen willst, dann musst du das Fenster expliziert aussparen. Wenn du die Wand plastisch gestalten willst und nicht nur als Fläche is das eh nötig.
Die oben angemerkte Möglichkeit wäre mittels Stencil Buffer das Fenster auszusparen. Allerdings würde das bedeuten mit ATOMBOMBEN auf Spatzenjagt zu gehen. Und für nen Anfänger is das eh nicht die richtige Kost.
Soviel dazu. Jetzt noch paar Tips:
1. Ließ den OpenGL Quickstart im Wiki !!
2. Ließ die Tutorials hier auf der Seite
3. Nutze das Wiki. Es bietet auch noch einen Einsteigertrampelpfad und für jeden OpenGLer gibts dort was zu finden.
_________________ Blog: kevin-fleischer.de und fbaingermany.com
Die ganze Geometrie wird üblicherweise in anderen Programmen wie z.B. 3D Studio modeliert und dann ins Programm geladen. OpenGL dient dann nur dazu die Daten zu rendern. Für das .3ds Format gibt es hier auch eine Unit mit Ladefunktionen.
Registriert: Sa Nov 13, 2004 11:00 Beiträge: 229 Wohnort: Steinhude
es gäbe schon nen paar möglichkeiten (zB Alphachannel in der textur, fensterscheibe in den Tiefen/stencilbuffer rendern), aber die sind weder sinnvoll noch besonder praktikabel (wiederverwendbarkeit von texturen, fehlende tiefe der entstehenden öffnung, zeichenreihenfolge...).
Allgemein ist es so, dass nur der sichtbare teil von objekten im framebuffer gespeichert ist und somit dahinterliegende inhalte nicht ohne neurendern wiederhergestellt werden können, weshalb es nicht möglich ist ist im nachhinein öffnungen in wände zu schneiden
Für Fenster gibt es eine Möglichkeit. Indem man beim Blending die Objekte einfach falschum zeichnet. Also zuerst das Fenster und dann die restliche Wand. Dann kann man tatsächlich durch die Fensterscheibe nach ausen schauen.
Es funktioniert zwar, ist aber nicht so wahnsinnig toll.
Normal macht man es so (Screenshots aus 3ds Max. P.S.: Die Screenshots sind auch mit OpenGL gemacht):
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
_________________ "Für kein Tier wird so viel gearbeitet wie für die Katz'."
Registriert: Fr Mai 14, 2004 18:56 Beiträge: 804 Wohnort: GER/OBB/TÖL-WOR/Greiling
3dsMax ist ein Modeller, mit dem du z.B. deine levels machst. Du kannst also ein 3d-Objekt erstellen und es so speichern, dass du es dann mit OpenGL wieder einlesen und darstellen kannst.
Registriert: Do Sep 25, 2003 15:56 Beiträge: 7810 Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Bevor du jetzt versuchst dich in 3DS Max einzuarbeiten versuchs lieber mit Blender. Es ist zwar wahrscheinlich am Anfang schwerer, aber es ist Kostenlos, und du kannst eigene Dateiformate erstellen, für die du dann selber einen Loader schreiben kannst. Nur so am Rande, weil ja die Beschaffung von 3DS Max u.U. nicht ganz billig ist.
_________________ Blog: kevin-fleischer.de und fbaingermany.com
Mitglieder in diesem Forum: 0 Mitglieder und 3 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.