栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在Three.js轴上旋转3D对象?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在Three.js轴上旋转3D对象?

这是我使用的两个功能。它们基于矩阵旋转。并可以绕任意轴旋转。要使用世界上的轴旋转,您需要使用第二个函数rotateAroundWorldAxis()。

// Rotate an object around an arbitrary axis in object spacevar rotObjectMatrix;function rotateAroundObjectAxis(object, axis, radians) {    rotObjectMatrix = new THREE.Matrix4();    rotObjectMatrix.makeRotationAxis(axis.normalize(), radians);    // old pre for Three.JS pre r54:    // object.matrix.multiplySelf(rotObjectMatrix);      // post-multiply    // new pre for Three.JS r55+:    object.matrix.multiply(rotObjectMatrix);    // old pre for Three.js pre r49:    // object.rotation.getRotationFromMatrix(object.matrix, object.scale);    // old pre for Three.js r50-r58:    // object.rotation.setEulerFromRotationMatrix(object.matrix);    // new pre for Three.js r59+:    object.rotation.setFromRotationMatrix(object.matrix);}var rotWorldMatrix;// Rotate an object around an arbitrary axis in world space       function rotateAroundWorldAxis(object, axis, radians) {    rotWorldMatrix = new THREE.Matrix4();    rotWorldMatrix.makeRotationAxis(axis.normalize(), radians);    // old pre for Three.JS pre r54:    //  rotWorldMatrix.multiply(object.matrix);    // new pre for Three.JS r55+:    rotWorldMatrix.multiply(object.matrix);     // pre-multiply    object.matrix = rotWorldMatrix;    // old pre for Three.js pre r49:    // object.rotation.getRotationFromMatrix(object.matrix, object.scale);    // old pre for Three.js pre r59:    // object.rotation.setEulerFromRotationMatrix(object.matrix);    // pre for r59+:    object.rotation.setFromRotationMatrix(object.matrix);}

因此,您应该在

anim
函数中调用这些函数(requestAnimframe回调),从而在x轴上旋转90度:

var xAxis = new THREE.Vector3(1,0,0);rotateAroundWorldAxis(mesh, xAxis, Math.PI / 180);


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/426179.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号