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

Aktuelle Zeit: Do Jul 10, 2025 01:44

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



Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Octree und die Vertex Daten??
BeitragVerfasst: Mo Mär 16, 2009 14:00 
Offline
DGL Member

Registriert: Sa Mär 14, 2009 17:48
Beiträge: 99
Programmiersprache: D, Java, C++
Hi,
ich spiele im Moment ein wenig mit OpenGL rum und bin momentan dabei einen Octree zu implementieren, mir stellt sich dabei jedoch folgende Frage:
Ich brauche um den Octree zu errechnen alle Vertex Daten (in dem Tutorial* werden diese dem Konstruktor als Array übergeben: "Constructor Create(const polygons : array of PPolygon);"). Damit diese Daten so vorliegen, muss ich dafür sorgen, dass sie als "TPolygon" im Speicher liegen, soweit so klar, ich muss also meine Zeichenprozeduren soweit umbauen, als das nichtmehr glVertex* aufgerufen wird, sondern die Vertex Daten in ein Array gelegt werden. Das klingt ja alles super toll, aber wie komme ich bspw. an Vertexdaten die von fremd-Methoden wie bspw. gluSphere gerendert werden? Diese würden dem Octree ja garnicht übergeben werden, da diese direkt gezeichnet werden. Gibt es eine elegante Lösung für dieses "Problem"?

* http://wiki.delphigl.com/index.php/Tutorial_Octree


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Mär 16, 2009 14:42 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Zitat:
aber wie komme ich bspw. an Vertexdaten die von fremd-Methoden wie bspw. gluSphere gerendert werden?

Üblicherweise benutzt man nicht gluSphere (etc.) sondern lädt die Geometriedaten aus einer Datei. Stichwort Model Loader. Dann hast du die Daten üblicherweise als Array gegeben.

Im übrigen sollte man erwähnen das in dem Tutorial z.B verschwiegen wird wie man mit Objekten verfährt die sich je zum Teil in mehreren Nodes befinden. Nicht alle Objekte sind so schön regelmäßig wie ein Terrain. Verschiedene Materialien (Texturen, etc.) für die Objekte sind ein Problem.

Ich würde da anders als im Tutorial rangehen:
Du brauchst das ganze gar nicht auf Polygon-Level betrachten. Die Objekte werden nur durch eine BoundingBox beschrieben. Große, komplexe Objekte wie ein Terrain müssen natürlich zerteilt werden. Aber auch hier zerteilst du nur bis zu einem bestimmten Level (sagen wir 1000-2000 Polygone) und betrachtest nur die BoundingBox.
Die ganzen BoundingBoxen sortierst du dann in deinen Oct-Tree ein. Du solltest das "Raster" des Oct-Trees natürlich so anpassen, das die BoundingBoxen möglichst immer genau in einer einzigen Node landen. Bei einem Terrain geht das leicht, bei beliebigen Objekten lässt es sich nicht vermeiden, dass Objekte in mehreren Blattknoten enthalten sind.
Dieses Problem lässt sich aber leicht lösen. Du gibst jedem Objekt und jedem Knoten im Baum ein Bool-Flag. Wenn du das Objekt in diesem Frame bereits gerendert hast bzw. der Knoten sichtbar ist, setzt du das Flag auf "true". Nach dem rendern durchläufst du den Baum erneut (ohne Sichtbarkeitstest) indem du einfach den auf "true" gesetzen Flags folgst und sie alle wieder auf "false" setzt.
Dieses Verfahren hat große Vorteile, den du kannst die Objekte unabhängig rendern. Nicht jedes Objekt soll z.B. die gleiche Textur bekommen.


Ok, ich habe gelogen...ich würde da nicht so rangehen, sondern wahrscheinlich einen R-Baum und natürlich Vertexbufferobjects benutzen. Aber das hier ist das Einsteiger-Forum ;)

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Mär 16, 2009 18:06 
Offline
DGL Member

Registriert: Sa Mär 14, 2009 17:48
Beiträge: 99
Programmiersprache: D, Java, C++
Sehr kompetente Antwort, danke dir, ich habe nun neue Informationen um weiterbasteln zu können. Sollten Fragen auftreten werde ich mich wieder melden :).


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 » Einsteiger-Fragen


Wer ist online?

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.

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