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

Aktuelle Zeit: Sa Jul 12, 2025 21:36

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



Ein neues Thema erstellen Auf das Thema antworten  [ 13 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: Mo Jul 14, 2003 11:32 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Feb 24, 2003 14:58
Beiträge: 21
Wohnort: Rödinghausen
Hallo zusammen.

Kann mir jemand sagen, ob man Displaylisten in einer Datenbank speichern und natürlich auch wieder auslesen kann (z.B. mit nem Stream).
Und gleich noch ne Frage. Ich arbeite mit GLScene und der User kann zur Laufzeit Objekte hinzufügen und verändern.
Diese so erstellten Scenen sind statisch, das heißt ich muß sie speichern und auch wieder darstellen können.
Kann ich nach solchen Änderungen eine Displayliste davon erstellen?
GLScene bietet zwar die Möglichkeit die Scene in einen Stream zu speichern, aber leider ist das erneute Darstellen eben dieser Scene unglaublich langsam. (2-3 Sekunden). :(
Ich vermute GLScene initialisiert OGL völlig neu.


Ich bin für alle Tips und Anregungen dankbar

Martin

_________________
Alles was man kann ist ganz leicht


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jul 14, 2003 12:25 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Also eine Displayliste kannst du nicht abspeichern. Diese Listen liegen nach möglichkeit auf der Grafikkarte und müssen immer wieder neu angelegt werden. Du kommst ja auch nicht mal direkt an deren Inhalt heran. Außer die ID der Liste besitzt man ja nichts.

Speicherst du denn Stream bei jeder Veränderung oder nur auf Knopfdruck ab? Es würde ja in den meisten Fällen ausreichen, wenn du die Scene nur auf ausdrücklichem Befehl abspeicherst und wieder lädst. Und dann sind Ladezeiten von 2-3 Sekunden ja kein Thema mehr.
Aber beim Laden muss GLScene natürlich den gesamten Objektbaum neu erstellen und das dauert ein wenig.

Deine Objekt permanent in einer Displayliste zu halten macht recht wenig Sinn, dass das Erzeugen bzw. Füllen einer Liste ein wenig Zeit beansprucht und wenn du aber auf interaktionen des Benutzers reagieren willst, dann macht es das Ganze unbedinbar.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jul 14, 2003 12:40 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Feb 24, 2003 14:58
Beiträge: 21
Wohnort: Rödinghausen
Oje, das hört sich erst mal nicht gut an :(

Mein Programm zeigt Bauteile an, die normalerweise nur einmal angelegt, aber sehr häufig abgerufen werden. Beim Blättern durch eine Tabelle sind 2-3 Sekunden einfach zu lang. Hier erschien mir der Gedanke an eine Displayliste schon sinnvoll. Ich habe auch schon darüber nachgedacht das ganze mit kleinen Vorschaubildern zu realisieren.

Martin

_________________
Alles was man kann ist ganz leicht


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jul 14, 2003 12:56 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Also ein Vorschaubild wäre die eine Möglichkeit. Und wahrscheinlich auch die Schnellste. Aber es sollte auch anderes gehen.
Diese Bauteile werden mit deinem Programm erstellt? So eine Art 3D Designtool oder wie habe ich das zu verstehen?

Wenn dem so ist. Könntest du vielleicht du das Objekt direkt abspeichern (also nicht mit Hilfe des Streams). Und zwar besteht das Object zum Beispiel aus einem Würfel an Position so und so und noch ein paar anderen Teilen. Dann kannst du beim Laden GLScene sagen er solle alles unter einem vordefinierten DummyWürfel löschen und erstellst dir deine Objekte eben von Hand dort drunter. Das würde bestimmt nicht so lange dauern. Ganz praktisch wäre es wenn du wärend dieses Zeitraumes Updates in GLScene unterdrückst. Irgendwie so etwas wie BeginUpdate und EndUpade. Hab das nicht mehr so ganz im Kopf.

GLScene macht an und für sich auch nichts anderes allerdings verwendet er Alle Eigenschaften eines Objektes und auch Objekte wie die Kamera. Die hat sich ja gar nicht verändert.

Wobei du bei dieser Methode darauf achten solltest, dass deine Objekte nicht so Wahnsinnig groß sind. Anderfals würde sich die Methode mit dem Bild doch eher lohnen. Auf anfrage kann man dann ja immernoch ein 3D Bild anzeigen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jul 14, 2003 15:03 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Dez 28, 2002 11:13
Beiträge: 2244
Die Frage ist, ob man nicht eventuell bei so einer Ansicht in Form eines Kataloges auf die Geschwindigkeit der DisplayList verzichten kann und die Bauteile einfach direkt mit glBegin/glEnd ohne GLScene zeichnet.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jul 14, 2003 15:19 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Feb 24, 2003 14:58
Beiträge: 21
Wohnort: Rödinghausen
Zitat:
Diese Bauteile werden mit deinem Programm erstellt? So eine Art 3D Designtool oder wie habe ich das zu verstehen?


Ja, genau so ist es. Ich fände es nur einfach sch....ade wenn ich aus Geschwindigkeitsgründen mit Vorschaubildern arbeiten muß. Nicht zu vergessen, der höhere Speicherbedarf, die Netzwerkauslastung und und und.


Zitat:
Die Frage ist, ob man nicht eventuell bei so einer Ansicht in Form eines Kataloges auf die Geschwindigkeit der DisplayList verzichten kann und die Bauteile einfach direkt zeichnet.


Hmm... ja, schon, aber jedes Bauteil besteht wiederum aus vielen Einzelteilen (und/oder anderen Bauteilen) kann seine eigene Texture haben, hat Childs oder Parents, ist transparent oder eben nicht, kann auch FreeForm sein, hat möglicherweise ne eigenständige Beleuchtung usw. . Da bietet sich das Speichern wie in glscene realisiert oder eine Displayliste zumindest gedanklich eben an. Leider haben eben beide Varianten so ihre Nachteile. Mit Displayliste geht es anscheindend schon gleich gar nicht :( und die GLScene-Variante ist zu langsam. Dabei ist hier der Speicherbedarf echt gering (CompressedStream). GLScene erstellt eben leider alles neu, auch die Kameras und Standardbeleuchtung. Wie bereits gesagt, aufgrund der mangelhaften Ausführungsgeschwindigkeit vermute ich, daß GLScene auch sonst noch so einiges neu initialisert. Wenn man sich hier auf das nötigste Beschränken könnte ... :huh:
Mal sehen, ich werde es zuerst wohl noch mit WriteComponent versuchen. Erst mal danke für die Antworten
Vielleicht hat aber ja sonst noch jemand ne Idee :rolleyes:

_________________
Alles was man kann ist ganz leicht


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jul 14, 2003 15:32 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Schau mal ob du evetuell ab einem Element abwärts etwas speichern kannst.
Wie einem Dummycube oder so etwas. So, dass du nur ein Teilstück des Baumes abspeicherst.

Andernfalls würde dir nicht viel anderes Übrig bleiben als selbst Hand anzulegen. Und alles selber in einen Stream stecken. Das hätte auch den Vorteil, dass du nur wirklich das abspeicherst was benötigt wird. Viele Einstellungen bei GLScene werden gar nicht benötigt sind aber trotzdem immer da. Was sich auch auf deren Rendergeschwindigkeit auswirkt.

Für welches Zielnetzwerk ist das denn eigentlich gedacht? Internet oder 100MBit? Bei einem 100MBit Netz kannst du so etwas wie Größe vernachlässigen. Das ist dabei recht egal ob man 4 oder 16 KB überträgt. Im internet sähe das schon ein bisschen anders aus.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jul 14, 2003 21:34 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Feb 24, 2003 14:58
Beiträge: 21
Wohnort: Rödinghausen
Zitat:
Schau mal ob du evetuell ab einem Element abwärts etwas speichern kannst.
Tja, habe ich (mit WriteComponent). Wirklich zufriedenstellend waren die Resultate aber nicht.
Zitat:
Andernfalls würde dir nicht viel anderes Übrig bleiben als selbst Hand anzulegen.
Ich fürchte so wird es kommen. Naja, im Sommer sind die Abende lang. Und ein paar Tage habe ich ja auch noch Zeit :( Als ob ich nichts besseres zu tun hätte.
Zitat:
Für welches Zielnetzwerk ist das denn eigentlich gedacht?
Vorläufig für ein lokales Netzwerk. Das Internet ist aber auch nicht ganz abwegig. Also muß ich schon im Vorfeld mit dem Datenvolumen geizen.

Ich wünsche euch erst mal nen schönen Abend. Ich schlaf mal drüber. Wer weiß...

_________________
Alles was man kann ist ganz leicht


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jul 15, 2003 06:36 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Martin hat geschrieben:
Ich fürchte so wird es kommen. Naja, im Sommer sind die Abende lang. Und ein paar Tage habe ich ja auch noch Zeit  :(  Als ob ich nichts besseres zu tun hätte.

So schlimm isses ja auch wieder nicht. Innerhalb von einer Woche sollte das eigentlich zu packen sein. Wenn du das Binär machst ist das alles kein Ding.
Du machst ne Zahl die die Objektanzahl wieder gibt.
Und dann iterierst du die Objekte durch. Dort hast du dann den Typen von einem Objekt und danach ein (für den typ passendes) festes Set an Parametern.
Dann hast du ja noch den Vorteil (die Notwendigkeit), dass du nicht alle Eigenschaften von dem Objekt machen musst. Es genügt ja, wenn nur die Eigenschaften abspeicherst die denn auch tatsächlich verändert werden können.

Martin hat geschrieben:
Vorläufig für ein lokales Netzwerk. Das Internet ist aber auch nicht ganz abwegig. Also muß ich schon im Vorfeld mit dem Datenvolumen geizen.

Das ist ein Grund mehr es wirklich alles von Hand zu machen. Wer weiß, was GLScene alles mit abspeichert. Und wenn das immernoch zu viel sein sollte, dann ziehst du dir irgendwo einen Kompressionsalgorythmus her und lässt den mal über deinen Datenstrom drüber fegen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jul 15, 2003 11:22 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Feb 24, 2003 14:58
Beiträge: 21
Wohnort: Rödinghausen
Zitat:
So schlimm isses ja auch wieder nicht.
Stimmt.
Zitat:
Innerhalb von einer Woche sollte das eigentlich zu packen sein.
Na ich hoffe doch, daß ich nicht so lange benötige. :)
So, also, dann werde ich mich mal hinsetzen. Zuerst noch ein paar andere Dinge erledigen, dann geht's los. Falls mir noch etwas besonders brauchbares einfällt, werde ich es hier noch anhängen.

Danke

_________________
Alles was man kann ist ganz leicht


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Jul 19, 2003 09:10 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Feb 24, 2003 14:58
Beiträge: 21
Wohnort: Rödinghausen
Zitat:
Falls mir noch etwas besonders brauchbares einfällt, werde ich es hier noch anhängen.

So, für alle die es interessiert. Ich habe mein Problem jetzt folgendermaßen gelöst. Eine Kombination der hier vorgeschlagenen Vorgehensweisen. Zum einen habe ich innerhalb des GLScene-Baumes ein DummyCube angelegt (den Master). An diesem Master hängen alle Definitionen meines Bauteiles. Alles oberhalb des Masters (Kamera, Licht, sonstige statische Darstellungen wie Hintergrund, Koordinatendarstellung etc.) werden nicht mit abgespeichert. Alles einschließlich Master wird als komprimierter Stream in die Datenbank geschrieben.
Vor dem Einlesen werden alle Objecte unterhalb des Master gelöscht Die Darstellung der Bauteile erfolgt jetzt in einer Geschwindigkeit die vernachlässigbar ist und hängt eigentlich nur noch von der Reaktionszeit (und der Übertragungszeit) der Datenbank ab. Dank der Komprimierung komme ich derzeit nicht über 10 k Datenvolumen. Naja, und somit ist (zumindest bei mir in meinem lokalen Netzwerk) keine Verzögerung der Bauteildarstellung erkennbar :D

Nochmals Danke

_________________
Alles was man kann ist ganz leicht


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Jul 19, 2003 09:28 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Gern geschehen. Dafür sind wir ja da. ;)

Aber ich glaube auch in Zeiten von DSL sollte das kein großes Problem sein.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jul 21, 2003 21:28 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Feb 24, 2003 14:58
Beiträge: 21
Wohnort: Rödinghausen
Und hier noch ein Nachtrag. Ich habe den schuldigen für die "saumäßige" Ausführungsgeschwindigkeit gefunden. Nicht wie ursprünglich angenommen die Kamera oder die Beleuchtung ist schuld. "TSpaceText" ist verantwortlich. Dennoch ist es natürlich sinnvoll nur die Bereiche zu sichern, die man auch wirklich immer wieder neu laden muß.
Ach ja, für alle die nicht auf "TSpaceText" verzichten wollen. Falls bei allen TSpaceText-Objecten Visible = false gesetzt wird macht sich deren vorhandensein nicht bemerkbar. Ich z.B. verwende dergleichen für die Bauteilvermaßung. Hier schalte ich sie nur auf Userwunsch ein und nehme eben zur Darstellung der Maße die Wartezeit in Kauf.

:rolleyes:

_________________
Alles was man kann ist ganz leicht


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


Wer ist online?

Mitglieder in diesem Forum: Bing [Bot] und 7 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:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.009s | 17 Queries | GZIP : On ]