gpt4 book ai didi

c++ - 体素世界中的碰撞检测?

转载 作者:行者123 更新时间:2023-11-30 01:08:42 26 4
gpt4 key购买 nike

我从事体素游戏已有一段时间了,它使用的是我编写的算法。但是,我仍然坚持碰撞检测;因为我真的不知道从哪里开始。体素引擎并不复杂。

我真的只需要计算高度图的高度。

以这张脸为例:(请原谅我糟糕的形象)enter image description here

假设我相对于多边形的位置是 0.5,0.5(中心)。此时我将如何计算 y 位置?

最佳答案

感谢 Ped7g,我们终于解决了高度图的实际问题。

首先我想指出,这与体素完全无关。您的引擎恰好使用体素,但您的问题无关。碰撞检测也是如此。虽然它与您想要使用的东西相关,但您基本上忽略了实际问题。

其次,像 Ped7g 提议的三角剖分可行,但我看到了一个缺点,它基本上会产生一个由三角形组成的表面。对于您的示例和三角测量

 ___        
|\ |
| \ |
|__\|

左下角的三角形会平放在地面上,只有右上角的三角形会倾斜。更复杂的三角测量看起来会更好,但仍然由三角形表面组成,并且还需要您使用几组重心坐标。

在正方形内插值的常用方法是 Bilinear Interpolation ,它的每个角落都影响着每个点,使用一个简单的公式。

给定 0..1 中的 λx 和 λz,它们表示您在单位正方形中的相对位置(在 x 和 z 上方)以及角上的高度 y00、y01、y10 和 y11,高度很简单

y = (1-λx)(1-λz)y00 + (1-λx)(λz)y01 + (λx)(1-λz)y10 + (λx)(λz)y11

请注意,这将在边缘创建线条。双线性插值的优点是速度。缺点是在边缘上,高度不会表现得很平滑,也就是不可微分。如果你想要那样,你需要更复杂的方法来考虑相邻的方 block 。 Ped7g 提到 B 样条曲线,可以使用 B 样条曲线曲面,但需要一段时间才能实现,而且速度不快,不会向初学者推荐这些(但如果您有兴趣,click on this link。第 8 章包含您需要的内容,但你最好先阅读其他章节)。一个好的中间立场是 Bicubic Interpolation .该链接包含双三次插值和双线性插值的直观比较。

不过,假设您是初学者,我建议您使用双线性。

关于c++ - 体素世界中的碰撞检测?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41630905/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com