три. js Изменение положения TubeBufferGeometry для анимации камеры - PullRequest
0 голосов
/ 07 марта 2020

Я пытаюсь изменить положение / перевести динамику TubeBufferGeometry.parameters.path, которую я буду использовать для анимации камеры (все основаны на этом примере: webgl_geometry_extrude_splines )

Вот мой код, пока полный код: Ссылка на коды и коробку с полным кодом

Важная часть кода:

function init(){
    // initial scene render etc. for full code take a look at codesanbox

    // tube
    var extrudePath = new Curves.GrannyKnot();

    tubeGeometry = new THREE.TubeBufferGeometry( extrudePath, 50, 2, 1, true );
    tubeGeometry.dynamic = true;

//unsuccessful approach to change the parameters of position
    tubeGeometry.translate(100, 0, 0)
    tubeGeometry.attributes.position.needsUpdate = true;
}

function animate() {
    requestAnimationFrame( animate );
    render();
}

function render() {
    // animate camera along spline
    var time = Date.now();
    var looptime = 20 * 1000;
    var t = ( time % looptime ) / looptime;

    var pos = tubeGeometry.parameters.path.getPointAt( t );
    pos.multiplyScalar( 1 );

    splineCamera.position.copy( pos );
    renderer.render( scene, splineCamera );
}

Ошибка не давая мне перевода камеры, она движется вокруг кривой GrannyKnot в положении по умолчанию.

Я ожидаю, что я буду динамически c изменять положение / перевод TubeBufferGeometry.parameters.path в некоторых Направление (например, положение X + 100), которое влияет на движение моей камеры показал бы мне, как изменить TubeBufferGeometry.parameters.path без изменения определенного pos.x как в коде выше. Я был бы очень рад за это.

...