更新三.管几何路径在飞行



我想知道是否可以在创建 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);

出于操作原因,我需要用不同的坐标修改这些初始和最终坐标,并在飞行中再次刷新整个管子。

修改网格vertext不是我想要的。

tubeMesh.geometry.vertices[0].set(geoBoxPose.position.x, geoBoxPose.position.y, geoBoxPose.position.z).multiplyScalar(6);

它只修改一个顶点,我想要所有的管子。

删除tubeGeometry并从零开始创建它,这会消耗大量内存,并且这是一个每隔几秒钟就会引用一次的过程,具有许多几何形状。

有人知道该怎么做吗?

如果不重新创建几何图形,则无法更改这些参数。将这些初始坐标和最终坐标转换为样条管的形状是一个复杂的数学过程,在创建新几何图形时会执行该过程。所以这一步不能跳过。

在高度受限的情况下,您的样条曲线都是原始曲线的旋转,您可以只旋转网格,这要快得多。

最新更新