APIDOCUMENTATION
GENERAL
Home
Testing Link
Vatom CLI
SPACES
Overview
Release notes

World Creation

Introduction
Creating Models
Importing Objects
Adjusting Looks
Scene Limitations
Health Monitor
Recommended external tools

Using Plugins

Media: Audio
Places
PLUGINS IN SPACES
Overview
Publishing
Support & Feedback

Guides

Creating a Plugin
Creating a Component
Custom Avatars

Building & Publishing

Examples

API Reference

Globals
Audio
Hooks
Menus
Messages
Objects
Paths
User
World
SMART NFT DESIGNS
Overview

Designs

Create a New NFT Design

Views

Create a New View
Developing Your View
Publishing a View
Change LogForum

Scene Limitations

We want every space to offer a smooth and immersive user experience, but in order to achieve this, we need to establish a set of guidelines for creators.

Below are some guidelines, which should be used as a template when creating new spaces. Also it is recommended to always check the health monitor.

Models

The values below are a maximum for all objects in the Space together, not just a single model.

  • Triangles - 50 000 or fewer

  • Texture Memory - Maximum of 256 MB

  • Model Size - Under 10 MB

  • Materials - Basic shader with light data baked in

  • Meshes - Minimal geometry

  • Textures maximum of 2048x2048 in .jpg format where possible

  • Textures should be a power of 2

    Power of two is a set of simple criteria ensuring 2D image assets conform to regulated sizes and dimensions, which typically manifest as the width and height being divisible by 2.

    A few examples of power of 2 textures are: 512x512, 1024x1024, 2048x1024 etc.

Multiple of the same model

Multiple of the same models can be added into a space. Ideally, they would be spaced far enough apart that the users browser will not need to render everything at once.

More low poly objects or fewer high poly objects

Object detail can be achieved in more ways than by just adding extra complexity to a mesh.

Working in a low poly style and using shaders and textures to add detail will allow you to have more objects in the view at any given time without sacrificing performance. Below is an example of the difference that shaders can make.

triangle compare As seen above, we have two versions of the monkey head model. On the left side is low poly mesh with the smooth shader applied and on the right side is a high poly mesh with smoothing achieved by adding extra face and vertex data

Non-visible geometry

Remove non-visible geometry from your mesh before importing it into the space.

Removing obscured faces in your mesh will reduce the amount of triangles in the model without having any visual compromise in the space. Be sure to close any holes in the mesh after unwanted faces are removed.

Background Shader

Using the "Background shader" in Blender improves performance inside the Vatom Spaces platform. This is usually the best option for models with baked image textures and simple images in the scene (e.g. planes with a texture).

Distant Texture Resolution

Lowering the texture resolution for areas that are far away from the user will significantly improve performance. Below is an example of reducing the texture resolution for objects that are further away from the user.

texture order Resolutions each texture should be based on distance away from user

The resolution for a single texture should not exceed 2048x2048 and should be an optimized JPEG image. If the image contains alpha value data, then a 24-bit PNG should be used.

UV Mapping

Faces that require more detail should have their UV coordinates take up more space on the texture map than those that do not require as much detail.

For example: the face of a human character should have more detail than the rest of the body, so it should take up more space than any other body part. Below is an example of a human character UV map.

uv face As seen above, the face takes up a third of the texture map, allowing for a higher level of detail without increasing texture resolution. Image courtesy of Autodesk Knowledge Network.

Collision

Collidable surfaces must be separated from meshes that do not require physics.

Not all objects in the world need to have collision applied to them. Use this feature sparingly and only where it makes sense (e.g. floors, walls, chairs etc.).

Collidable meshes should be as low poly as possible, because the more complex the model, the more calculations are required to determine collision. Having collision on a complex model can significantly reduce the performance of the space.