ich beginne derzeit damit ein älteres Projekt neu zu überarbeiten und könnte dabei noch ein bischen Hilfe von Euch im Bezug auf einige Grundlegende Fragen gebrauchen.
Ich möchte Euch noch ganz höflich bitten einfach zu Antworten. Ich weiss das das meiste in der Wiki auch drin steht und darin hab ich auch gelesen, aber einiges ist mir halt unklar. Deswegen frage ich hier und erhoffe mir einfach eine Antwort und keinen Verweis irgendwo hin. Danke Euch !!
Also erst mal zu Erklärung was am Ende rauskommen soll und was das Projekt so für Anforderungen stellt.
Es geht um so eine Art Routenplaner, allerdings nicht zum Autofahren sondern zum fliegen.
Eigentlich ist es aber das gleiche. Beim fliegen heissen die Strassen eben nicht Strassen sondern Luftstrassen oder Airways.
Es soll also per Pathfinding eine Route von A nach B gefunden werden was nicht wirklich das Problem ist. Das geht soweit recht gut.
Jedoch hab ich also folgende Probleme:
1. Zoom :
Die gesammt OGL ausgabe soll ( denke ich ) auf einem Panel erfolgen. Nun möchte man ja auch mal näher ran oder sich das ganze von weiter "oben" anschauen. Mach ich den Zoom am besten mit glTranslate oder glScale ?
Wobei ich denke das glScale hier richtiger ist oder ?
2. Viele Punkte :
Es müssen auf der Scene sehr viele Punkte dargestellt werden ( so was um die 70000 !! und mehr )
Wie mach ich das am besten das mir das nicht so doll ruckelt ?
Ich weiss...Listen. Das hab ich auch schon probiert, jedoch bei der Masse ruckelte es dann doch.
Kann man da noch irgendwas anderes machen ?
3. Selection :
Die ganzen punkte müssen auch noch ausgewählt werden können. Sprich wenn ich mit der Maus über die Scene fahre soll in der Statusbar ( z.B. ) der name des jeweiligen Punktes erscheinen.
( Grund : Kann sein das ich die Punkte dann noch weiterverarbeiten muss )
4. Verschieben :
Die "Karte" soll sich dann auch noch mit der Maus verschieben lassen. Bei sooooooooo vielen punkten hatte iich auch damit einige Probleme. 100% CPU Auslastung usw.
hmm, das sind so erst mal die Grundlegenden Fragen.
Könnt Ihr bei einigen helfen ?
Dank Euch
Matthias
Registriert: Di Sep 06, 2005 18:34 Beiträge: 362 Wohnort: Hamburg
Hi ...
Also zu Punkt 1 kann ich nichts sagen.
Aber zu Punkt 2:
Wenn ich dich richtig verstanden habe ist die Zahl (70000) auf alle Punkte bezogen die du zeichnen kannst. D.h. du musst entscheiden welche Punkte du wirklich zeichnen musst. Wenn du also einen kleinen Ausschnitt hast werden natürlich nicht alle Punkte dargestellt und daher musst du sie auch nicht an die Graka schicken. Ich denke da wäre eine Gruppierung der Punkte sinnvoll.
Du könntest die Punkte z.B. in einer Baumstruktur zusammenfassen. Davon würde der oberste Knoten alle Punkte beinhalten und sich dann in mehrere Aufteilen die halt weniger beinhalten und so weiter. Beim Zeichnen könntest du den Baum dann von oben abarbeiten und sehen ob die Knoten überhaupt sichtbar sind und anhand dessen entscheiden welche Punkte gezeichnet werden müssen und welche nicht.
Das wird dann auch Auswirkungen auf Punkt 3 und 4 haben.
Zusätzlich noch ein Vorschlag:
Je größer der Ausschnitt wird, also je weiter du hinauszoomst, desto geringer wird die Detailstufe ... d.h. weniger Punkte werden gezeichnet, die Map (die du wahrsch. auch zeichnen wirst) wird nicht so hochaufgelöst dargestellt etc. Da könntest du z.B. verschiedene feste Detailstufen festlegen die du je nachdem wie groß der Ausschnitt ist zeichnest ...
Das wars erstmal
Gruß
Shai
_________________ Der Mensch hat neben dem Trieb der Fortpflanzung und dem zu essen und zu trinken zwei Leidenschaften: Krach zu machen und nicht zuzuhören. (Kurt Tucholsky)
Schwabbeldiwapp, hier kommt die Grütze. (Der Quästor)
Registriert: Do Aug 25, 2005 16:00 Beiträge: 189
Programmiersprache: Java, C#
Zu 1.: Ich für meinen Teil würde glScale benutzen - und mir fällt jetzt auch kein Beispiel ein wo glTranslate benutzt wurde...
2. Außer Displaylisten, testen ob die Punkte wirklich im sichtbaren Bereich liegen, Backface Culling fällt mir nicht viel ein.
Außer vielleicht noch glHint, da kannst du die Kantenglättung der Punkte mit
Code:
glHint(GL_POINT_SMOOTH_HINT, GL_FASTEST);
beeinflussen...
3. Hm, das wäre dann wohl ein Fall für Selection bzw. die Tutorials zu Objektselektion(Nr. 1 und Nr. 2)
4. 100% CPU Auslastung sind normal, wenn man bei der Idle-Behandlung kein Sleep setzt(siehe Quickstart Tutorial)
so schnell hab ich gar nicht mit einer Antwort gerechnet !
Dank Euch beiden !! und.. streitet Euch nicht wer schneller war is ja lustig
Ok, glScale ist notiert.
Das mit den nur sichtbaren Punkten ist ne gute Idee. Das mit dem "Baum" hab ich zwar nicht so wirklich verstanden, aber vielleicht kann man das irgendwie anders machen.
Wie ist denn das ? Ich hatte für die Punkte eine Displayliste erstellt.
Die wurde beim starten des Programms nur einmal erstellt.
Also einfach ne Datei eingelesen...nen Record..ne Schleife die den Record ausliest und dann
immerwieder glBegin(), punkt malen, glEnd; näcchster Eintrag.
Das wird aber nur EINMAL gemacht, denn das dauert ja ein bischen.
Wenn ich jetzt abfragen will was sichtbar ist auf der Szene und nur die Punkte die im sichtbaren bereich sind darstellen will wie soll ich das denn machen ?
Irgendwie fehlt mir da die Idee wie das gehen soll ?
Jetzt werd ich erst mal schauen was das mit dem glHint auf sich hat ...
Registriert: Di Sep 06, 2005 18:34 Beiträge: 362 Wohnort: Hamburg
Hi ...
also die Displayliste kannst du bei der Vorgehensweise vergessen, da DLs ja rein statisch sind und nicht verändert werden können, das Vorgehen aber eine dynamische Zeichenmethode voraussetzt...
Evtl kann man das mit VBOs machen, da diese auch dynamisch verändert werden können, ich weiß aber nicht ob das sinnvoll (bzw einfach umzusetzen) wäre. Ansonsten müsstest du auf die ganz normale Art rendern...
Außerdem ist es nicht zu empfehlen für jeden Punkt ein glBegin/glEnd aufzurufen.
Du kannst genausogut auch einmal glBegin aufrufen, alle Punkte zeichnen und dann nur einmal glEnd am Schluss aufrufen...
Ich weiß jetzt nicht ob deine Anwendung reines 2D ist, wovon ich mal ausgehe. In diesem fall google mal nach "Quadtree" ... das dürfte die richtige Technik sein für dich...
Gruß
Shai
_________________ Der Mensch hat neben dem Trieb der Fortpflanzung und dem zu essen und zu trinken zwei Leidenschaften: Krach zu machen und nicht zuzuhören. (Kurt Tucholsky)
Schwabbeldiwapp, hier kommt die Grütze. (Der Quästor)
Mitglieder in diesem Forum: 0 Mitglieder und 4 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.