3D Asset Specs

This page covers optimised asset specs to work across as many platforms as possible...

WebGL operates with inherent performance and resource constraints, especially when targeting a wide variety of devices such as mobile and standalone VR. Therefore, it's crucial that you heavily optimize your assets to ensure a fluid experience for all users.

3D Assets are different from .vrms, and therefore require different considerations when creating them. If you are creating assets to use in your space in Unity the following guidelines will help you create assets that look good and work well in Mona.

You can use the following chart as a guide. Note the polycount is in triangles, rather than polygons :

Excellent 3D Asset SpecsGood 3D Asset SpecsReasonable 3D Asset Specs

Less than 4Mb in total

Less than 8Mb

Less than 12Mb

Less than 1,500 triangles

Less than 3,500 triangles

Less than 10,000 triangles

1 Mesh

1 Mesh

1-2 Meshes

1 Material

1 Material

1-2 Materials

512 x 512 total texture * (4x256x256 textures)

512 x 512 total texture * (4x256x256 textures)

512x512 individual textures * (4x512x512 textures)

e.g. rocks, small props that get used a lot, bushes, doors, etc.

e.g. General architecture elements, furniture, trees etc.

e.g. key/important environment assets such as sculptures, NPCs, detailed props etc.

*Note how the textures differ from Total and Individual. Total means that all your textures add up to the target texture size, and individual means that each texture is the target size.

Memory

Web browsers have a 2Gb maximum memory allowance per tab regardless of the device's power. In this memory space, we need to store our website's front end, the main virtual space, all the players and their avatars, and any added items or artifacts as well as other elements.

  • Consequences of Overuse: Going over the recommended memory usage can lead to issues. More memory-heavy spaces will accommodate fewer users, making them feel less lively. Additionally, performance can suffer, causing lag, slow responses, or even crashes, which isn't ideal for an immersive virtual experience.

Polycount

High polycounts can lead to performance issues, especially on lower-end devices or when many objects are present in a scene.

Make sure to note the difference between polygons and triangles as these can be different numbers. A simple summary is that triangles is double the number of polygons as polygons are usualy made of two triangles, but this does not take into consideration NGons, or polygons made of 5 or more sides. This is why Triangles are used as a baseline.

As noted above there are recommended polycount guidelines for assets, but here are some example polycounts for different types of objects :

  • Simple Objects (lamps, rocks, etc.): ≤ 500 triangles.

  • Intermediate Objects (large furniture, small structures): 500 - 3,500 triangles.

  • Advanced Objects (large buildings, significant structures, hero assets): 3,500 - 12,000 triangles.

  • File Size Constraints: The file size primarily depends on object complexity and texture count. A single large asset can be up to 12MB. However, we encourage smaller assets which remain under 4MB unless its a particularly important asset.

Textures

As textures take up the largest amount of filesize it is important to keep these as few and small as possible with the following as a rough guide.

  • Resolution : 512x512 pixels or lower per texture. Higher resolution is not recommended.

  • Count : Try to use as few textures as possible to reduce memory consumption.

    When considering texture resolution for 3D objects, it's a balance between visual detail and memory consumption.

  • Only use textures you need, so if an increased texture resolution doesn't benefit the result, reduce the texture size. One example may have the Diffuse and Normal map at 256x256 pixels, and the metallic/smoothness map might be 128x128.

Materials

Each additional material increases draw calls, which slow down rendering. Aim to reduce and simplify when possible.

  • The simplest approach is to use one material per asset. It is even better to use one material for as many assets as possible as Unity can reduce draw calls automatically if the space is set up correctly. Look at Optimizing your Spacefor more information.

  • Trim sheets and texture atlases are advisable in order to reduce the number of materials on assets.

Meshes

There are a number of aspects to consider when modeling your assets apart from just the total polycount such as sub-meshes, topology, UV Mapping and Backface Culling.

  • For objects comprised of several distinct meshes, consider merging them if it doesn't compromise their appearance or functionality. Reducing the number of meshes minimizes draw calls, enhancing performance.

  • Remove any unseen or unnecessary vertices, edges, and faces. The end user may not see them, but the camera will, so internal or overlapping faces should be removed to optimize performance.

  • Aim for clean and efficient UV maps to optimize texture usage. Familiarize yourself with techniques like Overlapping UVs, Trimsheets, Texture Atlasing, and Seamless Tiling textures. These approaches can significantly enhance the efficiency and visual fidelity of your assets.

  • As game engines render only one side of a polygon, ensure your models are built with this in mind. Unity does not render, or culls, the backfaces of polygons in objects by default, so make sure all your normals are correctly oriented.

General Advice

Prioritize Efficiency

When creating 3D assets for our platform, it's crucial to balance detail and performance. While detailed assets are appealing, we need to ensure they run smoothly in WebGL. Beautiful assets don't look great at 5 frames per second.

If some details won't be noticeable, it's recommended to leave them out to save processing power.

Use Alpha Textures Wisely

Alpha textures, which add transparency to objects, should be used sparingly. Only apply them where necessary, like for glass or foliage, as they can impact performance considerably. If possible, use more performant versions of transparency. 'Cutout' is better than 'Fade' which is better than 'Transparency' on the material settings.

Optimize for Low-Spec Devices

Many users may access our platform on less powerful devices. Make sure your assets are optimized to work well on these devices, look at our minimum specs to run Mona.

Last updated