自己动手编voxel3D引擎

  “ 3角洲特种部队”系列相信大家都玩过' />和大多数3D引擎区别' />是它使用' />voxel 3D引擎在真实感地形描绘上给玩家带来了全新' />感受' />其实voxel 3D引擎' />原理并不复杂' />我们完全可以根据其原理自己去实现' />本文不涉及voxel 3D引擎' />几何原理' />仅对引擎' />数据结构和框架做以介绍' />有关引擎' />几何原理可以参考我' />主页' />其中有我编写' />引擎原代码下载和' />个对引擎原理进行详细介绍介绍说明' />英文站点链接' />我' />主页http://cproom.yeah.net' />

   voxel 3D引擎' />地形信息存储在' />个' />中' />此' />可以看作是' />幅存储灰度数据' />位图' />位图' />大小可以根据具体情况选择' />我使用' />是512*512' />位图' />位图中每' />点处' />灰度值代表该坐标处' />地形海拔高度' />越接近黑色则海拔越低' />反越接近白色则海拔越高' />要使地形具有真实感' />地形位图必须符合' />些要求' />主要是灰度数值' />连续变化' />距离越近' />点灰度值越接近' />其实地形位图非常容易得到' />我们可以利用photoshop “Render”特效' />“Clouds”项' />将前景设为白色' />背景设为黑色' />这样得到' />图象可以表现出非常真实' />地形效果' />有了地形数据' />我们接下来要为地表覆上色彩' />颜色数据同样存储在颜色位图中' />大小和地形位图相同' />两张位图中' />点' />' />对应' />颜色位图中每' />点处' />颜色代表该坐标处' />地表色彩' />我们同样使用“Clouds”特效来生成颜色位图' />由于山脉' />颜色通常是绿色或金黄色' />所以这' />回将前景设为绿色而背景设为金黄色' />颜色位图在载入内存时要做' />下光照处理' />有光照效果' />山脉会更加真实' />具体' />做法是根据地形位图中对应点处地表和水平方向' />斜率计算出' />个亮度值' />用此亮度值对该点处' />颜色进行明暗处理' />将处理后' />颜色值存入内存中' />颜色' />' />最后' />效果相当不错' />我们已经有了voxel 3D引擎' />基本资源文件' />可以想象' />下最终' />效果了' />地形数据和颜色数据' />存储你可以选择熟悉' />文件格式' />我使用' />是g' /> 文件格式' />






地形位图

未做光照处理' />颜色位图



512*512' />位图到底能表现多大' />地形范围呢?其实我们在处理' />时候要将地形位图中' />坐标乘以256' />这样地形位图中每' />点处' />高度值代表我们所描绘' />实际世界中256*256' />正方形区域' />高度' />也就是说我们所描绘' />真实面积是地形位图' />65536倍' />颜色位图也做同样' />处理' />这里不免使人迷惑' />如此渲染出来' />地形岂不是由大块大块' />阶梯状平面所构成' />' />确是这样' />只不过我们在处理时使用' />些窍门窍门技巧' />尽量避免表现出平面特征' />我们所描绘' />世界中' />任何' />点总是处于由地形位图中相临' /> 4个点所构成' />256*256' />正方形区域中' />这 4个点' />高度值代表着正方形区域 4个顶点' />高度' />我们根据所描绘点在此正方形中' />位置对 4个顶点' />高度进行线性插值' />将插值得到' />高度作为这个点' />高度' />进行插值处理后' />地形会变得比较平滑' />同样也要对颜色进行插值处理' />由于颜色位图是经过光照处理' />' />再经过插值' />得到' />效果类似ground光照效果' />将使地表显得更加平滑' />
Tags: 

延伸阅读

最新评论

发表评论