Model preparation Guide

Initial info


This guide contains information about preparing 3D models for use in the twinzo app. It is important to keep in mind that all the information mentioned bellow depends on specific use cases. Any Issues which were not mentioned or are unable to be fixed using this guide need to be discussed on individual basis. In general every step helps 3D model to be processed faster for Twinzo app.

 

Mentioned criteria


  1. Usable amount of vertexes (Depends on use case mentioned bellow)

  2. No inverted polygon faces (Depends on use case mentioned bellow)

  3. No duplicated vertexes

  4. Use instanced assets instead of unique ones

  5. No empty objects, parents, bones, unnecessary stuff

  6. Maximum object number in single model should not be higher than 3K (We are able to go higher but it can make model unusable for us)

  7. Easy and understandable named materials, textures

  8. Keep maximum number of materials/textures per single object low as possible (Depends on use case)

  9. Correctly created and assigned UVs

  10. Small final file size (On automatic Twinzo platform system file size limit is 100MB)

  11. Supported formats

Criteria divided by use case


Single model used in app

Non Scanned or Lidar based:

If we want to visualize only single object in app, usually criteria tolerance are much higher. For example, this single machine has over 500K vertices. Which is top limit in terms of vertices amount. Everything higher will be most likely not usable. As well amount of materials/textures on single object can be higher.

Non Scanned based model

Scanned or Lidar based:

For a Scanned or Lidar based meshes (In case of Lidar - Point cloud converted to mesh), criteria are not that strict like for their counterparts. Usually if your model has number of vertices under 1.5M / 2M and number of materials with textures are not exceedingly high (100+), than your model should be fine (Depends on your smartphone performance)

Multiple assets used in app

If we want to visualize assets in app. For example something which is part of factory/office and it appears multiple times. Criteria tolerance are much lower. For example palette boxes, press machines, cranes, furniture etc... Limits are:

  1. 2K (or lower) vertices with simple material or textures with/out UVs.

  2. 3K/4K (or lower) vertices when is important to visualize model in more detail and it doesn’t appear numerous times.

  3. Models which are visualized 5, 10 times in one scene without any additional used assets can have higher amount of vertices with higher texture resolution and more UVs. For example parts of cities or factory/office complex.

Visualizing multi-floor building (coming soon!)

(Automatic/Manual version of this feature is coming soon and documentation will be updated when its ready)

If you want to visualize building which has multiple floor levels, its important to try to separate each floor into the individual parts with specific hierarchy so in the end we are able to switch between them. If you are feeling capable to do it yourself or you wanna learn more about Automatic version, we are preparing a full guide for you on how to do it.

Visualizing BIM models

(Currently not supported through automatic Twinzo platform. In order to solve this issue please contact us individually)

We are able to process BIM models, but they are often not designed for our workflow neither to run on mobile devices. So keep in mind that is high chance that it takes multiple working days to process that.

Common model errors to look out for


These include the most common errors present in most models. These should be avoided and fixed.

 

1. Scaling and Units

  • The model should use real life scale in meters: 1 Editor Unit = 1 meter. Models outside of these ranges or in different units can cause precision issues.

  • The main building volume should be roughly centered around the world origin (X = 0, Y = 0, Z = 0).

2. Inverted polygon faces

The red inside faces visualize which parts of the mesh are going to be invisible (backface culling) when rendering in the application.

Notice when Backface culling is turned on, how the inside of the cube disappears. (Backface culling saves computational resources)

Notice how it’s possible to see inside the pillar from the outside, but not from the inside out (backface culling). This happens because the faces are oriented in the wrong direction - towards the inside.

3. One sided geometry

A single face will have it’s back side invisible (culled). Walls should be solid and have volume.

4. Vertex Normals

Vertex normals are vectors that define which way a vertex is pointing.

The purple lines on the image below are visualizing the normals of each vertex of the dome. (Red surfaces visualize inside faces that are going to be culled)

The Vertex normals on this house have been modified. Notice how the lighting looks wrong because the Vertex normals are not consistent with the faces.

5. Overlapping and Duplicated geometry

This step is very important. Overlapping geometry causes flickering (Z-fighting), lighting errors and such duplication wastes resources.

6. Cleaning up bottom faces

Cleaning up bottom faces and parts of the mesh that are never going to be seen saves texture space and computational resources. Downwards facing geometry is never going to be seen in the twinzo application, therefore it only wastes memory and resources and should be removed from the model.

In the clip below:

  1. Geometry is selected based on the normal facing direction

  2. The selected downwards oriented faces are deleted. (Red faces visualize inside faces that are going to be culled)

7. Object Instancing

This one is also very important to follow.

All 10 of the blue objects use the same mesh. They are all individual separate objects, but all of them use the same mesh.

Modifying the mesh of one instance, reflects on all of the instances using that mesh.

In the clip below only the rightmost selected object is being modified, all other objects to the left of it reflect the changes because they are using the same mesh. They are instances.

All repeating or duplicated objects should use instances instead of “deep” copies that also use a duplicated mesh.

8. Object number

Its recommended to keep number of individual objects under 3500 for single scene. Less objects means better computational performance for mobile devices and also it will reduces processing time. If your 3D model has much more objects, you can partially overcome this issue by using instances “meshes with shared geometry”.

(Currently more than 3500 individual objects in single 3D model are not recommended through automatic Twinzo platform. Anything more will most likely fail. In order to solve this issue please optimize your 3D model or contact us individually)

 

9. Materials

Objects should generally have the least possible amount of unique material slots assigned / used. E.g. There’s no need to have 5 different metal material types assigned to one object unless they’re vastly different in appearance.

The number of unique materials in the final exported file should be reduced to the minimum amount possible.

This means:

10. Supported file formats

  • Through automatic Twinzo platform - FBX, OBJ

  • The preferred file format is Binary .FBX

  • Possible to work with outside automatic Twinzo platform - FBX, OBJ, STL, STP, IFC, DAE (Limited), glTF 2.0.

  • The model file should not go over ~100Mb

Every format has its own limitation. Generally .FBX, glTF 2.0 or .OBJ are most suitable for us but other formats like .STL or various .CAD cause problems (missing materials, unable to open, unable to properly convert, huge sizes, no instances…..)

What software we are using


  • Unity 2021+

  • Blender 3.4+

  • Meshlab 2021.05+

  • AutoCAD 2023