使用双线性插值计算地形的精确高度

本文介绍了在游戏开发中计算3D地形精确高度的方法,主要涉及双线性插值的概念和应用。通过双线性插值,可以在已知地形顶点高度的情况下,获取任意点的高度。内容包括线性插值的工作原理,以及如何通过对应值、minY和maxY来获取精确高度的步骤,最后展示了用于计算精确高度的代码实现。
摘要由CSDN通过智能技术生成

问题

当你制作一个使用地形的游戏时,你需要知道地形确定点的精确高度。例如,在地形上移动一个模型时(见教程4-17),当检测到光标和地形之间的碰撞时(下一个教程),或防止相机与地形碰撞时(见教程2-6)。

因为在前一个教程中你定义了地形每个顶点的3D位置,所以获取这些点的高度很简单。对位于这些顶点间的位置而言,你需要使用一种插值方法获取这个位置的精确高度。

解决方案

如果你想知道高度的点与地形的一个顶点发生碰撞,那么你已经知道了地形上该点的精确高度。如果这个点并没有与顶点发生碰撞,那么说明这个点在地形的一个三角形上。因为三角形是一个平面,所以你可以通过在三角形三个顶点间进行插值获取任何点的精确高度。

工作原理

首先从X和Z坐标开始,你想知道该点的对应Y坐标,这可以通过对三角形三个顶点的高度进行插值获取。

这意味着你首先要找到点究竟在哪个三角形中,这并不容易。但首先我想介绍插值。

线性插值

如果你只处理分离的数据、想知道分离点之间的某些值,需要用到某种类型的插值。这种情况如图5-17坐标所示。对某些分离的(整数) X值,你知道Y值。当X=2,你知道Y=10,X=3时Y=30。但你不知道X=2.7时的Y值。

图5-17

图5-17 线性插值:简单常规的例子

使用线性插值,你通过连接两点的线段找到X=2.7对应的Y值,如图5-17所示。使用线性插值,通过连接两点的线段找到X=2.7对应的Y值。线性插值总是将X表达成0和1之间,0对应X的最小值(你知道对应的X值,本例中为2),1对应X的最大值(本例中为3) 。本例中你想找到X=2.7时的Y值,结果是0.7,意思是“2和3至之间的70%。”

在图5-17的左图中,0%对应Y值10,100%对应Y值20,所以70%对应Y=17。这很容易看出,但右图的情况如何?14对应0.33,因为它是13和16之间的33%。但35和46之间的33%是多少?显然,你希望有代码可以为你计算结果。

首先要有代码找到0和1对应的值。从X值开始,首先减去最小的X值,这样最小值变为0。然后,将最大值缩放为1,你可以通过

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值