Bring real world creation to your experience with Constructive Solid Geometry (CSG) improvements [Beta]

Depends on what the bug is you can try to do it but bugs are what qa is

what’s the progress on the culling issues? Also, any way a placeid could get early opt in access for live games? My new game relies on this tech

Thanks!

This seems pretty cool, but it (and the old union/solid modeling methods) are missing an action…

So far, @bluebxrrybot is the only person that has mentioned it:

I agree. Developers can create unions with scripting (combining parts or cutting through them using another part) but why isn’t there a method that separates a union into the parts or UnionOperations that formed it? I don’t know what this could be useful for, but a creative developer could probably come up with something cool.

I don’t know; It’s weird that there are methods for all but one of the “Solid Modeling” buttons in the ribbon. I think this API should support the same actions as the built-in Studio solid modelling tools.

As awesome as this would be, I think not keeping track of what was used to modify the union probably is part of what makes this perform so well. If we’re constantly using a part to shave off pieces of another part, that would build up a big, no, massive history of parts to separate.

1 Like

Do you have any updates on this?

Look for it very soon (ie scale of a couple of weeks).

4 Likes

Any chance / possibility that we will be able to preserve attachments individually without constraints like CalculateConstraintsToPreserve?
This would be useful for properly parenting attachments to the respective unions they should be in, as attachments may hold ParticleEmitters and Sounds or be used by beams / movers.

If this behavior already exists and I have glossed over it, please correct me.

Interesting.
It’s not a use case we’ve tested and if it works, i’d be very gladly surprised. Unfortunately the answer for adding this feature is:
not in this release (it’s basically feature frozen at this point) but it’s certainly something we can look at adding. It seems like a very good use case
~BelgianBikeGuy

1 Like

I don’t believe this exists from my experience using the API, and it can probably be done manually (albeit through a hacky way) in code, but having it as a native feature eventually in the future would be very helpful!

27 days ago you mentioned it’d be out in a couple weeks. It’s about to be 4 weeks. Has it been pushed back?

For some reason, as mentioned by WheretIB, BasePart:GetClosestPointOnSurface() is locked behind the CSG Beta too which is a major issue for quite a few people especially since we built a system surrounding it only to realise without warning that it never worked in the live game

1 Like

The release was delayed by a few weeks because we wanted to do some additional perf testing on low-end devices. We are pushing hard internally to get this out ASAP!

GetClosestPointOnSurface() has only ever been available as part of this Studio Beta and was never available in published experiences. This post was clearly labelled as a [Studio Beta] in the title as well with the hope that we would get feedback on these APIs, giving us time to fix issues before we allowed experiences to be published and thus take a dependency on all this functionality.

We hope to get this enabled in published experiences as soon as possible so hopefully the frustration is short-lived.

Thanks for the reply! I re-read my first sentence and I didn’t mean for it to sound snarky or anything. Apparently at one point a few months ago it was enabled in a release version then shortly after disabled.

Unfortunately yeah I don’t think I’m in a position to give feedback as I haven’t tinkered with CSG but those previews look awesome! Especially with there being no more flicker. UVs or textures being offset due to operations was one thing that really annoyed me

1 Like

Here’s an issue I found with lighting (using the geometryservice beta for operations):
After intersecting a cylinder with a cube:
Screenshot 2024-04-22 205650
Intersecting the two obtains a semi-circle @ 90 degrees
Screenshot 2024-04-22 205745
Duplicating the result, and scaling it on the Y and X axis to form a layer like effect in combination with the originally sized piece:
Screenshot 2024-04-22 205821
Negating the smaller part from the larger, which creates this shape:
Screenshot 2024-04-22 205919
The lighting on the inner face acts as if it has a normal facing the opposite direction (from what I can tell) which illuminates it when a light shines from behind, but doesn’t respond to light emitted towards it. Here is a diagram:


I hope this is a good enough explanation. This only appears to affect the inner curved face of the shape.
Thank you roblox dev team for a great set of tools! I look forward to use this when released.

2 Likes

Hello Creators!

Thank you so much for all your feedback and questions. We are excited to announce that all of this functionality is now out of Studio Beta and you can now publish experiences with these new capabilities!

Our main goal with this release is to get real-world, in-production usage of these APIs so we can further tweak performance and fix any new bugs. At this point, we do not expect any breaking API changes so it should be safe to publish experiences with this new feature set even though performance will improve and bugs will continue to be fixed.

Thanks to your feedback, the following changes and fixes have been made:

  1. Fixed box decomposition which was not matching the visual output of the operation (it was offset to the origin of the CFrame as opposed to the physical center of part). This was causing incorrect culling of certain parts of the scene.
  2. Fixed issue where fully disconnected surfaces were being considered as different bodies. This meant subtracting a sphere from the inside of another sphere would actually create 2 bodies when split apart was enabled.
  3. Fixed interaction causing sporadic crashes during fast substitution updates (related to flicker removal with substituteGeometry).
  4. Miscellaneous small bug fixes

We are still actively fixing a few recent bugs and will push out fixes as soon as they are available but we wanted to get this out to you as soon as possible.

We look forward to all the amazing experiences you will make with these new capabilities. Please keep the feedback coming!

Thanks,
@BelgianBikeGuy, @TravelerUniverse, @syntezoid and @FGmm_r2 on behalf of the Roblox Geometry team

6 Likes

this could make an awesome sculpting game lol

im trying and failing to make a explosion effect using CSG :sob:

This might help: Destruction Using New CSG Beta - #8 by BubasGaming

ive tried spawning parts but i just couldn’t figure it out lol

though thank you anyway for your response

i got the parts spawning correctly
however i cant figure out intersect and subtract to work on it… well ill figure it out soon enough. I hope.