高度检测 - OpenGL

发布于 2024-12-02 17:08:51 字数 182 浏览 0 评论 0原文

我正在使用 openGL ES。我已经将一个球、天空盒和一小块地形加载到程序中。

地形在某些点会改变高度。 球在地形上滚动。

我的问题是:有什么办法可以知道球所在位置的地形高度是多少? (球的位置存储在可以使用的变量中)。是否有任何类型的 OpenGL ES 命令,甚至是我可以对此进行一些研究的 OpenGL 命令?

I am using openGL ES. I have loaded a ball, skybox, and a small patch of terrain into the program.

The terrain changes heights at certain points.
The ball rolls around the terrain.

My question is: is there any way I can tell what the height of the terrain is at the position of the ball? (The position of the ball is stored in a variable that can be used). Is there any sort of OpenGL ES command, or even an OpenGL command I can base some research of this into?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

征棹 2024-12-09 17:08:51

OpenGL是一个渲染API,它只是将东西绘制到屏幕上,仅此而已。所以你不会自己去做诸如地形碰撞检测之类的事情。

如果您有纹理的高度图(例如,您绘制一个 xz 规则网格,其中 y 取自高度图)。您只需搜索球所在的单元格(或者更好的是球所在的两个三角形中的三角形)并插入相应的高度值即可获取球所在位置的地形高度。

OpenGL is a rendering API, it just draws things onto the screen, nothing more. So you won't get around doing such things like terrain collision detection and the like yourself.

If you got a heightmap for the texture (e.g. you draw a x-z regular grid with the y taken from a heightmap). You can just search for the cell your ball is in (or better the triangle the ball is in of the two triangles) and interpolate the corresponding height values to get the height of the terrain at the ball's position.

单挑你×的.吻 2024-12-09 17:08:51

您是否使用高度图来制作地形?如果是的话,这应该会有所帮助:

int Height(BYTE *pHeightMap, int X, int Y)          // This Returns The Height From A Height Map Index
{
    int x = X % MAP_SIZE;                   // Error Check Our x Value
    int y = Y % MAP_SIZE;                   // Error Check Our y Value

    if(!pHeightMap) return 0;               // Make Sure Our Data Is Valid
    return pHeightMap[x + (y * MAP_SIZE)];  // Index Into Our Height Array And Return The Height

}

我们需要将单个数组视为二维数组。我们可以使用等式:index = (x + (y * arrayWidth) )。假设我们将其可视化为: pHeightMap[x][y],否则相反: (y + (x * arrayWidth) )。

现在我们有了正确的索引,我们将返回该索引处的高度(数组中 x、y 处的数据)。

..
http://nehe.gamedev.net/tutorial/beautiful_landscapes_by_means_of_height_mapping/16006/

Are you using a height map to make the terrain? If you are, this should help:

int Height(BYTE *pHeightMap, int X, int Y)          // This Returns The Height From A Height Map Index
{
    int x = X % MAP_SIZE;                   // Error Check Our x Value
    int y = Y % MAP_SIZE;                   // Error Check Our y Value

    if(!pHeightMap) return 0;               // Make Sure Our Data Is Valid
    return pHeightMap[x + (y * MAP_SIZE)];  // Index Into Our Height Array And Return The Height

}

We need to treat the single array like a 2D array. We can use the equation: index = (x + (y * arrayWidth) ). This is assuming we are visualizing it like: pHeightMap[x][y], otherwise it's the opposite: (y + (x * arrayWidth) ).

Now that we have the correct index, we will return the height at that index (data at x, y in our array).

..
http://nehe.gamedev.net/tutorial/beautiful_landscapes_by_means_of_height_mapping/16006/

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文