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

Aktuelle Zeit: Mi Mai 29, 2024 02:31

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 14 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Sa Jun 01, 2013 20:55 
Offline
DGL Member

Registriert: Do Mai 30, 2013 14:56
Beiträge: 10
Programmiersprache: Pascal - Lazarus
Hallo zusammen,

seit knapp 2 Jahren beschäftige ich mich nun schon mehr oder wenig (privat) mit der Programmierung, anfangs ein wenig Basic angesehen, dann auf Delphi (schulisch) und Lazarus umgestiegen. Mit den Grundmechaniken bin ich also weitestgehend vertraut, wenn mal doch nicht, bin ich lernwillig. :)
Das was ich bis jetzt weiß beschränkt sich aber fast nur auf die Grundelemente von Lazarus, kaum auf irgendwelche "externen" Inhalte. Nun habe ich mir aber fest eine Idee für ein rundenbasiertes Wirtschaftsspiel in den Kopf gesetzt, auch schon angefangen, aber schnell gemerkt, dass man mit der Standard-UI grafisch nicht weit kommt. Also habe ich mich dann mal auf die Suche begeben, nach Möglichkeiten das ganze aufzuhübschen. So stieß ich dann nach einiger Zeit auf OpenGL und ziemlich schnell auch auf das Projekt W Phase2, was ich mir ansah und mit die Erdkugel sehr gut gefiel.

Ich suche also nach Möglichkeiten das Spiel grafisch aufzupeppen (bzw es darauf hin neu aufzubauen, da ja dann sicher auch vieles besser möglich wird).

Zum Einen wäre da die GUI, ich habe da auch schon gegoogelt, auch Anleitungen, aber eben keine wirklichen Tutorials oder ähnliches Material gefunden, wie man soetwas bewerkstelligt.
Zum Anderen wäre dann natürlich das "Hauptelement", grafisch gesehen, die Erdkugel. Ich möchte sie vom oben genannten Spiel nicht abkupfern, mir gefällt es nur so gut, dass ich die Idee auch für mich ein wenig umsetzen möchte (ich hoffe das wird eher als Kompliment, als als Ideenklau aufgefasst). Bei mir handelt es sich dann auch eher um reine Firmenstandorte, mit dneen dann eben über die Erdkugel eine Athmosphäre geschaffen werden soll.
Wie kann man eine solche Kugel (möglichst mit wechselnder Textur, da sich diese nach Jahren ändern soll) bewegbar, zoombar und möglichst Anfängerfreundlich mit OpenGL bewerkstelligen.

Ich wäre da jeder Hilfe, auch wenn es nur Hinweise auf Tutorials oder Ähnliches ist, dankbar. Ich habe mir da auch schon einiges angesehen, aber nicht wirklich rausgelesen WIE ich das nun anstellen soll :D

Eine solche Kugel ohne 3D-Kenntnisse usw ist vielleicht ganz schön kompliziert, aber ich bin wirklich lernwillig und möchte "genau das" hinbekommen :)

Ich würde mich freuen
Liebe Grüße rm-trucker


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: So Jun 02, 2013 10:11 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Ohne 3D-Kenntnisse wird das definitiv kein leichtes Unterfangen.

Eine ganz simple Weltkugel mit einer einfachen Textur zu rendern ist noch relativ leicht, wenn dann aber Tag/Nachtwechsel, Wolkendecke, Atmosphäre, etc. dazu kommen wirds schon schwierig. Das sind Effekte die u.a. mit Shadern umgesetzt werden, auf dem Bereich sollte man sich dann also auch auskennen. Zoomen, Rotieren und Verschieben ist hingegen extrem simpel, das sind einfach mathematische Formeln.

Für den Anfang reichts also evtl. erstmal wenn du nur eine Kugel mit der Erdtextur darstellst, das geht z.B. ganz simpel über gluSphere. Dann noch die Funktion zum Zoomen, Rotieren und Verschieben, und dann kannst du darauf ausbauen und dich z.B. mit Shadern anfreunden. So hab ich vo Jahren auch angefangen. Auf dem Screenshot sieht man die allererste Version der Weltkugel, und rechts davon die aktuelle Version (klicken zum Vergrößern) :

Bild

Eine GUI wird da schon etwas komplexer, sowas muss man für OpenGL dann i.d.R. selbst entwickeln. Für PjW nutze ich eine komplett selbstentwickelte GUI mit einem eigenen WYSIWYG-Editor. Da stecken Jahre an Entwicklung und Erfahrung drin, aber hier im Forum findest du jede Menge Anhaltspunkte und evtl. sogar ein paar Projekte auf denen du aufbauen kannst. Fenster und GUI-Elemente wirst du in OpenGL komplett selber rendern müssen, und dann sollte man es am besten so flexibel gestalten dass man beim Design der GUI über Texturen freie Gestaltungsmöglichkeit hat. Wenn du aber eine komplexe WiSi bauen willst dann wirst du definitiv viel Zeit in deine eigene GUI investieren (müssen).

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: So Jun 02, 2013 12:02 
Offline
DGL Member

Registriert: Do Mai 30, 2013 14:56
Beiträge: 10
Programmiersprache: Pascal - Lazarus
Vielen Dank für die Antwort!
Hilft mir schon mal um einiges weiter, da ich solche Sachen wie Wolken usw. sowieso garnicht mit bedacht hatte. Im Vordergrund steht da auch ersteinmal die Erde an sich und damit man eben alle "Ecken" erreichen kann, soll sie rotiert und gezoomt werden können, das werde ich mir dann mal zuerst ansehen. Deine "Erdevolution" sieht schon richtig gut aus!

Ja, was die GUI angeht, habe ich bei deinem Projekt schon gesehen, dass das ein sehr komplexes Unterfangen wird! Aber so gefällt mir das :D. Ich habe mir da auch heute Morgen überlegt (ich habe das bei dir gesehen, dass du bei Phase 2 für jede Nation eine veränderte GUI verwendest), dass ich es gern haben würde, dass sich die GUI im Laufe der Zeit verändert, also sozusagen sich (wenn ich 1890 starte) dann immer wieder erneuert, sodass es zur Zeit passt. Aber das sind alles Ideen, die man ja dann auch später umsetzen kann.

Gibt es für die Entwicklung einer (einfachen) GUI speziell auf OpenGL+Lazarus (oder auch Delphi ist ja recht ähnlich) bezogen irgendwelche Tutorials, da das ja anscheindend über XML-Dateien am besten zu bewerkstelligen ist?

Auch hierfr schonmal vielen Dank!


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: So Jun 02, 2013 12:30 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Nur ein Denkanstoß am Rande: Wo bekommst du denn die sich ändernden Texturen für die Erdkugel her? Welchen Detailgrad müssen die bei dir haben?

grüße

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: So Jun 02, 2013 13:24 
Offline
DGL Member

Registriert: Do Mai 30, 2013 14:56
Beiträge: 10
Programmiersprache: Pascal - Lazarus
Die wollte ich eigentlich selbst machen, damit diese auch zueinander passen, sich sozusagen nur die Landesgrenzen ändern. Da muss ich mir aber auch noch einfallen, wie sich das lösen lässt, sodass diese möglichst ohne Grafikverlust zoombar sind. Am besten wären da ja Vectorgrafiken, aber keine ahnung ob und wenn ja, wie diese verwendbar sind. Diese zu erstellen ist kein Problem, mache ich seit Jahren für mein Hobby. Teilweise auch recht komplexe.

Was den Detailgrad angeht sollte man schon recht nah ranzoomen können, also z.B. so, dass man Halb- bis Vierteleuropa drauf hat (wäre wünscheswert). Sollte das so nicht umzusetzen sein ist aber das Minimum, dass Länder wie Belgien, Schweiz (Andorra,Lichtenstein und sowas kann man da gern weglassen :D ) erkennbar und anwählbar sind. Bzw. müssen nicht die Länder selbst, sondern Niederlassungen (hätte ich dann als Objekte (wahrscheinlich 3D) versucht umzusetzen) anwählbar sein.

Probleme (die sich hoffentlich noch auflösen) sehe ich da nur eine "Karte" auf ein rundes Objekt zu bringen, sodass sich da möglichst wenig verzerrt.


Oder wüsstest du da eine gute Möglichkeit als Idee für den Erdball?


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: So Jun 02, 2013 13:29 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Vektorgrafiken ergeben da als Quelle sicher Sinn. Dann gibt es zwei Optionen: Entweder du renderst die Vektorgrafik über die Kugel, selber, das heißt, du musst SVG (oder sowas) parsen und rendern. Kann man machen, ist etwas aufwendig, geht aber. Muss man sich halt Beziérs anschauen und dann die fertig gerenderten Teile auf die Kugel mappen. Dafür braucht man dann eine Koordinatentransformation, die aus einer kartesischen Ebene auf die Kugeloberfläche projiziert. Sowas sollte recht einfach zu schreiben sein wird aber (wie immer…) an den Polen Probleme machen. Das sollte aber gut gehen, solange keine Linie direkt durch den Pol geht.

Oder du nimmst dir einen fertigen Renderer und renderst je nach aktuell sichtbarem Ausschnitt und Zoomgrad einen Texturschnippsel. Das wird dann etwas aufwendiger, geht aber auch.

Je nach Zoomgrad würde ich dann auch die Kugeligkeit vernachlässigen und einfach ne Ebene rendern.

grüße

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: So Jun 02, 2013 15:46 
Offline
DGL Member

Registriert: Do Mai 30, 2013 14:56
Beiträge: 10
Programmiersprache: Pascal - Lazarus
Danke für die Info! Das hört sich für mich zwar beides noch seeeehr kompliziert und neu an, aber da weiß ich erstmal was ich mir ansehen sollte. Deine erste Variante ist ja, wie du schreibst, dann wohl etwas einfacher. Bei der zweiten würde ich vermuten, dass diese Speicherplatzärmer arbeitet, da sie ja nicht immer die gesamte Kugel, sondenr nur den zu sehenden Teil aufbewahrt. Aber ich denke, da ich ja keine größeren 3D Teile einbringen möchte, sondern die kugel soweit das größte und wichtisgte umfasst, sollte da auch Variante 1 gehen, da ja eh ersteinmal leichter besser für mich ist :)

Weiß jemand welche Dateien alles als Vectorgrafiken zum auf die Kugel rendern möglich sind? Ich arbeite noch mit einem ziemlich in die Jahre gekommenden CorelDraw, der exportiert noch nicht in .svg Dateien.

Liebe Grüße


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mo Jun 03, 2013 10:26 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Du musst das Format halt verarbeiten können. SVG ist offen, dafür kann man einfach einen Parser schreiben. Bei anderen Vektorformaten weiß ich das nicht.

Eventuell kam das auch nicht ganz richtig rüber, die zweite Variante ist, einen vorhandenen SVG-Renderer vorrausgesetzt (librsvg z.B.), einfacher zu implementieren. Aber etwas Speicheraufwendiger, weil du das gerenderte SVG im Speicher halten musst (also Pixeldaten), was gegenüber den Vektordaten vermutlich größer wird. Die erste Variante ist implementierungstechnisch aufwendiger, weil du die Beziérs selber in Polygone zerlegen und dann noch projizieren musst.

grüße

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mo Jun 03, 2013 14:23 
Offline
DGL Member

Registriert: Do Mai 30, 2013 14:56
Beiträge: 10
Programmiersprache: Pascal - Lazarus
Okay, dann ist für mich wohl ersteinmal die zweite Variante sinnvoller, da leichter umzusetzen. Und wenn es da schon Renderer gibt für mich auch besser. Wenn ich mal irgendwann demnächst wieder mehr Zeit habe, versuch ich erstmal die Kugel hinzubekommen. Ich denke mal es gibt ja dann auch kostenlose Programme für .svg Dateien, da muss ich mich eben noch in so eines einfuchsen :)

Erstmal vielen Dank für die Hilfe, kommen sicher noch mehr Fragen von mir :D

Edit: Was würdet ihr mir empfelen? SDL+OpenGL oder nur OpenGL? Ich bin mir da nicht so sicher, da auf unserscheidnlcihen Seiten die Meinungen ziemlich auseinadner gehen. Da ich dann sowieso das Projekt nochmal komplett neu schreibe wollte ich gleich so beginnen.

Edit2: Weil ich mich grade nochmal belesen habe was die GUI Entwicklung angeht, gibt es da schon irgendwelche Builder/Designer, die man frei für Lazarus verwenden kann? Wie ich das sehe wird da z.B. für Java ne Menge angeboten, hierfür nicht oder? Also meien Suche hat da leider nichts ergeben. Wie muss bzw kann ich aber überhaupt ansetzen das Ganze selbst zu entwickeln?

Liebe Grüße


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: So Jun 09, 2013 18:46 
Offline
DGL Member

Registriert: Do Mai 30, 2013 14:56
Beiträge: 10
Programmiersprache: Pascal - Lazarus
So ich habe mich jetzt mal mit der ganzen materie ein wenig mehr auseinadner setzen können, bin aber leider zu dem Entschluss gekommen, dass mir 3D für den Einstieg in die doch etwas kompliziertere Programmierung wie bisher, dann zu kompliziert ist :(
Ich denke ich sollte da ersteinmal mit anderen Sachen, wie der GUI usw durchblicken und kann das Ganze ja später vielleicht nochmal angehen.

Bin da schon vor längerer Zeit auf Andorra 2D gestoßen, was auch auf OpenGL aufbaut, aber dachte mir erst, wenn dann kannste auch gleich 3D anfangen, naja, die Einsicht kam nun doch, dass es nicht so einfach ist.

Die haben ja auch ne recht gute GUI Entwicklung anscheinend mit drin. Ich habe die Erdkugel also jetzt erstmal sein gelassen und versuche es jetzt wie eine Karte umzusetzen.

Meine Frage nun eigentlich. Ich habe zwar schon immer mal ein paar neue Packages hinzugefügt, wie OpenGL selbst oder damals mehrere Komponenten, die sich mit Webverbindungen usw. beschäftigt haben, aber bei der Implementierung von Andorra unter Lazarus scheitere ich trotz ausführlicher rklärung auf der Website sogar auf deutsch.
http://andorra.sourceforge.net/indexc70c.html?bb=lazarus1ger

Das erste bekomme ich auch noch hin, auch soweit, dass die Datei aktualisiert wird und alles, aber ab dem Punkt "Unser Lazarus Andorra 2D Projekt" krieg ich es leider nicht mehr auf die Reihe.

Wäre nett, wenn es denn einer schonmal verwendet hat, mir da den Punkt ein wenig ausführlicher zu erklären.

Schonmal danke!


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Di Jun 18, 2013 16:45 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7804
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Andorra-2D stammt von einem unserer Mitglieder. So verkehrt bist du damit hier also auch nicht.

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi Jun 19, 2013 17:49 
Offline
DGL Member

Registriert: Do Mai 30, 2013 14:56
Beiträge: 10
Programmiersprache: Pascal - Lazarus
Na das ist ja umso besser :D
Wärt ihr so lieb, mir seinen Nutzernamen zu sagen? Ihm ist der Thread bestimt nicht aufgefallen, hätte ihn dann mal aufmerksam machen können.

MfG rm-trucker


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi Jun 19, 2013 21:40 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7804
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Hier ist der Meinungsthread zu Andorra2D:
http://delphigl.com/forum/viewtopic.php?f=14&t=6774

Und der Nutzer ist Igel457

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi Jun 19, 2013 22:42 
Offline
DGL Member

Registriert: Do Mai 30, 2013 14:56
Beiträge: 10
Programmiersprache: Pascal - Lazarus
Wunderbar, vielen Dank! Da werde ich gleich mal Kontakt aufnehmen :D

Danke!


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 14 Beiträge ] 
Foren-Übersicht » Programmierung » Einsteiger-Fragen


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


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:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.031s | 15 Queries | GZIP : On ]