The new CSG engine ignores mesh objects in parts

Describe the bug. Describe what is happening when the bug occurs. Describe what you would normally expect to occur.

  • The new (UseCSGv2) CSG engine ignores primitive meshes, such as CylinderMeshes, BlockMeshes and SpecialMeshes (in “cylinder” and “sphere” modes) inside parts when solving unions.

    In this example, it was supposed to return a cylinder, but instead, it returns a whole part:

    Spoiler

    Completely ignoring the CylinderMesh. However, it does work normally when the part’s shape is changed instead.

How often does the bug happen (Everytime/sometimes/rarely)? What are the steps that reproduce the bug? Where does the bug happen?

  • It happens every time, in the normal (live) build.
5 Likes

zeuxcg is aware of this, and says this should be fixed soon!

https://twitter.com/zeuxcg/status/896845457527373827

3 Likes

Hi, not sure if a fix was released and I found a new problem or if it hasn’t been patched yet, but I’m having problems with primitive SpecialMeshes - specifically wedges. The new CSG isn’t respecting the mesh’s scale, as seen below:

Screenshots

Before CSG:

After:

Here’s the SpecialMesh properties; it’s set to wedge, inside a wedge (I just needed the wedge to be smaller than 0.05 on one axis, together with the other parts it’s larger than 0.05 on all axes):

Here’s the offending model, just open it up and union the parts inside the “UnionTheseParts” model for a repro: ArtemisRepro.rbxmx (293.7 KB)

1 Like

Apparently if you add a ‘humanoid’ to the object or it’s parent, the specialmesh will appear :confused:

Hm? The SpecialMesh itself works, but the CSG engine acts like it doesn’t exist when unioning them – or at least, CSG ignores the mesh’s scale. I tried inserting a Humanoid into both the resulting Union and its parent in case I misunderstood, and it didn’t fix the Union.

Ah wait, my bad. I thought you meant inserting a specialmesh into an union ignores the specialmesh being there. :stuck_out_tongue_closed_eyes:

1 Like

There is currently a minimum absolute dimension on a primitive in the CSG system. We chose 0.05 because it’s what Studio imposes elsewhere. What you are seeing here, is that the chain of scale factors tries to produce a wedge smaller than 0.05, and hence gets clamped to 0.05 from below.

We could choose some other value, it just can’t be zero because at that point the object disappears.

Suggest a better value and we might just change it.

Thanks

1 Like

Ah, makes sense I guess. I don’t see anyone using any smaller than 0.01, would that be feasible?

0.01 should be within what’s feasible. We’ll test it to make sure, of course.

1 Like