OpenGL找到一个点的距离

时间:2011-05-11 01:34:39

标签: opengl jogl picking

我有一个能够以第一人称走动的虚拟景观。如果它是45度或更小,我希望能够向上走任何坡度。据我所知,这涉及将当前位置转换为x个单位,然后找到转换点与地面之间的距离。如果该距离是x单位或更多,则用户可以在那里行走。如果没有,用户不能。我不知道如何找到一个点与负y方向上最近点之间的距离。我在Java3D中对此进行了编程,但我不知道如何在OpenGL中编程。

2 个答案:

答案 0 :(得分:2)

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

根据您的要求,有几种解决方案。这就是我解决这个问题的方法:你为正确着色计算的法线给出了每个点的斜率。假设你的高度图(= terrain)在XY平面和你的引力向量g = -Z,那么法向力terrain_normal(x,y) · g。正常的力量是什么“将你的脚”推向地面。如果没有足够的法向力,就没有足够的摩擦力将肌肉力传递到垂直于地面的运动中。如果你看一下法向力公式,你会发现gterrain_normal(x,y)之间的角度偏离越大,法向力就越小。

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

答案 1 :(得分:0)

如果你只有一个普通的三角形hightmap,你可以使用barycentric coordinates来插入给定(X,Y)位置的Z值。