Roblox Studio Un-merges Meshes Leading to Increased/Incorrect Vertex Count

Hey, I’m Evanbear1, a Roblox Video Star Creator. I work with @domiscius, a 3D modeler, for my UGC items. We’ve had an issue in studio which has been a problem for a while, but now it’s much more of a problem since UGC is now available for some. There’s a specific limit of verts on every UGC mesh, but due to Roblox Studio not exporting meshes properly, that number is closer to 700 verts per mesh than the limit they tell us. This gets annoying since Roblox gets incorrect information about the mesh when they are sent a .rbxl file.

Here’s a video showcasing my item going from 1,117 verts, to 1,968 verts for no reason. I don’t know why but vertices unmerge from each other when they get exported out of Roblox Studio. https://www.youtube.com/watch?v=0-GcybN9TjQ

You can reproduce this bug 100% of the time with any 3D software by importing the mesh, exporting the mesh from Roblox Studio, and looking at the verts. Just wanted to bring this up to see if we could get a possible fix for this in the near future, and of course if there are any questions, comments, or concerns @Domiscius and I will try to reply to your messages as soon as possible.

Thanks,
Evan Zirschky (Evanbear1)

4 Likes

This is not a bug. As you can see in the difference between

Before:
image

After:
image

The original mesh is created using quads, but Roblox (and the FBX file format in general) only support triangulated meshes. When the mesh is triangulated, it may end up with more vertices depending on how effective 3DS Max is at triangulating the mesh.

For more information on quads vs tris, see this random internet post on the Autodesk forums:

If you can reproduce this a second time where exporting the triangulated mesh from 3DS Max into Studio and back out as an OBJ creates even more vertices, then it may be a bug on our end & we can look into it. If it’s just the initial, then it more than likely is Autodesk’s magic work behind the scenes.

Regardless of whether you use Quad or Tris, the Vertex count is still the same. The issue is Roblox un-merging the vertices from the mesh when you export the mesh from Roblox Studio. As you can see from this video, I imported the mesh with Tris to Roblox, and exported it back to Maya. Skip to 1:30 to see the vertices in the mesh getting un-merged from eachother.

1 Like

Thanks! Confirmed this is a bug on our end. Our mesh file format supports reusing shared vertices for faces, but it doesn’t look like we’re taking advantage of that from inspecting one of our mesh files.

For now, you will need to retain the original fbx and work off of that.

1 Like

We just hit this issue with our game (.objs saved from Roblox unmerging vertices). We had several 3D artists collaborating on a single map, and to make edits to meshes, they were sometimes saving the meshes from Roblox Studio as an .obj, editing them, and reuploading them. The primary reason to do this instead of working from the original mesh is that the saved .obj retains the mesh’s worldspace position, so once the mesh is edited & reuploaded, it gets placed in the same location as before.

Here’s an example with a simple round coin:

Because we decided to recolor the new map partway through development, nearly all of the meshes in this map now have duplicated vertices that we’re going to have go back and fix to keep the map as performant as possible. Unfortunately I don’t think there’s a way for us to tell which meshes have duplicated vertexes and which don’t without this bug getting fixed – we don’t have a way to get vertex data for a mesh with any available APIs in Roblox Studio, and downloading the .obj always creates duplicates.

I can also confirm this is happening. I just began messing with exporting models as .obj recently and there’s some issues. In Blender, you can not use the “select more” option because things are not lining up/duplicates. It will not work properly until you do merge by distance and combine overlapping verts. Once you’ve done so, select more / select linked will work. For the sake of my workflow it’s fine this is the case because I can fix it easily, but it would be a nice QoL fix to not have the exports behave like this.