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
Javascript 在THREE.js中为自定义网格变形目标动画_Javascript_Three.js - Fatal编程技术网

Javascript 在THREE.js中为自定义网格变形目标动画

Javascript 在THREE.js中为自定义网格变形目标动画,javascript,three.js,Javascript,Three.js,我正在制作一个动画,显示2D函数绕轴旋转以创建3D曲面。我已经能够成功地渲染曲面,现在我正在尝试使用变形目标创建动画部分 不幸的是,尽管我已经成功地将所有变形帧推入了我的几何体中,但我在播放动画时遇到了困难。我发现的所有动画示例都使用blender来导入模型,因此没有完全的帮助(很多都已经过时) 我以变形马为例(),尝试尽可能多地复制代码,但没有成功 下面是初始化morphVerticeHolder的代码,它是一个2D数组,用于保存每个动画帧的顶点 //First indices of mul

我正在制作一个动画,显示2D函数绕轴旋转以创建3D曲面。我已经能够成功地渲染曲面,现在我正在尝试使用变形目标创建动画部分

不幸的是,尽管我已经成功地将所有变形帧推入了我的几何体中,但我在播放动画时遇到了困难。我发现的所有动画示例都使用blender来导入模型,因此没有完全的帮助(很多都已经过时)

我以变形马为例(),尝试尽可能多地复制代码,但没有成功

下面是初始化morphVerticeHolder的代码,它是一个2D数组,用于保存每个动画帧的顶点

 //First indices of multiarray corresponds to morph frame, second to the vertice
 var morphVerticeHolder = [];
 for(var i = 0; i < 20; i++) {
   morphVerticeHolder[i] = [];
 }
//多数组的第一个索引对应于变形帧,第二个对应于垂直帧
变量morphVerticeHolder=[];
对于(变量i=0;i<20;i++){
morphVerticeHolder[i]=[];
}
这是我的代码,沿着轴推动顶点。请注意,我同时推动变形顶点。mI代表网格间隔

for(var i = xstart; i <= xend; i+= mI) {
  geo.vertices.push(new THREE.Vector3(i,0,0));
  for(var j = 0; j < 20; j++) { //20 Frames of the morph animation
    morphVerticeHolder[j].push(new THREE.Vector3(i,0,0));
  }
}

for(var i=xstart;i在进一步研究和深入研究源代码后,我发现所使用的材质必须将morphTargets属性设置为true。我曾尝试使用我正在使用的着色器材质进行此操作,但您必须在顶点着色器中手动应用MorphTargetInfluence

因此,我把材料换成了

var mat = new THREE.MeshNormalMaterial( { color: 0x990000, morphTargets: true } );

一切都很顺利!

在进一步研究和深入研究源代码后,我发现所使用的材质必须将morphTargets属性设置为true。我曾在使用的着色器材质中尝试过这一点,但必须在顶点着色器中手动应用MorphTargetInfluence

因此,我把材料换成了

var mat = new THREE.MeshNormalMaterial( { color: 0x990000, morphTargets: true } );

一切都很顺利!

在进一步研究和深入研究源代码后,我发现所使用的材质必须将morphTargets属性设置为true。我曾在使用的着色器材质中尝试过这一点,但必须在顶点着色器中手动应用MorphTargetInfluence

因此,我把材料换成了

var mat = new THREE.MeshNormalMaterial( { color: 0x990000, morphTargets: true } );

一切都很顺利!

在进一步研究和深入研究源代码后,我发现所使用的材质必须将morphTargets属性设置为true。我曾在使用的着色器材质中尝试过这一点,但必须在顶点着色器中手动应用MorphTargetInfluence

因此,我把材料换成了

var mat = new THREE.MeshNormalMaterial( { color: 0x990000, morphTargets: true } );
一切都很顺利