2017-08-31 4 views
2

Basé sur le mirror example dans three.js, j'ai recréé un bon vieux projecteur de film praxinoscope, où une colonne de miroirs reflète une courte séquence d'images pour créer l'illusion de mouvement.Plusieurs miroirs dans une scène three.js tue la performance

Dans la version 84 de three.js, cela fonctionne plutôt bien.

Exemple d'utilisation V84: https://codepen.io/Sphinxxxx/pen/eEbjba enter image description here

Dans la version 85 cependant, il y a eu des changements à Mirror.js, et dans les versions ultérieures tous les miroirs (8 miroirs dans ce cas) font le praxinoscope vraiment lent (faible FPS).

Exemple d'utilisation V87: https://codepen.io/Sphinxxxx/pen/vJvozR enter image description here

Je soupçonne que la lenteur doit faire avec beaucoup d'appels récursifs et rendu inutiles commençant par les appels à une fonction onBeforeRender() de Mirror.js. Stacktrace:

enter image description here

Si vous regardez le code, les miroirs sont créés et ajoutés dans la fonction addMirrorAndImage(). Y a-t-il une meilleure façon d'ajouter des miroirs, ou une autre astuce qui donnera les mêmes performances que l'ancienne version (pré v85)?

+0

Si vous vous sentez assez confiant, il y a eu une régression Three.js, il serait approprié de déposer ceci comme un rapport de bogue sur le site three.js. – WestLangley

+0

@WestLangley - Merci, j'ai soumis un problème: https://github.com/mrdoob/three.js/issues/12098 – Sphinxxx

Répondre