LogoLogo
HomeDiscordVideo TutorialsBuilder Opportunities
  • Welcome to MONA
    • What is a Space?
    • Unity Overview
  • ⬛Create
    • Getting Started Building
    • MONA Crash Course
      • Setting up MONA in Unity
      • Introduction to Unity
      • Setting up Simple Assets
      • Metaverse / WebGL Limitations
      • Creating 3D Assets
      • Applying Materials & Unwrapping UVs
      • Importing Assets into Unity
      • Adding Colliders
      • Adding Lighting
      • Adding a Custom Skybox
      • Setting up Canvases
      • Uploading to your Wallet
    • Building Spaces
      • Space Limitations
      • Create your Space
        • Space Overview
        • Colliders
        • Materials
        • Portals
        • Canvases
        • Artifacts
        • Add a Custom Skybox
        • Test Your Space
        • Troubleshooting
      • Improve your Space
        • Lightmaps (Unity Lightmapper)
        • Light Probes
        • Reflection Probes
        • Animation in Unity
        • Importing Animation
        • Player Property Volumes (PPV's)
        • Warp Volumes
        • Adding Audio
        • VRM Switcher
        • Custom Canvases
        • Embedded Video
        • User Interface (UI)
        • Creating Custom Shaders
        • Imported Assets
        • Lightmaps (Bakery Asset)
      • Optimise your Space
        • Prefabs
        • 3D Asset Specs
        • Optimizing your Space
      • Adding Interactivity
        • Visual Scripting
          • Web Request Node
        • Mona Reactor
          • Creating Animation
          • Using Animator
          • The Reactor Component
          • Reactor Overview
      • MONA Tools
        • Template Utility
        • MONA Capture
        • Light Probe Generator
        • VOX Importer
      • Submit Your Space
        • Submitting your Space
        • Creating an Image & Video Preview
        • QA Process
        • Mint Your Space
      • Update your Space
      • Frequently Asked Questions
      • Troubleshooting
    • Creating Assets
      • Asset Requirements
      • 3D Asset Types
      • Asset Creation Approaches
      • Optimizing your Mesh
      • GLB Considerations
      • Example - Cyberpunk Car
    • Creating Avatars
      • Getting Started with VRM
      • VRM Requirements
      • VRM Creation
        • Using Mixamo for Rigging
        • Adding Custom Bones to the Rig (Optional)
      • Creating your Avatar using UniVRM
        • Importing UniVRM into Unity
        • Creating the VRM using UniVRM
        • Adding Spring Bones in UniVRM (Optional)
      • Creating your Avatar using 'VRM for Blender'
        • Adding 'VRM for Blender' into Blender
        • Using 'VRM for Blender' for Rigging
        • Adding a Material
        • Assigning VRM Details
        • Exporting the Avatar
      • Uploading your VRM
      • Using Avatars in WebAR
      • Submitting your VRM to the Mona Marketplace
      • Mint Your Avatar
      • Troubleshooting
    • Resources
      • MONA Claim Asset Requirements
      • Unity Wallet SDK (Alpha)
      • MONA Playground
      • MONA Tutorials
        • Retrowave Modules
      • Asset Resources
        • 3rd Party Assets
        • Textures
        • Shaders
        • 3D Assets
        • Audio
        • Tools
        • Tutorials
      • MONA Library
        • MONA Library Submission
      • Useful Unity Packages
      • Updating the Template SDK
      • Importing Mozilla Hubs Spaces to MONA
      • Importing AltspaceVR spaces to MONA
    • MONA Marketplace
  • ⬛Explore
    • How to Use MONA
    • Using VRM Avatars
    • Audio Settings
    • Explorer's Frequently Asked Questions
  • ⬛Collect
    • Setting up a wallet
      • Delegating a Wallet
    • Own a Space
      • Host an Event
      • Uploading your Images
      • Add Images to a Canvas
      • Live Music Feed
      • Token Gated Access
      • Minted 3rd Party Assets
    • MONA Create
      • Create FAQ
    • Live Streaming in MONA
      • Setting up OBS Studio
      • Livestream using OBS Studio
      • Livestream using a Mobile Device
      • How to Stream Using Twitch or YouTube
      • Add a Livestream to a Canvas
    • Collector's Frequently Asked Questions
  • General Resources
    • Web3 Introduction
    • How to sell Art in Web3
    • Game Dev Glossary
    • Buildathons / Challenges
      • 3D Asset Buildathon (Current)
        • Frequently Asked Questions
      • Emote/Emoji Challenge (Completed)
      • Stream Challenge (Completed)
      • Custom Avatars (Completed)
      • Build : NY Challenge (Completed)
      • Sculpture Challenge (Completed)
      • Portal Hub (Completed)
      • Interact (Completed)
      • The Renaissance (Completed)
Powered by GitBook
On this page
  • Memory
  • Polycount
  • Textures
  • Materials
  • Meshes
  • General Advice

Was this helpful?

  1. Create
  2. Building Spaces
  3. Optimise your Space

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 Specs
Good 3D Asset Specs
Reasonable 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.

  • 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

PreviousPrefabsNextOptimizing your Space

Last updated 1 year ago

Was this helpful?

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

Many users may access our platform on less powerful devices. Make sure your assets are optimized to work well on these devices, .

⬛
Texture Atlasing
Seamless Tiling textures
look at our minimum specs to run Mona