我正在尝试创建一个管道,并具有与该管道交互的能力,例如拖动鼠标以更改管道的起点/终点。为此,我直接修改顶点位置值,并希望更新场景中的对象。
然而,我遇到了一个问题:我使用的管道对象在更新路径点时,网格对象不会在屏幕上更新,因此似乎无法在创建后对其进行修改。
我的3D对象创建大致如下:
然而,我遇到了一个问题:我使用的管道对象在更新路径点时,网格对象不会在屏幕上更新,因此似乎无法在创建后对其进行修改。
我的3D对象创建大致如下:
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);
当我想要更新积分时,我会这样做:
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;
然而,当我做出改变时,对象似乎没有在屏幕上更新。使用管道是否可能实现这一点?