DOCS

Assets

To build your 3D environment, you'll need assets. Some common examples are meshes, textures, materials, and animations.

You can import assets created with 3rd party tools (e.g. Blender, Maya, etc.) by uploading source files to 3dverse.

After uploading a 3d source file (eg: a .fbx), it will go through a conversion process to output one or multiple assets.

Asset Browser

After a creating a project in the 3dverse Console, you will have access to the Asset Browser.

The Asset Browser lets you upload source files, follow their conversion into assets, organize your assets into folders.

The type of the Asset will vary depending on the source files.

For example, a simple .fbx file could output:

  • a Scene
  • a Mesh
  • a Material

A .png file, will output:

  • a Texture

A 3dverse asset also contains a description, dependencies (optional) and a payload (optional). We’ll go over these.

When you click on an asset in the Console, the asset info side panel pops up on the right. From here you can see some basic info about your asset.

Asset UUID

Every asset has a UUID (short for Universally Unique Identifier). A UUID is always a string that looks like this: 549f4fd5-fcfd-41c6-b8d9-3f8a15359550. It is a unique id that every asset has which helps identify it.

Copy it by clicking on it in the asset info.

Dependencies

There is another important concept shown in the asset info side panel, which is ‘Dependencies’.

An asset can depend on another asset. An asset A depends on an asset B if A needs B to work.

Our scene depends on a mesh. If we look at the asset info of the mesh, we see it doesn’t have any dependencies but it is “Referenced by” our scene.

This is just the inverse relationship of a dependency.

Description

The description of an asset is a JSON file that contains a basic readable description of the asset. Every asset has a description. You can see if you click on More details, and then click on Description.

Each asset description contains the name and UUID of the asset in question. What’s actually inside the asset description depends on the asset. In the scene asset here, we have its list of entities with all of their components.

Payload

The last part of an asset is its payload. Not all assets have payloads. For example a scene doesn’t have a payload.

Payloads are binary files that contain asset data in 3dverse’s internal format.

What’s actually inside the asset payload depends on the asset. For example, the payload of a texture contains a compressed texture and the payload of a mesh contains mesh vertices, indices and normals.

Asset reference

Dependencies between the scene and the mesh was created was through the concept of asset reference. For every kind of asset, there is an asset reference, e.g. mesh reference, material reference, texture reference, etc.

Our mesh reference component has a mesh reference within it.

You can reset the mesh reference to null by clicking on the arrow. You can assign a mesh to it by dragging one from the asset browser. Otherwise click on it and type in the name of the mesh.

An asset reference is simply stored as a UUID, so when we change the mesh reference what’s happening in the background is the UUID changes in the component data.

We end up having something like this:

Back to our specific example with the mesh reference. We have the mesh reference component, the mesh reference, and the mesh asset itself. This mesh reference points to our mesh named “face and flower” because as we can see the UUIDs are the same.

You can imagine that there could be multiple different mesh reference components that reference this same mesh. If I change what’s inside my “face and flower” mesh somehow, like switch the flower for a butterfly, then all the scenes that had that flower showing will now show a butterfly! Changes in an asset will be seen in all scenes that contain that asset reference.

Mesh

In 3dverse, a “mesh” can in fact contain multiple meshes. We call those submeshes. In the schema to the left, the mesh contains a face submesh and a flower submesh in its payload.

A mesh reference component contains a mesh reference and a submesh index. If the submesh index is 0, the component is referring to the first submesh in the mesh. So we can assume that the entity that has that component will appear as the face. If the submesh index was 1, it would appear as the flower.

Previous
Intro