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 设置三个.js顶点的动画_Animation_Three.js_Position_Vertices - Fatal编程技术网

Animation 设置三个.js顶点的动画

Animation 设置三个.js顶点的动画,animation,three.js,position,vertices,Animation,Three.js,Position,Vertices,我正在尝试从collada模型中设置单个顶点的动画。 顶点只设置了一次动画,但之后不再设置动画 1:装上我的衣领 // name obj var orgVerts = false; var desVerts = false; var material = new THREE.MeshBasicMaterial({ color:0x1e5679, wireframe:true }); var loader = new THREE.ColladaLoader(); var nameModel = f

我正在尝试从collada模型中设置单个顶点的动画。 顶点只设置了一次动画,但之后不再设置动画

1:装上我的衣领

// name obj
var orgVerts = false;
var desVerts = false;
var material = new THREE.MeshBasicMaterial({ color:0x1e5679, wireframe:true });
var loader = new THREE.ColladaLoader();
var nameModel = false;

loader.options.convertUpAxis = true;
loader.load( '3d/name.dae', function ( collada ) {
    nameModel = collada.scene.children[0].children[0];
    nameModel.material = material;
    nameModel.geometry.dynamic = true;
    nameModel.position.set(0,0,0);//x,z,y- if you think in blender dimensions ;)
    nameModel.scale.x = .0035;
    nameModel.scale.y = .0035;
    nameModel.scale.z = .0035;
    scene.add(nameModel);
    orgVerts = nameModel.geometry.vertices; // make a backup of all verts
    genVerts(); // create a new array of random verts
});
2:在我的渲染函数中

var render = function () {
    requestAnimationFrame(render);
    // do stuff
    if(nameModel){
        if(window.globalCurrentSlide != 0){
            for(var r=0; r < nameModel.geometry.vertices.length; r++){
                var vert = desVerts[r]; // loop through all the destination verts
                nameModel.geometry.vertices[r].x = nameModel.geometry.vertices[r].x - (nameModel.geometry.vertices[r].x - vert.x)/20;
                nameModel.geometry.vertices[r].y = nameModel.geometry.vertices[r].y - (nameModel.geometry.vertices[r].y - vert.y)/20;
                nameModel.geometry.vertices[r].z = nameModel.geometry.vertices[r].z - (nameModel.geometry.vertices[r].z - vert.z)/20;
            }
        }else{
            for(var t=0; t < nameModel.geometry.vertices.length; t++){
                var vert2 = orgVerts[t]; // loop through all the original verts
                nameModel.geometry.vertices[t].x = nameModel.geometry.vertices[t].x - (nameModel.geometry.vertices[t].x - vert2.x)/20;
                nameModel.geometry.vertices[t].y = nameModel.geometry.vertices[t].y - (nameModel.geometry.vertices[t].y - vert2.y)/20;
                nameModel.geometry.vertices[t].z = nameModel.geometry.vertices[t].z - (nameModel.geometry.vertices[t].z - vert2.z)/20;
            }
        }
        nameModel.geometry.verticesNeedUpdate = true;
        nameModel.rotation.y += .005;
    }
    renderer.render( scene, camera );
}
var render=function(){
请求动画帧(渲染);
//做事
如果(名称模型){
如果(window.globalCurrentSlide!=0){
对于(var r=0;r
窗口。globalCurrentSlide
设置为0开始,一切正常。如果我将
window.globalcurrentsiled
更改为1,则所有顶点都会正确设置动画但是当我更改
窗口时。全局当前幻灯片
返回到0,顶点不会动画返回到其原始位置。我已经调试了堆,并且可以100%地说,
desVerts
orgVerts
都不会改变,它们是正确的。有什么想法吗?它快把我逼疯了


PS:我知道代码可以压缩,我只是在玩ATM。答案是我的
orgVerts
只是一个参考,而不是克隆。使用:

var geometry = nameModel.geometry.clone();
orgVerts = geometry.vertices;