Optimizing Performance in 3D Graphics
There are some important considerations and steps you can take in order to help optimize the performance of a GENESIS system with 3D graphic displays. These tips will help you to obtain a good user experience for your 3D graphic applications.
Choosing the correct server environment
When running a display with a 3D visualization (either in GraphWorX or HTML5), make sure the application (for HTML5 it is the browser) is running in an environment that has access to the physical GPU. Virtual machines generally do not use the GPU of the physical host machine by default and emulate 3D rendering on the CPU instead. This causes severe performance issues as well as high CPU load. Even a low-end physical computer with an integrated GPU is a lot more suitable for 3D visualization than a VM that is running on a powerful host machine but has no GPU access.
Manage scene complexity
The performance of the 3D visualization is influenced by the number of geometric objects in the scene and their complexity (triangle count). Based on our benchmarks and experience with the product we provide recommendations regarding the maximum number of triangles, objects and annotations in a display. The recommended maximum values are stated bellow and we provide them for two different reference hardware configurations. The primary difference between these specifications is how the high-end machine uses a dedicated GPU:
By a high-end machine we understand a hardware configuration similar to:
-
13th Gen Intel(R) Core(TM) i9-13900F, 24 cores
-
NVIDIA GeForce RTX 3070
-
64GB RAM, 2400MHz
Recommended maximum counts for a high-end machine:
|
|
HTML5 |
GraphWorX compatible mode |
GraphWorX fast mode |
|---|---|---|---|
|
Triangle Count |
12,000,000 |
1,500,000 |
12,000,000 |
|
Object (geometry) Count |
12,000 |
5,000 |
12,000 |
|
Annotation |
3,000 |
2,000 |
5,000 |
By a low-end machine we understand a hardware configuration similar to:
-
12th Gen Intel(R) Core(TM) i7-1255U, (Base speed: 1.70 GHz, 10 cores)
-
Intel(R) Iris(R) Xe Graphics
-
16 GB RAM, 3200 MHz
Recommended maximum counts for a low-end machine:
|
|
HTML5 |
GraphWorX compatible mode |
GraphWorX fast mode |
|---|---|---|---|
|
Triangle Count |
1,500,000 |
700,000 |
1,500,000 |
|
Object (geometry) Count |
5,000 |
3,000 |
7,000 |
|
Annotation |
1,000 |
500 |
500 |
The values are stated separately for HTML5 3D, GraphWorX 3D compatible rendering mode, and GraphWorX 3D fast rendering mode. For HTML5 3D we used Google Chrome as the reference browser. By object count we mean the number of geometries, i.e. the number of objects that directly contain a mesh. The maximum recommended object count considers a scenario where most of the objects have small triangle counts (tens / hundreds).
The general recommendation is to not use unnecessarily complex 3D models and to not split models into separate objects unless needed. While the number of objects in a scene is often determined by aspects outside of the 3D modeling scope, having overly detailed objects resulting in an overwhelming triangle count is practically always a modeling issue. Therefore, when creating the 3D scene, it is always important to make sure that the individual models are only as detailed as needed for the given purpose. In large scenes, where models often get duplicated multiple times, the triangle count can easily grow above manageable values if the models are too detailed.
Optimize the 3D model to run efficiently
There are various steps and techniques you can use to optimize a 3D model. These steps will help get the most out of the performance of your server environment
Additional performance tips
Here follow some additional tips to improve performance of the 3D visualization, particularly in HTML5.
-
When using many annotations (hundreds / thousands), even when most of them are hidden, try setting ShowLine to
falsefor those annotations where the annotation line is not needed. -
Do not use the AutoHide feature of the annotations unless necessary. Computing when the annotation should be hidden can cause noticeable performance hits, especially when there are objects with a large triangle count in the scene.
-
Do not add too many lights to the scene. Lights in general are rather computationally heavy so having too many of them (tens / hundreds) in the scene can cause significant performance issues.
-
Try to limit material changes. Changing material color or opacity in runtime can be computationally heavy, so try to avoid usage of dynamics that continuously change the color or opacity of many geometries. If a blinking effect of some form is needed to signalize some specific state, try applying it on an associated annotation instead of on a 3D object.