Mesh's & Foliage ab einer gewissen Entfernung ausblenden/einblenden

  • Guten Abend allerseits,

    ich habe direkt zwei Fragen und hoffe ihr könnt mir weiter helfen.



    Ich habe heute eine eine Funktion entdeckt die ich so gern in meinem Projekt hätte.
    Und war kann man im Viewport oben Links standardmäßig ein paar Einstellungen machen in dem man auf "Perspective / Lit / Show" klickt.
    Vor Perspective ist ein kleiner Pfeil der ebenfalls ein Dropdownmenü hervorruft beim drauf klicken.

    In diesem gibt es die Funktion: "Far View Plane"
    Wenn ich daran drehe wird plötzlich je nach Wert "alles" ab einem bestimmten Abstand ausgeblendet.
    Der Kreis kann verkleinert werden in dem die Zahl verändert wird.
    Ich würde dies gern im Spiel haben.


    Alles was eine bestimmte Entfernung hat soll ausgeblendet werden und erst geladen werden / erscheinen wenn ich in der Nähe bin.
    Ich möchte eine Gesamtlösung wie diese kleine Funktion "Far View Plane"
    Was wäre denn da die beste Herangehensweise ohne dies über jedes einzelne Objekt regeln zu müssen (Stichwort Gesamtlösung) ?
    Ich erhoffe mir davon bessere Performance auf großen Karten die zugepackt sind mit Städten und Wäldern.
    Aber auch beispielsweise für Untergrundprojekte wie einer reinen Bunkermap bei der Objekte komplett ausgeblendet werden können die eine bestimmte Entfernung haben da sie sich somit sowieso hinter einer Mauer befinden und nicht sichtbar wären.







    Die Nächste Frage wäre wie man das einzeln bewerkstelligt.
    Also keine Gesamtlösung sondern das jedes einzelne Objekt eingestellt wird ab wann es ausgeblendet wird und ab wann es erscheint.
    Was ich bis jetzt weis ist wie man die Entfernung der einzelnen LOD stufen einstellt.
    Aber wie man etwas komplett ausblendet weis ich bis jetzt noch nicht.
    Auch davon erhoffe ich mir mehr Performance und mehr Bewegungsfreiheit in meinen Projekten.


    Das Ausblenden von Objekten sollte doch rein theoretisch um einiges mehr Performance frei geben als wie wenn die Objekte, die man beispielsweise eh nicht sehen würde (Untergrundbunker/viele einzelne Gänge/Wände & Zimmer), nur auf eine kleinere LOD Stufe gesetzt werden.

    Weil so sind die Objekte ja immer noch da. Zwar in einer niedrigeren Polygonzahl / Texturauflösung aber sie sind da.
    Anders wäre es ja bei dem ausblenden. Somit erhoffe ich mir logischerweise mehr Power und Freiraum für gewisse Gebiete.


    Für weitsichtige und offene Projekte vielleicht nicht angebracht aber was ist wenn man nur drinnen ist oder wenn man draußen ist aber man einen dichten Nebel nutzt der die Sichtweite einschränkt ? Somit wären die Objekte ja immer noch da...demnach gibt der dichte Nebel der die Sicht einschränkt auch keine Performance frei. Egal ob der Nebel ein einzelnes Haus oder eine ganze Großstadt hinter sich verdeckt..



    Ich hoffe sehr ich habe es nicht all zu unverständlich beschrieben.





    Liebste Grüße Cap

    Manche Menschen können den Regen spüren. Andere werden nur nass.

  • Du kannst ein Cull distance volume anlegen, dann kannst du mehrere levels angeben ab welcher Maximalgröße und Distanz ein Objekt verschwindet. Mit Height Fog kannst du die Sichtweite gut kaschieren.



    Wenn du sehr durchdacht und professionell arbeitest dann kannst du auch ein level streaming benutzen um "ungesehene" Teile der Szene gänzlich zu unloaden - das erfordert aber viel Planung und ein passendes Design. Die Diskussion hatten wir hier auch schon mal.

    • Offizieller Beitrag

    Hi Achtung du wirfst da ein paar dinge durcheinander.

    In diesem gibt es die Funktion: "Far View Plane"
    Wenn ich daran drehe wird plötzlich je nach Wert "alles" ab einem bestimmten Abstand ausgeblendet

    Das ist das sog. Camera Clipping. Dabei gibt es das near oder das Far Clipping. Im Prinzip wird hiermit nur definiert wie weit die Kamera vom Player entfernt ist. Diese Einstellung ist zb Hilfreich damit die Kamera nicht in eine Wand hineinragt wenn du den Player dreht.

    Im Prinzip kannst du hiermit auch die Sichtweite bestimmten.

    Nehmen wir mal an du hast bei deinen Meshes nicht auf die Größe geachtet. und dein Haus ist 1000 größer wie normal. Das heißt deine Standard sichtweit reicht nicht soweit dass du das ende des Hauses sehen kannst. In diesem Fall müsst du das Far view höher stellen damit du weiter schauen kannst.

    Umgekehr bist du quasi kurzsichtig wenn die nearview zu low eingestellt ist du siehst also Objekte die zu nah dran sind nicht weil die Kamera quasi zu weit nach vorne ist.

    Hier an den werten rumzustellen wäre supoptimal besser wäre es die Meshes in realer Größe zu bauen.

    Siehe auch: Frustum Culling


    Was du sucht ist das sog. Culling hierbei gibt es mehre Verfahren.


    1.Das Bakeface Culling ist standardmäßig an. An bedeutet das die Rückseite eines Polygons nicht angezeigt wird. Du sparst also Performance weil die Rückseite einer Fläche nicht gezeichnet werden muss. Bei einem Laubblatt sollte man das Backface Culling ausschalten da du hier beide Seiten eines Laubblatts sehen willst.


    2.Das camera Occlusion Culling ist standardmäßig an. Und blendet Objekte aus die von einem anderen Objekt verdeckt werden.

    Du steht vor einem Haus und schaust auf das Haus, im Haus sind Möbel. Durch das Camera occlusion Culling werden somit alle Möbel ausgeblendet. Es entstehen keine Drawcalls und du spart performance.


    3. Was du nun suchst ist das sog. Distance Culling das Objekte bei einer bestimmten Distance ausblenden.

    Siehe: https://docs.unrealengine.com/…ulling/CullDistanceVolume

    Für weitsichtige und offene Projekte vielleicht nicht angebracht aber was ist wenn man nur drinnen ist oder wenn man draußen ist aber man einen dichten Nebel nutzt der die Sichtweite einschränkt ? Somit wären die Objekte ja immer noch da...demnach gibt der dichte Nebel der die Sicht einschränkt auch keine Performance frei. Egal ob der Nebel ein einzelnes Haus oder eine ganze Großstadt hinter sich verdeckt..

    Ja die Objekte müssen immer noch gezeichnet werden. Aber LODs blenden ja nicht nur andere Meshes ein oder aus sondern können auch andere Texturen verwenden.

    So kannst du für einen Turm der weit entfernt ist als Mesh ein einfachen Zylinder mit einer 64*64 px Textur verwenden. Der Nebel verdeckt das ganze dann noch ein wenig.

    Schau dir hierzu mal Anisotropic Filtering, mip mapping und Anti aliasing an.



    Was du auch machen kannst bzw was oft gemacht wird, ist es der Playerkamera einen Blur zu verpassen.

    zb.; 10 Charakter treffen sich in der Mitte alle werfen eine Granate 4 Charakter sterben, es gibt viele Partkeleffekte explosionen und Sterbe Animationen. Der Rechner geht in die Knie. Nun verpasst man deiner Player Kamera einen Blur Effekt dein Sichtfeld ist verschwoben und du hörst vielleicht noch ein Pipen als wäre die Granate direkt neben dir explodiert. Durch den Blure dem Computer Zeit mit der Situation fertig zu werden in dem Texturen nicht mehr scharfgezeichnet werden müssen und die die Animationen nicht mehr richtig sehen kannst.

    Du kannst diesen Effekt theoretisch auch auslösen in dem die FPS oder die Drawcalls einen kritischen Wert erreichen.

    Diesen Effekt kannst du auch bei schnellen Kamera Bewegungen einstellen.


    Sie auch:


    https://praxistipps.chip.de/ab…puterspiel-fluessig_13580

  • ...

    Wenn du sehr durchdacht und professionell arbeitest dann kannst du auch ein level streaming benutzen um "ungesehene" Teile der Szene gänzlich zu unloaden - das erfordert aber viel Planung und ein passendes Design. Die Diskussion hatten wir hier auch schon mal.

    Genau =) Levelstreaming hatten wir schon mal angeschnitten.


    Vielen Dank für deine Hilfe !

    Manche Menschen können den Regen spüren. Andere werden nur nass.

  • Hi Achtung du wirfst da..

    ....

    ..

    .




    Achsoooooo ist das. Ich habe das Far View Plane komplett anders verstanden ^^

    Hey ich danke dir vielmals für die ausführliche Antwort.
    Es geht wirklich nicht besser. Ausgezeichnet.

    Wenn sich hier jeder so viel Zeit nehmen würde und sich so rein hängen würde würde ich sogar monatlich Beiträge bezahlen:laughing:
    Ne wirklich ma... Ist echt ausgezeichnet erklärt ich bedanke mich =) :__

    Manche Menschen können den Regen spüren. Andere werden nur nass.

  • Beim CullDistanceVolume verstehe ich nicht ganz wie sich das mit der Größe verhält.
    Alles was größer ist wie ein bestimmter Wert wird mit ausgeblendet.
    Alles was drunter liegt bleibt eingeblendet wenn ich das richtig aufgenommen habe..
    Doch welche Größe wird hier gemeint ?
    Wie sehe ich welches Objekt welchen Wert benötigt ?
    Momentan springe ich hunderte male hin und her und passe die Werte Stellenweise an ..das scheint mir sehr umständlich auf Dauer. Und wie ich gerade feststelle bewege ich den Wert "Size" ohne irgend welche Auswirkungen. Ich kann den Wert hoch stellen auf 15000,00 oder runter auf 0.001.
    Beides ohne Erfolg oder Veränderung.
    Lediglich die Distance kann ich verändern.
    Alles was sich in meiner CullDistanceVolume Box befindet wird ausgeblendet ab dem Wert "Distance".
    Also das ausblenden funktioniert soweit. Doch ich kann nicht einstellen was ausgeblendet wird und was nicht da der Wert "Size" nichts bewirkt.



    Was du auch machen kannst bzw was oft gemacht wird, ist es der Playerkamera einen Blur zu verpassen......

    ....

    ...

    ..

    Diesen Effekt kannst du auch bei schnellen Kamera Bewegungen einstellen.

    Ich nehme mal an dass das per Blueprint gemacht werden muss mit der Bewegungsunschärfe oder gibt es einen weniger aufwändigen Weg ?
    Über PostprocessVolumes wird das ja nicht gemacht vermute ich mal hmh ?









    Manche Menschen können den Regen spüren. Andere werden nur nass.

    Einmal editiert, zuletzt von Capdesignz ()

    • Offizieller Beitrag

    Hier an den werten rumzustellen wäre supoptimal besser wäre es die Meshes in realer Größe zu bauen.

    Oft kommt es einem so vor als wären solche dinge schlecht gelöst.
    Besser wäre es natürlich wenn man direkt die Entfernung eingeben bei dem Objekte ausgeblendet werden sollen.

    Aber größen in 3D und in Unreal sind immer relativ. Du kannst ein Stuhl Maßstabs getreu bauen und den Stuhl mit einen Skale Faktor von 1000 Importieren. ein ein Meterstuhl wäre demnach 1000 Meter hoch.


    Würdest du nun einstellen, das der Stuhl bei 1000 Meter ausgeblendet wird, käme es zu ungewollten diskrepanzen.


    Aus diesem Grund wird in der Unreal mit werten gearbeitet und nicht mit Entfernungen. AUch für die Physik ist das wichtig den ein Objekt das 1Kilometer groß ist, hat eine andere Fallgeschwindigkeit wie ein Objekt das nur einen Meter groß ist.


    Hier findest du eine gute Beschreibung:

    http://timhobsonue4.snappages.…ing-visibilityculling.htm

    (DIstance Culling)

    Ich nehme mal an dass das per Blueprint gemacht werden muss mit der Bewegungsunschärfe oder gibt es einen weniger aufwändigen Weg ?
    Über PostprocessVolumes wird das ja nicht gemacht vermute ich mal hmh ?

    Du musst den Effekt sicherlich durch ein Blueprint Trigger auslösen. Die Werte im Postprocess kannst du hierdurch sicherlich verändern. (Postprocess kostet FAST keine Performance)


    Würde das von der Syntax her so lösen:


    1.Wenn die FPS unter den Wert von xyz fällt dann Blure im Wert von abc.

    2.Sinkt die FPS weiter, muss der Blure effekt steigen.


    Das ist immer noch besser als ein Mosterlag.

  • Klasse danke ! !

    Knaller was ihr an Informationen rüber schiebt.
    Wirklich Lobenswert.


    Postproccesing habe ich schon durchforstet ..ich hab währenddessen schön fantasiert was man alles wie und wo in Kombination mit was und wem verwenden könnte. Ich mein für euch ist das ja eventuell teilweise alles Basic und alte Schule aber ich persönlich kannte vieles davon bis dato nur aus AAA spielen und den darin enthaltenen Einstellungen ^^


    Zb.
    Dieser Pixel / Kameradefekt Effekt den DICE ja immer im Frostbite Engine Intro verwendet hatte.
    Gesehen habe ich im PostProcessingVolume Bloom, Lensflares. DOF, MotionBlur und vieles mehr. Dann die Funktion Masken hinzu zu fügen ^^ Zsm mit Partikeln und so kann man da echt kranke Dinge zaubern..



    Was mich noch EXTREM interessiert ist wie man ein super smoothes Bewegungsbild hinbekommt und was bei dieser Thematik außer den Animationen und den PostFx noch wichtig ist.
    Ich vermute dass da viele Entwickler mit den Inputs spielen was die /ms angeht.
    Jedes spiel hat ja so seine ganz eigene Bewegungscharacterristik.
    Ich meine nicht die Animationen selbst sondern das Gefühl an und für sich was entsteht wenn ich mit der Maus Ziele / mich umschaue während ich renne... Oder beispielse zügig von rechts nach links und wieder nach links rechts sehe. Die Inputlags und die Smoothness wie die Maus fährt / der Blick fährt ist überall anders.


    Battefield zb hat eine super smoothe Einstellung von Grund auf.
    Call Of Duty ist dagegen sehr sehr Kantig im Feeling

    Wisst ihr was ich meine ?
    Gibt es da irgend welches Material was man sich ansehen kann ?



    Manche Menschen können den Regen spüren. Andere werden nur nass.

  • Ne ne MotionBlur kenn ich ja das ist Bewegungsunschärfe. Das wird eh genutzt für n Smoothes Bewegungsbild. Was ich meine ist die gewisse Würze. Ich kanns leider nicht in Worte packen weil ich nicht weis was dahinter steckt.

    Alles was ich dir sagen kann ist dass das beste Beispiel für mich die zwei Spiele Call of Duty (x beliebig) auf Ultra Settings und n beispielsweise Battlefield 5 auf Ultra sind.

    Battlefield 5 hat ein Ultra krankes smoothes bewegungsbild. Die ganze Characteristik ist von Grund auf irgend wie anders. Call of Duty dagegen ist total hart und unsmooth.
    Schon klar dass das auch Animationen sind die da anders sind und gewisse kleine Rolle spielen..was ich aber meine ist das Feeling was du mit der Maus hast.
    Ich habe ein wenig das Gefühl dass das was mit den Inputzeiten der Maus zu tun hat oder vllt auch mit wie viel % Härte die Maus startet bei einer Bewegung.
    Da kann man ja bei vielen Gaming Mäusen ebenfalls einstellen wann sie anfängt mit der schnellsten von dir eingestellten Geschwindigkeit fährt. Die ersten von dir eingestellten millisekunden fährt sie dir auf 30% beispielsweise. Sowas gibt dann ebenfalls n Smoothes Bewegungsbild.


    und ich vermute dass da viele AAA Hersteller ebenfalls damit herum hantieren was dann das besagte " gewisse Spielspezifische Feeling" gibt.

    keine Ahnung.


    Währe auf jeden Fall ultra krass so etwas mal von einem Mitarbeiter von EA zu hören wie die das machen und was für die da für Faktoren ne wichtige Rolle spielen um das typisch bekannte BF feeling zu bekommen was die Mausbewegung/Aim angeht. ^^

    Manche Menschen können den Regen spüren. Andere werden nur nass.

  • Glaube du meinst Motion Blur. Gilt es in VR unbedingt zu vermeiden..

    ...

    ..

    .

    Wieso denn eigentlich unbedingt vermeiden ? Das klingt als hättest du schon Erfahrungen damit gemacht =)
    Dann frag ich dich jetzt einfach mal anstatt zu googlen.

    Was ist n da passiert ?

    Plötzlich nur noch 10 FPS ?:laughing:

    Manche Menschen können den Regen spüren. Andere werden nur nass.

  • Gibt eine Einstellung für das was du meinst. Da kannst du paar oder einen Wert einstellen um die gewünschten Effekte einzustellen. Habe es selbst auch schon benutzt. Muss ich mal heute Nachmittag schauen wie das noch heißt bzw wo ich es finde :D


    EDIT: Habs glaube schon gefunden.


    Du kannst so einen Effekt im Charakter BP beim SpringArm machen.


    Zusätzlich könnte man auch beim Charakter BP unter Basic Movement (oder ähnlich) die Beschleunigung (acceleration) einstellen, halt nur minimal als Effekt damit der Char eine halbe Sekunde brauch um von 0 auf 100 zu kommen.

    Aber hauptsächlich bekommst du durch die Lag-Settings im SpringArm diese smoothen Kamera Rotations hin. :)
    Einfach mal ausprobieren und mit den Werten spielen.

  • Okay SEHR GEIL ! Das scheint schon mal ein kleiner Schritt nach vorn zu sein =)
    Ich habe zwar ein schön smoothes Bewegungsbild doch es kommt bei weitem nicht daran wo ich gern hin würde. Weist du denn was ich meine im Bezug auf BF und COD ?
    Spielt irgend jemand von euch HobbyDevs diese Spiele ?


    Manche Menschen können den Regen spüren. Andere werden nur nass.

  • Wieso denn eigentlich unbedingt vermeiden ? Das klingt als hättest du schon Erfahrungen damit gemacht =)
    Dann frag ich dich jetzt einfach mal anstatt zu googlen.

    Was ist n da passiert ?

    Plötzlich nur noch 10 FPS ?:laughing:


    Neee in VR sind praktisch alle Post process effects Tabu. Dir wird einfach schlecht davon. VR Sickness. Ist noch nicht ganz erforscht - aber sicher ist schon mal daß einen niedrige FPS rate und "bewegt werden" (aka ich lass den Spieler mal an Punkt B fliegen ohne daß er sich in echt bewegt) bei den meisten Leuten Übelkeit auslösen. Post effects wie Motion Blur, halos, Tiefenschärfe, eye adaption können auch dazu beitragen Übelkeit zu erzeugen oder für die Augen anstrengend zu sein.

    • Offizieller Beitrag

    Jup das Problem ist, das dass Gehirn nicht so recht versteht was Los ist wenn du ne VR Brille aufhast und auf einmal alles Blury wird. Dann Gehirn kann diese Informationen nicht richtig verarbeiten und teilt dir durch Übelkeit mit das du dass besser nicht mehr tust was du gerade tust.


    Das ist im Prinzip eine Schutzmaßnahme des Körpers.

  • Achwas echt ?
    Okay

    Ich habe bereits gehört dass manchen Menschen davon übel wird aber dass da direkt so ne logisch flache Wissenschaft dahinter steckt hätte ich nicht gedacht. Macht schon Sinn wenn man so drüber nachdenkt mit dem unscharfen Bild und dem Gehirn das nicht versteht was abgeht.^^
    Das weckt gerade einen unheimlich irren Drang das auszuprobieren.
    Habe nur leider keine VR Brille -.-

    Ich habe mal eine PS4 Brille ausprobiert das wars dann aber auch schon. Das war nicht so der Knaller.
    Bin da ne Achterbahn runter gebrettert..war okay aber gekickt hat's mich nicht um ehrlich zu sein..

    Hab an meinem Board extra n Anschluss für ne Brille ich wollte mir schon mal ne HTC Vive kaufen aber war der Meinung dass das noch nicht das Gelbe vom Ei ist.

    Zumindest ist das was ich bisher an OpenWorld oder Basic Shooter Games gesehen habe im Netz nicht so dufte:/

    Kenne aber auch die Materie dahinter nicht von daher kann ich es recht schlecht nachvollziehen weshalb das Grafiktechnisch nur so schleppend voran geht.

    Manche Menschen können den Regen spüren. Andere werden nur nass.