Three.js中模型对象角度旋转

在Three.js的场景中,加载三维模型,需要对模型参照x、y、z三个轴的角度旋转进行设置,比如Three.js加载三维管线的简单思路,设置三维管线的位置后,需要靠调整3个轴的角度,使模型能够和管线的起点、终点位置保持一致。
在加载三维模型的时候,可以直接设置模型的三个轴的rotation属性:

 model.rotation.x = -Math.PI / 4;
   model.rotation.z = Math.PI / 4;
   model.rotation.y = Math.PI / 2;

但是,在实际的场景中,这样设置模型展示的结果是不正确的,按照Three.js的说明文档中,在场景中模型的变换,需要通过矩阵进行变换。
具体的代码实现方式如下:

//模型对象旋转的函数,每次设置一个坐标轴的变换
function rotateAroundWorldAxis(object, axis, radians) {
	 let rotWorldMatrix = new THREE.Matrix4();
	 rotWorldMatrix.makeRotationAxis(axis.normalize(), radians);
      rotWorldMatrix.multiply(object.matrix); 
	 object.matrix = rotWorldMatrix; 
     object.rotation.setFromRotationMatrix(object.matrix);
      }

      //调用方式,设置x、y、z轴的旋转
      let xAxis = new THREE.Vector3(1, 0, 0);
      let yAxis = new THREE.Vector3(0, 1, 0);
      let zAxis = new THREE.Vector3(0, 0, 1);
      //模型、旋转轴和旋转角度(弧度)
      rotateAroundWorldAxis(model, xAxis, Math.PI / 8);

对于之前版本的Three.js,函数实现的有些不同

// Three.js r49之前:
 object.rotation.getRotationFromMatrix(object.matrix, object.scale);
//  Three.js r59之前:
object.rotation.setEulerFromRotationMatrix(object.matrix);

对于Three.js中现有一些形状对象,直接设置三个轴的变换就行,不需要这样进行变换。

更多文章请关注公众号查看!
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值