游戏开发论坛

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

请问:如何为高度图指定多个纹理坐标?

[复制链接]

35

主题

1735

帖子

1739

积分

金牌会员

Rank: 6Rank: 6

积分
1739
QQ
发表于 2006-12-1 09:18:00 | 显示全部楼层 |阅读模式
我想为高度图所生成的地形中的不同地貌指定他们各自的纹理(指定各个地貌的相应的纹理坐标),可是不知道有什么样的软件工具可以作到这一点。请大家给帮帮忙吧,指点一下。
谢谢啦。 [em1]

35

主题

1735

帖子

1739

积分

金牌会员

Rank: 6Rank: 6

积分
1739
QQ
 楼主| 发表于 2006-12-1 10:40:00 | 显示全部楼层

Re:请问:如何为高度图指定多个纹理坐标?

再顶一下。

59

主题

984

帖子

1200

积分

金牌会员

Rank: 6Rank: 6

积分
1200
发表于 2006-12-1 11:54:00 | 显示全部楼层

Re:请问:如何为高度图指定多个纹理坐标?

可以使用一张普通的图片来保存height map每个点上的纹理
图片中每个颜色通道的值就代表这一点上每张纹理的权重。
比如你有 a,b,c,d四张纹理
图片argb通道就分别保存了每张纹理的权重
Color = a*a+r*b+g*c+b*d

35

主题

1735

帖子

1739

积分

金牌会员

Rank: 6Rank: 6

积分
1739
QQ
 楼主| 发表于 2006-12-1 16:45:00 | 显示全部楼层

Re:请问:如何为高度图指定多个纹理坐标?

谢谢楼上。可是这样只能知道每个点所对应的纹理图,但是却不知道每个点所对应的纹理图上的具体坐标啊,那咋办啊?

35

主题

1735

帖子

1739

积分

金牌会员

Rank: 6Rank: 6

积分
1739
QQ
 楼主| 发表于 2006-12-1 17:06:00 | 显示全部楼层

Re:请问:如何为高度图指定多个纹理坐标?

如上楼!

8

主题

310

帖子

311

积分

中级会员

Rank: 3Rank: 3

积分
311
QQ
发表于 2006-12-1 21:43:00 | 显示全部楼层

Re:请问:如何为高度图指定多个纹理坐标?

可以参照dx中mesh的用法

35

主题

1735

帖子

1739

积分

金牌会员

Rank: 6Rank: 6

积分
1739
QQ
 楼主| 发表于 2006-12-2 08:20:00 | 显示全部楼层

Re:请问:如何为高度图指定多个纹理坐标?

谢谢楼上,不过,我的意思是如何为高度图中的多个纹理指定具体的纹理坐标,我希望能用现成的软件做到这一点,就好象用MAX做模型一样。可是搜了一些软件都不太满意,MAX也不能做到一点,MAX可以做到在同一块大小的区域中多个纹理混合,但是不能做到在不同大小的区域中多个纹理混合,所以数据导出插件就起不了作用。看来实在不行的话,只好自己编写类似于MAX的工具软件了,那样的话就太恐怖了,因为工程太大了,还是希望能有现成的软件,难道真的没有吗?有没有哪位高人指点一下或者给个具有建设性的思路也行啊,本菜不胜感激啊~~~

29

主题

405

帖子

405

积分

中级会员

Rank: 3Rank: 3

积分
405
发表于 2006-12-2 17:58:00 | 显示全部楼层

Re:请问:如何为高度图指定多个纹理坐标?

纹理融合
比如你有4种纹理,你要根据不同高度,设置不同的纹理,你可以把这四个纹理融合到一张纹理上.
怎么融合呢?
根据高度图来.
for(int i=0;i<height;i++)
    for(j=0;j<weight;j++){
        int h = GetHeight(i,j);
        unsigned long color;
        SetColor((float)i/Hieght,(float)j/weight,h,&color);
}
//x,y表示纹理坐标
void SetColor(float x,float y, int height, ulong &color)
{
       if(height >= heightest)
            color = pTex[0]->GetColor(x,y,1);
       esle  if(height < heightest && height >= high)
       {
              float rate = (height - high) / (heightest - high);
              color = pTex[0]->GetColor(x,y,1-rate) + GetColor(x,y,rate);
       }
       else if(height < high && height >= flat)
       {
          ...
       }
}
我以前写过的,忘记了,差不多就是这个意思.
网上找找这方面资料吧
看看那本书吧,名字记不清了
<<focus on terrain renderring>>

29

主题

405

帖子

405

积分

中级会员

Rank: 3Rank: 3

积分
405
发表于 2006-12-2 18:02:00 | 显示全部楼层

Re:请问:如何为高度图指定多个纹理坐标?

所谓不同地冒,应该是指不同高度吧,否则要美工做了,程序做起来估计很烦.

35

主题

1735

帖子

1739

积分

金牌会员

Rank: 6Rank: 6

积分
1739
QQ
 楼主| 发表于 2006-12-2 21:45:00 | 显示全部楼层

Re:请问:如何为高度图指定多个纹理坐标?

谢谢楼上详尽的答复,本菜座不胜感激,不过可能是本菜座表达上有些错误,没能将问题说清楚。本菜座的意思是在地形上面进行贴片,每个贴片都是一张纹理图,假如,我在地形的第一层全部帖上沙子,草地,岩石这3种纹理图所表示的地貌,然后再在地形的第二层上也就是在那3个纹理图上再帖上另一些纹理图的贴片比如水滩,城砖等贴片,以达到一个地形网格具有两个纹理的效果(通过混合),既每个地形上的顶点有2套纹理坐标。本菜座的问题就是如何为地形上的每个顶点指定这些纹理的2套坐标,地形是用高度图来表示的。本菜座希望借助现成的建摸软件来做到,可是不知道有什么软件可以。希望有知道的大侠能给予指点。
再次感谢楼上各位的回复。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-26 00:49

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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