Introducing Intersection to Computational Solid Geometry (CSG)

Hello Creators,

We are excited to announce that we’ve added a new operation for CSG Solid modeling in Studio: Intersection! This new Intersect tool will join the existing Union, Negate, and Separate tools to help you create complex shapes by combining simple constructive solid geometry operations.

Intersect Icon

Intersect takes multiple overlapping parts and outputs the volume where they all overlap. You can think of it as the middle part of a Venn diagram.

Union = A + B + C
Intersect = Only B

Here it is in action!



Note: To use Intersection in Studio, you will need to have CSG v3 enabled.

You can find the new Intersect button by going to the Model Tab > Solid Modeling > Intersect.

To perform an intersection operation, select one or more parts that are overlapping each other, then click on the Intersect button. The new part will be visible in the Explorer with the name Intersection and your previous parts will be removed.

To undo the operation, simply click on the newly created Intersection part and click on the Separate operation by going to the Model Tab > Solid Modeling > Separate.

Keyboard shortcut: Ctrl + Shift + I


Intersection APIs are also available. You can use BasePart:IntersectAsync in-experience, or Plugin:Intersect in studio.

Further Reading

Additional information can be found in the docs at IntersectAsync and IntersectOperation. We have also updated the Solid Modeling explainer to include the new functionality.

As always, we’re excited to hear any feedback you have, questions that come up, or any bugs you run into.

Shoutout to @L3Norm, @monsterjunjun, and @TravelerUniverse for working on this new functionality and to our QA team for getting this out the door.

Thank you!


This topic was automatically opened after 10 minutes.

Will we ever see the ability to ununion parts from within game?


You can already do this with the New Roblox In-Game CSG API is now available


Looks solid!

I cannot think of any uses this would have yet, but I cannot wait to try it out ASAP! I am sure that modelling will be much better, and more advanced now! Thank you for this great feature. :+1:


Interesting and seemingly useful feature, nice

Roblox has a trend of releasing extremely polarizing feature followed by impossible-to-dislike features lol


This is disappointing. As a builder and map designer, I would love to see improvements to the union system instead of feature updates- I rarely use unions due to their poor performance and poor collisions.

Furthermore, the intersect feature can also be used in several 3D softwares like blender, where I can easily make significantly more detailed, optimized, and precise models. Given this, there are very few situations where I (or really any intermediate level developer) would make use of this update.

What would be infinitely more useful and worthy of roblox’s time would be an in-studio vertex / geometry manipulation system, similar to Unity, or CS:GO’s map editor. There are many situations where I would rather just bevel the edge of a cube than have to utilize CSG or meshparts.


This seems like a quite interesting new feature, but as others said, I believe we would all want improvements to the current systems instead of adding to them.

I feel like this new feature is cool, but it might take a while for people to fully understand and make use of it.

I hope to see more improvements and even new features to the CSG!!! I know y’all can do it :smiley:


This is standard joining and negating. The separate function has yet to be implemented for runtime use, which I assume @parker02311 meant.


This is great and all. But CSG modeling within engine is still abysmally unoptimized. I could be wrong, but when exporting the union as an OBJ, I find 100’s of duplicated vertices edges and faces for one basic shape. This may be due to the exporting process? It would be nice to know if it’s actually optimal, and I would love to see for myself that it works as intended. As of right now, you’re still better off using Blender or some other 3rd party modeling program to make your special meshes.


This is indeed what I was talking about, while I was creating an additional feature for F3X I was sad to learn that you can not ununion during runtime


I believe this is to do with the exporting process, as many time I have seen unions using the built in wireframe rendering not have this issue.
To enable wireframe rendering go to View → Wireframe Rendering

I’ve tested this and saw things looked fine. I should definitely try exporting a mesh I’ve made and see what Roblox does to it. But it does bring up the concern of if that’s how Roblox sees the mesh with the extra geometry? Triangles are obviously part of making a mesh, but this is more in regards to things like a vertex overlapping the same point creating more triangles. I know for a fact that a proper geometry solver wouldn’t be too far out of reality where the mesh can be properly quadded (basically a grid of normals that make up the shape without N-gons or pure triangles). I would like to see the actual result of making a union opposed to using Blender which might not be the proper way considering the possibility of the exporting process being funked.


Yeah the exporting system is very annoying and really needs to be worked on especially if the game engine sees it differently. Hopefully we can see improvements to this system in the future so we can better compare unions to custom meshes.


why was grid increment also changed in this update? I can no longer build at 0.0125 in increment when scaling or moving parts, as roblox prevents it and changes it to 0.013.


What is the keyboard shortcut for this?

1 Like

Oh yes!!! This is lovely. Will be using asap!

1 Like


Glad to see this feature is now a thing.


Really cool update! Only issue i found was that my studio crashed when i used Ctrl + Z to undo my intersection

1 Like

Looks good! In what purpose can we actually use it?