Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Animation 使用tweenjs在THREE.JS中移动直线曲线中的对象_Animation_Three.js_Tween.js - Fatal编程技术网

Animation 使用tweenjs在THREE.JS中移动直线曲线中的对象

Animation 使用tweenjs在THREE.JS中移动直线曲线中的对象,animation,three.js,tween.js,Animation,Three.js,Tween.js,我有一个物体是线。我想用一个物体制作一个动画,它可以移动所有的顶点,它可以是一个球体。为此,我将使用tween.js。我的问题是,我无法实现其所有顶点的动画。如何使动画从起点一直显示到终点?。 我有以下代码: //myline.geometry.vertices -> array with vertices of the line (1000 vertices) new TWEEN.Tween( mysphere.position ).to( { x: myline.geometry.v

我有一个物体是线。我想用一个物体制作一个动画,它可以移动所有的顶点,它可以是一个球体。为此,我将使用tween.js。我的问题是,我无法实现其所有顶点的动画。如何使动画从起点一直显示到终点?。 我有以下代码:

//myline.geometry.vertices  -> array with vertices of the line (1000 vertices)
new TWEEN.Tween( mysphere.position ).to( { x: myline.geometry.vertices[0].x, y: myline.geometry.vertices[0].y, z: myline.geometry.vertices[0].z }, 9000 ).to( { x: myline.geometry.vertices[1].x, y: myline.geometry.vertices[1].y, z: myline.geometry.vertices[1].z }, 9000 ).delay(2000).start(); 
我使用“.to”方法,如果我将要移动的顶点放在其中,效果很好。方法,但如果我有1000个顶点,我必须将它们全部放置。我能做什么?。 我把几个球体放在一条直线上,以相同的距离移动。我怎么做?。
我需要沿着前面创建的网格线移动球体。我需要沿直线移动n个球体,制作动画。使用tween.js应该更容易。

虽然您还没有指定如何确定这些顶点将移动到哪里,但我强烈建议您查看
THREE.MorphAnimMesh
THREE.Morphanidmesh
类型。通过在几何体的定义中指定目标位置,可以获得平滑的动画,而无需使用tween.js进行复杂的设置——只需调用混合量,而不是逐顶点循环。THREE.js将为您完成所有工作。您也可以使用基本的
THREE.Mesh
类型,如本例所示:


如果确实需要更改几何图形
.vertces
数组,请记住设置
geometry.verticesNeedUpdate=true更改值后,THREE可以确保更新其模型的内部WebGL表示。

这个答案对我没有帮助,我需要沿一条线移动一个球体,该线是一个网格,并已在前面创建。我需要沿直线移动n个球体,制作动画。使用tween.js应该更容易。然后创建一个包含所需顶点副本的数组。使用此数组创建曲线,例如
c=THREE.SplineCurve3(顶点)
现在,对于要设置动画的帧数,通过
newPoints=c.getSpacedPoints(nFrames)获取新的位置数组
然后为每个帧简单地设置该点的位置。或者,如果不需要固定的时间步长,可以通过
c.getPoint(t)参数化地查询它其中t从0到1变化。谢谢,我没有非常清楚的“帧”,也不理解“c.getPoint(t),其中t从0到1变化”。我不认为有了这个我就需要实现动画。正如标题所说,我需要tween.js的动画,比如
var t=0;var c=三个样条曲线3(顶点);函数mvSphere(event){sphere.position.copy().c.getPoint(t);}new TWEEN.TWEEN(t,{onChange:mvSphere).to(1.09000);
应该可以做到这一点。TWEEN只理解属性之间的线性转换,所以需要使用
onChange
来执行更复杂的三种转换。