Matrix 网格世界的相对缩放
在Object3D中包含一个网格 Object3D具有任意缩放 网格具有任意旋转。因此,我的网格相对于世界坐标进行缩放 但是,当我在场景中分离网格时(例如,借助THREE.SceneUtils.detach(mesh,obj3d,scene),我得到的结果不正确,网格仅局部缩放 我试图更改网格的几何体,但仍然得到错误的结果:Matrix 网格世界的相对缩放,matrix,three.js,Matrix,Three.js,在Object3D中包含一个网格 Object3D具有任意缩放 网格具有任意旋转。因此,我的网格相对于世界坐标进行缩放 但是,当我在场景中分离网格时(例如,借助THREE.SceneUtils.detach(mesh,obj3d,scene),我得到的结果不正确,网格仅局部缩放 我试图更改网格的几何体,但仍然得到错误的结果: 我意识到我犯了什么错误。 必须应用我的第一个矩阵的getInverse。使用负值从Euler进行旋转 var firstMatrix=new THREE.Matr
我意识到我犯了什么错误。 必须应用我的第一个矩阵的getInverse。使用负值从Euler进行旋转
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;
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;