У меня есть функция, которая генерирует новую трубу каждый кадр после движения сетки. Функция, которая выполняет обновление трубки, выглядит следующим образом:
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
и проверяю, обновлены ли вершины, я вижу, что в этом случае см. Изображения ниже:
предыдущий кадр:
текущий кадр:
Но проблема в том, что реальная сетка не меняется в сцене? почему не обновляется?
примечание: все трубки расположены в тройной группе ().
если что-то не понятно, дайте мне знать, чтобы я мог уточнить!