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