2017-04-27 3 views
0

question 1: Dans mon application je JsonLoader pour charger mon modèle sur les 65Mo au format .js, il est prend 10 secondes. c'est trop long pour nous. est-il possible de charger de gros modèles? ou un meilleur chargeur ou un meilleur format? Dans mon cas, j'ai enlevé la fonction remove() pour supprimer le modèle de la scène, mais le cache ne se libère pas immédiatement dans le navigateur, il faut plus de 20 secondes pour être libre; comment pourrais-je faire? c'est mon code: this.scene.remove (i); je suis mon modèle.meilleure façon de charger grand modèle ThreeJs Et comment libérer le cache dans ThreeJs

Répondre

0

JSON est un format très lourd. Essayez d'utiliser OBJ ou glTF. THREE.js a des chargeurs pour chacun d'eux dans ses exemples.

En ce qui concerne la libération de la mémoire, cela est inhérent à JavaScript, qui utilise la récupération de place pour libérer de la mémoire. (Voici un MDN article on JavaScript memory management.) Tout comme Java, cela arrive "de temps en temps", vous devez donc attendre que cela arrive.

+0

merci je vais essayer votre chemin – JsonS

0

Q1:OpenCTM est également un bon format de compression, mais est, cependant, limité à des maillages triangle unique. Donc, vous ne pouvez pas stocker des scènes entières avec. Mais il est également possible de choisir une compression avec perte qui se traduit par un taux de compression très élevé. Il existe aussi des exemples pour Three.js: https://threejs.org/examples/#webgl_loader_ctm

Q2: Si vous voulez vraiment supprimer votre modèle, vous devez appeler dispose() sur l'objet de la géométrie pour supprimer l'objet de la mémoire (matériaux et textures ont également Méthode dispose).

Documents disent: https://threejs.org/docs/index.html#api/core/BufferGeometry

.Dispose()

dispose l'objet à partir de la mémoire.
Vous devez appeler ceci lorsque vous voulez que la classe bufferGeometry soit supprimée pendant que l'application est en cours d'exécution.

+0

n'oubliez pas d'effacer toutes les textures et les matériaux avec 'disposer' aussi :) – mjanisz1