游戏开发论坛

 找回密码
 立即注册
搜索
楼主: tonykee

疑惑ing....关于室外场景管理

[复制链接]

15

主题

363

帖子

390

积分

中级会员

Rank: 3Rank: 3

积分
390
发表于 2007-3-30 10:27:00 | 显示全部楼层

Re: Re:疑惑ing....关于室外场景管理

tonykee: Re:疑惑ing....关于室外场景管理

noslopforever
的提示非常有创意,我先消化消化....


晕,我的哪算有创意啊 [em10],我说的这些方法都是前人的方法了。
分块的方法,就是游戏编程精粹2中的Interlocking Tiles方法。
纹理是参考FarCry编辑器得出来的结论,可能不对,我最近也在改进这块。
所以纹理这里也不一定对,过几天如果有想法的话,再讨论了~ [em19] [em19]

119

主题

1367

帖子

1393

积分

金牌会员

Rank: 6Rank: 6

积分
1393
 楼主| 发表于 2007-3-30 10:33:00 | 显示全部楼层

Re:疑惑ing....关于室外场景管理

就是游戏编程精粹2中的Interlocking Tiles?
我中午就去买。

谢谢!!!你真是个热心的人

15

主题

363

帖子

390

积分

中级会员

Rank: 3Rank: 3

积分
390
发表于 2007-3-30 10:35:00 | 显示全部楼层

Re:疑惑ing....关于室外场景管理

我的概念是这样的:
一个大块 Scene,组织一整个场景,或者无限大场景中的一个大块。这个大块一般都会很大,一个摄像机看不到底的场景。一个场景,FarCry中,从257 X 257(个顶点),到4097X4097不等。Scene下分若干Block。

一个小块 Block,我目前用的是33X33顶点的,我的Blog里是9X9的。Block是渲染的最小单位。在Interlocking Tiles中,索引是整个Application一组的。每个Block里存顶点数据,各有不同,逐块拼接排列,构成一个Scene。另外,Block是四叉树的最小单元。所以,Block的地位很重要。以33X33为例:拼8X8个Block就构成了一个257X257的Scene,依此类推。

一个逻辑块Tile,四个顶点构成一个Tile,主要用作逻辑判断,在渲染中没有任何意义。

119

主题

1367

帖子

1393

积分

金牌会员

Rank: 6Rank: 6

积分
1393
 楼主| 发表于 2007-3-30 10:40:00 | 显示全部楼层

Re:疑惑ing....关于室外场景管理

我现在上课去了,回头聊。谢谢你!!!

10

主题

84

帖子

84

积分

注册会员

Rank: 2

积分
84
发表于 2007-3-30 13:06:00 | 显示全部楼层

Re:疑惑ing....关于室外场景管理

noslopforever
说的贴图原则 似乎不支持地形放大吧, 如果 33*33 一个块, scale 为 30.0 33*scale = 990
1025*scale = 30750
如果你按照 1025一对一的生成 文理将失真    否则你在内存 存储一张  30750*30750像素的纹理多郁闷

可以考虑在 GPU处理  可以看看
http://dev.gameres.com/Program/Visual/3D/OutsideLOD.mht
三通道二元插值法:RGB通道确定在四种细节贴图族中过渡,而A通道决定在单个细节贴图族中,两层细节贴图之间的过渡。每种细节贴图族分别对应红、绿、蓝、黑四种颜色。下图表现了,我们是如何通过索引贴图来确定细节贴图的混合程度的:

这东西是不错的 , 我也正在研究,   还没搞懂三通道二元插值法什么意思

119

主题

1367

帖子

1393

积分

金牌会员

Rank: 6Rank: 6

积分
1393
 楼主| 发表于 2007-3-30 13:08:00 | 显示全部楼层

Re:疑惑ing....关于室外场景管理

我想了一个小时,想明白了很多东西,我的lod算法里面没用到block,也就相当于每个block就是1x1,如果按照noslopforever说的,把lod分成很多小的block,这样相当于粗粒度的裁减(并不细到每个1x1单位而是33x33的单位)三角形数量可能多了不少,可是递归次将大大减少,效率应该有个质的飞跃,ok! 我马上来做调整

我想这就是 chunk lod 吧,不知道clod 指的是否就是 chunk lod

我的这些理论基础很弱,书看的不多。

119

主题

1367

帖子

1393

积分

金牌会员

Rank: 6Rank: 6

积分
1393
 楼主| 发表于 2007-3-30 13:16:00 | 显示全部楼层

Re:疑惑ing....关于室外场景管理

xuexiyouxi1
所说的正是我关心的问题,如果1025×1025的地图顶点距离5那如果不失真应该是1025×1025×5这样的贴图是否太夸张了点。不乘以5应该会失真才对,难道固定管线就没有合理的解决方法,而一定要用到GPU可编程管线吗?

Shader我还没花时间去研究,现在很想搞场景管理....唉,如果不行贴图这块就暂时先放放了。

15

主题

363

帖子

390

积分

中级会员

Rank: 3Rank: 3

积分
390
发表于 2007-3-30 13:24:00 | 显示全部楼层

Re:疑惑ing....关于室外场景管理

您好, ^_^

比如使用了一张1024 X 1024的,那么,这张1024 X 1024的图,在地形放大的时候,其实仍然是拿这张纹理去贴,不会手动将纹理放大。因为渲染时,纹理会自动被Linear或二次线性扩大(取决于SamplerState)。
这样的纹理肯定并不精细,就是你说的失真,因此,每个Tile均有一个细节纹理,通过那个调节细节。
另外,失真与否,也取决于编关者的能力,一个4097 X4097的大地图,每两个顶点间一定要相距10.0f的距离,最后还要贴一张1024 X 1024的图,这只能说是“后果自负”了 ^_^。
这个方法是FarCry用的,因为最近在鼓捣这个,所以说的只是自己最熟悉的方法。贴图的方法有很多,适应各种不同的需要,按需索取,就可以了,没有好和坏的 ^_^


至于您说的那篇文章,我刚刚看了看,我感觉他所说得3元二通道法就是FarCry所采用的方法。只不过他支持8个级别的混合,而FarCry好像只支持6个(?)。原则都是一样的:
首先,一个地形仅对应一组纹理
其次,从Base图开始,Layer1用Layer1的Alpha同Base进行混合,Layer2用Layer2的Alpha同Layer1+Base混合……至于所谓的“索引贴图”,就是一张Alpha图而已,FarCry的编辑器文档这方面很好,直接就说是Alpha图,很明了。

另一个三通道二元色环法我是彻底被搞晕了…… T_T

119

主题

1367

帖子

1393

积分

金牌会员

Rank: 6Rank: 6

积分
1393
 楼主| 发表于 2007-3-30 13:33:00 | 显示全部楼层

Re:疑惑ing....关于室外场景管理

每个Tile均有一个细节纹理?
这也是LOD的一部分吧,看来LOD不光对三角形进行优化,对纹理也进行优化?

对这部分的内容,我很想了解了解。

你所讲:“ 一个逻辑块Tile,四个顶点构成一个Tile,主要用作逻辑判断,在渲染中没有任何意义”

一般划分多大,跟block大小有关吗?比如我设成33x33

15

主题

363

帖子

390

积分

中级会员

Rank: 3Rank: 3

积分
390
发表于 2007-3-30 13:46:00 | 显示全部楼层

Re: Re:疑惑ing....关于室外场景管理

细节文理与LOD无关。LOD改变的是几何细节,不会改变纹理细节的。
细节文理就是一个碎碎的纹理,贴出来就是为了让地表有那么点碎碎的感觉,否则就太平滑了,不像地表了。

Block 33 x 33,就会有32 x 32个Tile。Tile没有任何意义,你可以无视它,只关注Block就可以了。

另:这个不是Chunk LOD,CLOD是一个早期算法,现在已经不太好用了。Interlocking Tiles据说是起源于Geo Mipmap,具体是不是我也不知道了。


贴一张细节文理出来~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-6-17 18:20

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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