tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
1
ZUGRIFFE
577
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von thekiller
    thekiller thekiller ist offline Viceinator
    Registriert seit
    Dec 2004
    Ort
    Wismar
    Beiträge
    396
    Tag schön!

    Unter Euch gibt es ja bestimmt ein paar Leute die Erfahrungen mit Game-Development haben. Und genau euren Rat brauche ich gerade mal.

    Ich arbeite zur Zeit an einer 3D-Engine die natürlich auch sämtliche Objekte auf der Map verwalten soll und dass natürlich auch möglichst schnell.

    Meine Überlegung dafür ist diese:
    Die Welt wird in immer gleich große Sektoren unterteilt die alle nahtlos aneinander grenzen. Das Zentrum eines jeden Sektors ist dessen Position.



    Legende für die Bilder unten:
    Kamerasektor: hellblauer Sektor (Bild 1: D4, Bild 2: C5)
    Sichtsektoren: hellgrüne Sektoren (Bild 1: C3, C4, C5, D3, D5, E3, E4, E5 Bild 2: B4, B5, B6, C4, C6, D4, D5, D6)
    NULL-Sektor: rosa Sektoren
    Delete-Sektor: rote Sektoren (Bild 2: C3, D3, E3, E4, E5)
    New-Sektor: gelbe Sektoren (Bild 2: B4, B5, B6, C6, D6)
    Kameraobjekt: roter Kreis
    3D-Objekte: blaue Kreise
    Sichtbereich der Kamera: lilanes Feld

    Bild 1:
    Die Kamera befindet im KameraSektor (D4) und kann alle Objekte die sich im Sichtbereich der Kamera UND dem Kamerasektor und den Sichtsektoren liegen sehen. D.h. Diese Objekte müssen schon auf der Grafikkarte sein, damit sie schnell angezeigt werden können, wenn sich z.B. die Kamere dreht.
    Von den Objekten die sich innerhalb des Kamerasektors und der Sichtsektoren befinden, werden die aussortiert die für andere Berechnungen benötigt werden wie z.B. die Objekte die wirklich gerendert werden oder in Physikberechnungen mit einbezogen werden sollen.

    Bild 2:
    Wenn nun die Kamera in einen anderen Sektor gelangt, werden die Objekte die nicht mehr innerhalb der Sichtsektoren (Delete-Sektoren) liegen von der Grafikkarte gelöscht um Platz zu machen und die Objekte die in den neuen Sektoren (New-Sektoren) hinzukommen, werden auf die GraKa geladen.



    Was ich jetzt auf den Bildern nicht mit drauf habe ist, dass die Objekte der umliegenden Sektoren der Sichtsektoren schon in den RAM geladen werden, damit die schneller auf die GraKa geschoben werden können, fals nötig.

    Die Objekte in den einzelnen Sektoren könnten dann ja entweder in einzelnen Verzeichnissen oder Dateien befinden, damit ist es ja dann möglichst einfach Objekte hinzuzufügen oder zu entfernen.
    Was aber glaube ich ziemlich umständlich ist, wenn die Objekte die Sektoren wechseln. Die müssen ja dann dem neuen Sektor zugewiesen werden.

    Ich hoffe mir kann jemand ein paar Denkanstöße geben.


    MfG Manuel
    Miniaturansicht angehängter Grafiken Miniaturansicht angehängter Grafiken Überlegungen für Open-World Objekt Management-1.png   Überlegungen für Open-World Objekt Management-2.png  

    Geändert von thekiller (23.05.11 um 15:30 Uhr)
     
    OS: Win 7 Ultimate x64
    CPU: Intel Core i7 2600K (3,4GHz - 3,8 GHz)
    RAM: 4 x 8GB-DDR3 1333MHz
    Board: Asus P8Z68-V/Gen3
    GFX: Nvidia GTX580 (Palit)

    Cinema 4D R12, Photoshop CS5, Visual Studio 2010, Qt SDK, Notepad++
    blog.unlimitedengine.de
    design-projects.de

  2. #2
    lfp lfp ist offline Rookie
    Registriert seit
    May 2012
    Beiträge
    7
    Das ist doch wie in Minecraft mit den Chunks, oder? Es werden nur die Chunks geladen, die sich in der Nähe des Spielers befinden, um sie sofort anzeigen zu können, und um Arbeitsspeicher und CPU nicht auszulasten...Gute Idee eigentlich!
     

Ähnliche Themen

  1. Hello World JSP
    Von Hando84 im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 2
    Letzter Beitrag: 24.02.09, 11:20
  2. Hello World!! :o(
    Von Napofis im Forum C/C++
    Antworten: 2
    Letzter Beitrag: 04.02.09, 23:22
  3. Into another world
    Von Lenhard im Forum Fotografie
    Antworten: 25
    Letzter Beitrag: 09.01.06, 21:19
  4. Antworten: 2
    Letzter Beitrag: 08.06.05, 14:52