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

With Incremental Re-meshing the CSG engine tries to merge as many coplanar faces as possible after each operation. So, the number of faces in contact in the following operations is decreased, and as a result, the next CSG operations become faster.

3 Likes

The cone apex is connected to many faces, requiring special processing to prepare it for CSG operations. That’s a good suggestion. Technically, it is now possible to add it as a built-in type.

3 Likes

Being able to serialize PartOperations. Pretty much I would like to be able to modify a part using geometry service then be able to convert it into a string and store it in a datastore.

1 Like

Hello Creators,

Due to a Studio bug investigation, this beta will be disabled for a few hours on Monday, October 30 and will be re-enabled after this window.

Don’t worry, all your work will be safe and unaffected. However, you will encounter error messages when using these APIs during this window. We will update this post when the window starts and ends.

If you have enrolled in the Beta Channel option in File > Beta Features, the beta should be automatically re-enabled after this window and you should not have to do anything else.

If you manually enabled the beta following the instructions provided in this post, you will need to re-enable the beta by going to File > Beta Features and checking the In-experience CSG API improvements checkbox

We apologize in advance for any inconvenience this might cause.

4 Likes

I seem to be having problems with client replication of :SubstituteGeometry. Is this a known issue?

1 Like

Hi @killnminecraft,
Would it be possible to provide an example? We do have a couple of fixes in the pipeline but I’d like to see if your case is covered

1 Like

This beta has now been temporarily disabled as of 1.30pm pacific time. We hope to re-enable it by the end of the day today

2 Likes

The beta is still disabled at this point. We will be re-enabling tomorrow morning.
Thanks for your patience and apologies for the inconvenience

2 Likes

This beta has yet to be reinstated as of 1:30 PM EST. When will it be turned back on?

1 Like

The beta was turned back on at 9:00AM Pacific time.

2 Likes

Thanks for the quick response!

1 Like

I now have a problem with the decomposition geometry when using solid modeling. Even after the beta was turned back on, this condition has continued to occur. Unless the base part or part operation is almost exactly the same dimensions on all the axes the decomposition fails.

2 Likes

Hey @Zquizmaster Would you mind attaching a repro?

2 Likes

Hello Creators,

Due to an elevated number of Studio crashes, this beta will be disabled for a week, from Wednesday, November 1 until Thursday November 9 and will be re-enabled after this window.

Don’t worry, all your work will be safe and unaffected. However, you will encounter error messages when using these APIs during this window. We will update this post when the window starts and ends.

If you have enrolled in the Beta Channel option in File > Beta Features, the beta should be automatically re-enabled after this window and you should not have to do anything else.

If you manually enabled the beta following the instructions provided in this post, you will need to re-enable the beta by going to File > Beta Features and checking the In-experience CSG API improvements checkbox

We apologize in advance for any inconvenience this might cause

1 Like

DecompFail.rbxl (55.3 KB) shows what happens using this CSG Decomp reference.

Thanks for the reply. I’ll take a look at it

Why can’t I use the service? This is the code I used. Directly from the documentation. This is the error.

Internal Dev only. CSG3 New API is not ready to be used externally
local GeometryService = game:GetService("GeometryService")

local mainPart = workspace.Pole
local otherParts = {workspace.Negator}

local options = {
	CollisionFidelity = Enum.CollisionFidelity.Default,
	RenderFidelity = Enum.RenderFidelity.Automatic,
	SplitApart = true
}

-- Perform subtract operation in pcall() since it's asyncronous
local success, newParts = pcall(function()
	return GeometryService:SubtractAsync(mainPart, otherParts, options)
end)

print(success,newParts)

if success and newParts then
	-- Loop through resulting parts to reparent/reposition
	for _, newPart in pairs(newParts) do
		newPart.Parent = mainPart.Parent
		newPart.CFrame = mainPart.CFrame
		newPart.Anchored = mainPart.Anchored
	end

	-- Destroy original parts
	mainPart.Parent = nil
	mainPart:Destroy()
	for _, otherPart in pairs(otherParts) do
		otherPart.Parent = nil
		otherPart:Destroy()
	end
end
1 Like

They said that they will disable it to fix bugs.
They will reenable it on November 9.
Kinda sad because i was making a game that the main goal was destruction.

Is there a way to use this right now without waiting till november 9th? Plzz i need this :pray:

I know your pain, i really want to use it now too. Right now i am making other mechanics for my game. I advise you to do the same.