[PLUGIN] Foliage FX — Fast Foliage Painting Tool for Roblox Studio

:herb: Introducing Foliage FX — The Ultimate Foliage Painter for Roblox Studio!

Create natural environments in seconds.


:seedling: What Is Foliage FX?

Foliage FX is a powerful Roblox Studio plugin that lets you paint trees, grass, rocks, bushes, and any model or mesh directly onto your map using a smooth, intuitive brush tool.

Perfect for environment artists, terrain builders, and anyone who wants to speed up world-building.


:sparkles: Features

:artist_palette: Brush-Based Painting

  • Add & remove foliage instantly
  • Adjustable brush size
  • Smooth and clean workflow

:herb: Per-Asset Customization

  • Density controls
  • Scale variation
  • Rotation ranges
  • Align-to-Normal for natural slope placement

:file_folder: Professional Tools

  • Multiple Asset Slots
  • Preset saving (ServerStorage)
  • Automatic organization
  • Undo/Redo support with ChangeHistory

:high_voltage: Optimized Workflow

  • Works with any model (trees, grass, rocks, props)
  • Perfect for forests, jungles, islands, mountains, stylized maps

:fire: Pro vs Lite

Pro Edition
:check_mark: Unlimited slots
:check_mark: Up to 15 assets per slot
:check_mark: Full rotation & normal alignment controls
:check_mark: Maximum brush size & density
:check_mark: Best for serious builders & map creators

Lite Edition
:check_mark: Free
:check_mark: Try before you buy
:check_mark: Limited assets & settings


:camera_with_flash: Media


:link: Get Foliage FX

:backhand_index_pointing_right: Foliage FX - Tienda de creadores

:backhand_index_pointing_right: Foliage FX Lite - Tienda de creadores


Do you want the Foliage FX for free?

If you have a high amount of followers on Youtube or another social media, you can get the plugin for free in exchange of posting a video showcasing it!
How to apply? Just fill this form: Apply for free Foliage FX plugin


FAQ

Q: Can I paint on MeshParts?
Yes — any part, union, mesh, or terrain surface.

Q: Can I use my own assets?
Absolutely — import any foliage models, meshes or libraries (grouped in a folder) into Studio and place them into ServerStorage/FoliageFX folder. Then you will be able to select them through the plugin user interface.

Q: Does it support Undo (Ctrl+Z)?
Yes! Fully compatible with Studio’s undo system.

Q: Are updates included? Yes — all future updates are free once purchased.


:speech_balloon: Support & Feedback

Have suggestions, bugs, or feature ideas?
Drop them in the post or join discord server: Simonp Studios


Thanks for reading! :slight_smile:

Simonp Studios

6 Likes

its literally the brushtool plugin..

7 Likes

Thanks for pointing that out! I wasn’t aware of that other plugin. My goal with this plugin is to provide a smooth, user-friendly experience with features focused on environment design. Even if similar tools exist, I believe this plugin brings a lot of facilities that can really help creators as well as a powerful and unique eficient density based asset placement system. I’d love for people to try it and see how it works in practice! :slight_smile:

1 Like

most popular plugin btw
it’s also has inf assets, literally everything your plugin has.. for free…

btw you don’t have to use the corporate way of talking

4 Likes

Excuse me if I sounded corporative, I was just trying to be polite. Thanks for sharing your opinion though

1 Like

Just ignore him. If you see his forum activity, what he only do is yapping on many forum thread instead of being productive.
People who come across your post probably trying your plugin and not leaving a feedback.

4 Likes

then why are replies open? What is your logic here

1 Like


image
Please, fix the code… tick() is not reliable and is unoffically deprecated.
Using a while do end loop with a task.wait is heavily inefficient and not elegant.
image
Commentaries are placed like an AI would do (which I have suspicion that AI helped to type a part of code, IF you ACTUALLY used AI, then please, don’t sell this plugin, this is just amoral to sell thing that is not entirely yours. Also, some people might think that it is an accusation: it’s not. I don’t care what you use to code.)

There are only one concrete advice I can give:

  1. Try to do a research on opponents (and actually do a research if there is no already good solution) on the functionality service you want to provide (in your case, brushtool plugin).
1 Like

Thanks for your feedback and advises, this is really helpful! I actually asked ai help with some mathematical operations, but the code is fully mine including comentaries. I just use them as a self support for complex algorithms and operations so I can easily edit the code later if needed.
I’ll try to replace tick() and task.wait() in while loop as you said, thanks for the advise.

1 Like

What does that mean? It’s either deprecated or not. Besides, all of the timekeeping methods have different purposes.

1 Like

As long as AI was only used to assist in its development, there’s arguably no moral issue here. The only moral issue comes when you try to sell low effort, fully AI produced works.

1 Like

I sent an official source that said what “unofficialy deprecated” means and it listed it’s huge cons.

And no, timekeeping methods don’t have different purposes.

You sent a screenshot with no link to the source to prove it is actually real.

https://create.roblox.com/docs/reference/engine/globals/RobloxGlobals#tick
Oh no! It’s very hard to look up on official documentation, how could I forget!

What’s the correlation?
I think I live rent free in your head so it makes you reply to my comment, lol.

Thanks, this source says that tick isn’t officially deprecated. That means it is not deprecated. :slightly_smiling_face:

os.clock() is for precise time keeping without using a timezone. Designed for benchmarks. I often use it in place of tick() because it looks more elegant.

workspace:GetServerTimeNow() is when you need a non-persistent time to be synced with the server. The server’s timezone is used.

DateTime.now().UnixTimestamp is when you need a persistent time to be synced with the server and future servers who are in a different time zone. It uses UTC time. Useful for saving times in datastores in one float. DateTime.now().UnixTimestampMillis includes more information.

2 Likes

Don’t get mad at everyone else for demanding that YOU prove YOUR argument instead of expecting us to prove your argument for you.

2 Likes

Literally what I said.

And all of this purposes is to get time track time. The differences are only timezone and precision. You use timekeep methods to get time, the way you use || need the said time is the only thing that changes which method you use.

Before trying to indirectly call me a liar, do an investigation on official sources. This takes less than a minute.

When you’re trying to make an argument/point, it’s on you to provide all the evidence, and full/proper evidence at that. It’s not on everyone else to prove you right. What you claimed was an “official source” could have been literally ANY ARTICLE on the documentation site and none of us are about to go on a wild goose chase trying to find which one when you should have provided a link to begin with.

was it 1 am for you when you were typing all of that?