Próbuję utworzyć rurkę i możliwość interakcji z tą rurką, jak przeciąganie myszą, aby zmienić punkt początkowy/końcowy tuby. Za to modyfikuję bezpośrednio wartości pozycji wierzchołków i Chciałbym zaktualizować obiekt na scenie Jednak natknąłem się na problem z obiektem lampy, którego używam: kiedy aktualizuję punkty ścieżki, obiekt siatki nie aktualizuje się na ekranie, więc wygląda na to, Nie mogę go zmodyfikować po utworzeniu.Three.js Siatka aktualizująca obiektu TubeGeometry
My 3D tworzenie obiektu jest mniej więcej tak:
var curve = new THREE.SplineCurve3([new THREE.Vector3(x, y, z), new THREE.Vector3(x2, y2, z2)]);
var geometry = new THREE.TubeGeometry(curve, segments, 2, radiusSegments, closed);
geometry.dynamic = true;
var tubeMesh = THREE.SceneUtils.createMultiMaterialObject(geometry, [new THREE.MeshBasicMaterial({color: 0xffffff, opacity: 1, transparent: true})]);
scene.add(tubeMesh);
A gdy chcę zaktualizować punkty. Robię to tak:
tubeMesh.children[0].geometry.path.points[0] = new THREE.Vector3(x4, y4, z4));
tubeMesh.children[0].geometry.path.points[1] = new THREE.Vector3(x3, y3, z3));
tubeMesh.children[0].geometry.verticesNeedUpdate = true;
Jednak po wprowadzeniu zmian obiekt nie wydaje się aktualizować na ekranie. Czy można to zrobić za pomocą tuby?
Czytałem ten artykuł przed iw moim kodu powyżej również kod wymieniony. Wydaje się, że verticeNeedUpdate zastosowane tylko, gdy właściwość vertices została zmieniona. Podczas gdy tutaj zmieniam właściwość ścieżki geo. Chłopaki mają ten sam problem jak ja https://github.com/mrdoob/three.js/issues/1965 – user1533481
Co powiesz na stworzenie prostego jsfiddle? – WestLangley
Stworzyłem jeden tutaj: http://jsfiddle.net/drsagitn/dC5KA/2/. Punkty są aktualizowane w momencie zdarzenia mouseup. Dzięki. – user1533481