我想知道是否可以在创建后更新THREE.tubeGeometry的路径
基本代码是:
var extrudeBend = new THREE.SplineCurve3([
// Initial Vector and Final Vector
new THREE.Vector3(-0.043019063220379364, -0.7286175255425879, 0.32197394147509184),
new THREE.Vector3(-0.21509537768074327, -0.7286180853596855, 2.5424840106551216)]);
var material = new THREE.MeshBasicMaterial({ color: 0xff0000, transparent: false });
var segments = 40;
var radius = 0;
var radiusSegments = 18;
var closed = false;
var tubeGeometry = new THREE.TubeGeometry(extrudeBend, segments, radius, radiusSegments, closed);
var tubeMesh = new THREE.Mesh(tubeGeometry, new THREE.MeshLambertMaterial({
color: 0xff00ff,
wireframe: true
}));
scene.add(tubeMesh);
由于操作原因,我需要用不同的坐标修改那些初始和最终坐标,并在运行中再次刷新整个管。
修改网格椎体不是我想要的。
tubeMesh.geometry.vertices[0].set(geoBoxPose.position.x, geoBoxPose.position.y, geoBoxPose.position.z).multiplyScalar(6);
它只修改一个顶点,我想要所有的管。
删除tubeGeometry并从零创建它消耗了大量内存,并且它是一个每隔几秒钟引用的过程,具有许多几何形状。
有人知道怎么做吗?
答案 0 :(得分:0)
不重新创建几何图形就无法更改这些参数。将这些初始和最终坐标转换为样条管的形状是一个复杂的数学过程,该过程在创建新几何图形时执行。这样就不能跳过这一步。
在高度受限的情况下,样条曲线全部是原始样条曲线的旋转,您只需旋转网格即可,这要快得多。