Genau genommen geht es darum, ich habe ein mesh das enthält positionsdaten, normalen, texturekoordinaten, oberflächen, indextabellen etc. Bisher alles im normalen Speicher gehalten.
Nun erzeuge ich ein VBO/IBO aus diesen Daten. Dadurch packe ich ja alle daten die für das VBO notwendig sind in den VRAM der Grafikkarte. Nun lösche ich das Mesh, weil die Daten sind ja nun im VRAM. Doppelt brauch ich das ja nicht.
So mach ich es aktuell, aber bin nun auf ein Design Problem gestoßen.
Ich wollte nun das ganze um eine AABB erweitern damit ich simple AABB kollisionen durchführen kann. Wobei ich das auch noch nach der AABB kollision um eine Triangle-AABB kollision erweitern wollte.
Die Frage die ich habe, wie Teilt man diese Daten auf, bzw. wie sieht so eine Datenstruktur aus?
Ich muss ja in jedem Frame Update zyklus zugriff auf die AABB´s/Dreiecke haben die im RAM liegen, aber benötige nicht die Geometry Daten im RAM, sondern eigentlich sind die im VRAM besser aufgehoben.
Und ich will vielleicht später noch eine Transformationsmatrix nutzen, um objekte nicht stur immer an der selben position zu zeichnen.
Man muss ja dann die AABB´s/Dreiecke die für die Kollision zuständig sind mit der Matrix verrechnen oder?
Registriert: Di Mai 18, 2004 16:45 Beiträge: 2623 Wohnort: Berlin
Programmiersprache: Go, C/C++
Üblicherweise sind die Trianglemeshes für Physik andere als für Grafik. Es ist selten notwendig die komplexen Grafikmeshes für die Physik berechenung zu verwenden, denn es kostet Speicherplatz und viel Performance die ganzen Triangle zu verwalten. Daher wird oft die Grafikvariante in den VRam gepackt und die Physikvariante liegt im Arbeitsspeicher. Sollte man diese trennung nicht machen, gibt es die Möglichkeit die Daten in VRam und Ram doppelt zu haben, sehr kostspielig die Daten vom VRam ab zu fragen oder die Physik auf die Grafikkarte zu verlagern.
Je nach geschmack und Kentnisse nutzt du für jedes Objekt einen Positionsvektor und ein Quaternion oder eine Matrix, um die Transformation ab zu bilden. Da sich die AABB durch transformationen verändern, hast du ein dynamisches system, das ändert aber nicht die Daten, deines Meshes, die bleiben im Speicher immer gleich. Also du berechnest für jede Änderung deiner Transformation die Punkte mit den Transformationsdaten temporär, daraus das neue AABB und verwirfst dann wieder die Punktdaten. Mit OBB hast du dieses Problem nicht, dafür sind die OBB-OBB tests ein bisschen aufwendiger aber nichts im vergleich zu dem Berechnen der Punktdaten.
_________________ "Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren" Benjamin Franklin
Mitglieder in diesem Forum: 0 Mitglieder und 5 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.