我在做一个游戏,像草这样的物体,例如萤火虫,花朵,只是一个带有半透明图片的正方形,我想让他们总是用一张脸在某个地方看相机,并且沿着一个限制轴,在某处没有,因为如果图片被边缘转动,她是不可见的。我试图只对它们应用相机旋转,但只有当相机直视物体时才看起来不错,转动时会变形。
所以。我计算了一个从物体到相机的单位向量,但现在我需要将其转换为弧度或度数。
这就是我如何将弧度(旋转角度)反转为方向矢量,从而制作一个自由相机,它可以在它看起来的地方移动。
glm::vec3 rotateToVec3(glm::vec2 rotate, float radius)
{
float RadiusXZ = cos(rotate.x);
float x = (sin(rotate.y) * RadiusXZ)*radius;
float z = (-cos(rotate.y) * RadiusXZ)*radius;
float y = (-sin(rotate.x)) * radius;
return glm::vec3(x, y, z);
}
但是如何将矢量转换为旋转呢?我知道有必要应用 acos asin 之类的东西,但是如何应用呢?也许 glm 有现成的解决方案?
我沿着Y轴解决了这个问题,虽然这对我来说已经足够了,那么我会在两个轴上都做补充答案。无论如何,如果你不高高升起,精灵总是看着相机。
首先,我们找到从物体指向相机的向量(相机位置 - 物体位置)
让我们标准化以防万一
好吧,我们找到以弧度为单位的旋转角度,然后应用
感谢上帝,解决方案非常简单