Currently I have to duplicate the material in order to change those GrassType objects, but it would be better if I could just change them out in material instances.
in the screenshot there is a slot for a landscape grass type asset. you can only assign these in the material. There does not seem to be a way to make these a parameter so that a material instance derived from this material can change out the grass type assets.
You can alter the asset list if you break into the c++ a bit, but to recalculate at runtime it needs to re-process “grass maps”.
Part of the reason no serious projects uses landscapes over meshes and procedural foliage.
Best you can do with that system is layer swaps based on a parameter and an if statment.
In custom because apparently both branches of if evaluate again.
Add a parameter (bool or enum) for a toggle, feed all the layers you want to cycle into the custom, add your code, output a single pin for the layer (should be a single channel texture if I remeber correctly).
Feed that into the same layer.
Then potentially when you swap the option you are able to print different layers into the same output.
You’d reverse the process to get single layer input to multiple layer output where the instances are then whatever you want for the new definitions that match the dame layer paint as before…
Probably have to output 0 as the other value of the if.
actually your first comment gave me an idea, might be simplest. I can just make enough layers for all of my maps, and then just use which ones I want for each map.
For example MapA might use layers 1-4, and MapB uses layers 5-8, or something like that.
I guess just duplicating the material is not the end of the world either, I just figured there may be some way to parameterize that I might have missed.
I just ran into the same problem and having to duplicate materials is a pain if you have a lot of different biomes.
And I think with the PCG push we’ll never see this feature added to the engine again.
3 layers max per component, which also ends up meaning 3 layer max per landscape tile.
If you the use the grass node, you have a pre-set output set up for each of the 3 layers that can vary.
To match up a biome transition you have to the use the same layer in another material to start from and paint the new stuff.
Out of 3 biomes, for 3 tiles, you wnd up with 9 possible materials you need to manually create to deal with all the possible options.
And yes, the order that the layers mix in absolutely does matter.
Which kinda makes it probable that you should foego the 9 different materials entierly, make only 2 that are conpletely different and work in isolation, and then use some decal system to blend the transitions…
Ergo;
Don’t waste time with landscapes, use meshes, and procedurally geneerate whatever objects need to be in the scene - without using the grass output.
I think the explanation provided doesn’t address my issue, but here’s what I’m trying to solve: I have two different biomes, caves and jungle. In one biome, I want rocks, and in the other, grass. Using the same Material Instance, I can swap textures for the two biomes, but I can’t change the nodes GrassType. This forces me to duplicate materials, even though they’re 99.99% identical. It feels like this could be made more efficient if it were parametrizable for Grass Type objects
That’s literally why dont waste your time with landscape/grass.
Its never been completed on top of just not working - same for the VT input which cant be instanced btw.
So drop it. Use the procedural foliage stuff to generate the instances.
There is no way that someone can just not use one of the biggest features of an engine like landscapes, especially in a project that has large open world game-play. It would be great if we could instance grass types, but it’s just one issue, landscapes work great when used for their intended purpose. There is no way you can honestly think using meshes instead of landscapes is the best for large worlds, that’s ridiculous.
Also, what are YOU on about? VT Input can be parametrized and instances can be changed.