In-experience Constructive Solid Geometry (CSG) APIs now available in published experiences [Beta]

Do you have any plans to add support for meshes? Fewer and fewer games are designed around parts, and supporting something like this would allow for some really interesting mechanics :boom:

1 Like

Says here in the previous topic that these are for the BasePart object, which means that MeshPart support should be included in it. I’m not sure if MeshPart support is released, but it is definitely planned if not.

1 Like

Someone please make an epic pirate ship game with this.

Now I will have a reason to use parts instead of meshes in all my games. This looks very cool!

That’s the release I’ll be waiting for. It would be really nice to be able to make fruit ninja with CSG operations on meshes

If I am not mistaken they have announced in their roadmap “CSG on Meshes”, no idea when this will come but pretty sure it will.

Very excited to see someone make a teardown styled game with this (if I dont do it)

1 Like

Additionally, the new returned objects are now in the same frame as the input part. This means that you can actually substitute the CFrame of the original object into the new ones (in case it has moved while the operation has been executing)

For the ParallelLuau, It’s not been validated against it but it is something we’re looking into.

2 Likes

Not yet. There are a lot of issues to work through to add mesh support. I promise it’s being worked on

3 Likes

This update has come in clutch for future projects I’m planning. Great job, Roblox.

1 Like

It’s about draw calls, no amount of weld constraints and anchoring is going to fix that, that will only fix physics-related performance issues.

Draw calls are an low-level engine issue.
Having lots of unique models and unions in a game is going to bottleneck the CPU regardless of if parts are anchored or not.

At some point the CPU can’t send draw calls to the GPU fast enough and starts dropping frames.

1 Like

why don’t you simply apply the result to the original? this is called double subtraction btw, or intersection

1 Like

I ended up using the intersect function to do it, it would just be nice to do it without a second calculation.

On another note, the entire CSG system seems multiple times slower in game compared to studio. I don’t see anywhere to enable a beta property so I’m not sure if I can’t find the enable button or if its just worse in game. If anyone can tell me if I’m missing something that would be great.

Are you using the new GeometryService APIs? If you think it’s a issue with Roblox you should file a bug report.

Yes, everything is using GeometryService. I’ll wait until a bit more confirmation that it’s a bug before reporting it, but there is a very noticable difference in calculation time between studio and in game.

In game

In studio

1 Like

It could be because the CSG operations have to replicate from the server to the client; which can be expensive depending on the complexity of the model. If you use CSG on the client though does the calculation time difference still occur?

I’m doing it on the server, but I moved the same code to the client and the result is the same. Still has a much higher calculation time than it does in studio.

1 Like

Interesting. Have you tried timing the computation itself? I’m genuinely interested to see if this is a bug but having seen anything like that myself. At a glance it looks a) super cool but also b) like there is some replication delay.

If you want me to take a look at it, feel free to shoot me a PM (either joining a group or an rbxl file to test)

Are you using collisions on intersected parts?

Hey creators,

Thanks so much for the active feedback and we hope you have been enjoying playing with these new APIs

We are tracking a few recent issues that came up that might affect you:

  1. Due to this recently reported rendering issue, we had to turn off some fixes for flickering when using CSG operations. The team is actively working on resolving this issue and we will report back when it has been fixed.
  2. In some cases, you might face issues with box collisions due to parts having an off-center origin. This issue has already been fixed and should be rolling out in an upcoming release
  3. In some edge cases, you might hit an infinite load issue due to coplanar phase removal when performing CSG operations. Thanks to the dev that reported this via DM to us. This issue has also been fixed and should be rolling out in an upcoming release.

All of these issues were identified thanks to your active feedback. Please keep them coming!

5 Likes