function rotate( object, deg, axis )
{
// axis is a THREE.Vector3
var q = new THREE.Quaternion();
q.setFromAxisAngle(axis, THREE.MathUtils.degToRad( deg ) ); // we need to use radians
q.normalize();
object.quaternion.multiply( q );
}
因此,要在Z轴上将对象旋转90度,我们将其称为
rotate( myMesh, 90, new THREE.Vector3( 0, 0, 1 );
或者如果你想随着时间的推移逐渐旋转它你可以使用slerp。并增加进度值,从0到1。
function rotateSlerp( object, deg, axis, progress )
{
var q = new THREE.Quaternion();
q.setFromAxisAngle( axis, THREE.MathUtils.degToRad( deg ) );
q.normalize();
object.quaternion.slerp( q, progress );
}
要使用它,您需要调用
let progress = 0;
function loop()
{
progress += 0.05;
rotateSlerp( myMesh, 90, new THREE.Vector3( 0, 0, 1), progress );
requestAnimationFrame( loop );
}
8条答案
按热度按时间q3aa05251#
threejs旋转使用弧度(您可能知道)
你可以用这个
或
i1icjdpr2#
可以使用此函数旋转对象:
mrzz3bfm3#
假设
meshToRotate
需要在X轴上旋转90度,然后执行以下操作。piv4azn74#
在r96上测试,您还可以使用
8ehkhllq5#
将Angular 转换为弧度值:
zsbz8rwp6#
对于X轴,可以使用方法rotateX()
例如:是1 º度步长
结果90 °为
https://en.wikipedia.org/wiki/Euler_angles
guicsvcw7#
另一种方法是设置网格的四元数
或者更简单,无需覆盖其他值
fsi0uk1n8#
我使用四元数来旋转对象。
因此,要在Z轴上将对象旋转90度,我们将其称为
或者如果你想随着时间的推移逐渐旋转它你可以使用slerp。并增加进度值,从0到1。
要使用它,您需要调用