Hinzufügen von Geometrie zu einem three.js-Netz nach dem Rendern

8

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?

    
lharper71 24.07.2013, 18:53
quelle

1 Antwort

8

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

    
WestLangley 24.07.2013, 19:17
quelle

Tags und Links