Я пытаюсь анимировать 2D-кривую в Three.js с течением времени.Мне понадобится более 4 контрольных точек, поэтому я не использую кривые Безье.Я создал Three.Line на основе SplineCurve.
Если я зарегистрирую положение своей линии geometry.vertices, они со временем изменятся, но geometry.attributes.position останется прежним.Можно ли анимировать линию на основе кривой кривой?Мне удалось сделать это с помощью кривых Безье, но я не могу найти способ с помощью SplineCurve.Спасибо за вашу помощь, вот мой код:
Сначала я создаю строку:
var curve = new THREE.SplineCurve( [
new THREE.Vector3( -10, 0, 10 ),
new THREE.Vector3( -5, 5, 5 ),
new THREE.Vector3( 0, 0, 0 ),
new THREE.Vector3( 5, -5, 5 ),
new THREE.Vector3( 10, 0, 10 )
] );
var points = curve.getPoints( 50 );
var geometry = new THREE.BufferGeometry().setFromPoints( points );
var material = new THREE.LineBasicMaterial( { color : 0xff0000 } );
// Create the final object to add to the scene
curveObject = new THREE.Line( geometry, material );
scene.add( curveObject );
curveObject.curve = curve;
Затем я пытаюсь обновить ее:
curveObject.curve.points[0].x += 1;
curveObject.geometry.vertices = curveObject.curve.getPoints( 50 );
curveObject.geometry.verticesNeedUpdate = true;
curveObject.geometry.attributes.needsUpdate = true;