www.jpct.net

General => German corner => Topic started by: heke on July 14, 2016, 10:02:25 pm

Title: sehr viele Objekte anzeigen
Post by: heke on July 14, 2016, 10:02:25 pm
Guten Tag,
ich habe da mal eine Frage wie man etwas besser machen kann, aber erstmal danke für die geniale Engine, nutze jpct-ae.

So, fangen wir mal an. Ich möchte eine Ansicht erstellen, die dem Spiel Minecraft zusammen hängt. Ich verbinde mich mit einem Server und der liefert mir Koordinaten wo jeder Block ist, den ich Grafisch anzeigen lassen möchte.
Soweit ist alles gut, nur leider ist ein Chunk 8x8x256 Blöcke groß und das wird echt zuviel, kann man das irgendwie Ressourcend schonen programmieren?
Desweiteren habe ich ein Problem, das wenn zu viele Objekte angezeigt werden und ich nur noch Objekte in der ferne sehe aber nicht mehr direkt vor mir.

ich hoffe Sie können mir helfen.
Title: Re: sehr viele Objekte anzeigen
Post by: EgonOlsen on July 15, 2016, 08:01:08 am
Das mit der Sichtbarkeit bekommst du in den Griff, wenn du diesen Wert hier änderst, bevor du die World-Instanz erzeugst:
http://www.jpct.net/jpct-ae/doc/com/threed/jpct/Config.html#maxPolysVisible (http://www.jpct.net/jpct-ae/doc/com/threed/jpct/Config.html#maxPolysVisible)

Aber das ist natürlich wirklich ziemlich viel...ist es wichtig, dass das wirklich in Echtzeit läuft oder reicht es, eine aktuelle Ansicht zu zeichnen, die sich dann nicht bewegt? Im letzteren Fall, könnte man mit der Performance vermutlich leben. Dann wäre nur wichtig, dass nicht jeder Block ein eigenes Mesh ist. Das bekommst du hin, indem du diese Daten zwischen den Objekten teilst: http://www.jpct.net/wiki/index.php?title=Reducing_memory_usage#Reduce_memory_usage_of_objects (http://www.jpct.net/wiki/index.php?title=Reducing_memory_usage#Reduce_memory_usage_of_objects), also quasi

Code: [Select]
Object3D blueprintBlock=...
...
Object3D newBlock=new Object3D(blueprintBlock, true);
newBlock.shareCompiledData(blueprintBlock);
...

Wenn es auch schneller laufen muss...hmmm...Minecraft ist eine spezielle Engine, die genau für diesen Fall gebaut ist. Die einzelnen Blöcke sind nicht wirklich einzelne Blöcke, sondern zu größeren Objekten zusammengefasst, die ständig umgebaut werden. Darauf ist jPCT nicht wirklich optimiert. Ich sehe drei Möglichkeiten, alle sind aber nicht trivial:

Title: Re: sehr viele Objekte anzeigen
Post by: heke on July 15, 2016, 11:20:12 am
ok, das mit der Sichtbarkeit funktioniert teilweise, habe den wert erhöht, nur leider habe ich immer noch das Problem, das wenn ich zum beispiel etwas nach unten sehe (Kamera drehe) ich durch die Objekte die näher an der Kamera sind verschwinden und ich Objekte sehe die weiter weg sind.

das 2te muss ich noch etwas testen
Title: Re: sehr viele Objekte anzeigen
Post by: EgonOlsen on July 15, 2016, 11:26:29 am
Dann hast du den Wert nicht hoch genug gesetzt. Du bekommst normalerweise eine Meldung (einmalig) im Log, wenn die Anzahl der Objekte den konfigurierten Wert übersteigt.
Title: Re: sehr viele Objekte anzeigen
Post by: heke on July 15, 2016, 11:59:58 am
ok, ja es sind im test 16325 objekte und nur 1000 polys eingestellt
wenn die kamera gut steht reicht das auch, aber leider zeigt er meist die an, die weiter weg sind, naja da probier ich noch etwas rum

das mit
Code: [Select]
Object3D newBlock=new Object3D(blueprintBlock, true);
newBlock.shareCompiledData(blueprintBlock);

hab ich ausprobiert und was soll ich sagen, die zeit zum laden hat sich erstmal halbiert  ;D