WorkLink Create: Recommended maximum triangle and node counts
Introduction
When it comes to rendering 3D data for AR applications, it is essential to optimize the graphics to ensure that the application runs smoothly on end devices. This is important for mobile devices like Android and iOS, but especially the HoloLens 2 as they have limited resources compared to desktop computers.
Triangle Count Recommendations
Triangles are the basic building blocks of 3D models, and the number of triangles in a model directly affects the rendering performance of the application. The more triangles a model has, the longer it takes to render, and the more resources it requires. If the total triangle count on a step is too high, the performance of the application can start to suffer, leading to slower frame rates, and decreased user experience. For a smooth end user experience, a framerate above 20-30 frames per second (fps) is advised.
Android and iOS devices
Recommended: < 1,200,000 triangles per step rendered at the same time
As a frame of reference, a .fbx file without textures 5MB in size could roughly contain ~1,200,000 triangles.
Maximum: this really depends on the hardware resources that the end device has. There can be very significant hardware differences between older generation iOS devices, and for example, the latest iPad Pro generation. While an old device might start to show signs of frame rate loss (eg. <20 fps) at 800,000 triangles, the latest generation iPad pro, might still render +20fps with 4 million triangles.
HoloLens 2
Recommended: < 800,000 triangles per step rendered at the same time
Node Count Recommendations
In addition to the triangle count, the number of draw calls also affects the performance of an AR application. A draw call is a command sent to the GPU to draw a single object, and each draw call takes up resources such as CPU and memory. As a reference to Create, you could see these as the amount of nodes/objects you have in the Step Hierarchy. In short, the amount of parts/objects that are rendered in the Scene View.
Android and iOS devices
Recommended: < 800 nodes/parts
Maximum: Similar to the statement for triangle count, limits can be pushed by using newer and more powerful end devices, like the iPad pro. The more power you have a available, the higher the node count could be while still having a 20+ fps experience. On those higher end devices you might be able to push to a couple of 1000 nodes per step.
HoloLens 2
Recommended: <300 nodes/parts
Summary
When designing 3D data for AR applications, it can be important to optimize 3D data for the end devices. Both triangle and node count are equally important for ensuring a good end user experience, that ideally runs above 30 frames per second.
A rule of thumb is to keep your triangle count for objects rendered at the same time (on each individual step) under 1,200,000, and your node count under a 1000 nodes.
You can monitor these values:
- in the Step Hierarchy:
This particular example shows an imported object with 186,626 triangles and 91 nodes. - in the Asset Library before you import a file to do a sanity check:
As a tooltip or in the details panel, this example shows a triangle count of 190,686 triangles and an object count of 63.
Depending on the complexity of your CAD data, the data preparation efforts might vary.
- It might be the default importer does a sufficient job to automatically update your data below these recommendations.
- Or it might be you are attempting to display a very large amount of data all at once, in which case we would give following recommendations:
- Try to limit your data selection to the absolute minimum required, while still ensuring the instructions you create are clear for the end user.
- Try to do additional optimization of your data trough the 3D Asset Optimizer, or even in data optimization software like Pixyz Studio. Focus on:
- Traingle count reduction
- Re-tessellation
- Decimation
- Deleting parts, removing parts that are not visible to the end user anyway, clean irrellevant back surfaces, ...
- ...
- Object count reduction
- Merge parts together
- Delete parts
- ...
- Traingle count reduction
HoloLens 2 case study example
This table shows an example of expected "frames per second" for specific combinations of triangle and node counts per step in a WorkLink Scenario on a HoloLens 2. 30+fps is recommended for use in AR, recommended not to go lower than 25 fps for a good user experience.
Triangle count | Node count | FPS (Frames per second) | Triangle/Node ratio |
19K | 414 | 35 | 46 |
94K | 440 | 32 | 214 |
639K | 300 | 31 | 2131 |
890K | 200 | 27 | 4462 |
140K | 660 | 25 | 214 |
852K | 400 | 25 | 2131 |
28K | 605 | 23 | 46 |
1000K | 500 | 22 | 2131 |
1300K | 300 | 21 | 4462 |
39K | 847 | 18 | 46 |
188K | 880 | 18 | 214 |
Some recomendations as a result:
- Try to limit the node/object count per step under 300 nodes.
- Try to limit the triangle count below 800K triangles
- By drastically reducing node count, it could be possible to increase triangle counts over these limits, and vice versa.