Update (November 10th, 2022)
Update (December 10th, 2021)
Update (December 9th, 2021)
We are aware of an issue that prevents users from seeing the plugin button, we are looking into possible fixes. Resolved.
Hello developers,
We are very excited to announce a beta of the smart, unified mesh importer. That sentence doesn’t scratch the surface of how big of a change this is for those of you who work with meshes, so let’s dive in.
Currently in Studio, there are multiple ways to import a mesh—directly into a MeshPart, Bulk Importer, the Avatar importer, and even user plugins. But they all work differently and, more importantly, they put the onus on you to format your mesh properly to work with the specific importer. Furthermore, if something is wrong, you often don’t know until your import fails or doesn’t look how you expect, making iteration slow.
We want to get to a world where there is one Roblox mesh importer that can import a box, an avatar, an animated avatar and a box, an object scan you made with your phone, or an entire scene…and it all just works and gives you the results you expect. Today, we’re taking the first step towards this smart, unified importer.
Over the past year, we have completely rebuilt our mesh importer. There is now one system that you use to import any mesh file, no matter what’s in it. It looks like this:
A key element of this is the preview of your mesh in the top left. As you select individual children in the Hierarchy Panel on the bottom left—if your mesh is more complex—the preview will update to show you the selected component.
For each selected item, whether the root file or a component, we auto-detect what you’re inspecting and give you appropriate options and information in the Inspector on the right so that you can easily see critical information and adjust common attributes (like the item’s name or what units your mesh was built in) before clicking import.
Mesh files might also have issues that trigger warnings and errors.
Warnings are issues that don’t block import but might cause your mesh to not appear how you expect, such as a mesh that is too big in extent (over 2048 studs) that we scaled down. Errors are issues that will actively prevent us from being able to import the mesh, such as a missing texture.
Today, these issues are often buried in the output window or even worse, silent. Now, warnings and errors will show up contextually in the Hierarchy Panel. Select an item to see details in the Inspector as to what’s causing the issue. Uncheck a component in the hierarchy to skip importing it, which lets you import a mesh even if some part of it caused an error. In the future, we intend to make it possible to fix many common issues, such as rig naming problems, right in the importer without going back to your DCC tool.
We’ve also taken steps to automatically handle errors that used to block import: the current importers have a mesh size limit of 10,000 triangles. In addition to increasing the limit to 20,000, the new importer will automatically simplify any larger mesh for you so that big meshes just work. This will show up as a warning so that you know it happened.
The importer improvements even continue after you click Import. The new importer will create a Model asset that preserves the hierarchy you modeled with. This makes it much easier to organize your scene and work with the imported meshes. If you have a published place, this Model will appear in a new section in Asset Manager, Models.
Where Is This Project Heading?
There are a wide range of meshes out there, and we want to ensure we handle them at least as well as the current importers. As such, we will keep this project in beta for a bit but deliver continual improvements. Once it’s ready, we will remove the old importer.
Beyond that, we intend to keep pushing to get to a point where meshes just work. Features we’re exploring include:
- PBR support so that SurfaceAppearance setup happens automatically on import.
- Animation support so that it’s easier to import avatar animation.
- Expanded file type support to support more common 3D file formats.
- Support for multi-material meshes so that you don’t have to manually split your meshes before importing.
- Improved mesh simplification so that even if we have to reduce the poly count on an object to import a mesh, it looks as good as possible.
- Avatar rig repair directly in the importer, such as fixing joint naming issues.
How Do I Get the New Importer?
If you select File > Beta Features and enable “New Mesh Importer,” you will see a “Mesh Importer” button in the Plugins ribbon bar. Click the button and select a mesh.
We highly recommend saving your work before using the importer. While we’ve done extensive testing, this is a beta feature, and external files can contain odd data that can cause crashes. If you have a file that causes a crash, please let us know so that we can fix it!
What Are the Known Issues With the Current Beta?
- It does not have full parity with the current avatar importer: specifically it does not support skinning or layered clothing.
- Selecting joint nodes in the hierarchy will result in a blank preview.
- Files with large numbers of mesh components and textures might fail due to a throttling issue.
- Scale is not automatically parsed from an FBX file when available.
- FBX files with an absolute path reference to a texture on a different device won’t resolve to a relative reference, and a specific texture can’t be picked directly.
- Preview window mouse wheel zooming is reversed from viewport behavior.
- Simplified meshes show the final simplified polygon count and not the original size in the inspector.
- Inventory does not automatically refresh after import.
- Text boxes don’t respond to tab input for navigation and ending editing.
What Are the Available Options in the Inspector?
File General
Name | Rename what the root imported asset will be called. |
Import Only As Model | By default, when you import a model with children, we create only a Model asset that contains the appropriate MeshPart children, but the MeshParts are not individual assets. Uncheck this to create both the Model and separate MeshPart assets explicitly. |
Insert In Workspace | Is the imported asset inserted into the scene or only into Toolbox/Asset Manager? |
Anchored | Set anchored to True on all the imported MeshParts. This is disabled for avatars. |
Avatar General
Rig Type | Select what rig type--if any--an avatar should be treated as. |
File Transform
World Forward | Which axis is considered “forward.” |
World Up | Which axis is considered “up.” |
File Geometry
Scale Unit | Set what units the file was modeled in so that it is sized appropriately when imported. |
Merge Meshes | Merge all MeshParts in the model into a single MeshPart and create one MeshPart rather than a Model. |
Invert Negative Faces | Flip negative faces. |
Object General
Name | Rename a child object within the model |
Anchored | Set if this specific object should be anchored. This is disabled for avatars. |
Object Geometry
Make Double Sided | Set if the vertices are one-sided (you can see through them from one side) or double-sided. Double-sided is less performant. |
Ignore Vertex Colors | Should vertex coloring be respected. |
Finally, a huge kudos to the folks who built this! @itsFrank17, @OriginalSleepyhead, @tasavix, @CGOldtymer, @sonlytheonetime1, @wengawenga, @ProtoValence, @LuckyKobold, @TravelerUniverse, @MoonRocketApollo, @HaloArbiter_101, @Mr_Purrsalot, and @smoothiecriminals