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

Aktuelle Zeit: Fr Jul 18, 2025 00:44

Foren-Übersicht » Programmierung » OpenGL
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Punktwolke managen
BeitragVerfasst: Do Mär 03, 2005 09:44 
Offline
DGL Member

Registriert: Do Mär 03, 2005 09:39
Beiträge: 4
Hallo erstmal,

also och habe mir ein Programm geschrieben welches Punkwolken darstellt in 3d, man kann sich auch darin bewegen usw.
mein Problem ist nur dass wenn ich eine Punktwolke mit 10MB lade das ganze ziemlich stark ruckelt.
Ich lade meine Punkte vor dem Initialisieren von OpenGL in ein Array.

Nun wollte ich wissen welche verfahren man anwenden kann um mit grossen datenmengen zu arbeiten.


PS.: Später sollen in meiner anwendung bis zu 100MB und mehr an Punkten geladen werden können.

Danke für eure Hilfe


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mär 03, 2005 10:15 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Sind alle Punkte immer sichtbar? Können alle Punkte gleichzeitig sichtbar sein?

Was hast du für eine GrafikKarte?

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mär 03, 2005 10:16 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Ich habe so etwas ähnliches schon mal gemacht und da bewegt man sich über sehr dünnes eis. Wenn es zuviel ist dann kann man kaum etwas anderes machen als die Punktezahl zu reduzieren.

Das Einzige was du sinnvoll machen kannst ist das Zeichnen bis zur Vergasung optimieren und all die Punkte ausblenden die du nicht sehen willst.
Schau dir mal das Vertex Buffer Object Tutorial an. Mit dieser technik legst du die Punkte in den Grafikkartenspeicher ab und kannst sie mit einen Schlag zeichnen. Es wäre wahrscheinlich auch noch sinnvoll, wenn du die Punkte in kleine Unterbereiche einteilst und diese mittels Octree und FrustrumCulling ausfilters.

Wenn die Punkte unterschiedliche Größen haben sollten so müsstest du sie der Größe nach sortieren und getrennt mit VBO's rendern. Da du dort leider keine Größe angeben kannst.

Das ist eigentlich schon alles wozu ich dir raten kann. Allerdings 100MB an Punkten ist wahnsinnig viel. Da wirst du wahrschleich schlechte Karten mit haben. Zu mindest dann wenn man fast alle Punkte sieht. dann bleibt dir nichts anderes übrig als überlagernde Punkte zusammenzufassen etc. Aber das zur Laufzeit zu machen ist nicht möglich, da es einfach viel zu rechenintensiv ist.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mär 03, 2005 10:36 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Dez 28, 2002 11:13
Beiträge: 2244
Bei so vielen Punkten wäre auch eine Möglichkeit statt 3xSingle ein anderes Format z.B. SmallInt für die Punkte zu nehmen, falls die Genauigkeit ausreicht. Dann halbiert sich der Speicher schonmal. Die VBO's können relativ groß werden und bei einer 128MB Karte passen die 100MB eventuell, falls man sonst keine Texturen benutzt. Man muß dann aber mehrere VBO's nehmen, weil die ATI Treiber einen Fehler hatten oder haben, so dass bei 32MB pro Buffer Schluß ist.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mär 03, 2005 15:19 
Offline
DGL Member

Registriert: Do Mär 03, 2005 09:39
Beiträge: 4
also es ist ganz konkret ene punktwolke eines tunnels. durch die sich der anwender durchbewegt.
d.h.: es sind nicht immer alle punkte sichtbar.

das mit dem umwandeln in smalint würde nicht funktionieren da die genauigkeit dann nicht mehr ausreicht.

es gibt auch keine überlagernden punkte die punkte sind alle in einem bestimmten raster aus einer anderen anwendung exportiert.


ps.: wer kennt polyworks? in polyworks kannst du eine punktwolke mit 700mB laden und derart flüssig darstellen (drehen, zoomen) .
desshalb dachte ich mir ich versuch das auch mal


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mär 03, 2005 17:42 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Nun man könnte ja eine Art LevelOfDetail einbauen.
Also nur jeder 3. Punkt wird von den Punkten gezeichnet, die weiter weg als xx OpenGL Einheiten sind. Dann jeder 2. bei entfernung yy und dann jeder der näher als zz ist. So kannst du schonmal die Menge der Punkte runter drehen.

Guck dir mal in dem genannten Programm an, ob tatsächlich alle Punkte da bleiben oder ob welche plötzlich auftauchen bzw. verschwinden.

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


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 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.

Suche nach:
Gehe zu:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.007s | 14 Queries | GZIP : On ]