举荐:将NSDT场景编辑器退出你的3D工具链
其余系列工具:NSDT简石数字孪生
模型对象旋转平移缩放
变换点模型Points、线模型Line、网格网格模型Mesh等模型对象的基类都是Object3D,如果想对这些模型进行旋转、缩放、平移等操作,如何实现,能够查问Threejs文档Object3D对相干属性和办法的介绍。
缩放
网格模型Mesh的属性.scale示意模型对象的缩放比例,默认值是THREE.Vector3(1.0,1.0,1.0),.scale的属性值是一个三维向量对象Vector3,查看three.js文档你能够晓得Vector3对象具备属性.x、.y、.z,Vector3对象还具备办法.set(),.set办法有三个示意xyz方向缩放比例的参数。
网格模型xyz方向别离缩放0.5,1.5,2倍
mesh.scale.set(0.5, 1.5, 2)
x轴方向放大2倍
mesh.scale.x = 2.0;
地位属性.position
模型地位.position属性和.scale属性的属性值一样也是三维向量对象Vector3,通过模型地位属性.position能够设置模型在场景Scene中的地位。模型地位.position的默认值是THREE.Vector3(0.0,0.0,0.0)。
设置网格模型y坐标
mesh.position.y = 80;
设置模型xyz坐标
mesh.position.set(80,2,10);
平移
网格模型沿着x轴正方向平移100,能够屡次执行该语句,每次执行都是绝对上一次的地位进行平移变换。
// 等价于mesh.position = mesh.position + 100;mesh.translateX(100);//沿着x轴正方向平移间隔100
沿着Z轴负方向平移间隔50。
mesh.translateZ(-50);
沿着自定义的方向挪动。
//向量Vector3对象示意方向var axis = new THREE.Vector3(1, 1, 1);axis.normalize(); //向量归一化//沿着axis轴示意方向平移100mesh.translateOnAxis(axis, 100);
执行.translateX()、.translateY()、.translateOnAxis()等办法实质上扭转的都是模型的地位属性.position。
旋转
立方体网格模型绕立方体的x轴旋转/4,能够屡次执行该语句,每次执行都是绝对上一次的角度进行旋转变动
mesh.rotateX(Math.PI/4);//绕x轴旋转/4
网格模型绕(0,1,0)向量示意的轴旋转/8
var axis = new THREE.Vector3(0,1,0);//向量axismesh.rotateOnAxis(axis,Math.PI/8);//绕axis轴旋转/8
执行旋转.rotateX()等办法和执行平移.translateY()等办法一样都是对模型状态属性的扭转,区别在于执行平移办法扭转的是模型的地位属性.position,执行模型的旋转办法扭转的是示意模型角度状态的角度属性.rotation或者四元数属性.quaternion。
模型的角度属性.rotation和四元数属性.quaternion都是示意模型的角度状态,只是示意办法不同,.rotation属性值是欧拉对象Euler,.quaternion属性值是是四元数对象Quaternion
// 绕着Y轴旋转90度mesh.rotateY(Math.PI / 2);//控制台查看:旋转办法,扭转了rotation属性console.log(mesh.rotation);
3D建模学习工作室