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!

Intersect_demov3

Usage

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

APIs

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!

215 Likes

This topic was automatically opened after 10 minutes.

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

13 Likes

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

8 Likes

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:

11 Likes

Interesting and seemingly useful feature, nice

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

10 Likes

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:

10 Likes

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

7 Likes

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.

12 Likes

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

2 Likes

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.

3 Likes

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.

3 Likes

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.

3 Likes

What is the keyboard shortcut for this?

1 Like

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

1 Like

Finally!

Glad to see this feature is now a thing.

2 Likes

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

2 Likes

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

4 Likes

Ok but like why are unions still unbelievably broken when it comes to nightmare topology and active geometry calculations?

2 Likes