游戏开发论坛

 找回密码
 立即注册
搜索
查看: 4772|回复: 10

关于LOD地形的细节纹理?不懂~~~

[复制链接]

119

主题

1367

帖子

1393

积分

金牌会员

Rank: 6Rank: 6

积分
1393
发表于 2007-4-11 23:47:00 | 显示全部楼层 |阅读模式
我这两天很头痛LOD里面的贴图问题,这个不处理好简直就做不下去了。
是否整个大地形搞一个大贴图?那细节纹理有是怎么一回事?

还有还有光照阴影怎么做?
我想用D3DXComputeNormals(m_pMesh, NULL); 计算法线,实时计算光照,LOD变化的时候不知道这样好不好?

我现在每个BLOCK都创建了一个MESH,存放自己的顶点和索引缓冲,结果发现BLOCK接缝处的法线计算出来拼在一起有明显的色彩断痕,接缝的法线计算是有问题的
那么整个大地形的顶点只放在一个mesh里面计算出来才准确,各BLOCK只维护各自的索引。不知道这样改是否合理?

另外我不懂地形细节纹理方面的理论,下面是我在网上查到的,不懂,希望有人给出详细的解释。
引文如下:
景中地形的形状和染色从一张高度图,一张地形纹理和一张细节贴图中被计算出来。高度图是一张灰度图,每个象素表现一个高度值,0表示地平面,255表示地形最高点。

    地形上面覆盖的的那层纹理被拉伸。这些地形纹理具有代表性的是斑驳的褐色,绿色,白色或者灰色适合于地表,草,雪或岩石地形。地形纹理通常比要覆盖地形小的多,所以近看时通常很模糊。为了解决这个问题,使用了一张细节纹理,当近看时混合地形纹理。细节纹理没有被拉伸,消除了近看模糊问题。

    地形被分成一个地形小块表格。地形小块可能在不同的细节层次被场景管理器显示出来,依赖于小块的布局和离观察者的距离。整个地形被投射到一个世界坐标空间中,在里面地形的尺寸。
abc



sf_2007411234633.jpg

15

主题

363

帖子

390

积分

中级会员

Rank: 3Rank: 3

积分
390
发表于 2007-4-12 09:07:00 | 显示全部楼层

Re:关于LOD地形的细节纹理?不懂~~~

光照图应该整个一起算,不能单独算的,Normal也最好自己算,按照Block算不太准确。

119

主题

1367

帖子

1393

积分

金牌会员

Rank: 6Rank: 6

积分
1393
 楼主| 发表于 2007-4-12 10:34:00 | 显示全部楼层

Re:关于LOD地形的细节纹理?不懂~~~

to:noslopforever
有了法线是否就不用光照图了?法线能自动计算光照的。

我很想知道 “细节纹理”的详细方法,以前也听你说过,还是不太理解。


15

主题

363

帖子

390

积分

中级会员

Rank: 3Rank: 3

积分
390
发表于 2007-4-12 11:16:00 | 显示全部楼层

Re:关于LOD地形的细节纹理?不懂~~~

嗯,那就法线自己算,Per整个地形算,而不是一个Block一个Block算。

细节文理……就是让近处观看时,地形有点碎碎的感觉,如果没有细节文理,就会是一个色块一个色块。
根据大小,有些细节文理是一帖贴一个Block的,这种细节文理一般大小都比较大,512X512之上的。
否则,就有可能是一贴贴一个Tile,也就是一个Block上贴几十张。

这个,说不太好说,最好自己手动做一下,然后感觉一下,有没有细节图的区别。 ^_^

119

主题

1367

帖子

1393

积分

金牌会员

Rank: 6Rank: 6

积分
1393
 楼主| 发表于 2007-4-12 11:52:00 | 显示全部楼层

Re:关于LOD地形的细节纹理?不懂~~~

这样理解对不对?
    整个地形搞个被拉伸的低分辨率的贴图,这样,近看,马赛克很严重
细节贴图用来消除马赛克,lod级别高的也就是离摄像机近的BLOCK
按照另外一套贴图坐标贴细节贴图?
顶点坐标里面就搞两套贴图坐标texcood1和texcood2来决定是贴1(粗纹理)还是贴2(细节纹理)?

我想细节贴图肯定是每个BLOCK一个贴图了,边界贴图不合的问题怎么解决啊?

难道1025x1025 block:33 就需要32x32=1024个细节纹理,还要对贴图进行修边,工作量是否太大了啊?

地图编辑器难道就是做这些事情的?没有地图编辑器怎么办啊?
不知道我的理解有没有问题。请指正

15

主题

363

帖子

390

积分

中级会员

Rank: 3Rank: 3

积分
390
发表于 2007-4-12 12:23:00 | 显示全部楼层

Re:关于LOD地形的细节纹理?不懂~~~

上次不是发了一个细节文理么?细节文理就一张,这一张从四边都是无缝拼合的,所以没有边界不合问题,直接铁道Block上就可以了。 ^_^

每个Block两套TexCoord,TC1用于贴细节文理,TC2用于贴基本文理。所有的Block都贴,不用管离摄像机远还是近。 ^_^

59

主题

984

帖子

1200

积分

金牌会员

Rank: 6Rank: 6

积分
1200
发表于 2007-4-12 12:27:00 | 显示全部楼层

Re:关于LOD地形的细节纹理?不懂~~~

shaderx 2上有一篇关于地形贴图的文章,lz可以参考一下

119

主题

1367

帖子

1393

积分

金牌会员

Rank: 6Rank: 6

积分
1393
 楼主| 发表于 2007-4-12 13:41:00 | 显示全部楼层

Re: Re:关于LOD地形的细节纹理?不懂~~~

那要是不同的高度做差值混合不同的贴图,比如草地,石头,沙怎么办,那就不是一张贴图了?也能是边界无缝的细节纹理吗?我想动态的混合各种纹理。大概方法知道,还没具体去做

另外:楼上的朋友clayman
clayman: Re:关于LOD地形的细节纹理?不懂~~~

shaderx 2上有一篇关于地形贴图的文章,lz可以参考一下



在什么地方?

15

主题

363

帖子

390

积分

中级会员

Rank: 3Rank: 3

积分
390
发表于 2007-4-12 14:02:00 | 显示全部楼层

Re: Re: Re:关于LOD地形的细节纹理?不懂~~~

tonykee: Re: Re:关于LOD地形的细节纹理?不懂~~~

那要是不同的高度做差值混合不同的贴图,比如草地,石头,沙怎么办,那就不是一张贴图了?也能是边界无缝的...


那个我没试过,不过,可以用一张文理做,因为那种东西不太现实是实时渲染的,肯定是在实时渲染前就已经预处理好的。
即便用多张纹理,也可以做。
我所想到的处理办法是:
首先,保证:
草地和草地无缝拼接、石头和石头无缝拼接、沙和沙无缝拼接。
单独准备三张Alpha图,分别用以判断在当前位置,草地画多少,石头画多少,沙画多少。
假设草地贴在海拔100米以下的地方,那么,当发现当前点的位置是100米下时,设定草地的Alpha为255,依此类推。
对Alpha进行插值,避免Alpha变化过猛(比如上个象素是0,下个象素就是255了)。这样下来的就应该是一个拼接正常的地图了。

看FarCry中就是按照Alpha过渡的:
sf_20074121425.jpg

15

主题

363

帖子

390

积分

中级会员

Rank: 3Rank: 3

积分
390
发表于 2007-4-12 14:04:00 | 显示全部楼层

Re: 关于LOD地形的细节纹理?不懂~~~

绿色是基本色(草地),黄色是第二层颜色(沙地)

这是连接两层的Alpha图
sf_200741214426.jpg
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-26 19:25

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表