Ich erstelle ein Mesh mit einer THREE.Geometry-Instanz, befülle dann dynamisch die Arrays vertices
und faces
der Geometrie. Die Geometrie wird iterativ verfeinert, indem bei jeder Iteration zusätzliche Scheitelpunkte und Flächen hinzugefügt werden. Wenn ich die Geometrie verfeinere, bevor das Netz der Szene hinzugefügt wird, wird es korrekt gerendert. Wenn ich jedoch das Netz der Szene hinzufüge und es rendere, dann modifiziere es, so werden nur die anfänglichen N Flächen der Geometrie gezeigt, die beim ersten Rendern enthalten ist. Änderungen an der Position der Scheitelpunkte, die von diesen Flächen verwendet werden, werden berücksichtigt, aber nur diese N Flächen werden gerendert.
Die Geometrieinstanz ist mit dynamic = true
gekennzeichnet, und ich habe nach der Änderung der Geometrie verticesNeedUpdate
, elementsNeedUpdate
und buffersNeedUpdate
festgelegt. Ich habe auch versucht, alle anderen "schmutzigen" Flags zu setzen, obwohl ich nur erwarte, dass ich diese drei setzen muss (und selbst dann bin ich mir nicht sicher, ob ich buffersNeedUpdate brauchen sollte).
Soweit ich sehen kann, werden die Eigenschaften geometryGroup
und geometryGroupList
der Geometrie aus den Flächen erstellt und bevölkert, die existieren, wenn das Netz zuerst gerendert wird, aber nicht neu erstellt werden, um die nachträglich hinzugefügten Flächen aufzunehmen / p>
Was mache ich falsch?
Ich nehme an, dass Sie WebGLRenderer
verwenden.
Wie im three.js-Wiki-Artikel So aktualisieren Sie beschrieben, können Sie nur das Update durchführen Inhalt von Puffern, Sie können die Größe von Puffern nicht ändern.
drei.js r.59