Jump to content
Unity Insider Forum

Voxel Rendern


Moorleiche89

Recommended Posts

Hallo,

ich habe recht wenig Erfahrung mit Unity oder generell Spieleentwicklung und benötige daher ein wenig Hilfe.

In meinem Projekt geht es (wie hätte es die Überschrift anders vermuten lassen) um ein Voxel-Based-Game. Nun habe ich soweit Blöcke erstellt und auch ein kleines Script für die Spielwelterstellung geschrieben. Nach der akivierung des Scriptes und der Plazierung von 8000 Blöcken geht die Performance verständlicherweise in die Knie. Die Lösung hierfür, soweit ich es von einigen anderen Voxel-Games gesehen habe,  wäre, dass dur die sichtbaren Blöcke (die Oberfläche) gerendert werden.  Aber wie realisiere ich das? Mein Denkvermögen brachte bisher nur 2 Möglichkeiten hervor:

  • Der Spieler sendet einen Ray aus, der getroffene Blöcke rendert. Hat ein einem Test auch gut funktioniert, aber das Abrastern des sichtbaren Bereiches mit dem Ray überfordert mein derzeiten Fähigkeitsstand.
  • Eine Abfrage der Blöcke selbst, ob diese im Bereich der Spielersicht sind und (wichtiger) ob diese von anderen Blöcken umgeben sind. Wenn sie Freiliegen->Rendern.

Vielleicht habt ihr einen besseren Ansatz, Hilfestellungen, vllt schon einen gutkommentierten Code. Ich würde mich freuen.

 

Mit besten Grüßen, eure Moorleiche

Link zu diesem Kommentar
Auf anderen Seiten teilen

Für die Performance hilfreich ist in jedem Fall wenn du nicht viele einzelne Objekte hast, sondern diese zusammenfasst.
Zusammengefasste Blöcke können sich dann in Form eines Chunks ein Mesh teilen, dieses müsstest du immer updaten, wenn sich ein Block in diesem Bereich ändert.
Während du dieses Mesh baust, kannst du diesem nur die Dreiecke hinzufügen die potenziell sichtbar sind und somit benötigt werden, in der Regel ist dass die Oberfläche.
 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...