I’ll be making a message here to clear up a few common misconceptions I’ve see while working with Unions and Meshes. I’ll update this list as time goes on and more ideas grow and die.
Unions cause less lag in comparison to parts.
False.
Roblox has to construct the geometry of the data for unions you make, which depends on the client’s ability to calculate physics and other data for the union(s). On top of that, creating unions in Roblox Studio (especially large ones) can take a very long time to load.
A way you can improve performance in your game is by selecting a lot of parts with the same color and material, then right clicking on them and clicking ‘Export Selection.’
Name the exported parts something related to what you’re meshing together, and then save it to your preferred location.
Back in studio, insert a MeshPart with the mesh as the file you just exported. This will insert a version of the parts you placed in studio as an asset on Roblox’s website.
This means that instead of relying on the ability for the client to calculate multiple instances, you’re relying on the Roblox website’s ability to send over information on game-startup.
Roblox also has multiple performance enhancement methods linked to MeshParts. For example, StreamingEnabled
*If you use a lot of meshes, this could place a lot of network stress on the client. This is why things like StreamingEnabled are so useful.
Union and Mesh Collision is broken. Only use them for background objects.
False.
Unions, meshes, and normal parts can have modified collision/rendering states based on two properties: RenderFidality, and CollisionFidality.
RenderFidality can be switched to three states: Automatic (based on the client’s device power), Performance, and Precise. Precise is much more detailed, while Performance has a lower amount of polygons.
CollisionFidality can be switched to Default, Hull, Box, and PreciseConvexDecomposition.
Default is the base collision for parts.
Hull is a large shape that roughly estimates the parts true collision.
Box is a large box encompassing the entire instance.
PreciseConvexDecomposition is the true collision for the mesh/union you’ve selected. This is the most accurate, and is the best to use with meshes.
Note that better collision fidelity can be straining on the client’s ability to calculate physics. It is more efficient for you to turn off collision entirely on parts the player cannot interact with.
Read more here.
When I insert a mesh, it turns out colorless!
Meshes imported from external programs will also need the part’s texture exported and imported into the MeshPart or SpecialMesh. Different programs can use different methods, so be sure to research how to export textures for your platform.
One downside to this is the fact that materials like Neon and properties like transparency will not carry over. In order to use features like these, you will need to export the effected polygons separately from the main mesh. If you do this with every color and material in your model, you will effectively be able to recolor and rematerialize each part of you mesh at will - in studio, or with scripts in game.
How do I make meshes larger than the normal size maximum?
Use a SpecialMesh
SpecialMeshes can feature size scale features. For example, if you set the Y level to 2, the mesh will be double the size on the Y-axis.
The downside is the fact that SpecialMeshes must be bound to a normal part, meaning that things like CollisionFidality won’t work, and SpecialMeshes will have no collision outside of the base part’s collision.
Note that in order to use a Mesh like you would be able to with a MeshPart, you’ll need to have to set the Mesh Type to FileMesh.
Hope this helps.
Happy Developing!