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

Aktuelle Zeit: Fr Jul 18, 2025 16:34

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



Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Culling
BeitragVerfasst: So Mai 14, 2006 22:00 
Offline
DGL Member

Registriert: Mi Mär 08, 2006 17:38
Beiträge: 153
Wohnort: Rümmelsheim (bei Bingen)
So . Hab ein paar Fragen zum Culling verfahren(Hoffe das heißt so)

Fangen wir mal klein an
1. Wir zeichnen ein Viereck gegen Uhrzeigersinn. Culling ist Aktiviert. Jetzt sehen wir nur die Vorderseite, die ja auch nur gerendert wird. Jetzt rotieren wir das Objekt um seine Achse ( oder wir bewegen uns ums Objekt. Ist ja eig Egal. wir bewegen uns ja eigen tlich nie *g*) . Ist es jetzt richtig, dass wenn ich den Punkt erreiche an dem die Rückseite gesehen werden soll ich einfach den Befehl glCullface(gl_front) eintippe und somit rendert er mir die Rückseite ?!

2. Beim zweiten Objekt jetzt mal etwas anders. Wir zeichnen einen Würfel. ABER nur mit Vorder und Rückseite. Links und rechts , oben und unten, is mal egal.
ich zeichne das erste Viereck gegen Uhrzeigersinn. Dann dan zweite mit translate um 5 in die z achse hinein (also nach hinten) wieder gegen Uhrzeigersinn. Jetzt wird von beiden jeweils die Vorderseite gerendert. wenn ich die Rückseite haben will schalte ich mit glCullface(gl_front) einfach um. is das auch korrekt ?!
oder zeichne ich den Würfel so dass ich ein viereck gegen uhrzeigersinn zeichne und den andern im Uhrzeigersinn. So würde man sich das umschalten ersparen ?!
welche Methode ist sinnvoller ?!

3 Eine kleine Frage noch. In spielen später ist es durchaus möglich dass ich ein Objekt von Vorne sehe und das andere aber gleichzeitig von hinten . Dann schaltet man beim rendern zwischen drinn einfach um oder ?!

Hoffe ihr versteht meine Probleme,die ich noch mit der technik habe


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Culling
BeitragVerfasst: So Mai 14, 2006 22:53 
Offline
Ernährungsberater
Benutzeravatar

Registriert: Sa Jan 01, 2005 17:11
Beiträge: 2068
Programmiersprache: C++
simon1988 hat geschrieben:
Fangen wir mal klein an
1. Wir zeichnen ein Viereck gegen Uhrzeigersinn. Culling ist Aktiviert. Jetzt sehen wir nur die Vorderseite, die ja auch nur gerendert wird. Jetzt rotieren wir das Objekt um seine Achse ( oder wir bewegen uns ums Objekt. Ist ja eig Egal. wir bewegen uns ja eigen tlich nie *g*) . Ist es jetzt richtig, dass wenn ich den Punkt erreiche an dem die Rückseite gesehen werden soll ich einfach den Befehl glCullface(gl_front) eintippe und somit rendert er mir die Rückseite ?!

Theoretisch ja, aber der Programmierer ansich ist schon so genial und hat die Rückseite schon in der Reihenfolge gesetzt, dass du am Cullingverfahren nichts ändern musst ;)
Aber wenn es eine 2-dimensionale Fläche wäre, würde es stimmen.

simon1988 hat geschrieben:
2. Beim zweiten Objekt jetzt mal etwas anders. Wir zeichnen einen Würfel. ABER nur mit Vorder und Rückseite. Links und rechts , oben und unten, is mal egal.
ich zeichne das erste Viereck gegen Uhrzeigersinn. Dann dan zweite mit translate um 5 in die z achse hinein (also nach hinten) wieder gegen Uhrzeigersinn. Jetzt wird von beiden jeweils die Vorderseite gerendert. wenn ich die Rückseite haben will schalte ich mit glCullface(gl_front) einfach um. is das auch korrekt ?!
oder zeichne ich den Würfel so dass ich ein viereck gegen uhrzeigersinn zeichne und den andern im Uhrzeigersinn. So würde man sich das umschalten ersparen ?!
welche Methode ist sinnvoller ?!

s.o.
Du machst es eigentlich ganz einfach und bewegst den "Zeichenstift" in die Mitte des Würfels, dann zeichnest du die Front, in der Reihenfolge, dass es angezeigt wird. Dann drehst du dich um 180% und zeichnest mit derselben Routine die Rückseite. Dann sieht man die Seiten nur dann wenn man drauf schaut.
Wenn du mit Cullface arbeiten würdest, würden übrigens immer die Vorder- und Hinterseite gerendert, nur wird die eine verdeckt.

simon1988 hat geschrieben:
3 Eine kleine Frage noch. In spielen später ist es durchaus möglich dass ich ein Objekt von Vorne sehe und das andere aber gleichzeitig von hinten . Dann schaltet man beim rendern zwischen drinn einfach um oder ?!

Von vorne und von hinten?
Was für Aliens sollen im deinen Spiel vorkommen? :mrgreen:
Du siehst normal nicht ein Objekt von vorne und hinten, aber du kannst zwei Seiten sehen, indem du von der Seite ( :roll: ) draufschaust. Dann trifft der obrige Fall auf. Aber ich labere wieder zuviel, was du nicht verstehst.

Ich werfe dann einfach mal den Paintshop an und mache Bilder. Hier kommt es ja gerade nicht auf den Speicher an :D

{=====================================================================================================}

So, Bilder sind da.
Das erste Attachment ist die Szene mit dem Würfel, wo nur Vorder- und Rückseite gezeichnet werden und zwar indem man erst die Vorderseite zeichnet, dann sich mit glTranslatef nach hinten bewegt und dann nochmal die Seite zeichnet. Das entspricht deiner Situation aus 2.
So, das Rot im Quad steht dafür, dass es gerendert wird, der (misslungene Pfeil) die Reihenfolge in der es erstellt wurde.
Es werden also beide Quads gezeichnet.

Dies entspricht aber genau dem, wenn du kein Cullface aktiv hast! (Bild 2).

Zum Abschluss dann noch Bild 3. Hier wird anstatt einer Translation (gltranslatef) eine Rotation durchgeführt. Aus deiner Sicht hat sich also die Erstellungsreihenfolge geändert. Das hintere Quad ist mit dem Uhrzeigersinn gezeichnet und wird durch das Cullface nicht gezeichnet.
Und zwar genau aus den Grund, das man die Hinterseite des Quads sieht. Den Würfel kannst du jetzt übrigens drehen und wenden wie du willst. Sieht immer genauso aus.

Um es noch etwas klarer zu formulieren:
Der Würfel hat eine Rückseite! Kannst ihn ja ihn die Hand nehmen und rotieren. Er ist immer ganz da. Du siehst halt immer die Vorderseiten des Würfels.
Erst wenn du dich in den Würfel begibst verschwindet er. Einfach weil du jetzt die Rückseiten siehst und die per Cullface immer direkt verworfen werden.
Kannst dir als Beispiel jedes 3D-Spiel anschauen. Wenn du die Kollisionsabfrage beendest (bei HL in der Konsole noclip) kannst du dich durch Wände bewegen.
Dann siehst du aber nicht die Rückseite der Wand, sondern die Wand verschwindet dann!
Und genau dies ist der Effekt von Cullface.


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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Mai 15, 2006 13:40 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Oh.... vorsicht.
Hier liegt ein mittelschwehres Verständnisproblem vor.

Die Rückseite eines Würfels hat nichts mit glCullface zu tun. glCullface ist nur dazu da zu bestimmen welche seiten eines Polygons zu sehen sind.

Die Rückseite deines Würfels ist ein Polygon und hat an sich 2 seiten. Eine Vorder und eine Rückseite.

Ich habe im Artikel glFrontFace ein entsprechendes Bild eingefügt.

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Mai 15, 2006 14:10 
Offline
DGL Member

Registriert: Mi Mär 08, 2006 17:38
Beiträge: 153
Wohnort: Rümmelsheim (bei Bingen)
das heißt also.
Es geht hier nicht um rück und vorderseiten.
Beim Culling geht es viel mehr darum, Sachen , die ich eh nicht sehe z.b. Der Boden einer Welt von unterhalb oder das innere eines Menschen NICHT zu rendern um so eben unnötiges rendern wegzulassn ?!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Mai 15, 2006 14:11 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Ganz genau. 8)

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


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


Wer ist online?

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