如何将精灵的旋转值复制到平面?

时间:2014-12-24 16:21:27

标签: three.js

我想知道是否有办法将精灵的旋转信息复制到平面中。似乎对于精灵来说,旋转是在材料中设置的,它只是一个值。我试着将精灵的矩阵复制到飞机的矩阵中,但没有运气。

1 个答案:

答案 0 :(得分:0)

Sprite旋转在WebGL中定义,您可以在SpritePlugin.js中阅读。因此,如果您希望复制场景中现有精灵的旋转,最简单的方法可能是使用quaternion。当它们要求旋转轴和角度值时,它们允许比x / y / z角定义的(欧拉旋转)更好地定义。在您的上下文中,您可以在每次相机移动时修改quaternion。您可以使用quaternion.setFromAxisAngle(axis,angle)进行设置。然后使用plane.setRotationFromQuaternion(quaternion)将其应用到飞机上。

数学方面:

  • 轴是矢量lastCameraPosition-sprite.position和actualCameraPosition-sprite.position之间的叉积,
  • 这些矢量之间的角度,它们的点积的acos除以它们的长度乘积。

有关这些数学的更多信息,TrackBallControls中的函数getMouseProjectionOnBallrotateCamera非常有用。

希望它有所帮助!