hkfans

C++博客 首页 新随笔 联系 聚合 管理
  3 Posts :: 2 Stories :: 4 Comments :: 0 Trackbacks

2008年1月1日 #

当实现分割地形的时候,最好的情况下是能够给每一个分块单独的地表贴图,而不是多个纹理即时混合.事实上,在非编辑状态下,多纹理混合都有性能和硬件支持的问题.比方说某个分区用到了9张纹理,草地,雪地,岩石,泥浆等等. 如果在一个最大支持8纹理的硬件上,要想全部渲染,必须得来2次了, 当然,你可以经验性地控制住每个分区的纹理数目,但是同时也降低了地形的表现能力. 因此,我们往往会将多个纹理混合到一张纹理中,在渲染中只渲染这种混合好的纹理.

目前能找到的关于地形纹理构建的文章都是基于高度来决定最终纹理的数据,但是这种方式有天然的缺陷,对于大多数的地形而言,高度差并不大,还不足够形成令人信服的垂直气候. 而且,对于一条自然道路,更是和地形高度毫无关联了.因此,我们需要一种更灵活的构建方式.

在本人实现中,采取一种通用的Alpha Map 方式.

newColor = oldColor*(1-mask) + srcColor*mask;
逐层地将新的层按照alpha 混合到旧层中. 以下是岩石,草地,沙子按alpha混合的最终效果图:



具体实现见代码:
下载代码和可执行程序

需要注意的是,这种方式涉及到对位图的缩放采样. 在上面的代码实现中,我使用最简单的效果也最差的point 采样方式,这种方式有时也被叫做nearest~~ 也就是说,质量是最差的. 当然,你也可以采取线性,双线,三线,各向异性等方式. google it.
posted @ 2008-01-01 19:38 王子政 阅读(294) | 评论 (1)编辑 收藏

2007年12月25日 #

毕业设计就做个室外地形渲染--使用的技术:基于Tile的动态LOD 技术  地表采用Texture Splatting贴图技术  地形水  天空盒/天空顶  光晕  地形阴影图  地形植被Imposter技术  骨骼动画技术
posted @ 2007-12-25 12:27 王子政 阅读(266) | 评论 (1)编辑 收藏

不断学习,不断进步,成为真正的高手~~其他的一切暂时不要想~~相信自己的能力~~~

不到公司照样可以学的很厉害,时间的问题

posted @ 2007-12-25 12:21 王子政 阅读(273) | 评论 (2)编辑 收藏

仅列出标题