游戏开发论坛

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

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

[复制链接]

15

主题

363

帖子

390

积分

中级会员

Rank: 3Rank: 3

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

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

dm
sf_200733013527.jpg

119

主题

1367

帖子

1393

积分

金牌会员

Rank: 6Rank: 6

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

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

总算长了点见识。。。

10

主题

84

帖子

84

积分

注册会员

Rank: 2

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

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

noslopforever
有一点没明白, 你说的 每个tile贴一个详情图 你是的是2个三角形组成的吗?
还是把一个 33*33的大块当作一个tile???
如果是33*33的大块而且是一开始就生成好的 渲染时直接渲染 那么就只能贴一张大的 33*33*scale的详情图了?(贴图我很菜) 然后再根据alpha图混合图层??

15

主题

363

帖子

390

积分

中级会员

Rank: 3Rank: 3

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

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

33 * 33,应该叫Block,对不起,我的错误 ^_^b

基本贴图是根据整个大场景定的,比如,就说X方向(U方向),总顶点数256的场景,每个Block 33,这样U方向有8个 Block ,那么,第一个Block的U范围从0 ~ 0.125第二个0.125 ~ 0.25,依此类推。每个Block的顶点有33个,以第一个Block为例:这33个顶点的U为: 0 , 0.125/32 , 0.125*2/32, 0.125*3/32……
如果是总顶点数128,那么,还是第一个Block,它的U范围是0~0.25,这样子的。


细节贴图根据一个Block定,也就是每个Block的U都是0~1,不过这个看具体的了,有可能一个Block贴两到三张,这样就可能会是0~2,0~3……

15

主题

363

帖子

390

积分

中级会员

Rank: 3Rank: 3

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

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

……也就是使用两套纹理坐标,基本贴图一套,细节贴图一套。

10

主题

84

帖子

84

积分

注册会员

Rank: 2

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

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

感谢 noslopforever 的解答

高手说话就不同 一说我就懂.
再问问你 3通道2元插值法
比如你看过的那文章里

float4 TransPixels
    (
    in float2 vTexture0 : TEXCOORD0,
    in float2 vTexture1 : TEXCOORD1,
    in float2 vTexture2 : TEXCOORD2,
    in float2 vTexture3 : TEXCOORD3,
    in float2 vTexture4 : TEXCOORD4,
    in float2 FadeAndWater : COLOR,
    in float  ZDepth        : TEXCOORD5,
    in float3 Pos        : TEXCOORD6
    ) : COLOR
{
        //tex0 DetailMap
        //tex1~tex4 DetailTex
        //tex5 ColorMap
        float3 vColor;
        float3 vDetail1;
        float4 vfade = tex2D(s0, vTexture0);
        float ffade = vfade.a ;
        vfade.a = 1.0f-(vfade.r+vfade.g+vfade.b);
        //计算表面色
        vColor = tex2D(s9, vTexture0);
        //计算细节色权重 细节颜色
        //方法一 三通道二元插值法
        float4 vDetailMatTemp = g_vDetailMarterial[1]*vfade;
        float fMart = vDetailMatTemp.r+vDetailMatTemp.g+vDetailMatTemp.b+vDetailMatTemp.a+
                ( g_vDetailMarterial[0].r+g_vDetailMarterial[0].g+g_vDetailMarterial[0].b+g_vDetailMarterial[0].a -
                ( g_vDetailMarterial[1].r+g_vDetailMarterial[1].g+g_vDetailMarterial[1].b+g_vDetailMarterial[1].a) )*vfade*ffade;
  //这里是8个详情图的混合计算
        vDetail1 = vfade.r*lerp(tex2D(s5, vTexture1),tex2D(s1, vTexture1),ffade)
                        +vfade.g*lerp(tex2D(s6, vTexture2),tex2D(s2, vTexture2),ffade)
                        +vfade.b*lerp(tex2D(s7, vTexture3),tex2D(s3, vTexture3),ffade)
                        +vfade.a*lerp(tex2D(s8, vTexture4),tex2D(s4, vTexture4),ffade);
        //混合细节色和表面色//计算材质颜色//输出最终水雾混合的颜色
    ffade = dot(tex2D(s10, vTexture0),-g_vSunDirection.xyz);
    vColor = lerp(vColor*vDetail1,vColor,ZDepth);
    vColor = lerp((g_vSunColor* ffade +g_vAmbColor)*vColor*fMart, g_vWaterColor.xyz,FadeAndWater.y);
    vColor = lerp(g_vFogColor,vColor,FadeAndWater.x);



其中 s1~s8 都是详情图 其实他们是4种贴图族 草地*2,沙*2,路面*2,石头*2...

那么 他是如何根据下面的几张图确定此处应该贴的是草地还是石头呢???
颜色图上色彩很杂 即使是绿色也不一定在一个色位上,而alpha图只是决定混合的程序
他程序里有没有如 if color < xx and > xx   detailmap = texXX???

颜色图




alpha图



草地1

10

主题

84

帖子

84

积分

注册会员

Rank: 2

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

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

float4 vfade = tex2D(s0, vTexture0);
vTexture0是alpha图  vfade 得到了此处的alpha值
texture9 是颜色图
texture10 灯光 现在不看这个

他如何根据颜色图 来得到 应该混合的详情图?
如 绿色区域 应该是草地 他在此时如何混合出草地???
为什么他要 s1~s8一起混合 这样如何要草地的话 其他颜色不都在里面吗?

119

主题

1367

帖子

1393

积分

金牌会员

Rank: 6Rank: 6

积分
1393
 楼主| 发表于 2007-3-31 00:06:00 | 显示全部楼层

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

在学校写的程序,我回家去试了一下,自己家里的机器就是不一样,还算过的去
配置:显卡是中低档ATI 9550 128 M的显卡CPU Athlon 64 2800+ ,内存1G
能达到500-600FPS以上,感觉还比较欣慰。

补洞算法,昨天,我采用事先计算每个节点的邻接节点,导致计算会死机,所以打算不采用事先生成的办法,明天再做修改。

另外我今天去买了本精粹2正如你所说的,看到了lod分成小的chunk的办法,深受启发,我想这段时间我也需要去写个实现看看。好好的比较一下分块与不分块这两种不同的lod算法
sf_20073310552.jpg

10

主题

84

帖子

84

积分

注册会员

Rank: 2

积分
84
发表于 2007-3-31 10:37:00 | 显示全部楼层

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

1400多个三角形太少了  你必须将视野扩大三角形达到W的数量再看效率
ogre 3~5w个三角形在我机器上大概200多帧

119

主题

1367

帖子

1393

积分

金牌会员

Rank: 6Rank: 6

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

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

补洞算法总算搞完善了,我还没使用block
晚上回去再做个测试,把视野扩大到2W三角形以上再看看效率如何
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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