根据平面法线旋转对象

时间:2014-05-11 12:08:50

标签: c# matrix xna

我正在制作FPS游戏,我创造了一个和平的AI,当角色死亡时,我只是希望它按照下面的法线进行定向。我现在告诉你结果: enter image description here

如你所见,角色正在飞行,因为地形不直。

我正在努力(没有成功)做出类似的事情: enter image description here

我有(x,y,z)坐标(字符位置)和平面法线。

2 个答案:

答案 0 :(得分:0)

你角色的死亡姿势总是正常朝上,对吧? 而且你想将它旋转到另一个法线。

您可以找到一个四元数,表示两个矢量(向上和新法线)之间的旋转以旋转网格。 这个问题有答案: Quaternion from two vector pairs

要了解地形的正常情况,您可以将光线投射下来,并根据您使用的物理引擎从碰撞信息中获取法线。

编辑: 一些背景信息: 四元数表示旋转。所以我建议的是你使用我链接的问题的答案来计算角色的死亡姿势(UP)到新方向(地形法线)的默认方向之间的旋转

然后你可以用Quaternion改变你死去的角色,它会跟随地形的正常。

这是一个草图:使用来自Link的解决方案从UP和N计算Q并使用Q旋转角色的模型:

sketch

答案 1 :(得分:0)

是的,正常情况总是朝上,正如你在我的绘画上看到的那样,即使我画好姿势也是如此。当你谈论四元数时,我不明白你正在谈论哪种新常态? 我已经在角色下面有平面的法线,因此,部分工作已经完成:)

相关问题