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

Aktuelle Zeit: Fr Jul 18, 2025 12:32

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



Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Octrees
BeitragVerfasst: Do Jun 26, 2008 10:25 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Okt 03, 2007 14:22
Beiträge: 388
Hi,

ich schaue mir gerade die Demos des Octrees an und stelle mir die beiden folgenden Fragen:
Das Berechnen des Octrees ist sehr langwierig bei einem relativ kleinen Level. Wie sieht das bei größeren Levels aus ? Bei größeren wird man nicht gleich das ganze Level berechnen, sondern immer wieder einen Abschnitt denke ich, aber ein solches ist eben auch das x-fache so groß wie das der Demo. Warum ist die Demo eigentlich so langsam (FPS von 42 phasenweise) ?
Wie speichert man am besten Karten ab ? Eignet sich dafür eine Arraystruktur die dann via FileStream in/aus eine/r Datei geschrieben/gelesen wird ?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jun 26, 2008 12:20 
Offline
DGL Member
Benutzeravatar

Registriert: So Jun 04, 2006 12:54
Beiträge: 263
Eigendlich geht das erstellen von octrees relativ schnell. Im erstem schritt muss man feststellen wo sich jedes triangle befinded, diese koordinaten encodiert man mit ganzzahlen zu je 10 bit. Diese bits sortiert man dann um: xyzxyzxyzxyz.... nun genügt es einen beliebigen sortier algoritmus zu verwenden um alle objekte richtig einzusortieren.
Gegebenfalls ist es noch sinvoll triangles zu unterteilen wenn sie in mehreren cubes liegen, jedo nich merh als nötig. in dem fall ist es besser jeden cube nur bei bedarf zu unterteilen oder die cubes uberlappen zu lassen....

_________________
Lumina plattform unabhängige GLSL IDE


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jun 26, 2008 17:04 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Aug 18, 2007 18:47
Beiträge: 694
Wohnort: Köln
Programmiersprache: Java
Und hier hilft auch wieder mal OOP...

Code:
  1.  
  2. TNodeData = class
  3.   Min, Max : TVector;
  4.   [...]
  5. end;
  6.  
  7. TNode = class
  8.   ObjectList : array of T3DObject;
  9.   NodeList : array of TNode;
  10.   Data : TNodeData;
  11.   [...]
  12. end;
  13.  


T3DObject steht stellvertretend für einzelne Faces oder ganze Objekte.
Da jeder Node (egal wie groß er bemessen ist) Objekte enthalten kann, können auch Objekte gespeichert werden die mehrere kleinere Nodes überspannen würden, ohne dass man diese unterteilen/zerschneiden müsste. So lässt sich auch prima LOD realisieren, wenn man noch die Entfernung zwischen Beobachter und Objekt berücksichtigt.

_________________
Es werde Licht.
glEnable(GL_LIGHTING);
Und es ward Licht.


Zitat aus einem Java Buch: "C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off"

on error goto next


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 11 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.007s | 15 Queries | GZIP : On ]