Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi opengl- glusphere (https://www.delphipraxis.net/114697-opengl-glusphere.html)

vsilverlord 29. Mai 2008 17:43


opengl- glusphere
 
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo, ich hab hier probleme mit glusphere, ein objekt von gluquardric. Ich bin immmer noch daran, mein Gravitionsprogramm zu programmieren 8) , diesmal bloß in 3-d. Die Rechnerei ist schon alles erledigt, jetzt mangelts bloß an der darstellung. Wenn ich mit gltranslatef das Objekt nach hinten verschiebe, wird die Qualität furchtbar schlecht. Drehe ich allerdings das Object mit glrotate dann siehts wunderbar aus. Woran liegt das? wie kann ich die Qualität verbessern?
Wenn ihr nicht wisst was ich meine, dann stelle ich noch ein beispiel programm rein. :)

vsilverlord 30. Mai 2008 13:53

Re: opengl- glusphere
 
wenn man 11 mal auf 'nach vorne verschieben' klickt, wird die Qualität der Kugel furchtbar schlecht, beim 12. ist es sogar ganz weg. woran liegt das?

Dunkel 30. Mai 2008 14:35

Re: opengl- glusphere
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo!

Definiere bitte "wird die Qualität furchtbar schlecht".
Ich habe mal Dein Proggi ausprobiert. Die Qualität ist i.O., allerdings "verschwindet" bei mir das Sphere schon nach dem 8ten Mal "nach vorne verschieben", was wohl am zNearClipping liegt (wenn sich das Sphere hinter der Kamera befindet, wird diese natürlich auch nicht mehr gerendert)

Hmm... nach ein wenig drehen, vor und zurück, kam ein recht unschönes Ergebnis bei raus (siehe Anhang). Meinst Du sowas?

franktron 30. Mai 2008 14:35

Re: opengl- glusphere
 
Also bei mir sieht das immer gut aus

Win XP SP2 ATI X1650

Wie sieht den das bei dir aus.

littleDave 30. Mai 2008 14:40

Re: opengl- glusphere
 
Die "Qualität" wird nicht schlechter, sondern die Kugel-Vertice werden abgeschnitten. Das liegt an dem zFar-Wert, den du bei der Funktion gluPerspective übergibst. Probier mal größere Werte aus.

Du solltest aber aufpassen, dass du die Distanz zwischen zNear und zFar möglichst klein hällst. Diese beiden Werte skalieren den Tiefenpuffer, der meinstens eine Genauigkeit von 24 Bit hat (je nach Einstellung). Wenn du die Distanz der beiden Werte zu groß wählst, kann es sein, dass zwei Vertice die gleiche Position im zPuffer bekommen, obwohl ihre z-Werte unterschiedlich sind.

Ich benutze meinstens folgende Werte:
zNear: 0,1
zFar: 128

vsilverlord 31. Mai 2008 10:30

Re: opengl- glusphere
 
vielen Dank, das funktioniert perfekt! ich hab bloß noch nicht verstanden, warum ich die differenz so klein nehmen muss. Ich habe jetzt
zNear: 0,1
zFar: 500
genommen. sieht auf jeden Fall besser aus wie vorher, ich brauche ja für mein Programm schon größere Entfernungen. :stupid:

vsilverlord 31. Mai 2008 11:00

Re: opengl- glusphere
 
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo, jetzt würde ich gerne noch das Programm so einstellen, dass sich die Kugel, wenn sie sich vom Nullpunkt entfernt, gestreckt wird. Normal ist das ja sinnvoll, da es dann perspektivischer bzw. mehr 3-d aussieht. Ich würde es aber gerne so haben, dass die Kugel immer die gleiche Größe behält.
[ ich hab das desshalb nicht oben drangemacht, weil es ja ein neues problem jetzt ist]

vsilverlord 31. Mai 2008 17:19

Re: opengl- glusphere
 
Vielleicht habe ich meine Frage blöd formuliert: Also wenn die Kugel sich von der Mitte entfernt, dann wird sie immer mehr gestreckt, und zwar in die Länge. Das würde ich gerne versuchen zu unterbinden, damit die Kugel in jedem Punkt auf dem Bildschirm gleich groß aussieht. :spin: :spin:

littleDave 31. Mai 2008 18:05

Re: opengl- glusphere
 
In der Funktion gluPerspective(fovy, aspect, zNear, zFar : glDouble); kannst du mit dem Parameter fovy den Betrachterwinkel angeben. Ich weiß nicht, ob das dein Problem lösen wird, aber du kannst ja mal einen Wert von 45.0 versuchen - das sollte eigentlich funktionieren.

Bin mir da aber leider nicht sicher :?

vsilverlord 31. Mai 2008 19:14

Re: opengl- glusphere
 
vielen Dank! ja es funktioniert!! :-D


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:04 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz