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

Aktuelle Zeit: Fr Jul 18, 2025 17:41

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



Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: glTranslatef mit großen Werten
BeitragVerfasst: Di Mär 06, 2007 16:55 
Offline
DGL Member

Registriert: Sa Mär 03, 2007 13:20
Beiträge: 2
Hallo,

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:
  1. 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:
  1. 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:
  1. 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.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Mär 06, 2007 17:06 
Offline
DGL Member

Registriert: Mo Dez 20, 2004 08:58
Beiträge: 442
Wohnort: Mittweida (Sachsen)
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.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Mär 06, 2007 18:52 
Offline
DGL Member

Registriert: Sa Mär 03, 2007 13:20
Beiträge: 2
Wow - danke für die schnelle und präzise Antwort. War sehr zielführend.

Code:
  1.  gluPerspective( 45.0f, sceneBounds.size.width / sceneBounds.size.height, 0.1f, 200.0 );


Den letzten Parameter habe ich von 100.0 auf 200.0 geändert - nun funktionierts.

Danke.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Mär 06, 2007 21:10 
Offline
Forenkatze
Benutzeravatar

Registriert: Mi Okt 22, 2003 18:30
Beiträge: 1945
Wohnort: Närnberch
Programmiersprache: Scala, Java, C*
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'."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Mär 07, 2007 09:03 
Offline
DGL Member

Registriert: Mo Dez 20, 2004 08:58
Beiträge: 442
Wohnort: Mittweida (Sachsen)
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.


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 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.

Suche nach:
Gehe zu:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.008s | 14 Queries | GZIP : On ]