Download

Hiding foliage when an object is placed on top of it?

Hey, community,
This is my first post here, and I’m really hoping someone can help me out with something I can’t seem to figure out how to do.
Currently I use an “auto material” to texture my landscapes (which is presenting another problem that I may make a post about if this turns out to be helpful) and it spawns foliage wherever the landscape is relatively flat. This looks fantastic, but it has the unfortunate problem of covering objects that my player can place in the world (like camp fires and sleeping bags.)
I’m wondering if anyone here can tell me how to make the foliage hide whatever grass is touching the placed object. In all of my searching I haven’t turned up any answers.

Does the “auto material” have a paint tab in landscape paint layers to remove proceduaral grass types assets?

I have one version of it that does, and another that doesn’t.
Unfortunately, as I am using procedural meshes for my landscape, I have had to switch to using the one without paint layers, after finding no way to use them on the procedural mesh.
Edit: If there is a way to apply landscape paint layers to a procedural mesh, I would love to hear about it. Google has been unhelpful in every aspect of this issue.

If the auto material is using procedural volume asset for spawning then could use block using Procedural Foliage Blocking Volumes see section 5 - Implementing Procedural Foliage Blocking Volumes in this link https://docs.unrealengine.com/en-US/Engine/OpenWorldTools/ProceduralFoliage/QuickStart/index.html

I doubt that would work with the material grass node, which seems to be what the OP is using.

This is not the easiest request.
there are no built in ways to change the landscape.
you can try using a render texture to remove the zone, but the resolution and placement of the render texture would be level wide. This makes it rather poor performance and look wise (depending a lot on overall landscape size).

You could make the render texture/area more precise by localizing it inside a sphere mask. But the costs are high. It also requires a MPC setting and can only be done by default once.
you would have to custom code a loop system into the HLSL to achieve it multiple times - each time it would cost more… to the point of unpleyability properly.

you could combine the 2.
make an overall texture for when you leave the area. use the localized sphere mask texture initially.

Other than that, you could mimic the procedural blocking system by creating a custom actor to place that detects via visibility (grass node offers no collision) the meshes it intersects and removes them from view.
I’m just not sure IF you can access the prodecural grass spawned by the grass node as easily as foliage or anything else…

Is there, perhaps, a way to spawn an actor from a material, using some crazy workaround?
If That’s possible, I could make an actor for the grass that hides on overlap with some other actors.
Any ideas?