J'ai compris comment dessiner une ligne en troisjs, le problème est que j'ai besoin d'ajouter de manière dynamique des sommets à la ligne. Lorsque j'ajoute des sommets à la ligne de manière dynamique, la scène ne met pas à jour. P>
J'ai essayé géométry.vertiseSneedUpdate = true code>, ce qui ne semble pas fonctionner. P>
3 Réponses :
Edit: Utilisation de trois.js r.71 p>
Ajouter dynamiquement des sommets à une ligne n'est pas pris en charge. Comme indiqué dans le wiki : p>
Vous ne pouvez mettre à jour que le contenu des tampons, vous ne pouvez pas redimension des tampons (c'est très coûteux, essentiellement équivalent à la création de la nouvelle géométrie). P>
Vous pouvez imiter le redimensionnement en pré-alloué un tampon plus grand, puis en conservant des sommets inutiles effondrés / cachés. P>
blockQuote>
trois.js r.55 p> Buffergeométrie Code> et
DrawCalls code> Vous pouvez maintenant implémenter des fonctionnalités équivalentes. Voir Dessiner une ligne avec trois.js dynamiquement . p>
merci. Je suppose que je vais simplement supprimer et re-ajouter une nouvelle ligne chaque cadre ... semble plus inefficace
Je pense que le point de Westlangley faisait était que tentative de le faire de manière dynamique est basicaly aussi inefficace que de créer une toute nouvelle géométrie en premier lieu, il n'est donc pas moins efficace de la même chose.
J'ai ajouté tous les points à la géométrie par cette ligne de code: linegetométryx.vertices.push (neuf trois.vertex (neuf trois.vector3 (x, y, z))); Comment puis-je cacher / effondrer des sommets inutiles?
Vous devez faire un nouveau message avec votre question.
je suis tombé sur ce il y a quelques jours aussi. Comme WestLangley dit, vous ne pouvez pas faire de la géométrie de réelle dynamique de la boîte, mais alteredq a deux stratégies pour « faire semblant » et obtenir l'effet désiré à https://github.com/mrdoob/three.js/issues/342 . p>
En ce qui concerne votre commentaire sur la dernière réponse, ne pas strong> supprimer juste et rajoutez une nouvelle ligne de la scène chaque image - vous (le plus probable) encourez un coup de performance massif . Vous devez utiliser la première ou deuxième des stratégies de contournement de alteredq. P>
Dans mon application, j'utiliser l'option 1 comme ceci: p>
Créer un objet THREE.Geometry à l'avance et avec autant initialiser de sommets que vous pensez que vous aurez besoin (ou autrement un nombre assez élevé de sommets). (Vous aurez également besoin de les cacher en quelque sorte avant que vous voulez les afficher -. Je mis leurs positions pour être hors de l'écran) p> li>
Créer un objet THREE.Line avec cette géométrie et ajouter à la scène. P> li>
Maintenant, quand vous voulez ajouter un nouveau point à la ligne que vous aurez à l'index dans les sommets de l'objet de la géométrie, trouver le dernier utilisé là-dedans, et mettre à jour - changez les coordonnées à celles réelles et ensemble Je suis toujours remédiez aux problèmes sur mon approche, mais qui devrait au moins laisser obtenir une ligne de dessin à l'écran. P>
Three.js r55 p>
geometry.verticesNeedUpdate = true; code> (sinon il ne pense rien changé). (Voir Comment faire des mises à jour sur le wiki.) P> li>
Ol>
Comment empêchez-vous les points offscreen de se connecter aux points «réels» que vous souhaitez rendre?
Max, c'était un moment de retour maintenant, donc je ne me souviens pas exactement, mais je pense que j'ai changé la couleur des points (ou des lignes de connexion) à la même couleur que la couleur de fond de la scène. Donc, la connexion est toujours là, mais ce n'est pas visible.
Comme la réponse de Westlangley dit, vous ne pouvez pas faire cela. Voici la solution de contournement de Hacky Cercient que j'ai décidé d'utiliser:
code:
Pour créer une nouvelle ligne: p> pour ajouter un point à la ligne: p> Qu'est-ce que vous finissez avec est une ligne qui a un tas de points empilés les uns sur les autres suivi des points que vous souhaitez réellement rendre.
J'ai soumis un problème sur le référentiel Git de trois.js pour une solution plus simple à ce problème.
https://github.com/mrdoob/three.js/issues/4716 p> p>