Wie realisiert man große 3d Welten mit OpenGL? Sind 32 Bit GLdouble Werte für die Weltkoordinaten nicht viel zu klein?



  • Du meine Güte, das ganze Sonnensystem im Computer darstellen???
    Ich habe es nicht nachgerechnet, aber ich glaube nicht dass selbst 64-Bit-Werte dafür ausreichen.

    In DirectX werden die Positionen durch float-Werte (also 32 Bit) dargestellt. Von OpenGL habe ich keine Ahnung.

    Wenn du ein Sonnensystem machen willst, dann brauchst du doch keinen so großen Wertebereich. Oder willst du etwa ein winziges Raumschiff vor der riesigen Erde herumfliegen lassen??

    einfach skalieren

    genau!



  • Schlimmer sind noch numerische Ungenauigkeiten je weiter Du vom Ursprung weg kommst...



  • Sgt. Nukem schrieb:

    Schlimmer sind noch numerische Ungenauigkeiten je weiter Du vom Ursprung weg kommst...

    Dieser Artikel befasst sich mit diesem Problem:
    http://www.gamasutra.com/features/20020712/oneil_01.htm

    Viele Grüße
    Fischi



  • Das Problem der Darstellung wird an ganz anderer Stelle auf Dich zu kommen... wenn Du einen Meter abbilden möchtest.... dann betrachte mal das Verhältnis von 8 Lichtminuten (300.000km/sec*480sec=144 Mio km) von der Sonne zu einer kleinen Kugel namens Erde mit einem Durchmesser von 6000km... wenn Du Dir beispielsweise das Intro von Star Trek anschaust... stimmen die Proportionen ebenfalls in keinster Weise... nur durch "schummeln" sieht es einigermaßen aus...

    Gruß Winn



  • Sgt. Nukem schrieb:

    Schlimmer sind noch numerische Ungenauigkeiten je weiter Du vom Ursprung weg kommst...

    Deswegen würde ich ja gerne lieber 64 Bit Werte verwenden.



  • Tubos schrieb:

    Wenn du ein Sonnensystem machen willst, dann brauchst du doch keinen so großen Wertebereich. Oder willst du etwa ein winziges Raumschiff vor der riesigen Erde herumfliegen lassen??

    einfach skalieren

    genau!

    Dann stimmen aber nicht mehr die Größenverhältnisse.

    Es soll halt schon Realistisch sein.
    D.h. ein winzig kleines Raumschiff vor einer riesigen Erde ist schon eine notwendige Bedingung.



  • Fischi schrieb:

    Sgt. Nukem schrieb:

    Schlimmer sind noch numerische Ungenauigkeiten je weiter Du vom Ursprung weg kommst...

    Dieser Artikel befasst sich mit diesem Problem:
    http://www.gamasutra.com/features/20020712/oneil_01.htm

    Viele Grüße
    Fischi

    Ich werde mir das mal anschauen, danke.



  • Winn schrieb:

    Das Problem der Darstellung wird an ganz anderer Stelle auf Dich zu kommen... wenn Du einen Meter abbilden möchtest.... dann betrachte mal das Verhältnis von 8 Lichtminuten (300.000km/sec*480sec=144 Mio km) von der Sonne zu einer kleinen Kugel namens Erde mit einem Durchmesser von 6000km... wenn Du Dir beispielsweise das Intro von Star Trek anschaust... stimmen die Proportionen ebenfalls in keinster Weise... nur durch "schummeln" sieht es einigermaßen aus...

    Gruß Winn

    Der Pluto ist von der Sonne ca. 7,30433 Mrd. km entfernt.

    Laut Gamasutra würde es mit 64 Bit Werten also gehen:

    ...if the smallest unit you care about keeping track of is a millimeter, you start to lose accuracy around 1,000 km with floats and around 1 trillion km with doubles.

    Die Frage ist jetzt nur, kann OpenGL mit 64 Bit werten umgehen?



  • In Metern wären das:
    703043300000

    also grob 10^13. Single hat keine Probleme 10^38 darzustellen, double geht gar bis über 10^308. Wo ist also das Problem?



  • Helium schrieb:

    In Metern wären das:
    703043300000

    also grob 10^13. Single hat keine Probleme 10^38 darzustellen, double geht gar bis über 10^308. Wo ist also das Problem?

    Das Problem liegt darin, dass wenn in einem float Werte der Größe
    10^38 speichert, der geringste Abstand zwischen zwei Werten in der Größenordnung 10^31 liegt.
    Diese Ungenauigkeit ist dann wohl inakzeptabel.

    @GL Newbie
    Ich bin mir ziemlich sicher, dass OGL und insb. auch deine Grafikkarte
    kein double akzeptieren wird.
    Wie du trotzdem ein Sternensystem simulieren kannst, wurde in dem Artikel
    recht ausführlich beschrieben.

    Viele Grüße
    Fischi


Anmelden zum Antworten