在Object3D中包含一个网格 Object3D具有任意缩放 网格有任意旋转。所以我的网格相对于世界坐标进行了缩放。
但是当我在场景中分离我的网格时(例如,在THREE.SceneUtils.detach(网格,obj3d,场景)的帮助下,我得到一个不正确的结果,网格只在本地缩放。
我尝试更改网格的几何图形,但结果仍然不正确:
http://jsfiddle.net/Ni55aN/VsWb9/3426/
var euler = new THREE.Euler(-mesh.rotation.x,-mesh.rotation.y,-mesh.rotation.z);
mesh.geometry.applyMatrix(new THREE.Matrix4().makeRotationFromEuler(mesh.rotation));
mesh.geometry.applyMatrix(new THREE.Matrix4().makeScale(
obj.scale.x,
obj.scale.y,
obj.scale.z
));
mesh.geometry.applyMatrix(new THREE.Matrix4().makeRotationFromEuler(euler));
mesh.geometry.verticesNeedUpdate=true;
答案 0 :(得分:0)
我意识到我的错误。 有必要应用我的第一个矩阵的getInverse而不是负值的.makeRotationFromEuler
var firstMatrix=new THREE.Matrix4().makeRotationFromEuler(mesh.rotation);
var inverseMatrix=new THREE.Matrix4().getInverse(firstMatrix);
mesh.geometry.applyMatrix(firstMatrix);
mesh.geometry.applyMatrix(new THREE.Matrix4().makeScale(
obj.scale.x,
obj.scale.y,
obj.scale.z
));
mesh.geometry.applyMatrix(inverseMatrix);
mesh.geometry.verticesNeedUpdate=true;