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
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? Du siehst normal nicht ein Objekt von vorne und hinten, aber du kannst zwei Seiten sehen, indem du von der Seite ( ) 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
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.
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 ?!
Mitglieder in diesem Forum: 0 Mitglieder und 5 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.