Three.js中模型对象角度旋转
three.js
JavaScript 3D Library.
项目地址:https://gitcode.com/gh_mirrors/th/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
JavaScript 3D Library.
项目地址:https://gitcode.com/gh_mirrors/th/three.js
对于之前版本的Three.js,函数实现的有些不同
// Three.js r49之前:
object.rotation.getRotationFromMatrix(object.matrix, object.scale);
// Three.js r59之前:
object.rotation.setEulerFromRotationMatrix(object.matrix);
对于Three.js中现有一些形状对象,直接设置三个轴的变换就行,不需要这样进行变换。
更多文章请关注公众号查看!
推荐内容




JavaScript 3D Library.
最近提交(Master分支:17 天前 )
e3ee9682
12 小时前
7c9d92b0
* improve compatibility-mode
* update interpolateParams
* cleanup 18 小时前
更多推荐
相关推荐
查看更多
three.js

JavaScript 3D Library.
three.js

JavaScript 3D Library.
Three.js完整迷你版

Three.js 完整迷你版欢迎来到Three.js最全的迷你版本资源下载页
热门开源项目
活动日历
查看更多
直播时间 2025-03-13 18:32:35

全栈自研企业级AI平台:Java核心技术×私有化部署实战
直播时间 2025-03-11 18:35:18

从0到1:Go IoT 开发平台的架构演进与生态蓝图
直播时间 2025-03-05 14:35:37

国产工作流引擎 终结「996」开发困局!
直播时间 2025-02-25 14:38:13

免费开源宝藏 ShopXO,电商系统搭建秘籍大公开!
直播时间 2025-02-18 14:31:04

从数据孤岛到数据智能 - 企业级数据管理利器深度解析
所有评论(0)