Was kann man gegen starkes ruckeln tun?

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
Purebasium
Beiträge: 74
Registriert: 05.02.2014 22:08
Computerausstattung: Ein Computer halt.
Mit Windows 7
und mit AMD Phenom(tm) II X4 B50 Prozessor
und einer ATI Radeon HD 5450 Grafikkarte
Wohnort: Mars, Kraterstr. 57b, Apartment 7

Was kann man gegen starkes ruckeln tun?

Beitrag von Purebasium »

Hallo,
ich habe hier folgendes Problem:
Ich habe ein Terrain auf welchem Bäume angezeigt werden sollen (diese bestehen aus einem Mesh für die Äste und Stamm und einer BillboardGroup mit 30 Elementen für die Blätter).
Ohne Bäume habe ich ca. 55 FPS mit Bäumen allerdings nur noch 5 FPS.
Die Ganze Welt besteht aus 240*240 Kacheln (jede ist 50*50 groß) auf jede Kachel ist eine 1:20 Chance, dass ein Baum generiert wird. Was kann ich machen, oder wie kann ich die Bäume verändern, dass es nicht mehr so ruckelt?
"Ordnung braucht nur der Dumme, das Genie beherrscht das Chaos. "
Albert Einstein
Benutzeravatar
PMV
Beiträge: 2765
Registriert: 29.08.2004 13:59
Wohnort: Baden-Württemberg

Re: Was kann man gegen starkes ruckeln tun?

Beitrag von PMV »

Mit der aktuellen PB Version nur eins: Bäume nutzen alle das gleiche Mesh
und du nutzt Static Geometry.
Evt. wärs sogar performaner, anstelle der Billboardgruppe diese in den Baum
fest zu integrieren. Dann machst so 2-5 unterschiedliche Meshes und nutzt
damit Static Geometry.

Es zählt nicht die Anzahl der Polygone, sondern der Batch-Count. Für jedes
individuelle Entity braucht es einen Batch. Static Geometry wird pro Mesh
und Material 1 Batch-Count verwenden. Du musst also die gleichen Meshes
und Materials verwenden, damit Static Geometry funktioniert.

MFG PMV
alte Projekte:
TSE, CWL, Chatsystem, GameMaker, AI-Game DLL, Fileparser, usw. -.-
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6999
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Was kann man gegen starkes ruckeln tun?

Beitrag von STARGÅTE »

Naja nach deinen Angaben sind das im schnitt 2880 Bäume, das ist nicht wenig, wenn die Bäume immer aus einem Entity bestehen.

Abhilfe könnte eine StaticGeometrie bringen.
Oder du musst die Bäume selber löschen, damit die Entitys nicht im Speicher sind.

Ansonsten gilt: Debugger ausschalten.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
Purebasium
Beiträge: 74
Registriert: 05.02.2014 22:08
Computerausstattung: Ein Computer halt.
Mit Windows 7
und mit AMD Phenom(tm) II X4 B50 Prozessor
und einer ATI Radeon HD 5450 Grafikkarte
Wohnort: Mars, Kraterstr. 57b, Apartment 7

Re: Was kann man gegen starkes ruckeln tun?

Beitrag von Purebasium »

Man kann mit StaticGeometry aber z.b. keine einzelnen Bäume mehr im nachhinein Abreißen, oder ?
"Ordnung braucht nur der Dumme, das Genie beherrscht das Chaos. "
Albert Einstein
Benutzeravatar
Purebasium
Beiträge: 74
Registriert: 05.02.2014 22:08
Computerausstattung: Ein Computer halt.
Mit Windows 7
und mit AMD Phenom(tm) II X4 B50 Prozessor
und einer ATI Radeon HD 5450 Grafikkarte
Wohnort: Mars, Kraterstr. 57b, Apartment 7

Re: Was kann man gegen starkes ruckeln tun?

Beitrag von Purebasium »

ich habe jetzt mal CameraRange auf

Code: Alles auswählen

CameraRange(0,0,1000)
gesetzt aber irgendwie passiert nichts.
Warum?
"Ordnung braucht nur der Dumme, das Genie beherrscht das Chaos. "
Albert Einstein
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6999
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Was kann man gegen starkes ruckeln tun?

Beitrag von STARGÅTE »

was genau soll denn passieren?

Die Anzahl der Entity (und damit die Verwaltung bezüglich einzelner Elemente) bleibt doch gleich.
Es muss ja auch da erst mal festgestellt werden ob das Entity im sichbaren Bereich ist (falls das überhaupt gemacht wird).

Im übrigen finde ich schon "Ohne Bäume habe ich ca. 55 FPS" zu wenig. Daher solltest du dein Vorgehen schon etwas weiter vorn überdenken...
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
Purebasium
Beiträge: 74
Registriert: 05.02.2014 22:08
Computerausstattung: Ein Computer halt.
Mit Windows 7
und mit AMD Phenom(tm) II X4 B50 Prozessor
und einer ATI Radeon HD 5450 Grafikkarte
Wohnort: Mars, Kraterstr. 57b, Apartment 7

Re: Was kann man gegen starkes ruckeln tun?

Beitrag von Purebasium »

Insgesamt weiß ich nicht wie ich es noch optimieren könnte, denn bis jetzt wird nur ein Terrain und 5 Kleies meshes gerendert.
Mein Vorhaben:
Ich will eine Stadtaufbau Simulation programmieren. Man kann Häuser bauen, die Menschen fällen Bäume um daraus neue Gebäude zu schaffen, usw...

Da dies mein erstes richtig großes 3D Projekt ist, weiß ich noch nicht genau wie man diese Probleme perfekt löst und da ich auch sonst hier und im Internet nichts dazu gefunden habe wollte ich hier durch Unterstützung beim lösen von Problemen ans Ziel kommen.

P.s.
Mein Pc ist nicht gerade für battlefield 4 gemacht, d.h. mehr als 60 FPS ist nicht drin.
"Ordnung braucht nur der Dumme, das Genie beherrscht das Chaos. "
Albert Einstein
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6999
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Was kann man gegen starkes ruckeln tun?

Beitrag von STARGÅTE »

Purebasium hat geschrieben:Ich will eine Stadtaufbau Simulation programmieren. Man kann Häuser bauen, die Menschen fällen Bäume um daraus neue Gebäude zu schaffen, usw...
Oke, dass heißt doch aber, dass der Bildschirm nie deine ganze Welt anzeigen muss, sondern eh immer nur einen kleinen Bereich.

Idee wäre, du erstellst sogenannte Chunks, dass heißt du teils die gesamte Welt in eigene Blöcke auf.
Dabei liegen die Chunks entweder im Ram oder auf der Festplatte, oder beides (je nach dynamik).
Nun lädst du immer nur die Chunks die du wirklich brauchst (zur Anzeige auf dem Bildschirm), und erstellst auch nur die Entitys die halt drin sind.

Ein Beispiel für dieses System ist zB Minecraft, SimCity ...
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
Purebasium
Beiträge: 74
Registriert: 05.02.2014 22:08
Computerausstattung: Ein Computer halt.
Mit Windows 7
und mit AMD Phenom(tm) II X4 B50 Prozessor
und einer ATI Radeon HD 5450 Grafikkarte
Wohnort: Mars, Kraterstr. 57b, Apartment 7

Re: Was kann man gegen starkes ruckeln tun?

Beitrag von Purebasium »

Danke für die Idee.
Ich weiß wie du es meinst (da ich selber Minecraft spiele), aber nicht genau wie man es umsetzten kann.
Z.B. Wie kann man Entitys nur anzeigen, wenn sie im sichtbaren Chuck sind? (Etwa einfach mit den x und y Werten der Kamera ausrechenen, ob es angezeigt wird und wenn nicht dann werden sie mit Hideentity verbergen?)
:iamwithstupid:
Könntest du mir mit einem kleinen Beispiel helfen? :cry:
vielen Dank!!!!
"Ordnung braucht nur der Dumme, das Genie beherrscht das Chaos. "
Albert Einstein
Benutzeravatar
Chimorin
Beiträge: 451
Registriert: 30.01.2013 16:11
Computerausstattung: MSI GTX 660 OC mit TwinFrozr III
6Gb DDR 3 RAM
AMD Phenom II X4 B55 @ 3,6GHz
Windows 7 Home Premium 64-bit

Re: Was kann man gegen starkes ruckeln tun?

Beitrag von Chimorin »

Wie ich es für mein Spiel (jetzt gerade nur Editor) gelöst habe:
Du erstellst ein Array deiner Weltgröße (für jedes Terrain, bzw. Terraintile 1 Eintrag) und erstellst für jeden Eintrag 1 Statische Geometrie für Bäume, etc. . Das Fällen,... ist auch kein Problem, mit ca. 150 Bäumen braucht die Erstellung der Bäumegeometrie allerdings ~0.8sek, was schon ziemlich lange ist. Da ich das nicht weiter beschleunigen kann, muss ich wohl meine Terrains kleiner machen (bisher: 512², neu: eventuell 128?).
Dabei gibt es aber wieder das Problem des Nachladens... Terrains außer Sichtweite werden gelöscht, was bei kleineren Terrains häufigeres Nachladen verursacht... Wo ich wieder die Frage auftut, wie man Terrains im Speicher behalten kann, ohne sie anzeigen zu mússen...
Bild

- formerly known as Bananenfreak -
Antworten