2011-05-11 62 views
0

我有一个虚拟的风景,可以在第一人称中漫步。如果45度或更少,我想能够爬上任何斜坡。据我所知,这涉及到将你当前的位置翻译出x个单位,然后找出翻译后的点与地面之间的距离。如果该距离是x单位或更多,则用户可以走到那里。如果不是,用户不能。我不知道如何找到一个点与y轴负方向上最近点之间的距离。我已经在Java3D中编写了这个程序,但是我不知道如何在OpenGL中对它进行编程。OpenGL找到一个点的距离

+3

这看起来像一个几何问题而不是OpenGL – geofftnz 2011-05-11 01:40:58

回答

2

在OpenGL中咆哮这个问题是吠叫错误的树:OpenGL的唯一目的是绘制漂亮的图片到屏幕上。这不是一个数学库!

根据您的要求,有几种解决方案。这就是我如何解决这个问题:你计算正常阴影的法线会给你每个点的斜率。假设你的高度图(=地形)在XY平面上,而你的重力矢量g = -Z,那么正常的力terrain_normal(x,y) · g。正常的力量是,“推动”你的脚靠在地面上。没有足够的正常力量,没有足够的摩擦力将肌肉力量转化为垂直于地面的运动。如果您查看法向力公式,您可以看到gterrain_normal(x,y)之间的角度偏差越大,法向力越小。

因此,在您的程序中,您可以简单地测试法向力是否超过某个阈值;正确的,你会将超强的摩擦力投射到地形上,并将其用作加速度矢量。

相关问题