【发布时间】:2015-08-26 10:59:32
【问题描述】:
我正在从事一个几年前开始的模拟项目。他们使用的是旧版本的 three.js 和 tween.js 库,我因为其他原因不得不升级它们。我有一个问题,那段代码以前可以工作,现在不行,我不知道为什么......
现在,让我解释一下问题所在。在应用程序启动时,通过为每个网格调用此函数来加载网格:
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--;
});
}
注意:我只会展示动画创建,我稍后会在它们上调用“start”方法,当然 现在,当我尝试通过更改其 位置 来移动该对象时,它可以工作:
new TWEEN.Tween(objDict["Screws"].position)
.to({y: 5}, 1000)
.delay(500);
但如果我尝试像这样旋转我的对象,它不起作用:
new TWEEN.Tween(objDict["ms_LidUpper"].rotation)
.to({x: -1.571}, 1000)
.delay(500);
我试图解决这个问题,但找不到任何东西...请注意,此代码以前有效!我认为问题在于 JSONLoader,因为当我在调试模式下运行代码时,mesh 对象缺少 matrixRotationWorld 属性并且 matrixWorldNeedsUpdate 属性为 false,并且在之前的应用版本中,matrixWorldNeedsUpdate 为 true,并且有 matrixRotationWorld 属性。
任何帮助将不胜感激!
【问题讨论】:
-
@WestLangley 嘿,但是 .position 有效......这不可能是那个问题
-
@WestLangley 嘿,对不起,伙计,这和你最后说的差不多……谢谢你的帮助!
标签: javascript three.js tween