In theory, there's no limit to the complexity of models that can be displayed. However, WebGL is hardware-accelerated, so the viewer's performance depends greatly on the machine displaying it. This is even more important to consider for mobile users. Many different factors can affect how long a model takes to load and how well it performs after it's loaded.
Download Time
Before a model or scene can be rendered, the viewer needs to download and prepare all the required assets. This is what happens during the Loading 3D Model screen as well as the first moments of rendering when higher-resolution textures are loaded (the blue loading bar across the top of the viewer - if you want to avoid this step and only display the model when the full resolution textures are ready, try the preload embed parameter).
Textures
All the texture images need to be downloaded, so using many high-resolution textures can greatly affect download time. We optimize texture file size after you upload a model or make changes to materials, and we will never use a texture larger than 8192×8192 pixels. However, you should minimize the number of textures and the size of textures as much as possible.
Visit the Materials & Textures article and texture performance in this article for more details.
Mesh Size
The higher the vertex count / polygon count of your model, the longer it will take to download.
Background
HDRi environments are large images, and if you are using one for the background and/or lighting, it needs to be downloaded. A fixed image background also needs to be downloaded. A solid color background is the best, as it requires no download.
Scene Optimization
While not technically part of the "download", several scene optimization processes take place before the scene is rendered. This can greatly improve viewer performance. It usually does not take much time, but the more complex the scene, the longer this will take. The following things happen during scene optimization:
- Merge identical materials
- Merge meshes (geometries) that share the same material
- Simplify the scene graph
- Remove unused UVs
- Remove unused vertex colors
- Remove unused normals & tangents (this can also happen during processing in some cases)
- Channel pack textures (e.g. Diffuse and Metalness)
Scene optimization is disabled by default in the 3D Settings editor and when using the Viewer API. Geometries are not merged for animated objects or transparent objects, up to a maximum of 100 geometries per material.
If you don't need to keep the meshes and materials separated in a Viewer API application, you can enable these optimizations in your URL options:
'merge_materials': 1,
'graph_optimizer': 1,
'material_packing': 1,
Rendering Performance
If you're having trouble with slow model viewing, bad frame rates, or browser crashes, the scene is probably too complex for your device or browser. There are many complexity factors that affect performance.
- Materials
- Textures
- Meshes
- Polygons / Vertices
- Bones
- Nodes
- Transparency
- Shadows / Lighting
- Shading
- Post-Processing Filters
- Conclusion
Materials
A large number of materials is a significant bottleneck in rendering performance. Instead, you can use a single texture instead of many material colors. Sketchfab supports a maximum of 100 materials in a scene.
Textures
Textures require a lot of VRAM to render, so the fewer textures you can use, the better. A 4096×4096 (4k) texture, for instance, can require ~50MB (50 MiB, actually) of memory. It adds up quickly with lots of meshes and big textures.
Keep in mind the size of a texture versus the final screen size of the object in question. It's unnecessary to use a large texture on an object that will appear very small on the screen. Rather than use many separate textures, you can use a texture atlas to pack the textures for different objects together. This also allows you to have fewer materials. Check out the Polycount Wiki on the subject.
Textures above 8k will never be rendered in the viewer. If you need higher resolution, use multiple textures instead. Non "power of two" textures will never be rendered in the viewer. See Materials and Textures.
While there's no strict rule here, we've found that 4k resolution is a good limit for performance and compatibility. It's better to use a 4k texture than several 2k textures, but it could be better to use a few 4k textures rather than an 8k texture.
Meshes
The more separate meshes/objects/geometries in your scene, the worse the model will perform. Ideally, there would be only one mesh for each material. This is a common issue with SketchUp models and CAD models. During processing, we also split large meshes into 65,536-vertex chunks, in order to support all graphics cards.
Polygons / Vertices
Decimating your models to reduce polygon count can be a good way to improve performance. In most cases, it's unnecessary to have a polycount in the millions. It's also possible to 'fake' a higher polycount with normal mapping. Here are some related tutorials:
The lower you can make your polygon count the better, and there is no exact "maximum" because it depends on lots of different variables about the model and the device. However, as a rule of thumb, aim for less than 2 million polygons for desktop and less than 500,000 polygons for mobile.
Bones
The more bones you use in an animated skeleton, the more expensive it is to render the animation.
Nodes
The total number of nodes in the scene graph roughly represents the overall complexity of the model, and includes common objects like nodes, transforms, meshes, and bones.
Transparency
Rendering transparency is very expensive, depending on the type of transparency you use. From fastest to slowest: Mask, Dithered, Additive, Blending, Refraction. The more objects with transparency and the more polygons a transparent object has, the slower rendering becomes.
See Transparency.
Shadows / Lighting
Rendering real time shadows from dynamic lights is expensive. Lights Attached to camera are problematic because they must be rendered every single frame as the camera moves. It's best to avoid Directional and Hemi lights casting shadows and attached to camera whenever possible.
Shading
Using Shadeless mode is faster than Lit mode because there are no light calculations needed.
Post-Processing Filters
Using a lot of post-processing filters can hurt performance. SSR, SSAO, Bloom, and DoF are particularly expensive.
Conclusion
All of these different complexity factors interact to influence the complexity of the scene and affect the viewer's performance. It's not an exact science, but here are some recommendations for model performance:
- As few materials as possible
- 50 geometries/meshes or less
- 10 textures or less, especially when they are 4k+
- 2 million polygons or less for desktop; 500,000 polygons or less for mobile
- Fewer than 35 bones per geometry
- Low scene complexity
- Avoid expensive transparency methods
- Avoid lights casting shadows when attached to the camera
- Consider using Shadeless mode when appropriate
Obviously, different models will have different requirements, but it's important to keep these points in mind, especially for large and complex scenes. Check out Unity's Performance Tips for more details.
Other common problems
Shaky model with cracks and seams
This shaking problem is caused by having very large (or very small) numbers as vertex coordinates. A solution is to reduce (or increase) the scale of the model before uploading. It can also be caused by overly precise vertex coordinates (floating point error), which can be fixed by rounding off coordinate values to a lower degree of accuracy. This can be particularly problematic for georeferenced models. It's best to change from a global coordinate system (like WGS84) to a local coordinate system, or otherwise remove any kind of georeference flags.
A good solution is to recenter the model in its bounding box, which can be done in software like MeshLab.
- Open the model in MeshLab
- Go to Filters → Normals, Curvatures and Orientation → Transform: Translate, Center, set Origin
- Check Freeze Matrix and set the Transformation to Center on BBox
- Click Apply. You may see the model disappear - this is OK.
- Export the model as OBJ, make sure you have TexCoord enabled if you have textures.
- ZIP the OBJ + MTL + Texture and Re-Upload to Sketchfab
Flickering surfaces (Z-Fighting)
This problem is caused by overlapping faces. You should remove any overlapping surfaces from your model.
Comments
56 comments
I uploaded my boned-model that I made with C4D, but it turns out somewhat like polygonal disaster (awful abstract triangles).
@noitanigami - Which model are you talking about? It looks like "IMGChan_Casual" was successful.
@padrezippo - Yeah, I re-upload it and delete the bones. My Crystal GEN2 model, it looks horrible after uploading it.
@noitanigami - Ah I see. No, we don't support rigging (yet) so it was probably messing up the meshes. Are you uploading manually or using the C4D exporter?
I noticed some flickering on your playstation model. I'm not that familiar with C4D, could there be overlapping surfaces or maybe n-gons that need to be triangulated?
@padrezippo - Oh okay. I use FBX Exporter, because C4D Exporter doesn't work. It says "HTTPS error" when I press Export with C4D Exporter.
Yeah, I was forgot to untriangulate my Playstation NGons.
i made screenshots,where do they get saved? :D
What sets the initial view of the model? I keep uploading mine but the initial view when you open in the viewer is of the rear, any tips
@levi_gross - the Take Screenshot button only defines the thumbnail image that appears in model gallery pages. If you're interested in exporting screenshots, check out the Viewer API: https://sketchfab.com/developers/viewer/screenshot
@moliorarchitects - To set the default position/orientation, go to Settings → 3D Settings on the model page, move the model where you want it, and Save Settings. You can also manipulate axes, lighting, materials, annotations, and so on: https://help.sketchfab.com/hc/en-us/sections/200509186-3D-Settings
Hello,
what´s wrong with the Sketchfab reflections? Most of my models, the sharp eges looking rounded here. The model has no errors.
If You switch on "mesh" You see the sharp edges. But light and reflection makes the model soft ...
Example: https://skfb.ly/C9DL or: https://skfb.ly/CrZ6 --> front view: Ring is flat, but looks rounded.
DWF files (and the Inventor plugin) should be working again.
Not sure what's going on with the reflections - will look into it.
Exporting .iam or .ipt from Inventor using the provided exporter tools, gives me empty files.
@lfried - we don't support .iam or .ipt. The Inventor exporter plugin uses .dwf
James, that is why I stated that exporting using the provided exporter tool gives me empty files. Whatever format the exporter exports in (DWF apparently), my files are empty on Sketchfab.
Furthermore, manually exporting to DWF then uploading to Sketchfab yeilds the same results. This is regardless of the file extension, since my .dwg's that I export to .dwf have the same result...and empty 3D viewer.
@James, go here: http://forum.sketchfab.com/t/dwf-not-showing-3d-model-in-viewer/1424
Sorry, I misunderstood. Moving over to the forum.
@oleggee That's weird. Which model / categories?
...eemmhh... where I can switch off email notifications about new forum entries here?
@finemech - Those options are not exposed to users at the moment, sorry about that! I will update the site to allow it as soon as I can.
I keep uploading my model but it has no textures , what can i do ?
@Cosmin_Gx - Can you please give me the model URL, and/or a sample file? Email would be best for this: support@sketchfab.com
@finemech - I've updated the Help Center. You can now follow / unfollow from the bottom of any article. You can also unfollow from the Subscriptions menu in the top right drop-down on any page.
Hi!
I have lots of flicker problems in my model "1p" but I don't understand how to fix it. Maybe because English is not my first language? Should I try to fix it in sketchup or in sketchfab? I can't find any double surfaces in Sketchup.
@joannazoom
Try to check & repair with free tool "Netfabb Basic" ?
@joannazoom - This workflow can fix a lot of SketchUp problems (bad performance, flickering, etc.): http://forum.sketchfab.com/t/sketchup-model-processing-and-performance/1073
Thank you James, the flickering problem is now solved! Unfortunatelly some of the materials doesn't show right instead. Two of my materials now looks black instead of wood and grey. They are also missing in the Sketchfab materials list. I used the Sketchfab uploader, maby I did something wrong with the settings?
@joannazoom - Hmm. Would you mind sending me the SketchUp file so I can take a closer look? support@sketchfab.com
About the flickering.
To make a face visible from two sides, Unity advises to duplicate it and then flip the normals. So you have two faces on the same spot, just pointing in opposit directions.
Is that a problem in Sketchfab? (And are faces double sided if I upload them like that from Blender?)
@rudolf-rednose - Faces in Sketchfab are two-sided by default, with the option to switch to single-sided. I expect you would either have to upload the the duplicated faces and set both meshes to single-sided, or just upload a single face and leave it on double-sided.
But,.....(trust me to use a "but" a lot) doesn't that mean that there are overlapping faces?
(Quoting: This problem is caused by overlapping faces. You should remove any overlapping surfaces from your model.)
Or is that no problem when the normals of the overlapping faces are pointing in the oposite direction?
Maybe I should post something first, and worry about it later.......
Yep, I can't really say for sure without seeing a test model. My guess is that a single, double-sided face is better than two single-sided faces.
Please sign in to leave a comment.