首页 > 解决方案 > 三个js更新tubegeometry不可见r100

问题描述

我有一个功能,可以在网格移动后每帧生成新管。更新管状几何的函数如下所示:

function UpdateKettingMeshes(kettingMeshes, kraalElements, kettingCurvesArray, kettingShapeArray) {
    for (let i = 0; i < kettingMeshes.length; i++) {
        const element = kettingMeshes[i];
        const elCurve = kettingCurvesArray[i];
        const elShape = kettingShapeArray[i];
        elCurve.v0.copy(kraalElements[i].kraal.position.clone());
        elCurve.v1.copy(kraalElements[i].kraal.position.clone().add(elShape.controlPointDirection1.clone().multiplyScalar(elShape.controlPointPower1)));
        elCurve.v2.copy(kraalElements[i + 1].kraal.position.clone().add(elShape.controlPointDirection2.clone().multiplyScalar(elShape.controlPointPower2)));
        elCurve.v3.copy(kraalElements[i + 1].kraal.position.clone());
        const geometry = new THREE.TubeGeometry( elCurve, 80, 1.2, 8, false );
        element.geometry.vertices = geometry.vertices;
        element.geometry.verticesNeedUpdate = true;
    }

    return kettingMeshes;
}

我在每一帧都调用这个函数,如下所示:

kettingMeshData = UpdateKettingMeshes(kettingMeshData, kralenObjects, kettingCurveData, kettingShapeData);

这工作正常,没有错误,当我console.log检查kettingMeshData顶点是否已更新时,我看到是这种情况,请参见下图:

上一帧: 在此处输入图像描述 当前帧: 在此处输入图像描述

但问题是场景中的实际网格没有变化?为什么不更新?

旁注,所有管状网格都位于 three.group() 中。

如果有什么不清楚的地方告诉我,我可以澄清一下!

标签: javascriptthree.jsgeometryupdates

解决方案


推荐阅读