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?
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
Hej - robię coś podobnego. Zastanawiam się, czy kiedykolwiek to rozgryzłeś? Dzięki @ Lharper71! –
@ 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