使用Three.js加载程序时,Tween.js旋转无法正常工作

时间:2015-06-10 23:33:11

标签: javascript three.js tween

我正在研究几年前开始的模拟项目。他们使用旧版本的three.js和tween.js库,我不得不因其他原因升级它们。我有一个问题,那段代码曾经工作过,现在还没有,我无法弄明白为什么......

现在,让我解释一下问题所在。在应用程序开始时,通过为每个网格调用此函数来加载网格:

Canvas

注意:我将只显示动画创作,我打电话给#34;开始"当然,以后的方法 现在,当我尝试通过改变位置来移动该对象时,它会起作用:

function loadMesh(objPath, objName, worldScene, initPosition) {
    if (initPosition == undefined) {
        initPosition = new THREE.Vector3();
    }
    var loader = new THREE.JSONLoader();
    loader.load(objPath, function (geometry, materials) {
        for (var material in materials) {
            materials[material].shading = THREE.FlatShading;
        }
        var mesh = new THREE.Mesh(geometry, new THREE.MeshFaceMaterial(materials));
        mesh.scale.set(1, 1, 1);
        mesh.name = objName;
        mesh.position = initPosition;
        mesh.positionO = initPosition.clone();

        worldScene.add(mesh);
        objects.push(mesh);
        objDict[objName] = mesh;
        loadCounter--;
    });
}

但如果我尝试旋转这样的对象,它就不起作用了:

new TWEEN.Tween(objDict["Screws"].position)
    .to({y: 5}, 1000)
    .delay(500);

我试图解决这个问题,但找不到任何东西......请注意,此代码之前有效!我认为问题是JSONLoader,因为当我在调试模式下运行代码时, mesh 对象缺少 matrixRotationWorld 属性,并且在false时具有 matrixWorldNeedsUpdate 属性,在previos应用程序版本 matrixWorldNeedsUpdate 是真的,并且有 matrixRotationWorld 属性。

任何帮助都会受到极大关注!

1 个答案:

答案 0 :(得分:1)

像这样使用补间

var coords = { x: 0, y: 0 };
new TWEEN.Tween(mesh.rotation).to({x: 10, y: 10}, 3000).onUpdate(function () {
    mesh.rotation.x = coords.x;
    mesh.rotation.y = coords.y;
}).start();