Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

21.04.2021, 14:35

Problem Virtueller Globus mit OpenGL: 1:2 Plattkarte als Texturbasis okay, aber Darstellung der Kontinente zu groß

Hallo zusammen,

zwar mit einiger Programmiererfahrung in anderen Bereichen ausstaffiert, versuche ich im Moment irgendwie einen Zugang zu OpenGl (Windows: C++ / C#) zu finden. Da habe ich direkt ein Problem zu lösen:

Ich möchte gern meinen eigenen virtuellen Globus auf OpenGl-Basis entwickeln, da die gängigen wie etwa Marble oder WorldWind einerseits sehr umfangreich sind, andererseits aber nicht das bieten, was ich brauche.

Bei aller Geduld, die ich dabei aufbringe (& aufbringen muss) - zum Anfang aktuell also überhaupt erstmal eine Sphäre zu erstellen & die mit einer weltkartenbasierten Textur zu versehen - gibt es gleich ein Problem, das mich ziemlich stört bzw. ärgert:

Wenn ich mir Marble oder WorldWind ansehe, dann passen dort auch die''' Proportionen der Kontinente''' zueinander, genau entsprechend einem klassischen Globus, & unabhängig vom Abbildungsmassstab. Das funktioniert demgegenüber aktuell - auch bei Leuten, die wirklich OpenGl können und entsprechende Beispielprojekte im Internet stehen haben, & die ich mir als Muster angesehen habe - wohl aber nur grundsätzlich:

Wenn man als Basis eine zusätzlich mit der »Tissot'schen Indikatrix« versehene Plattkarte nimmt (T. I. = zusätzlich auf der Karte in Reihen angeordnete Kreise, die aber vom Äquator ausgehend verzerrungsbedingt immer mehr zu Ellipsen werden), sind auf jedem fertigen Globus überall zwar Kreise abgebildet, aber die Kontinente sind im Verhältnis alle zu groß, geschätzt bis zu 10 %. Nur wie vorschriftsgemäß eine Plattkarte im Verhältnis 1 : 2 als Grundlage der Textur zu verwenden & sich im übrigen auf OpenGl zu verlassen, scheint also nicht zu reichen. Vllt. war diese Disproportionalität der Kontinente insgesamt den erwähnten Programmiereren aber auch einfach nicht aufgefallen. Jedenfalls tritt das Problem auch auf, wenn man die z. B. Marble zugrundeliegenden Karten verwendet.

Entsprechend die Frage (die ich leider noch nicht präziser stellen kann): Welche Befehle im Dunstkreis der Spheres & Texturen sind es, wo man zusätzlich wie beschrieben Abbildungmaßstäbe festlegen kann, dass die benannten Größenverhältnisse stimmen?

Danke & Gruß

Heinzi

Jonathan

Community-Fossil

  • Private Nachricht senden

2

21.04.2021, 14:56

Hi,

die Antwort lautet: Deine Texturkoodrinaten müssen zu der Kartenprojektion passen, die deine Textur verwendet. Es sollte grundsätzlich möglich sein beliebige Texturen korrekt darzustellen, allerdings kann es schwierig sein, die passenden Texturkoordinaten zu berechnen.

Am einfachsten dürfte eine zylindrische Projektion sein. Die passenden Texturkoordinaten sollte man dafür sogar mit Blender erstellen können, ansonsten kann man sich aber auch leicht die Formeln herleiten, um sie zu berechnen. Du musst dann nur noch eine Weltkartentextur finden, die die selbe Projektion verwendet. Dabei dürfte der Äquator am meisten gestaucht sein (und die Pole am meisten gestreckt). Vermutlich muss die Textur dann also eine recht hohe Auflösung haben um um den Äquator herum genügend Details zu bieten, aber das sollte kein so großes Problem sein. Wenn du reinzoomen können willst wie in Google-Earth, brauchst du eh andere Ansätze um mit den massiven Datenmengen umzugehen.

https://originalmap.de/universe-das-weltkartenuniversum/
(Was da unter "Zylindrische Vorsprünge" steht, sieht nach dem aus, was ich meine)
Lieber dumm fragen, als dumm bleiben!

3

21.04.2021, 22:16

Hi

zurueck & danke für Deine Rückmeldung, werd mich da mal rantasten.

Danke & Gruß

Heinzi

Werbeanzeige