在THREE.js中,物体绕自己的轴旋转有一些困难。我正在使用STLLoader导入格式的stl文件.stl-0,model.stl.stl-1,.model.stl.stl-13。以下是相关代码:
for (i = 0; i<14; i++) {
loader.load( './models/stl/binary/model.stl-'+ i + '.stl' );
};
用于循环加载程序并导入所有文件。
object.rotation.x = value;
这就是我试图旋转物体的方式。然而,每个模型都安排在一个拱内,在使用上述方法旋转时,旋转是围绕整个模型拱的中心轴进行的,而不是围绕单个模型本身的中心轴进行的。
如何使物体绕其自身的轴旋转?
谢谢
发布于 2016-01-13 11:16:26
虽然这个问题从最初被要求到现在已经过去了一年多了,但我想我会把我的解决方案留给其他人来解决。如果您需要重置对象的原点,以便使其绕其自身的轴旋转而不是全局原点,请使用以下命令:
object.geometry.computeBoundingBox();
var boundingBox = object.geometry.boundingBox;
position = new THREE.Vector3();
position.subVectors( boundingBox.max, boundingBox.min );
position.multiplyScalar( 0.5 );
position.add( boundingBox.min );
position.applyMatrix4( object.matrixWorld );
object.geometry.applyMatrix(
new THREE.Matrix4()
.makeTranslation(
-(position.x),
-(position.y),
-(position.z)
)
);
object.geometry.verticesNeedUpdate = true;
object.position.x = position.x;
object.position.y = position.y;
object.position.z = position.z;
发布于 2014-11-11 07:42:54
对象总是围绕着自己的中心旋转(0,0,0),如果你想让它们以不同的方式旋转,我想你必须修改模型,重新定位它,所以中心点是你想要成为枢轴点的地方。
https://stackoverflow.com/questions/26836065
复制