Landscape Grass Visibility

  • Hi,


    Ich habe vor längerer Zeit mal ne Funktion erstellt das wenn man n Actor ingame baut wie bei bspw Minecraft o.ä. das dort wo man den Actor baut das Grass darunter verschwindet.


    Mir fällt nur leider nicht mehr ein wie ich das gemacht habe. Es war definitiv auch etwas im Material also das ich das Grass an der jeweiligen stelle unsichtbar gemacht habe. auch konnte ich an der jeweiligen stelle die Bodentextur ändern, ähnlich wie bei nem Decal. Hat da jemand ne Idee?

  • Also Decals halte ich für eine schlechte Lösung. Die sind ja eher dazu da um eine Unterbrechung des Musters zu bewirken, wie bei Graffiti, Gullideckel, Dreck oder auch Einschusslöcher. Soweit ich weiß auch nicht sonderlich Ressourcenschonend. Und da du ja eher großflächig Rasen hast und auch langfristig, es sei denn der Spieler macht alles Platt, dann ist es vielleicht nicht so ganz das Richtige.


    Ich würde da eher die Möglichkeit mehrere Materialien auf einen Actor anzuwenden Dazu muss der Actor aber entsprechend vorbereitet werden, wenn ich da richtig liege.


    Ich drücke das mal etwas schwammig aus, weil habe ich das zwar schon einmal gemacht, aber halt nur zum Ausprobieren, und ich habe es noch nicht in mein Projekt eingebaut.


    Aber es funktionierte.

  • Jo wie gesagt, habe das schon fertig gehabt aber weiss nicht mehr welchen weg ich gegangen bin.

    Ne Decals würden da ja nicht helfen. Mein Problem ist auch nicht generell das material zu ändern, das könnte man ja mit ner Material Collection steuern. Mir geht es um die spezifischen Punkte so das es nicht überall passiert sondern nur dort wo ich bspw n Actor Spawne. es wird also wahrscheinlich vom Actor der gespawnt wird gesteuert aber hab noch nicht viel rumprobier.

    • Offizieller Beitrag

    Einfach etwas mit einem Material unsichtbar zu machen, ist sicherlich nicht der performanteste Weg.

    Auch sieht man es dann zwar nicht mehr aber einsammeln könnte man es dann immernoch das heißt du müsstest dann noch im Blueprint einbauen, dass man Grass mit diesem Material nicht mehr einsammeln kann. usw

    Die Frage ist: Wäre es nicht einfacher das Grass einfach komplett zu entfernen ? Ist ja im Prinzip das selbe als wenn du den Baum fällen würdest.

    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.


    auch konnte ich an der jeweiligen stelle die Bodentextur ändern,


    Auch hier könnte man sicherlich rumtricksen aber wieso ?


    Beim Terrain werden ja verschiedene Texturen wie bei einem Layer übereinander gelegt durch Vertex Paint wird an der einen Stelle Grass und an der anderen Erde sichtbar gemacht.


    Um das Terrain anzupassen, müsstest du im Prinzip die Vertexcolor in diesem Bereich ändern. Dann würde es so aussehen als wäre dort nie etwas gewesen.


    Bin mir nicht sicher aber guck mal nach "set vertex override"

  • Die methode im Video hab ich bereits für bäume etc benutzt, aber das funktioniert nicht bei Grass wenn es Landscape Grass ist. Das Grass wäre sonst ja eh da und wird eben an der richtigen stelle nur hidden gemacht. Performanter geht natürlich immer aber mein Grass frisst ohnehin n icht viel performance.


    Es könnte sein das ich die VColor geändert habe aber dann müsste man das Landscape material refreshen damit das grass an der stelle weg wäre


    Ich denke das größte Problem besteht darin das dass Grass ja keine Collision hat die man bspw Tracen könnte sonst wäre es ja kein Problem speziefische Actoren zu löschen. Das wäre ja die methode die ich bei bäume verwende.


    Was wäre denn performanter ? Landscape layergrass oder es über Foliages zu regeln ? weil über Foliages gehts ja mit collision bzw Tracechannels

  • Klar geht das auch mit Gras. Es ist genau wie ein Baum nur ein Bestandteil des Foliage. Ermittel die Komponenten der Fläche auf der du etwas bauen möchtest, sammel alle Bestandteile des Foliage auf dieser Fläche, speichere sie in einem Array ab und lösche sie. Wenn das Gebäude später abgerissen wird, lade die Postion und das Gras wieder zurück, oder lass es wachsen. Es gibt rein von der logischen Seite keinen Unterschied zu einem Baum.

    • Offizieller Beitrag

    Was wäre denn performanter ? Landscape layergrass oder es über Foliages zu regeln ? weil über Foliages gehts ja mit collision bzw Tracechannels

    Ist das nicht das selbe ?


    Wo es auf jeden Fall unterschiede gibt, ist zwischen Foliage und normalen Meshes.


    Meshes können sich meines wissens nach zb nicht im Wind bewegen Foliage aber schon.


    Ist wohl die Frage was du im ganzen vorhast weil auch wenn du jetzt vielleicht die einfachere Lösung nimmst, könnte es sein du musst das irgend wann umstellen wenn du die Vorteile von Folliage nutzen willst.

    Ich bin immer kein Freund davon solche dinge zweck zu entfremden nur weil es der einfachere Weg ist.


    Du kannst dir siciher sein das alles seine Vor und nachteile hat. Einfach einfacher war aber noch nie ein Vorteil.


    Ein Ferrari ist auch nur besser wie VW Käfer solange man den Preis, den Spritverbrauch und die Versicherung nicht mit reinrechnet.


    Klar geht das auch mit Gras. Es ist genau wie ein Baum nur ein Bestandteil des Foliage. Ermittel die Komponenten der Fläche auf der du etwas bauen möchtest, sammel alle Bestandteile des Foliage auf dieser Fläche, speichere sie in einem Array ab und lösche sie. Wenn das Gebäude später abgerissen wird, lade die Postion und das Gras wieder zurück, oder lass es wachsen. Es gibt rein von der logischen Seite keinen Unterschied zu einem Baum.

    Ja du könntest sicherlich auch die Bäume beim Start per Zufall generieren und sie später wieder weghauen.