Seite 4 von 14

Verfasst: 08.07.2008 15:20
von Vermilion
Wie wäre es damit, ein Mesh 2000 mal zu rendern? Sozusagen 2000 Entitäten mit dem selben Mesh erstellen. Wenn du nicht "verschiedene" anstatt "einzelne" meinst.

Verfasst: 08.07.2008 15:29
von ZeHa
Hmm dann erklär das Problem mal genauer, ich versteh nicht ganz worauf Du hinaus willst.

Verfasst: 08.07.2008 15:37
von TomS
Vermilion hat geschrieben:Wie wäre es damit, ein Mesh 2000 mal zu rendern? Sozusagen 2000 Entitäten mit dem selben Mesh erstellen. Wenn du nicht "verschiedene" anstatt "einzelne" meinst.
Das hab ich doch gemeint...

Er meint es gibt Probleme wenn man 2000 Palmen erstellen will, dass die Graka da nicht mit macht... Auch wenn es 2000mal die selbe Palme ist...

Verfasst: 08.07.2008 16:35
von Vermilion
Ja, dann ist das ein allgemeines Perfomanceproblem, dann soll man es halt einfach lassen. Oder man richtet alles so ein, dass man eben nicht 2000 Palmen auf ein mal sieht. Es gab schon genug Spiele in der Vergangenheit die einen ganzen Wald dargestellt haben, und trotzdem keine millionen Bäume bräuchten. Wäre zum Beispiel realisierbar durch einfache "Plakatwände" auf dem ein Wald aufgemalt ist, diese platziert man hinter ein paar Bäumen, die nicht durchgehbar sind, sodass es aber auch noch nicht allzu auffällig wirkt. Ginge natürlich nur, wenn man Bereiche auf der Karte zulässt, die nicht begehbar sein sollen. (nur eine Idee)

Verfasst: 08.07.2008 16:37
von ZeHa
Naja aber man pumpt doch nicht generell einfach mal alles auf die Graka und hofft, daß sie nicht in die Knie geht. Sondern man pumpt nur das rein, was man auch tatsächlich sieht, und wenn das die Engine angeblich erledigt, dann darf es da doch nicht zu Schwierigkeiten kommen. Jedenfalls verstehe ich es immer noch nicht.

Verfasst: 08.07.2008 16:43
von gekkonier
LOD, Fog und dynamisches laden/entladen Distanzbasierend könnte auch helfen denk ich mal.

d.h. wenn das objekt zwischen 150 und 200 Entfernungseinheiten entfernt ist wird es mal geladen, zwischen 100 und 150 Meter der Fog Falloff, damit man das aufpoppen der Objekte nicht bemerkt und zwischen 100m und der Cam mit LOD arbeiten (die Meterangaben sind natürlich rein fiktiv und durch passende Werte austauschbar *g*). In diesem speziellen Fall (Zombieshooter wars doch, oder?) wäre eine Art Nebel eh für die Stimmung fördernd.

Wenn man sich jetzt wieder z.B. nach hinten bewegt wird das Objekt sagen wir mal 10s im Speicher gehalten, bevor es gelöscht wird, damit nicht andauernd geladen und entladen wird (quasi eine Art Caching, zeitbasierend), falls man doch gleich wieder nach vor gehen sollte.

Verfasst: 08.07.2008 17:02
von Vermilion
@ZeHa: Also ich denke mal es wird gemeint (und darauf habe ich mich auch bezogen), dass es nur um die 2000 Palmen geht, die man sieht. Der Rest wird ja nicht dargestellt, um den brauch man sich auch keine Sorgen machen.

Ist halt das Problem bei vielfältiger, groß angelegter Vegetation in Computerspielen, ein Haufen von Objekten mit wahrscheinlich noch einem Haufen an Polygonen...

Verfasst: 08.07.2008 17:20
von X0r
LOD spielt aber bei dieser Sache keine Rolle! Es ist shit egal ob die Palme nun low-poly ist oder nicht. Es geht einzig allein darum, dass zu viele Surfaces zuviel Traffic für die GraKa bedeutet.

>Wie wäre es damit, ein Mesh 2000 mal zu rendern? Sozusagen 2000 Entitäten mit dem selben Mesh erstellen

Was? Du meinst also eine Palme laden und für die 2000 Entities das geladene mesh einfach kopieren? Wenn ja, dann hast du es leider immer noch nicht verstanden. Sorry.
Das würde man so oder so machen und das würde eigentlich auch nur ein Vorteil beim Laden sein.

Ist übrigens kein einfaches Thema. ;)
Und die Sichtweite einstellen(Was gekkonier mit fog meinte) bringt nicht immer was.
Warum? Ganz einfach: Es sieht kacke aus.
Und wenn man dann noch in einer "Umgebung" ist wo dann zig entities gerendert werden hat man das selbe Problem.


Nehmen wir mal als weiteres Beispiel eine Partikel-Engine. Man will einen richtig guten Effekt erzielen und erstellt deswegen ziemlich viele Partikel bzw. Sprites. Einige hier würden dann wahrscheinlich einfach mal so 500 oder 1000 Sprites erstellen.
Und das ist das Problem. Das wären 500(1000) Surfaces und sowas zwing die GraKa immer in die Knie. Bei einer Partikel Engine würde man einfach die SingleSurfaceMethode benutzen. D.h man hat bei 500(1000) Sprites nur 1 einziges Surface und das macht die ganze Sache viel viel schneller.

Wäre bei dem Vegetationsfall aber nicht nicht zu empfehlen, da man ja wahrscheinlich nicht alle Pflanzen auf einmal sehen wird. Würden man es dennoch so machen, dann würde es schon ausreichen, wenn man 1 Polygon einer Pflanze sehen würde und schwups werden gleich alle Polygone der gesamten Vegetation an die GraKa "gesendet"(Nicht gerendert!) Das wäre hohl. Dennoch besser als 2000 entities.
Ich hätte eventuell ne Idee. Nämlich immer Gruppen von Pflanzen erstellen. Da ich hätte man im Bereich 0-100(X-Achse) und 0-100(Z-Achse) ein Surface. In einem anderen Bereich dann ein weiteres und so weiter. Weiß jetzt nicht, ob das wirklich sinnvoll wäre.

Verfasst: 08.07.2008 17:44
von xperience2003
hmm..in dem fall wuerd ich die game engine gleich so aufbauen, das
palmen und grass immer da dargestellt werden wo man grade ist
bzw..wie in alter gothic manier, im nahbereich als mesh, in der entfernung
als "billbord"
...da macht sogar b3d so scheinbar paar tausend palmen/graeser in die welt
und das spart natuerlich das setzen von paar hundert/tausend meshes im ed
zusatzlich wuerde ich die hoehen des terrains in ein array speichern
is dann auch schneller als terrainy() oder wie der befehl da heisst

Verfasst: 08.07.2008 17:58
von X0r
Wie wird das eigentlich bei TerraEd gelöst? SingleSurface kanns ja nicht sein, weil der AutoFade-Effekt verwendet wird. Tatsächlich dann x entities?
Edit:
Ok, geht ja gar nicht anders. Sonst könnte man im Editor ja nicht jedes Objekt einzeln steuern.