如何通过图像纹理颜色(像素)编写代码设置地形高度图?
我最近在尝试通过提取图像/纹理的像素颜色来生成地形高度图,做了个简单的示例,这里把我的实现思路和参数逻辑分享出来:
核心参数配置
- 原始纹理分辨率:7000×5000 px
- 目标高度图尺寸:4096单位
- 预设总高度范围:600单位
采样转换逻辑
因为原始纹理的分辨率远大于高度图的尺寸,所以我通过计算采样步长来完成两者的映射,代码里的关键计算(对应第25行)是这样的:
// 计算X、Y方向的采样步长 float stepX = 7000.0f / 4096.0f; float stepY = 5000.0f / 4096.0f;
通过这个步长迭代采样原始纹理的像素,就能把高分辨率的纹理转换成对应尺寸的高度图数据。
高度映射规则
我给不同颜色区域设置了固定的高度比例:
- 水域区域:对应总高度的
0.25f,也就是600/4=150单位 - 其他非水域区域:对应总高度的
0.5f,也就是600/2=300单位
目前这个简单的逻辑已经能实现基础的地形高低区分,如果需要更细腻的地形变化,还可以扩展多颜色区间对应不同高度梯度的规则~
内容的提问来源于stack exchange,提问作者z3nth10n




