Terrain Decoration for Parts and MeshParts

As a Roblox developer, it is currently too hard to mix terrain with Parts and MeshParts. Terrain Decoration is limited to just terrain. We’d love to enable Decoration on parts too, automatically applying to the top face. Optionally you could choose which side the decoration is applied to, or even apply decoration to all faces. Imagine a cube of grass. When Decoration expands beyond just grass, we could even build custom shapes for trees with moving foliage built right in.

Currently a mountain in Jailbreak looks like this:


Unfortunately, the blend between the terrain to the mountain is a hard visible line. With Decoration turned on, this mountain would blend into the existing world of Jailbreak. Grass would flow up the ridges, making Jailbreak look like a more complete product.

If Roblox is able to address this issue, it would beautify existing worlds. With a click of a button, games would appear complete and polished. This isn’t limited to mountain ranges! We could place thin parts where terrain voxels are too large to place. Like the median in a road. This feature would blur the lines between Terrain and Parts to our players.

Let’s make games on Roblox look incredible!

194 Likes

Being able to extend terrain features like this would be an excellent change for our game.

Often times when blending terrain water with terrain, we encounter weird issues where grass clips into the water in an unsightly manner. This causes us to avoid decorated terrain types bordering terrain water, which doesn’t always look great.

The voxel sizing issue is relatable for many experiences on Roblox. We avoid decorated terrain along roads for the same reason, leading to awkward dead strips of dirt along our roads. The alternative is grass clipping through the road object, though!

28 Likes

Very similar use cases on my end. Would love grass decor for BaseParts.

I usually aim for very geometric builds, so maybe not as hi-fi/realistic as the prior posters, but I still experience the issue of awkward grass clipping and empty spots as a result. In addition, I sometimes can’t even put terrain grass under parts due to the voxel size.

It makes it very hard to utilize and cobble together a stylized, but alive, build. Things look too vacant without grass. Particle emitters don’t cut it. Meshes don’t cut it. Grass decor would be a massive increase to my overall productivity in making worlds. I use grass all the time and the current workaround is a pain to deal with. Smaller voxel size would solve a decent amount of precision issues, but BaseParts also need to be accounted for.

While we’re discussing grass decor, the water material for BaseParts would also be super useful. BaseParts and Terrain really need overall better parity.

17 Likes

Enabling terrain on parts would be a really good starting point but it doesn’t offer much creative liberty. Solutions like this don’t scale well for every use and developers end up using those methods in very hacky ways in order to obtain particular patterns. For example, someone could scatter parts under the map to create the foliage they want. As much as this can sound great, this isn’t an optimal way to develop and only leads to wasted performance and a poor workflow. We need a solution to this where we have tools to control foliage exactly the way we want.

I would personally propose a few different alternatives on how to implement this.

Vertex based weight painting

We already have some form of this right now when we paint with other materials than the grass (for example the leafy grass). This is great for now, but is this really a solution or something we endure? I would consider this a hack since we’re unable to blend to standard grass without foliage. This makes it hard to respect our art direction and not having dead orange leaves in a summer environment. Even when considering MaterialService, we’d rather use the “LeafyGrass” slot for something more useful than the same exact grass material but this one is the one without decoration.

Thus, the first step would be to separate the correlation between Material and Decoration. I should be able to paint any decoration on any material. Grass, Ground, Mud, Cobblestone, Snow, Rock, name it, they should all be indifferent to Decoration. To adjust the colors, we should have a second MaterialColors property for grass to adjust its color tint depending on the material under.

Now time for the parts, they will need to implement the vertex painting on the parts just like on the terrain. For each vertice on the object, you can decide if it’s showing Decoration or not using a brush. To even push this further, material vertex based painting would be amazing. Basically, we could blend materials on the instances, but this is another topic.

As you can probably start to feel though, this is still a very… atypical workflow? We still have extremely limited freedom on what we’re actually creating. Our visual identity will still be tightly linked to Roblox. It’s basically just upgraded Decoration to the max, and it’s where this ends.

Instance painting and scattering tools

This is currently “visually possible” by simply using MeshParts and some scripting and plugins. However, this is not something we will be able to add in standard games anytime soon due to the massive performance drawbacks. This is nowhere near being optimized and doesn’t have any wind animation feature compared to the current Decoration, except with rigs/deformation but this comes at an even greater performance cost. Foliage should be a thing of its own in order to get the best possible performance.

There are multiple steps necessary to make this implementation successful. The first tool is a brush to manually paint individual instances of foliage around the environments. We also need something to manually select the instances and adjust their position/orientation/scale. After that, we need automatic surface fills with noise to determine density (a bit like the terrain generator) that way you can easily fill a terrain/part/surface of the foliage the way you want. We also need to be able to control the way the foliage is affected by wind, it usually is done through vertex painting so why not do it in this case as well.


That’s about all I have I think, I’ll edit this if anything else comes to mind :slight_smile:

22 Likes

Thanks for the discussion and feedback! Please continue to share your use cases here and we’ll pass it along to the relevant teams.

42 Likes

Hi, is this being considered? This would clean up a ton of terrain voxels just around the map, while keeping the intended decoration.

Perhaps it can be a new object you insert into part, and it just grows grass on all the top faces? Does all the same streaming benefits too. Localizing color, and grass height to each terrain part would also be a huge plus, so we can make multiple style scenes on the same map.

This is particularly useful for railway maps, where we can easily just drag grass clusters into place.

1 Like

I came here to say the same thing, this would be great for railway maps

1 Like