ich beschäftige mich seit ein paar Tagen mit OpenGL und habe ein kleines Programm geschrieben, welches ein Würfel "zeichnet", dessen Seiten je eine Farbe hat. Zusätzlich dazu kann ich über Scrollbalken (die man auf den Screenshots nicht sieht) die Skalierung sowie die Rotation um die x, y und z Achse steuern.
Beim Testen ist mir etwas aufgefallen.
Erster Test: Im Code steht sowas wie:
Code:
glTranslatef(0.0,0.0,-7.0);
Starte ich das programm und spiele ein wenig mit den Rotationseinstellungen sieht alles prima aus (siehe erster Screenshot).
Zweiter Test: Im Code steht sowas wie:
Code:
glTranslatef(0.0,0.0,-100.0);
Der Würfel wird nun erwartenderweise sehr klein angezeigt. Aber ich habe ja meinen Scrollbalken, mit dem ich die Skalierung ändern kann, was in meinem Code so aussieht:
Code:
glScalef(scaleFactor,scaleFactor,scaleFactor);
Ich skaliere also so weit, dass ich den Wüfel gut erkennen kann und spiele dann wieder mit den Rotationseinstellungen rum. Allerdings werden nun von den Seiten des Würfels einige Teile abgeschnitten. Wieso?
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Ich würde mal schlicht behaupten, dass die 100 from translate plus dem Faktor des Scale größer als dein FarClipping werden. Durch den Scale wird der Würfel größer dargestellt, d.h. alle Vertices werden mit dem Scalefaktor multipliziert. Wenn nun der Würfel original von -1,-1,-1 bis 1,1,1 reicht, und dein Scalefakor z.B.: 100 ist, dann reicht der Würfel nach dem Zeichnen von -100,-100,-100 bis 100,100,100. Dazu kommt der translate auf der z-Achse um -100, damit sind wir bei -100,-100,-200 bis 100,100,0. Wenn nun Deine Far-Clipping plane bei z.B.: 128 ist, dann ragt der Würfel aus dem Frustum und wird abgeschnitten.
_________________ Manchmal sehen Dinge, die wie Dinge aussehen wollen, mehr wie Dinge aus, als Dinge.
<Esmerelda Wetterwax>
Es kann vorkommen, dass die Nachkommen trotz Abkommen mit ihrem Einkommen nicht auskommen und umkommen.
ich würde an deiner Stelle den Wert für die Near Clipping Plane auf 1.0 stellen, da du mit einem so kleinen Wert relativ bald Ungenauigkeiten im Tiefenpuffer bekommen dürftest. Solche Fehler führen meistens zu einem nicht unverwunderten "Hä? Was ist das denn?" und bringen sehr viel Freude, weil "ja vorher alles noch ging" . Man sollte also schon im Vorfeld sowas ausschließen, indem man den Wert auf 1 setzt. Das erhöht einfach die Genauigkeit vom Z-Buffer und damit tritt das Problem dann de facto nicht mehr / gar nicht erst auf.
_________________ "Für kein Tier wird so viel gearbeitet wie für die Katz'."
Ausserdem ist es auch günstig, 2^n als Wert für znear und zfdar zu nehmen, da diese auf den Bereich von -1 bis +1 gemappt werden und da tut er sich im Tiefenpuffer mit dem Runden leichter.
_________________ Manchmal sehen Dinge, die wie Dinge aussehen wollen, mehr wie Dinge aus, als Dinge.
<Esmerelda Wetterwax>
Es kann vorkommen, dass die Nachkommen trotz Abkommen mit ihrem Einkommen nicht auskommen und umkommen.
Mitglieder in diesem Forum: 0 Mitglieder und 27 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.