@@ -161,6 +161,25 @@ Das Zuteilen der Körperteile ist indexbasiert. Will man eine neue Kategorie ein
Zugleich muss auch die Struktur von `public/AvatarConfigurator/configuration.json` entsprechen angepasst werden.
# Evaluation
## Performance
Zur Evaluation der Performance wurden Avatare per Code eingefügt. Anschließend wurde im Abstand von 50ms eine zufällige Kombination aus Körperteilen und Farben für einen Avatar an zufälliger Position angewendet. Dies soll einen normalen Betrieb des Konfigurators simulieren. Während der Abstand von 50ms zuerst kurz erscheinen mag, ist zu bedenken, dass jede noch so kleine Änderung der Farbe über den Farbwähler ein Event auslöst.
Die Desktop-Performance wurde auf folgendem System getestet:
* CPU: Intel Xeon 1230v3 @3.3GHz
* GPU: NVidia GeForce GTX 980
* RAM: 16 GByte
* Desktop-Auflösung: 1920px * 1080px
Selbst bei 100 eingefügten Avataren blieben die Frames pro Sekunde (FPS) 60.
### Mobile
Die Mobile-Performance wurde nach dem gleichen Prinzip auf eine Samsung Galaxy Tab S6 Lite getestet. Hier konnten bis zu 50 Avatare dargestellt werden, ohne dass die Performance unter 60 FPS fiel. Hier ist allerdings zu erwähnen, dass verschiedene Browser verschiedene Performance ablieferten. So schien Vivaldi auf 30 FPS limitiert zu sein, da selbst in einer leeren Szene nie mehr FPS erreicht wurden. Im Gegensatz dazu waren in Firefox und Edge volle 60 FPS erreichbar. In allen getesteten Browsern waren starke, periodische Einbrüche der FPS festzustellen, was auf ein Problem mit der Garbagecollection hindeutet. Wahrscheinlich liegt das Problem im ständigen Neuinstanziieren der Modelle und deren Materialien. Hier könnten in Zukunft noch Verbesserungen stattfinden.
Ein Problem stellt die geringere Fenstergröße auf mobilen Endgeräten dar. Es ist nicht möglich den Konfigurator zu steuern, ohne diesen in den Vollbildmodus zu schalten. Dann funktioniert die Steuerung allerdings problemlos.
## Bekannte Probleme
* Auf mobilen Browsern bricht die Framerate in periodischen Abständen ein. Dies könnte ein Garbagecollection-Problem sein. Eventuell kann die Neuinstanziierung der Modelle bei jeder Änderung vermieden werden.