Tutorial: Basic Concepts

Basic Concepts

User Account


In order to use 3dverse platform for real time rendering service, users need to create an account.
Depending on the plan selected features can be available or not. Basic plans are limited in uploads, sharing and edition capabilities.


Once a user has an account, he can create workspaces to organise his work.
The user can then upload scenes (from common 3d files) or textures in a workspace.
Each workspace can be shared with other users or kept private.


Clients are applications running a real time rendering session on the user device (laptop, tablet, pc, cell phone, hololens).
Depending on the user account plan, a user can launch one or more client session.

Real time rendering: Sessions and Sharing

Real time rendering sessions

To visualize a scene, a client application needs to start a real time rendering session.
Depending on the user subscription plan and the client application, other users can then join this session either as a simple spectator or as an editor.
In a single session, a user can have one or more viewport looking at different perspective of the scene, the same is also applicable when there are multiple users in a session.


Workspace can be share with other users. All the scenes and assets within a workspace will be available to the users in the shared group.
Users in the shared group will also see active sessions within the workspace and will be able to join these active sessions.
Session can be shared to an anonymous user by getting a guestToken, the connection lifetime of this token will be limited to the session lifetime.
When sharing a session, users can hook on another user's camera so their share the same point of view as this user navigates through the scene.
When users in a session have edition rights, they can simultaneously modify the scene and immediatly visualize their work and the work of the others in the scene, avoiding conflict in the edition.


  The display is the real time rendering area size. It is composed of at least one viewport.

  A viewport is a framed area on the display having its own camera or attached to another user camera.

  A camera controls the view within the viewport.

  An asset is a single logical piece of data:

Asset Description
Scene A scene describes how the different entities of a virtual world are organized. An entity can reference any type of asset.
Mesh A mesh represents a polygonal 3D model. It is composed of vertices. Each vertex can have multiple attributes like position, normal, texture coordinates, etc. Vertices are indexed by 3 to form a list of triangles. FTL has its own optimized internal format for this type of asset.
Texture A texture is a chain of 2D images compressed in a known format optimized for real time rendering (BCn mainly). The chain consists of the same image having its resolution halved as you go down the chain. This chain is called mipmaps. The number of mipmaps is specified in the texture.
Material A material is a list of attributes describing how a surface reacts to lighting. Those attributes can be floating numbers, vectors, references to textures, etc. A material references a shader.
Cubemap A cubemap is a textured cube, it references 6 textures, each one for each face of the cube.
Skeleton A skeleton is used for skinning a mesh, i.e. deforming the vertices of the mesh to reflect the transform of the bones that compose the skeleton. It is represented of a series of hierarchical transforms.
Animation An animation represents how the transforms of a skeleton should evolve through time. It references a skeleton.
Voxel A voxel represents a 3D volume defining densities in space.
LUT A LUT or Look Up Table (maybe find a better name) represents the way how to visualize a Voxel in 3D by assigning a material to some density values.
Shader A shader is a program that is compiled and run on the GPU.

  An entity is an aggregate of components.

  A scene contains a collection of one or more assets that are rendered in real time from the requested camera point of view.
The user can also create a new empty scene and, using the asset browser, simply drag and drop assets from other scene or workspace to compose his new scene.

  Override an external entity, brought by a linker.