2013-07-24 19 views
8

Tworzę siatkę z instancją THREE.Geometry, a następnie dynamicznie zapełniam tablice geometrii vertices i faces. Geometria jest iteracyjnie dopracowywana, dodając kolejne wierzchołki i ściany w każdej iteracji. Jeśli zawęzię geometrię przed dodaniem siatki do sceny, będzie ona poprawnie renderowana. Jeśli jednak dodaję siatkę do sceny i wyrenderuję ją, a następnie zmodyfikuję, zostaną wyświetlone tylko początkowe powierzchnie N geometrii zawartej w pierwszym renderowaniu. Zmiany położenia wierzchołków używanych przez te ściany są honorowane, ale renderowane są tylko te N twarzy.Dodawanie geometrii do siatki three.js po renderowaniu

Instancja geometria jest oznaczony dynamic = true i ustawić verticesNeedUpdate, elementsNeedUpdate i buffersNeedUpdate każdorazowo po modyfikacji geometrii. Próbowałem również ustawić wszystkie inne "brudne" flagi, choć spodziewam się tylko ustawić te trzy (a nawet wtedy nie jestem pewien, czy powinienem potrzebować buforówNeedUpdate).

O ile widzę, właściwości Geometria są budowane i wypełniane z powierzchni, które istnieją, gdy siatka jest po raz pierwszy renderowana, ale nie są ponownie budowane, aby uwzględnić później dodane ściany.

Co robię źle?

Odpowiedz

8

Zakładam, że używasz WebGLRenderer.

Jak podano w artykule wiki o nazwie th.js How to Update Things, można aktualizować tylko zawartość buforów, nie można zmienić rozmiaru buforów.

three.js r.59

+0

Ah, nie widziałem tej strony, dzięki. Zasadniczo jest to nieobsługiwane. Nie mogę tak naprawdę wstępnie przydzielić buforów w tym przypadku, ponieważ nie wiem z góry, jak duże będą musiały być. W tym momencie usuwam siatkę ze sceny i tworzę instancję nowej siatki + geometrii na każdym renderowaniu, który działa, ale prawdopodobnie nie jest zbyt wydajny ... Będę musiał pomyśleć o sposobie wstępnego przydzielenia blokuje i ponownie tworzy geometrię tylko wtedy, gdy przekażę wstępnie przydzielone rozmiary buforów lub coś podobnego. – lharper71

+0

Hej - robię coś podobnego. Zastanawiam się, czy kiedykolwiek to rozgryzłeś? Dzięki @ Lharper71! –

+1

@ C.Windolf [This] (http://stackoverflow.com/questions/36426139/incrementally-display-three-js-tubegeometry/36439563#36439563) Odnośna odpowiedź i [to] (http://stackoverflow.com/ pytania/31399856/drawing-a-line-with-three-js-dynamically/31411794 # 31411794) podobna odpowiedź może być pomocna. – WestLangley

Powiązane problemy