Studio Solid Modeling (CSG) Performance and Robustness Improvements

Table of Contents


Hello Creators,

After introducing the robustness and speed improvements to our new in-experience CSG API’s, we are now bringing the same set of improvements to Studio. The improvements are available as a Studio Beta feature and can be enabled in the Studio Beta Features window by checking the “Studio solid modeling improvements” checkbox.

Improvements

Performance

Solid Modeling operations within Studio now enjoy the same performance improvements as in-experience. “Cold start” performance and operations with complex shapes, tools and interactions have been improved across the board.

The example below shows the difference when unioning 20 parts together before and after enabling the Studio Beta. Take a look at some of the before / after examples below.

From left to right: Current behavior vs. With Studio beta enabled

Robustness

This Studio beta includes various stability and robustness improvements as well. We improved the reliability of the engine to vastly reduce the cases that could result in an invalid operation. This should allow you to be much more confident in leveraging the Solid Modeling (CSG) system in your experiences. We are committed to stamping out every possible “invalid operation” error remaining so please drop us a note with an RBXL example if you do face one in the future.

Similar to the in-experience release, this Studio beta should also fix most orientation issues users were experiencing.

For example, below you can see how with this update there are no more incorrectly shaded triangles anymore.

Current behavior vs. With Studio beta enabled

More Optimized Meshes

This update reduces the number of triangles in meshes produced by CSG in many cases. It’s especially effective for spheres, creating much more optimized meshes. This can improve performance in downstream experiences.

Current behavior vs. With Studio beta enabled

A common use case for spheres is to align them with cylinders to create capsules. With this beta enabled, the resulting geometry is a lot more optimized as you can see in the diagrams below

Current behavior vs. With Studio beta enabled

Legacy APIs in Studio

When enabling this beta feature, any usage of the legacy [BasePart CSG Api](BasePart | Documentation - Roblox Creator Hub) and CSG Plugin Api in studio will automatically benefit from these improvements. However, please note that in-experience usage of the [BasePart CSG Api](BasePart | Documentation - Roblox Creator Hub) will not yet be affected.

Upgrade Guide

We’ve ensured that existing CSG Parts remain unchanged when these improvements are enabled. Additional modification on existing CSG parts, such as additional Unions, Intersect or Subtract operations, should not introduce visible changes to the unaltered portions of the object.

There are two cases where you might notice minor geometric differences:

  • Modeling far from the Origin
  • Working with features smaller than 10-6 studs

The image below shows a CSG Part on the left and a remodeled version with beta feature enabled on the right. As you can see the small feature circled in red is gone when the beta feature is enabled.

Current behavior (Correct) vs. With Studio beta enabled (Missing feature)

We recommend that if you are modeling very small features, make sure that the object is close to the origin. Once you finish your part you can then safely move it to its desired location. In the above example, if we move the Part to the origin, reevaluate the Part and then move it back, we retain the small feature even when the beta feature is enabled.

With Studio beta enabled and performing the operations close to the origin

Looking Ahead

We’re continuously enhancing the Solid Modeling tools in Roblox. One of the most common requests we keep hearing from the community is the ability to perform solid modeling operations like Union, Subtract etc. on Meshes. Significant progress has already been made on this front but we are ironing out some issues with texturing.

Additionally, we’re also hard at work to add plugin support for the recently released GeometryService APIs so you will have one set of APIs for all your Solid Modeling needs with the full feature set.

Your feedback remains important to us. If you encounter any issues or have suggestions about these upcoming features, please don’t hesitate to let us know. We’re committed to addressing your concerns promptly.

Thanks,
@pho01proof, @BelgianBikeGuy, @syntezoid and @FGmm_R2, on behalf of the entire Geometry team

208 Likes

This topic was automatically opened after 10 minutes.

this is another W for us, chat

20 Likes

Glad to see improvements on the csg operations. Especially as I am currently working with them on a game. Good Job Roblox :+1:

17 Likes

Amazing to see, but I need to get this question out the way.
Will wedges in unions no longer leave thin planes like this?
image

29 Likes

there will be option to disable for specific meshes/union if it corrupt or not compatible in the full release ? but in general very good update !

8 Likes

im pretty sure this is just an issue with the automatic RenderFidelity being bad, you can change it to precise in properties

10 Likes

No way… Please continue with these performance improvements. Definitely gonna be using this, keep it up!!!

5 Likes

Good stuff! I appreciate the fix for the random geometry spawning whenever trying to union anything that isnt two blocks. I always had to resort to third party 3D modeling software in order to either fix the random geometry or just flat out create the mesh from scratch there.

Also, is there a fix for the fact that unions sometimes just leave super thin planes when trying to cut
specific shapes into other parts within their bounds? Example:

The Part and Wedge before unioning.
image
And after Unioning:
image
(Do note that this is an artificial recreation, i could not get the issue to occur specifically this time :sweat_smile:)

But other than that, this is all really good stuff overall. Can’t wait for you guys to allow CSG to run in parallel!

17 Likes

This is amazing, massive W! Roblox is cooking a lot recently!

but could you guys please improve mesh collision boxes too? They are inaccurate a lot of the times, even with PreciseConvexDecomposition fidelity. Things such as tight interiors that a character can fit in (such as tanks) and precision-dependent hitboxes are sometimes very frustrating to deal with

5 Likes

Finally roblox actually doing a W for us studio users, I hope we can see the cylinder bounding box get fixed next cause that’s a pain to deal with rn

4 Likes

Amazing news!
Now builders will be able to enjoy working with Studio-provided tools even more!
I’m looking forward to seeing more opportunities building-wise by using Roblox Studio features rather than specifically recurring to third-party programs.
Great job coming from you guys :slight_smile:

5 Likes

This updates doesn’t specifically address this issue, but I still would encourage you to turn on the beta and check :slight_smile:

5 Likes

Makes sense. But I’m wondering. Is there any chance we could have the general floating point precision of the engine increased? This is probably a pretty big thing to just be randomly increased or whatever but i feel like the current floating point precision of the engine is rather low. Things start shaking and flickering not very far away from origin, it really only takes you around over 15k studs from origin to start noticing flickering and shaking.
As another example, my game uses a bunch of surface gui’s on super small parts glued to the camera to offer a 3D interface effect and these UI’s start flickering pretty harshly not too far away from origin. Here are two examples:

UI shaking at 12k~ studs from origin:


UI shaking aggressively at 30k~ studs from origin:

They can even be seen slightly shaking at as close as even just 3k studs away from origin!

Experiences these days are overall trying to implement larger and grander worlds, some are even entirely based around large worlds too and this issue only serves to tank either the quality (if developers decide to leave the shaking as is) or the scope of games (if developers decide to do something about it). So is there any chance of this getting addressed in the future?

18 Likes

Yknow what, that is pretty game changing, because otherwise for me, although I have moved to blender, it was a deal breaker for me with CSG.

Screenshot_6984
(non beta)


(beta)

13 Likes

Will there be a tool to convert individual existing CSG meshes in experiences to use the new improvements and/or converting every CSG mesh in the experience?

3 Likes

Yup, i’m very happy with this.‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎

5 Likes

With respect to the detail about modeling close to origin, can’t Roblox do that on the engine side behind the scenes (or in some equivalent capacity) prior to doing the CSG work? I’m assuming pivot is preserved, which would make this reasonably easy. Of course it depends on how expensive the math is to do this.

6 Likes

Hey! Yes we are working on doing this automatically for you and will roll out and update for beta users in the next few weeks :slight_smile:

9 Likes

I would love to see Capsule shape for Part instance.

9 Likes